diff -r c867eb3f7fc1 -r cc49115e769e thermferm/mqtt.c --- 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;