thermferm/mqtt.c

changeset 689
f94b525f7563
parent 678
cc49115e769e
child 693
3518c07737d8
--- a/thermferm/mqtt.c	Fri Apr 19 14:11:19 2024 +0200
+++ b/thermferm/mqtt.c	Fri Apr 19 20:56:55 2024 +0200
@@ -1409,9 +1409,9 @@
 }
 
 
-void node_ws(void)
+char *global_json(void)
 {
-    char		*payload = NULL, buf[64];
+    char		*payload, buf[64];
     struct utsname	ubuf;
 
     payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\"");
@@ -1428,26 +1428,79 @@
     }
     payload = xstrcat(payload, (char *)"\",\"FW\":\"");
     payload = xstrcat(payload, (char *)VERSION);
-    payload = xstrcat(payload, (char *)"\"");
+    payload = xstrcat(payload, (char *)"\",\"server_port\":");
+    sprintf(buf, "%d", Config.my_port);
+    payload = xstrcat(payload, buf);
+    payload = xstrcat(payload, (char *)",\"websocket_port\":");
+    sprintf(buf, "%d", Config.websocket_port);
+    payload = xstrcat(payload, buf);
 
     if (Config.temp_address || Config.hum_address) {
         payload = xstrcat(payload, (char *)",\"THB\":{");
         if (Config.temp_address) {
-            payload = xstrcat(payload, (char *)"\"temperature\":");
-            sprintf(buf, "%.1f", Config.temp_value / 1000.0);
+            payload = xstrcat(payload, (char *)"\"temperature\":{\"address\":\"");
+	    payload = xstrcat(payload, Config.temp_address);
+	    payload = xstrcat(payload, (char *)"\",\"state\":\"");
+	    payload = xstrcat(payload, (char *)TEMPSTATE[Config.temp_state]);
+	    payload = xstrcat(payload, (char *)"\",\"value\":");
+            sprintf(buf, "%d", Config.temp_value);
             payload = xstrcat(payload, buf);
+	    payload = xstrcat(payload, (char *)"}");
         }
         if (Config.temp_address && Config.hum_address)
             payload = xstrcat(payload, (char *)",");
         if (Config.hum_address) {
-            payload = xstrcat(payload, (char *)"\"humidity\":");
-            sprintf(buf, "%.1f", Config.hum_value / 1000.0);
+            payload = xstrcat(payload, (char *)"\"humidity\":{\"address\":\"");
+	    payload = xstrcat(payload, Config.hum_address);
+            payload = xstrcat(payload, (char *)"\",\"state\":\"");
+            payload = xstrcat(payload, (char *)TEMPSTATE[Config.hum_state]);
+            payload = xstrcat(payload, (char *)"\",\"value\":");
+            sprintf(buf, "%d", Config.hum_value);
             payload = xstrcat(payload, buf);
+	    payload = xstrcat(payload, (char *)"}");
         }
+	if (Config.temp_address || Config.hum_address)
+            payload = xstrcat(payload, (char *)",");
+	payload = xstrcat(payload, (char *)"\"index\":");
+	sprintf(buf, "%d", Config.temp_hum_idx);
+	payload = xstrcat(payload, buf);
         payload = xstrcat(payload, (char *)"}");
     }
+    payload = xstrcat(payload, (char *)",\"LCD\":{\"address\":");
+    sprintf(buf, "%d", Config.lcd_address);
+    payload = xstrcat(payload, buf);
+    payload = xstrcat(payload, (char *)",\"cols\":");
+    sprintf(buf, "%d", Config.lcd_cols);
+    payload = xstrcat(payload, buf);
+    payload = xstrcat(payload, (char *)",\"rows\":");
+    sprintf(buf, "%d", Config.lcd_rows);
+    payload = xstrcat(payload, buf);
+    payload = xstrcat(payload, (char *)"},\"MQTT\":{\"host\":\"");
+    payload = xstrcat(payload, Config.mqtt_host);
+    payload = xstrcat(payload, (char *)"\",\"port\":");
+    sprintf(buf, "%d", Config.mqtt_port);
+    payload = xstrcat(payload, buf);
+    if (Config.mqtt_username) {
+	payload = xstrcat(payload, (char *)",\"username\":\"");
+	payload = xstrcat(payload, Config.mqtt_username);
+	payload = xstrcat(payload, (char *)"\"");
+    	if (Config.mqtt_password) {
+	    payload = xstrcat(payload, (char *)",\"password\":\"");
+	    payload = xstrcat(payload, Config.mqtt_password);
+	    payload = xstrcat(payload, (char *)"\"");
+    	}
+    }
+    payload = xstrcat(payload, (char *)"}}");
+    return payload;
+}
 
-    payload = xstrcat(payload, (char *)"}");
+
+
+void node_ws(void)
+{
+    char	*payload = NULL;
+
+    payload = global_json();
     ws_broadcast(payload);
     free(payload);
     payload = NULL;

mercurial