https://github.com/flightaware/piaware-configurator
Flask endpoints to configure and control PiAware over HTTP
https://github.com/flightaware/piaware-configurator
Last synced: 6 months ago
JSON representation
Flask endpoints to configure and control PiAware over HTTP
- Host: GitHub
- URL: https://github.com/flightaware/piaware-configurator
- Owner: flightaware
- License: bsd-2-clause
- Created: 2021-12-07T16:13:17.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-04-05T13:37:57.000Z (about 2 years ago)
- Last Synced: 2024-04-05T14:43:10.097Z (about 2 years ago)
- Language: Python
- Size: 93.8 KB
- Stars: 1
- Watchers: 8
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PiAware Configurator
piaware-configurator is an API that provides several endpoints to read and write piaware configuration settings and retrieve device information and status over HTTP. It is implemented using [Flask](https://flask.palletsprojects.com/) so you can run it using Flask's built-in development server. In production, it is deployed behind the Python WSGI HTTP Server, [gunicorn](https://gunicorn.org/).
piaware-configurator is bound to localhost which makes it inaccessible to external hosts. Its intended use is for Bluetooth configuration and Web interface for ADS-B receivers.
## Endpoints
**URL**: http://localhost:5000/configurator
**Method**: `POST`
**Requests:** Endpoint accepts JSON formatted requests consisting of a "request" and a "request_payload" key to interface with piaware-config and device information
| Request | Command | Request Format (must be Content-Type: application/json) |
| --------------- | --------------- | --------------- |
| Read piaware config setting | piaware_config_read | `{ "request": "piaware_config_read", "request_payload" : ["receiver-type", "rtlsdr-gain"]}` |
| Set piaware config setting | piaware_config_write | `{"request": "piaware_config_write", "request_payload": {"receiver-type": "rtlsdr", "rtlsdr-gain": 50}}` |
| Get device info | get_device_info | `{"request": "get_device_info"}` |
| Get network info | get_network_info | `{"request": "get_network_info"}` |
| Get device state | get_device_state | `{"request": "get_device_state"}` |
| Get available WiFi networks | get_wifi_networks | `{"request": "get_wifi_networks"}` |
| Set Wifi configuration | set_wifi_config | `{"request": "set_wifi_config", "request_payload": {"wireless-ssid": , "wireless-password": "", "wireless-country": ""}}` |
| Restart receiver | restart_receiver | `{"request": "restart_receiver"}` |
**Response**: `200 OK`
```
{"success": true, "receiver-type": "rtlsdr", "rtlsdr-gain": 50}
{"success": false, "error": "Reading rtlsdr-gain is not allowed"}
{"success": false, "error": "Badly formatted setting"}
{"success": false, "error": "Server error occurred reading config setting: rtlsdr-gain"}
```
**Response**: `400 BAD REQUEST`
```
{"success": False, "error": "Missing request_payload field"}
{"success": False, "error": "Request_payload must be a list of settings to read"}
```
___
**URL**: http://localhost:5000/piaware/status
Returns the piaware status JSON
**Method**: `GET`
**Supported Responses**:
`200 OK`
```
{
"modes_enabled" : true,
"dump978_version" : "dump978-fa 8.2",
"interval" : 5000,
"cpu_load_percent" : 6,
"time" : 1693969799444,
"site_url" : "https://flightaware.com/adsb/stats/user/piawareuser
"system_uptime" : 342330,
"expiry" : 1693969810444,
"piaware" : {
"status" : "green",
"message" : "PiAware 8.2 is running"
},
"cpu_temp_celcius" : 55.017,
"uat_enabled" : false,
"dump1090_version" : "dump1090-fa 8.2",
"adept" : {
"status" : "green",
"message" : "Connected to FlightAware and logged in"
},
"mlat" : {
"status" : "amber",
"message" : "No clock synchronization with nearby receivers"
},
"piaware_version" : "8.2",
"radio" : {
"status" : "green",
"message" : "Received Mode S data recently"
}
}
```
`404 NOT FOUND` - No piaware status.json exists
___
**URL**: http://localhost:5000/flightfeeder/status
Returns the flightfeeder status JSON
**Method**: `GET`
**Supported Responses**:
`200 OK`
```
{
"serial" : "10508",
"software_version" : "11.0",
"modes_enabled" : true,
"type" : "flightfeeder",
"interval" : 60000,
"cpu_load_percent" : 9,
"site_url" : "https://flightaware.com/adsb/stats/user/flightfeederuser",
"time" : 1693969878283,
"system_uptime" : 372924,
"expiry" : 1693970059283,
"piaware" : {
"status" : "green",
"message" : "PiAware 8.2 is running; piaware running with pid 648"
},
"mac" : "b8:27:eb:d1:f1:e8",
"network" : {
"status" : "green",
"message" : "Remote management VPN connected"
},
"hardware_version" : "FlightFeeder Orange",
"cpu_temp_celcius" : 50.464,
"uat_enabled" : false,
"adept" : {
"status" : "green",
"message" : "Connected to FlightAware and logged in"
},
"mlat" : {
"status" : "green",
"message" : "Multilateration synchronized"
},
"radio" : {
"status" : "green",
"message" : "Received Mode S data recently"
}
}
```
`404 NOT FOUND` - No FlightFeeder status.json exists
## Tohil Usage
piaware-configurator uses [Tohil](https://github.com/flightaware/tohil) to bridge the gap between Python and Tcl and allows configuration of piaware using Python.