diff --git a/script/send-environment-metrics.py b/script/send-environment-metrics.py new file mode 100644 index 0000000..b77ef76 --- /dev/null +++ b/script/send-environment-metrics.py @@ -0,0 +1,53 @@ +# file name: send-environment-metrics.py +# https://github.com/pdxlocations/Meshtastic-Python-Examples/blob/main/send-environment-metrics.py + +from meshtastic.protobuf import portnums_pb2, telemetry_pb2 +from meshtastic import BROADCAST_ADDR +import time + +# For connection over serial +# import meshtastic.serial_interface +# interface = meshtastic.serial_interface.SerialInterface() + +# For connection over TCP +import meshtastic.tcp_interface +interface = meshtastic.tcp_interface.TCPInterface(hostname='127.0.0.1', noProto=False) + +# Create a telemetry data object +telemetry_data = telemetry_pb2.Telemetry() +telemetry_data.time = int(time.time()) +telemetry_data.local_stats.upTime = 0 +telemetry_data.environment_metrics.temperature = 0 +# telemetry_data.environment_metrics.voltage = 0 +# telemetry_data.environment_metrics.current = 0 +# telemetry_data.environment_metrics.relative_humidity = 0 +# telemetry_data.environment_metrics.barometric_pressure = 0 +# telemetry_data.environment_metrics.gas_resistance = 0 +# telemetry_data.environment_metrics.iaq = 0 +# telemetry_data.environment_metrics.distance = 0 +# telemetry_data.environment_metrics.lux = 0 +# telemetry_data.environment_metrics.white_lux = 0 +# telemetry_data.environment_metrics.ir_lux = 0 +# telemetry_data.environment_metrics.uv_lux = 0 +# telemetry_data.environment_metrics.wind_direction = 0 +# telemetry_data.environment_metrics.wind_speed = 0 +# telemetry_data.environment_metrics.wind_gust = 0 +# telemetry_data.environment_metrics.wind_lull = 0 +# telemetry_data.environment_metrics.weight = 0 + +# Read the uptime +with open('/proc/uptime', 'r') as uptime: + telemetry_data.local_stats.upTime = int(float(uptime.readline().split()[0])) + +# Read the CPU temperature +with open('/sys/class/thermal/thermal_zone0/temp', 'r') as cpu_temp: + telemetry_data.environment_metrics.temperature = int(cpu_temp.read()) / 1000 + +interface.sendData( + telemetry_data, + destinationId=BROADCAST_ADDR, + portNum=portnums_pb2.PortNum.TELEMETRY_APP, + wantResponse=False, +) + +interface.close() \ No newline at end of file