README
¶
pi-wifi
Simple WIFI setup over bluetooth
This servie uses network manager API to connect to a WIFI network.
The implementation offers two interfaces
- a bluetooth service
- a rest API for local(host) usage by other services
Example
You can use go run main.go
on a linux machine to start the software.
Then point your browser to http://localhost:9099/ to see an example usage.
Implementation
Bluetooth
The BLE server exposes one service 12342233-0000-1000-8000-00805f9b34fb
with two characteristics
0x3344
that supports- read - return the connectivity status as enum with values connected, limited, unknown, disconnected
- write - accept a UTF8 string in the format WIFI:T:WPA;S:;P:;H:false; (if ssid or password contains : or ; they must be backslashed eg ;
0x4455
that support read and list the available APs the wifi device found. The response is in the formatSSID;strength\n
a double \n indicates the end of the list
HTTP API
The service exposes also an HTTP API to intereact with WIFI connections
/connect
connect to a WIFI connection. Expects a body in the format{ "payload": "WIFI:T:WPA;S:your ssid;P:your password;H:false;;" }
/status
return the connection status with format{"status": "connected"}
/listap
list the reachable APs in format{"accessPoints": [ { "ssid": "example", "strength": 54 } ]}
The connection string format is based on https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
Documentation
¶
Overview ¶
Copyright © 2020 Luca Capra
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.