tcivie / meshtastic-metrics-exporter

Meshtastic MQTT exporter to Prometheus and Grafana (Dashboards included)
GNU General Public License v3.0
20 stars 2 forks source link

Exporter Crashes on JSON Parsing #27

Closed Talie5in closed 2 months ago

Talie5in commented 3 months ago

Appears exporter crashes when parsing JSON from MQTT

exporter_1    | Received message on topic 'msh/ANZ/SA/2/json/LongFast/!ebf908b5' at 2024-07-08 05:20:09
exporter_1    | Traceback (most recent call last):
exporter_1    |   File "/app/main.py", line 117, in <module>
exporter_1    |     mqtt_client.loop_forever()
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 2297, in loop_forever
exporter_1    |     rc = self._loop(timeout)
exporter_1    |          ^^^^^^^^^^^^^^^^^^^
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 1686, in _loop
exporter_1    |     rc = self.loop_read()
exporter_1    |          ^^^^^^^^^^^^^^^^
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 2100, in loop_read
exporter_1    |     rc = self._packet_read()
exporter_1    |          ^^^^^^^^^^^^^^^^^^^
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 3142, in _packet_read
exporter_1    |     rc = self._packet_handle()
exporter_1    |          ^^^^^^^^^^^^^^^^^^^^^
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 3808, in _packet_handle
exporter_1    |     return self._handle_publish()
exporter_1    |            ^^^^^^^^^^^^^^^^^^^^^^
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 4145, in _handle_publish
exporter_1    |     self._handle_on_message(message)
exporter_1    |   File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 4501, in _handle_on_message
exporter_1    |     on_message(self, self._userdata, message)
exporter_1    |   File "/app/main.py", line 58, in handle_message
exporter_1    |     envelope.ParseFromString(message.payload)
exporter_1    | google.protobuf.message.DecodeError: Error parsing message
mosquitto_1   | 1720416009: Client auto-CFAF52D5-A2C5-1AEA-82C3-65047951604B closed its connection.
meshtastic-metrics-exporter_exporter_1 exited with code 1
tcivie commented 3 months ago

Hey @Talie5in , thanks for the feedback. Currently the exporter supports only meshtastic protobuf format and not JSON. I should probably add support for this (Or at least filter these messages) in the next version

tcivie commented 2 months ago

Upon fuhrther investigation it looks like JSON messages can be in fact ignored because the original firmware is sending also the message in a protobuf format.

https://github.com/meshtastic/firmware/blob/master/src/mqtt/MQTT.cpp#L448

So the issue can be ignored and is resolved as part of this issue: #26 #28