nodeからRaspberry Piのwifi接続をコントロールしたいなぁ、でもexecをいちいち叩いていくのは面倒だし、と思っていたら、moduleを作ってくれている人がいました。ネットには神が沢山います。
このmoduleは実際にはnmcliのフロントエンドに過ぎないので、使用するためにはまずnmcliをインストールします。
pi@raspberrypi:~ $ sudo apt-get install network-manager Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: fuse libfuse2 Use 'apt-get autoremove' to remove them. The following extra packages will be installed: dconf-gsettings-backend dconf-service dns-root-data dnsmasq-base glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas iputils-arping libdbus-glib-1-2 libdconf1 libgudev-1.0-0 libjim0.75 libmbim-glib4 libmbim-proxy libmm-glib0 libmnl0 libndp0 libnetfilter-conntrack3 libnm-glib4 libnm-util2 libpam-systemd libpcap0.8 libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libproxy1 libqmi-glib1 libsoup2.4-1 libteamdctl0 modemmanager policykit-1 ppp usb-modeswitch usb-modeswitch-data Suggested packages: avahi-autoipd libteam-utils comgt wvdial The following NEW packages will be installed: dconf-gsettings-backend dconf-service dns-root-data dnsmasq-base glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas iputils-arping libdbus-glib-1-2 libdconf1 libgudev-1.0-0 libjim0.75 libmbim-glib4 libmbim-proxy libmm-glib0 libmnl0 libndp0 libnetfilter-conntrack3 libnm-glib4 libnm-util2 libpam-systemd libpcap0.8 libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libproxy1 libqmi-glib1 libsoup2.4-1 libteamdctl0 modemmanager network-manager policykit-1 ppp usb-modeswitch usb-modeswitch-data 0 upgraded, 36 newly installed, 0 to remove and 13 not upgraded. Need to get 190 kB/5,431 kB of archives. After this operation, 20.8 MB of additional disk space will be used. Do you want to continue? [Y/n] Y WARNING: The following packages cannot be authenticated! libdbus-glib-1-2 libdconf1 libgudev-1.0-0 libmbim-glib4 libmm-glib0 libndp0 libmnl0 libnetfilter-conntrack3 libnm-util2 libnm-glib4 libpam-systemd libpcap0.8 libpolkit-gobject-1-0 libpolkit-agent-1-0 libpolkit-backend-1-0 libproxy1 libqmi-glib1 glib-networking-common glib-networking-services dconf-service dconf-gsettings-backend gsettings-desktop-schemas glib-networking libsoup2.4-1 libteamdctl0 libjim0.75 dns-root-data dnsmasq-base libmbim-proxy modemmanager policykit-1 network-manager ppp iputils-arping usb-modeswitch-data usb-modeswitch Install these packages without verification? [y/N] y
「インストールするのか?本気かよ」みたいな聞き方をされると不安ではありますが、ここはレポジトリを信頼するしか無いので、yです。ボットになったらどうしましょ。
Setting up policykit-1 (0.105-8) ... Setting up network-manager (0.9.10.0-7) ... The following network interfaces were found in /etc/network/interfaces which means they are currently configured by ifupdown: - eth0 - wlan0 - wlan1 If you want to manage those interfaces with NetworkManager instead remove their configuration from /etc/network/interfaces. Setting up ppp (2.4.6-3.1) ... Setting up iputils-arping (3:20121221-5) ...
ご丁寧にもinterfacesに書いてあったらダメよと指摘してくれましたので、interfacesからwlan1の設定を削除しておきました。
var WiFiControl = require('wifi-control'); export var init = () => { // Initialize wifi-control package with verbose output WiFiControl.init({ debug: true }); var settings = { debug: true || false, iface: 'wlan1', connectionTimeout: 10000 // in ms }; WiFiControl.configure(settings); } export var scanForWiFi = () => { // Try scanning for access points: WiFiControl.scanForWiFi( function(err:any, response:any) { if (err) console.log(err); console.log(response); }); }
公式のサンプルに従いこんな感じ。するとこんな感じでスキャン結果が取得できました。
WiFiControl: Debug mode set to: true WiFiControl: Determining system wireless interface... WiFiControl: Host machine is Linux. WiFiControl: Executing: nmcli -m multiline device status | grep wlan WiFiControl: Automatically located wireless interface wlan1. WiFiControl: Debug mode set to: true WiFiControl: AP connection attempt timeout set to: 10000ms WiFiControl: Wireless interface manually set to wlan1. WiFiControl: Scanning for nearby WiFi Access Points... WiFiControl: Nearby WiFi APs successfully scanned (11 found). { success: true, msg: 'Nearby WiFi APs successfully scanned (11 found).', networks: [ { ssid: 'aterm-d014ce-g', channel: '6', signal_level: '70', security: 'WPA1 WPA2' }, { ssid: 'AP-2F-YA-2.4GHz', channel: '13', signal_level: '47', security: 'WPA1 WPA2' }, { ssid: 'AP-2F-YU-2.4GHz',





納得したらすぐにシェア!