meshtastic_mqtt

- Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.acid.vegas/-c.git
Log | Files | Refs | Archive | README | LICENSE

commit b4104b9833227984a6cf732968433f9c1ed611cd
parent 8ffb50e60edb4bc1dc2a9cb0a8dc775713cdf37a
Author: acidvegas <acid.vegas@acid.vegas>
Date: Sun, 15 Dec 2024 00:10:50 -0500

Fixed NaN error

Diffstat:
Msrc/meshtastic_mqtt_json/client.py | 14+++++++++++---

1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/meshtastic_mqtt_json/client.py b/src/meshtastic_mqtt_json/client.py
@@ -167,19 +167,27 @@ class MeshtasticMQTT(object):
 			if self.filters and portnum_name not in self.filters:
 				return
 
-			# Convert to JSON with parsing options to handle NaN
+			# Convert to JSON and handle NaN values in one shot
 			json_packet = json.loads(MessageToJson(mp, including_default_value_fields=True, 
 												 preserving_proto_field_name=True,
 												 float_precision=10))
 
-			# Replace NaN values with null in the JSON structure
+			# Replace all NaN values with null before any further processing
 			def replace_nan(obj):
+				'''
+				Replace all NaN values with null before any further processing
+
+				:param obj: The object to replace NaN values in
+				'''
 				if isinstance(obj, dict):
 					return {k: replace_nan(v) for k, v in obj.items()}
 				elif isinstance(obj, list):
 					return [replace_nan(x) for x in obj]
-				elif isinstance(obj, str) and obj == 'NaN':
+				elif isinstance(obj, float) and str(obj).lower() == 'nan':
+					return None
+				elif isinstance(obj, str) and obj.lower() == 'nan':
 					return None
+				
 				return obj
 
 			json_packet = replace_nan(json_packet)