Skip to main content

Environmental Monitoring with Meshtastic

Use Case Overview

LoRa mesh networking enables remote environmental monitoring in locations without cellular coverage or WiFi infrastructure. A solar-powered Meshtastic node with an attached sensor can transmit temperature, humidity, air quality, soil moisture, and other telemetry data across the mesh to a gateway, which forwards it to a database or home automation system.

Common applications include:

  • Weather station on a remote property or off-grid cabin
  • Soil moisture monitoring for irrigation management across a farm
  • Air quality monitoring at a remote site or community location
  • Freezer/cold storage temperature monitoring with alerts

Supported Sensor Modules

Meshtastic's Telemetry module supports a range of sensor types natively:

  • BME280 / BME680 — temperature, relative humidity, barometric pressure; BME680 also provides a gas resistance reading useful for air quality estimates
  • INA219 / INA260 — DC voltage and current monitoring; useful for monitoring solar panel output, battery charge state, or load current
  • MQ-series gas sensors (MQ-2, MQ-135, etc.) — analog output sensors readable via ADC; useful for smoke, CO, or general air quality detection

Hardware Setup: BME280 Wiring

The BME280 is the most commonly used environmental sensor with Meshtastic. It connects via I2C:

  • VCC → 3.3V
  • GND → GND
  • SDA → GPIO21 (T-Beam, Heltec V2/V3 — verify your specific board pinout)
  • SCL → GPIO22 (T-Beam, Heltec V2/V3 — verify your specific board pinout)

After wiring, enable the sensor in the Meshtastic app or CLI: navigate to Telemetry → Environment and enable the module. The node will begin broadcasting environment telemetry on the mesh.

Reading Sensor Data

Telemetry data is accessible through multiple paths:

  • Meshtastic app (phone): telemetry appears in the node info panel when you tap on a node — shows last-received temperature, humidity, pressure, and other available metrics
  • MQTT gateway: a Meshtastic node with WiFi or a gateway device forwards telemetry packets as JSON to an MQTT broker. This enables integration with databases and dashboards.

Sample MQTT Telemetry JSON Structure

When a telemetry packet is forwarded via MQTT, the JSON payload contains:

  • from — the node number (integer) of the sending device
  • to — the destination node number (usually the broadcast address)
  • decoded.telemetry.environmentMetrics — the environment data object, containing:
    • temperature — degrees Celsius (float)
    • relativeHumidity — percentage (float, 0–100)
    • barometricPressure — hPa (float)
    • gasResistance — ohms (float; BME680 only, correlates with VOC concentration)

This JSON structure can be consumed directly by InfluxDB (via Telegraf or a Node-RED flow), Home Assistant MQTT sensors, or any custom application that subscribes to the MQTT topic.

Integration Targets

  • InfluxDB + Grafana: store time-series telemetry and visualize on dashboards; well-suited for long-term environmental data logging
  • Home Assistant: configure MQTT sensors using the telemetry JSON structure; trigger automations on temperature or humidity thresholds
  • Node-RED: flexible pipeline for transforming, filtering, and routing telemetry data to multiple destinations simultaneously

Deployment Considerations

  • Enclosure: use a weatherproof IP65+ enclosure for outdoor deployments; mount the sensor in a vented radiation shield for accurate temperature readings — direct sunlight on the enclosure will give artificially high temperature readings
  • Solar power: a small 1–5W solar panel with a LiPo battery and a TP4056-based charge controller is sufficient for most sensor nodes; the low duty cycle of LoRa transmission makes solar viable even in partial sun
  • Sensor venting: drill small holes or use a membrane vent in the enclosure so humidity and temperature readings reflect ambient conditions, not the trapped air inside the box

Power Impact of Environmental Sensors

The BME280 draws approximately 1–3 mA average, which is negligible relative to the LoRa radio and microcontroller. At a 10-minute telemetry interval on a T-Beam or similar device, sensor power consumption has minimal impact on overall battery life. The dominant power draw remains the ESP32 or nRF52840 idle current and LoRa transmit bursts.