Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openrfsense/node
OpenRFSense remote node management software
https://github.com/openrfsense/node
go golang mqtt rtl-sdr sdr software-defined-radio
Last synced: about 1 month ago
JSON representation
OpenRFSense remote node management software
- Host: GitHub
- URL: https://github.com/openrfsense/node
- Owner: openrfsense
- License: agpl-3.0
- Created: 2022-03-28T11:02:21.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-07-02T08:25:44.000Z (6 months ago)
- Last Synced: 2024-11-15T18:19:49.074Z (about 2 months ago)
- Topics: go, golang, mqtt, rtl-sdr, sdr, software-defined-radio
- Language: Go
- Homepage:
- Size: 1.21 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenRFSense Node
The node software is designed to run as a daemon on remote/embedded devices, which serve as RF monitoring stations. This daemon is responsible for:
- Handling commands sent by the backend through MQTT and responding accordingly
- Showing a simple web interface exposed on `localhost`, easily accessible via the temporary hotspot (see [`openrfsense/image`](https://github.com/openrfsense/image))## Table of contents
- [OpenRFSense Node](#openrfsense-node)
- [Configuration](#configuration)
- [YAML](#yaml)
- [Environment variables](#environment-variables)
- [NATS](#nats)
- [System statistics/metrics](#system-statisticsmetrics)### Configuration
> ⚠️ The configuration is WIPThe `config` module from [`openrfsense/common`](https://github.com/openrfsense/common) is used. As such, configuration values are loaded from a YAML file first, then from environment variables.
#### YAML
See the example [`config.yml`](./config.yml) file for now, as the configuration is very prone to change.#### Environment variables
Environment variables are defined as follows: `ORFS_SECTION_SUBSECTION_KEY=value`. They are loaded after any other configuration file, so they cam be used to overwrite any configuration value.### NATS
Nodes use [NATS](https://nats.io/) to exchange messages, under the `node.` root subject. Messages are encoded with JSON and relayed in NATS' own wire format. The subject structure can be generalized as follows:
- General, network-wide or broadcast messages:
- Backend sends a request on `node.$channel`
- Nodes send NATS replies on a single arbitrary/unique inbox
- Single-node requests:
- Backend sends a request on `node.$id.$channel`
- The node sends a NATS reply on an arbitrary/unique inbox#### System statistics/metrics
> This section will probably get moved, but it felt right to include it in this readme