thermferm/mqtt.c

changeset 678
cc49115e769e
parent 675
825210ba2707
child 689
f94b525f7563
--- a/thermferm/mqtt.c	Sun Apr 14 14:41:38 2024 +0200
+++ b/thermferm/mqtt.c	Mon Apr 15 17:04:57 2024 +0200
@@ -1220,8 +1220,10 @@
     /*
      * Build and send websocket message.
      */
-    payload = xstrcpy((char *)"{\"fermenter\":");
-    payloadu = unit_data(unit, true);
+    payload = xstrcpy((char *)"{\"type\":\"fermenter\",\"unit\":\"");
+    payload = xstrcat(payload, unit->alias);
+    payload = xstrcat(payload, (char *)"\",\"metric\":");
+    payloadu = unit_data(unit, false);
     payload = xstrcat(payload, payloadu);
     payload = xstrcat(payload, (char *)"}");
     ws_broadcast(payload);
@@ -1229,6 +1231,8 @@
     payload = NULL;
     free(payloadu);
     payloadu = NULL;
+
+    unit->mqtt_flag &= ~MQTT_FLAG_DATA;
 }
 
 
@@ -1410,20 +1414,19 @@
     char		*payload = NULL, buf[64];
     struct utsname	ubuf;
 
-    payload = xstrcpy((char *)"{\"thermferm\":{");
-
+    payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\"");
+    payload = xstrcat(payload, Config.name);
+    payload = xstrcat(payload, (char *)"\",\"node\":\"");
     if (uname(&ubuf) == 0) {
-	payload = xstrcat(payload, (char *)"\"node\":\"");
 	payload = xstrcat(payload, ubuf.nodename);
 	payload = xstrcat(payload, (char *)"\",\"os\":\"");
 	payload = xstrcat(payload, ubuf.sysname);
 	payload = xstrcat(payload, (char *)"\",\"os_version\":\"");
 	payload = xstrcat(payload, ubuf.release);
-	payload = xstrcat(payload, (char *)"\"");
     } else {
-	payload = xstrcat(payload, (char *)"\"node\":\"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown\"");
+	payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown");
     }
-    payload = xstrcat(payload, (char *)",\"FW\":\"");
+    payload = xstrcat(payload, (char *)"\",\"FW\":\"");
     payload = xstrcat(payload, (char *)VERSION);
     payload = xstrcat(payload, (char *)"\"");
 
@@ -1444,7 +1447,7 @@
         payload = xstrcat(payload, (char *)"}");
     }
 
-    payload = xstrcat(payload, (char *)"}}");
+    payload = xstrcat(payload, (char *)"}");
     ws_broadcast(payload);
     free(payload);
     payload = NULL;

mercurial