Repeaters now report their firmware version (REQ_TYPE_GET_OWNER_INFO), checked daily and after a reboot, into meshcore_repeater_info. Firmware changes show as Grafana annotations and in the web UI node list. Repeaters on keymind/Cascade firmware keep 7 days of half-hourly battery voltage and MCU temperature. With history = true and an admin login, the collector fetches enough days via the remote CLI to fill gaps after missed polls, writing them to meshcore_repeater_history.
76 lines
3.4 KiB
TOML
76 lines
3.4 KiB
TOML
# Copy to config.toml and edit, or use install.sh and manage everything from
|
|
# the web UI. Note: when the web UI saves, it rewrites this file without comments.
|
|
|
|
[connection]
|
|
# The companion radio attached to the machine running this script.
|
|
type = "serial" # "serial", "tcp" or "ble"
|
|
port = "/dev/ttyUSB0" # serial: device path (macOS: /dev/cu.usbserial-XXXX or /dev/cu.usbmodemXXXX)
|
|
baudrate = 115200
|
|
# type = "tcp"
|
|
# host = "192.168.1.50"
|
|
# port = 5000
|
|
# type = "ble"
|
|
# address = "AA:BB:CC:DD:EE:FF"
|
|
# pin = "123456"
|
|
|
|
[influxdb]
|
|
url = "http://localhost:8086"
|
|
token = "my-token" # InfluxDB 1.8: "username:password"
|
|
org = "home" # InfluxDB 1.8: "-"
|
|
bucket = "meshcore" # InfluxDB 1.8: "database/retention_policy"
|
|
|
|
[poll]
|
|
interval_seconds = 900 # see README: 15 min is a sensible default
|
|
retries = 3 # per request; mesh packets get lost
|
|
timeout_seconds = 0 # 0 = use the radio's suggested timeout (scales with hop count)
|
|
state_file = "state.json" # remembers last poll time + low-power mode across restarts
|
|
local_stats_interval_seconds = 60 # stats of the attached companion (no airtime); 0 = off
|
|
location_interval_seconds = 900 # node positions from heard adverts, for the map; 0 = off
|
|
|
|
# Low-battery back-off (solar nodes). Below low_battery_mv, poll every
|
|
# low_battery_interval_seconds and skip the requests in low_battery_skip;
|
|
# stay there until the battery reaches recover_battery_mv. 0 disables.
|
|
# Values below suit a single Li-ion cell; LiFePO4 is flatter (e.g. 3200 / 3300).
|
|
low_battery_mv = 3500
|
|
recover_battery_mv = 3750
|
|
low_battery_interval_seconds = 3600
|
|
low_battery_skip = ["neighbours"] # any of "status", "telemetry", "neighbours"
|
|
# Every key in this [poll] block from interval_seconds down (except state_file)
|
|
# can be overridden per [[repeater]].
|
|
|
|
[advert]
|
|
# Automatic self-adverts so other companions can add this one (needed before they'll
|
|
# share telemetry with it). 0 = off; otherwise 3-168 hours. Manual adverts: web UI.
|
|
interval_hours = 0
|
|
flood = true # false = zero-hop only (direct neighbours)
|
|
|
|
[web]
|
|
listen = "0.0.0.0" # "127.0.0.1" to only allow local access (e.g. behind a reverse proxy)
|
|
port = 8080
|
|
# password_hash is set with: python meshcore_influx.py -c config.toml --set-password
|
|
|
|
# One block per repeater. It must already be in the companion's contact list.
|
|
[[repeater]]
|
|
name = "My Repeater" # advert name, case-insensitive
|
|
password = "guest-or-admin-pw" # guest is enough for status + basic telemetry + neighbours
|
|
# pubkey_prefix = "a1b2c3d4" # match by key instead of name; name is then just a label
|
|
enabled = true
|
|
status = true
|
|
telemetry = true
|
|
neighbours = true
|
|
# history = true # keymind/Cascade firmware + admin password: backfill missed
|
|
# polls from the repeater's 7-day half-hourly battery/temp history
|
|
|
|
# [[repeater]]
|
|
# name = "Hilltop"
|
|
# password = "..."
|
|
# low_battery_mv = 0 # mains powered: never back off
|
|
|
|
# Remote companions (other people's chat nodes): telemetry only, no password.
|
|
# They answer only if their owner shares telemetry and has this companion as a contact.
|
|
# [[companion]]
|
|
# name = "Bob's T-Deck"
|
|
# pubkey_prefix = "0b1c2d3e"
|
|
# location = false # true = also request GPS (only with the owner's agreement)
|
|
# interval_seconds = 1800
|