MeshCore Sensor Nodes
MeshCore Sensor Firmware
MeshCore provides a dedicated Sensor firmware variant,
separate from the Repeater and Client variants. Flash it onto a supported
board (e.g. RAK4631, T-Echo) the same way you would any MeshCore firmware —
via the MeshCore web flasher or esptool.
Supported Sensors
- BME280 — temperature, humidity, barometric pressure (I2C). The most common choice for weather monitoring.
- BME680 — adds a gas/VOC sensor to the BME280 feature set. Useful for air quality monitoring.
- INA219 — voltage and current measurement over I2C. Ideal for monitoring battery banks, solar panels, or load current.
- Custom GPIO sensors — Sensor firmware exposes hooks for custom analog or digital inputs (see the MeshCore firmware source).
How Sensor Advertisements Work
Sensor firmware transmits readings as MeshCore advertisements at a user-configured interval. These broadcasts propagate through the mesh the same way any other MeshCore advertisement does — any repeater or client within range (direct or via relay) will receive and forward them. No special gateway or bridge is required to see sensor data in the MeshCore app's node list.
Power Profile
Sensor nodes can run at very low duty cycles, making them suitable for solar-powered or long-term battery deployments:
- nRF52840 (e.g. RAK4631) + BME280 at a 10-minute broadcast interval: approximately < 5 mAh/day.
- A 3 000 mAh LiPo at that rate lasts over 600 days without any charging.
- A single 1 W (6 V, ~170 mA peak) solar panel in a location with 4+ hours of useful sun per day comfortably offsets consumption and keeps the battery topped up indefinitely.
- For the most aggressive power savings, disable Bluetooth and set the LoRa TX power to the minimum needed to reach the nearest repeater.
Configuration
Configure sensor nodes via the MeshCore CLI over USB/serial or through the MeshCore mobile app over BLE:
- Set sensor type:
set sensor type bme280 - Set I2C address:
set sensor addr 0x76 - Set broadcast interval:
set sensor interval 600(seconds) - Enable or disable:
set sensor enabled true
Full CLI syntax is documented in the MeshCore Sensor CLI Reference page.
Use Cases
- Remote weather station: BME280 on a ridge or mountain peak, reporting temperature, humidity, and pressure every 10 minutes.
- Water level monitoring: ultrasonic or pressure sensor at a stream crossing or water tank.
- Air quality monitoring: BME680 in an urban or wildfire smoke corridor.
- Soil temperature for agriculture: BME280 buried at root depth in a remote field.
- Power system monitoring: INA219 across the shunt resistor of a solar-charged battery bank, reporting state of charge and load current.
Integration with Data Pipelines
Sensor advertisements are visible in the MeshCore app's node list alongside normal nodes. For automated data capture, use the MeshCore Python library to subscribe to the mesh and log readings to a database:
from meshcore import MeshCore
import sqlite3, datetime
mc = MeshCore("/dev/ttyUSB0")
db = sqlite3.connect("sensors.db")
db.execute("CREATE TABLE IF NOT EXISTS readings "
"(ts TEXT, node TEXT, temp REAL, hum REAL, pres REAL)")
def on_advert(advert):
if advert.get("type") == "sensor":
db.execute("INSERT INTO readings VALUES (?,?,?,?,?)", (
datetime.datetime.utcnow().isoformat(),
advert["node_name"],
advert.get("temperature"),
advert.get("humidity"),
advert.get("pressure"),
))
db.commit()
mc.on_advertisement = on_advert
mc.run()
Comparison with Meshtastic Telemetry
| Feature | Meshtastic Telemetry module | MeshCore Sensor firmware |
|---|---|---|
| BME280 / BME680 support | Yes | Yes |
| INA219 support | Yes (via power metrics) | Yes |
| Data propagation | Mesh packet (NodeInfo / Telemetry protobuf) | MeshCore advertisement broadcast |
| MQTT output | Yes (via Meshtastic MQTT module) | Requires MeshCore room server / Python bridge |
| Dedicated sensor firmware | No (runs on standard node firmware) | Yes — separate Sensor firmware variant |
| Power profile | Low — configurable TX interval | Very low — nRF52840 sleep between broadcasts |
No comments to display
No comments to display