Skip to content

rx-v2.8.6

Choose a tag to compare

@github-actions github-actions released this 27 May 15:17
· 3 commits to main since this release

rx-v2.8.6 — bidirectional sensor sync + on-device diagnostic console

This release pairs with tx-v2.0.15 and lights up two things I've wanted on the hub for a while: the receiver now understands which sensor each transmitter is actually running, and there's a built-in diagnostic console you can pull straight from the device — no laptop-on-balcony required.

What's new

Per-transmitter sensor selector

Each tank's edit sheet now has a Sensor dropdown (Ultrasonic AJ-SR04M / mmWave HLK-LD2413). The receiver tracks two fields per TX:

  • sensor_kind — what the hub wants the TX to use
  • active_sensor — what the TX is actually running, reported back inside each TANK packet

When you save a change from the hub or the PWA, the value gets queued as a remote-config update, sent over LoRa via the existing SET: downlink (now with a :SENSOR= clause), ACKed by the TX, and the next TANK frame closes the loop with active_sensor matching sensor_kind. Mixed-firmware fleets keep working — older TXs that don't yet emit the field parse fine with active_sensor="".

If you change the sensor on the TX directly (via its AP web UI), the hub also learns from it. When the registry sees an active_sensor that diverges from its sensor_kind and no SET is in flight, it auto-syncs the registry to TX-truth. So edits from either side converge.

Diagnostic console

Boot-time logging is now captured into a 4 KB ring buffer inside the receiver and exposed at GET /api/logs. Paired with the diagnostic-mode toggle on the TX firmware, you can pull a live log tail from either device to a terminal:

curl http://<hub-ip>/api/logs        # whole tail
curl http://<hub-ip>/api/log_clear   # wipe + start fresh

No serial cable, no rooftop, no opening the case. The previous LoRa-OTA debug story relied on plugging into the TX — now you can diagnose from anywhere on the LAN.

MQTT bridge for the new field

Cloud telemetry now exposes:

  • tank_<addr>/sensor_kind (retained) — hub's desired sensor for this TX
  • tank_<addr>/active_sensor (retained) — what the TX is currently running
  • cmd/set_config now accepts a sensor_kind field for remote control from the PWA

What changed (file-level)

  • components/transmitter_registry/ — added sensor_kind + active_sensor fields, bidirectional auto-sync when TX-truth diverges from registry intent, registry_set_sensor_kind() API
  • components/lora_rylr998/ — TANK parser extracts the 11th positional field (active_sensor); backwards-compat with older TXs that omit it
  • components/web_server/ — Edit Tank sheet adds the Sensor dropdown (full-width row), /api/transmitters returns both fields, /api/logs + /api/log_clear added, max URI handlers bumped to 12 so the new endpoints actually register
  • components/mqtt_client/ — publishes both fields as retained topics, accepts sensor_kind on cmd/set_config
  • components/log_buffer/ — new component: 4 KB ring buffer wired up via esp_log_set_vprintf()
  • main/main.c — SET-frame builder appends :SENSOR=... when a sensor change is queued; log_buffer_init() runs first thing in app_main

OTA + upgrade notes

Standard OTA from any rx-v2.7.x+ build via the Settings → System → Check for updates flow on the hub web UI. The cloud-side OTA proxy and PWA OTA panel both already understand the new version. No manual steps required after upgrade — the new fields default to empty ("") on existing transmitters and populate as soon as each TX reports its active_sensor on the next wake.

If you're also flashing tx-v2.0.15 transmitters: the pair works end-to-end on the bench (Normal Water Tank, addr 2, on my own deployment). For mixed fleets with older TX firmware, the hub gracefully treats them as active_sensor="" and skips sensor-change downlinks until you upgrade them.

Why rx-v2.8.6 instead of rx-v2.8.5?

rx-v2.8.5 already shipped earlier this week as the version-stamping bugfix release (single-VERSION-file pattern). The sensor-sync work outgrew that scope, so it gets its own tag to keep release-history clean. Both 2.8.5 and 2.8.6 are OTA-compatible with any tx-v2.0.x transmitter.

Hardware compatibility

No hardware changes. Works on existing TankSync REV 2.2 PCBs and breadboards. The HLK-LD2413 driver lives on the TX firmware side, not the RX — see the tx-v2.0.15 notes for sensor wiring.

— Ravi