One of the practical applications of Meshtastic is collecting environment telemetry. It would be great if PotatoMesh covers all environment data, supported by Meshtastic firmware. Here is the protobuf schema with all possible sensor fields.
As far as I can see (in Telemetry table in mesh.db) currently only temperature, pressure and humidity are supported by PotatoMesh.
One of the practical applications of Meshtastic is collecting environment telemetry. It would be great if PotatoMesh covers all environment data, supported by Meshtastic firmware. Here is the [protobuf schema](https://buf.build/meshtastic/protobufs/docs/master:meshtastic#meshtastic.EnvironmentMetrics) with all possible sensor fields.
As far as I can see (in Telemetry table in mesh.db) currently only temperature, pressure and humidity are supported by PotatoMesh.
<!-- github-sync-id:3526778842 -->
I am only collecting what I know about. Thanks for sharing.
Curious which metrics you are missing? I can add more columns to the table but will there be any practical benefit if nobody actually feeds these cells?
Also, how do we display all available metrics on the dashboard? We pretty much exhaust the possible table width already.
message EnvironmentMetrics {
// Temperature measured
optional float temperature = 1;
// Relative humidity percent measured
optional float relative_humidity = 2;
// Barometric pressure in hPA measured
optional float barometric_pressure = 3;
// Gas resistance in MOhm measured
optional float gas_resistance = 4;
// Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float voltage = 5;
// Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float current = 6;
// relative scale IAQ value as measured by Bosch BME680 . value 0-500.
// Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
optional uint32 iaq = 7;
// RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
optional float distance = 8;
// VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
optional float lux = 9;
// VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
optional float white_lux = 10;
// Infrared lux
optional float ir_lux = 11;
// Ultraviolet lux
optional float uv_lux = 12;
// Wind direction in degrees
// 0 degrees = North, 90 = East, etc...
optional uint32 wind_direction = 13;
// Wind speed in m/s
optional float wind_speed = 14;
// Weight in KG
optional float weight = 15;
// Wind gust in m/s
optional float wind_gust = 16;
// Wind lull in m/s
optional float wind_lull = 17;
// Radiation in µR/h
optional float radiation = 18;
// Rainfall in the last hour in mm
optional float rainfall_1h = 19;
// Rainfall in the last 24 hours in mm
optional float rainfall_24h = 20;
// Soil moisture measured (% 1-100)
optional uint32 soil_moisture = 21;
// Soil temperature measured (*C)
optional float soil_temperature = 22;
}
I have only seen the environmental sensors for temperature, humidity, and pressure on the radio but happy to extend it if you point me to some fields that are actually used. Certainly not soil moisture? 😛
I am only collecting what I know about. Thanks for sharing.
Curious which metrics you are missing? I can add more columns to the table but will there be any practical benefit if nobody actually feeds these cells?
Also, how do we display all available metrics on the dashboard? We pretty much exhaust the possible table width already.
```
message EnvironmentMetrics {
// Temperature measured
optional float temperature = 1;
// Relative humidity percent measured
optional float relative_humidity = 2;
// Barometric pressure in hPA measured
optional float barometric_pressure = 3;
// Gas resistance in MOhm measured
optional float gas_resistance = 4;
// Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float voltage = 5;
// Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float current = 6;
// relative scale IAQ value as measured by Bosch BME680 . value 0-500.
// Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
optional uint32 iaq = 7;
// RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
optional float distance = 8;
// VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
optional float lux = 9;
// VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
optional float white_lux = 10;
// Infrared lux
optional float ir_lux = 11;
// Ultraviolet lux
optional float uv_lux = 12;
// Wind direction in degrees
// 0 degrees = North, 90 = East, etc...
optional uint32 wind_direction = 13;
// Wind speed in m/s
optional float wind_speed = 14;
// Weight in KG
optional float weight = 15;
// Wind gust in m/s
optional float wind_gust = 16;
// Wind lull in m/s
optional float wind_lull = 17;
// Radiation in µR/h
optional float radiation = 18;
// Rainfall in the last hour in mm
optional float rainfall_1h = 19;
// Rainfall in the last 24 hours in mm
optional float rainfall_24h = 20;
// Soil moisture measured (% 1-100)
optional uint32 soil_moisture = 21;
// Soil temperature measured (*C)
optional float soil_temperature = 22;
}
```
I have only seen the environmental sensors for temperature, humidity, and pressure on the radio but happy to extend it if you point me to some fields that are actually used. Certainly not soil moisture? 😛
<!-- github-comment-id:3416782897 -->
Out of 398 nodes, 6 have temperature, 4 have pressure, and 2 have humidity. I have not yet seen lux or wind or soil data.
That's what we got in Berlin.
<img width="351" height="351" alt="Image" src="https://github.com/user-attachments/assets/8335e22c-6b9a-42bf-a36d-3054fe83b46a" />
Out of 398 nodes, 6 have temperature, 4 have pressure, and 2 have humidity. I have not yet seen lux or wind or soil data.
<!-- github-comment-id:3418037032 -->
Well, I'm a bit biased 😁 since I just converted my weather station to pass data to the mesh by protobuf encoding unsupported sensors. I have now rainfall, wind speed and wind direction and solar battery power, on the top of what you mentioned. Check the readme in my repo to see what I mean.
The trouble is that Meshtastic supports limited variety of sensors (mainly i2c) and this restricts the applications. That's why I figured out how to inject unsupported sensors' data (so long the firmware has such data type).
I could contribute to the potato-mesh ingestor part, since it's Python, but can't do anything about the web (Ruby) part.
Well, I'm a bit biased 😁 since I just converted my weather station to pass data to the mesh by protobuf encoding unsupported sensors. I have now rainfall, wind speed and wind direction and solar battery power, on the top of what you mentioned. Check the readme in [my repo](https://github.com/varna9000/micropython-meshtastic) to see what I mean.
The trouble is that Meshtastic supports limited variety of sensors (mainly i2c) and this restricts the applications. That's why I figured out how to inject unsupported sensors' data (so long the firmware has such data type).
I could contribute to the potato-mesh ingestor part, since it's Python, but can't do anything about the web (Ruby) part.
<!-- github-comment-id:3418054286 -->
I am only collecting what I know about. Thanks for sharing.
Curious which metrics you are missing? I can add more columns to the table but will there be any practical benefit if nobody actually feeds these cells?
Also, how do we display all available metrics on the dashboard? We pretty much exhaust the possible table width already.
message EnvironmentMetrics {
// Temperature measured
optional float temperature = 1;
// Relative humidity percent measured
optional float relative_humidity = 2;
// Barometric pressure in hPA measured
optional float barometric_pressure = 3;
// Gas resistance in MOhm measured
optional float gas_resistance = 4;
// Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float voltage = 5;
// Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
optional float current = 6;
// relative scale IAQ value as measured by Bosch BME680 . value 0-500.
// Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
optional uint32 iaq = 7;
// RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
optional float distance = 8;
// VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
optional float lux = 9;
// VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
optional float white_lux = 10;
// Infrared lux
optional float ir_lux = 11;
// Ultraviolet lux
optional float uv_lux = 12;
// Wind direction in degrees
// 0 degrees = North, 90 = East, etc...
optional uint32 wind_direction = 13;
// Wind speed in m/s
optional float wind_speed = 14;
// Weight in KG
optional float weight = 15;
// Wind gust in m/s
optional float wind_gust = 16;
// Wind lull in m/s
optional float wind_lull = 17;
// Radiation in µR/h
optional float radiation = 18;
// Rainfall in the last hour in mm
optional float rainfall_1h = 19;
// Rainfall in the last 24 hours in mm
optional float rainfall_24h = 20;
// Soil moisture measured (% 1-100)
optional uint32 soil_moisture = 21;
// Soil temperature measured (*C)
optional float soil_temperature = 22;
}
I have only seen the environmental sensors for temperature, humidity, and pressure on the radio but happy to extend it if you point me to some fields that are actually used. Certainly not soil moisture? 😛
Well, it could be visible in the popup on node click on the map only. You don't need to show it in the node list table. More importantly, the GET /api/telemetry would be a very nice endpoint for getting these sensor data for visualising (or storing) them somewhere else.
> I am only collecting what I know about. Thanks for sharing.
>
> Curious which metrics you are missing? I can add more columns to the table but will there be any practical benefit if nobody actually feeds these cells?
>
> Also, how do we display all available metrics on the dashboard? We pretty much exhaust the possible table width already.
>
> ```
> message EnvironmentMetrics {
> // Temperature measured
> optional float temperature = 1;
> // Relative humidity percent measured
> optional float relative_humidity = 2;
> // Barometric pressure in hPA measured
> optional float barometric_pressure = 3;
> // Gas resistance in MOhm measured
> optional float gas_resistance = 4;
> // Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
> optional float voltage = 5;
> // Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
> optional float current = 6;
> // relative scale IAQ value as measured by Bosch BME680 . value 0-500.
> // Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
> optional uint32 iaq = 7;
> // RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
> optional float distance = 8;
> // VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
> optional float lux = 9;
> // VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
> optional float white_lux = 10;
> // Infrared lux
> optional float ir_lux = 11;
> // Ultraviolet lux
> optional float uv_lux = 12;
> // Wind direction in degrees
> // 0 degrees = North, 90 = East, etc...
> optional uint32 wind_direction = 13;
> // Wind speed in m/s
> optional float wind_speed = 14;
> // Weight in KG
> optional float weight = 15;
> // Wind gust in m/s
> optional float wind_gust = 16;
> // Wind lull in m/s
> optional float wind_lull = 17;
> // Radiation in µR/h
> optional float radiation = 18;
> // Rainfall in the last hour in mm
> optional float rainfall_1h = 19;
> // Rainfall in the last 24 hours in mm
> optional float rainfall_24h = 20;
> // Soil moisture measured (% 1-100)
> optional uint32 soil_moisture = 21;
> // Soil temperature measured (*C)
> optional float soil_temperature = 22;
> }
> ```
>
> I have only seen the environmental sensors for temperature, humidity, and pressure on the radio but happy to extend it if you point me to some fields that are actually used. Certainly not soil moisture? 😛
Well, it could be visible in the popup on node click on the map only. You don't need to show it in the node list table. More importantly, the GET /api/telemetry would be a very nice endpoint for getting these sensor data for visualising (or storing) them somewhere else.
<!-- github-comment-id:3418057728 -->
You can test #385 if you like and verify the data exists in database or /api/telemetry/${id}
It does not yet show in frontend but can create a subsequent patch if it works
You can test #385 if you like and verify the data exists in database or /api/telemetry/${id}
It does not yet show in frontend but can create a subsequent patch if it works
<!-- github-comment-id:3418266003 -->
I think it's working good. I can see the wind speed and wind direction on the web API point. Battery sensor is not connected yet, and it's not raining currently, but I assume those would work too. Thanks for the speedy action on this 👍
Which weather station are you using if I may ask? I also have a Meshtastic node on a Raspberry Pi, maybe I look into that!
I want to broadcast soil moisture over the Mesh ;-)
That is so cool!
Which weather station are you using if I may ask? I also have a Meshtastic node on a Raspberry Pi, maybe I look into that!
I want to broadcast soil moisture over the Mesh ;-)
<!-- github-comment-id:3418425065 -->
> That is so cool!
>
> Which weather station are you using if I may ask? I also have a Meshtastic node on a Raspberry Pi, maybe I look into that!
>
> I want to broadcast soil moisture over the Mesh ;-)
It's a custom one I made, running micropython code. The sensors are from Aliexpress. I have adapted the [Raspberry Pi weather station tutorial python code,](https://projects.raspberrypi.org/en/projects/build-your-own-weather-station) to work on the Pico with micropython.


<!-- github-comment-id:3418444728 -->
@varna9000 please take a look at #387 - will draft a release if this works out for you
Looks good!
> [@varna9000](https://github.com/varna9000) please take a look at [#387](https://github.com/l5yth/potato-mesh/pull/387) - will draft a release if this works out for you
Looks good!
<img width="199" height="155" alt="Image" src="https://github.com/user-attachments/assets/11ba52b5-8f77-47a9-89c7-9963e90ea6bb" />
<!-- github-comment-id:3419544733 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
One of the practical applications of Meshtastic is collecting environment telemetry. It would be great if PotatoMesh covers all environment data, supported by Meshtastic firmware. Here is the protobuf schema with all possible sensor fields.
As far as I can see (in Telemetry table in mesh.db) currently only temperature, pressure and humidity are supported by PotatoMesh.
I am only collecting what I know about. Thanks for sharing.
Curious which metrics you are missing? I can add more columns to the table but will there be any practical benefit if nobody actually feeds these cells?
Also, how do we display all available metrics on the dashboard? We pretty much exhaust the possible table width already.
I have only seen the environmental sensors for temperature, humidity, and pressure on the radio but happy to extend it if you point me to some fields that are actually used. Certainly not soil moisture? 😛
That's what we got in Berlin.
Out of 398 nodes, 6 have temperature, 4 have pressure, and 2 have humidity. I have not yet seen lux or wind or soil data.
Well, I'm a bit biased 😁 since I just converted my weather station to pass data to the mesh by protobuf encoding unsupported sensors. I have now rainfall, wind speed and wind direction and solar battery power, on the top of what you mentioned. Check the readme in my repo to see what I mean.
The trouble is that Meshtastic supports limited variety of sensors (mainly i2c) and this restricts the applications. That's why I figured out how to inject unsupported sensors' data (so long the firmware has such data type).
I could contribute to the potato-mesh ingestor part, since it's Python, but can't do anything about the web (Ruby) part.
Well, it could be visible in the popup on node click on the map only. You don't need to show it in the node list table. More importantly, the GET /api/telemetry would be a very nice endpoint for getting these sensor data for visualising (or storing) them somewhere else.
You can test #385 if you like and verify the data exists in database or /api/telemetry/${id}
It does not yet show in frontend but can create a subsequent patch if it works
I think it's working good. I can see the wind speed and wind direction on the web API point. Battery sensor is not connected yet, and it's not raining currently, but I assume those would work too. Thanks for the speedy action on this 👍
That is so cool!
Which weather station are you using if I may ask? I also have a Meshtastic node on a Raspberry Pi, maybe I look into that!
I want to broadcast soil moisture over the Mesh ;-)
Reopening for frontend support.
It's a custom one I made, running micropython code. The sensors are from Aliexpress. I have adapted the Raspberry Pi weather station tutorial python code, to work on the Pico with micropython.
@varna9000 please take a look at #387 - will draft a release if this works out for you
Looks good!