thermferm/mqtt.c

changeset 678
cc49115e769e
parent 675
825210ba2707
child 689
f94b525f7563
equal deleted inserted replaced
677:c867eb3f7fc1 678:cc49115e769e
1218 } 1218 }
1219 1219
1220 /* 1220 /*
1221 * Build and send websocket message. 1221 * Build and send websocket message.
1222 */ 1222 */
1223 payload = xstrcpy((char *)"{\"fermenter\":"); 1223 payload = xstrcpy((char *)"{\"type\":\"fermenter\",\"unit\":\"");
1224 payloadu = unit_data(unit, true); 1224 payload = xstrcat(payload, unit->alias);
1225 payload = xstrcat(payload, (char *)"\",\"metric\":");
1226 payloadu = unit_data(unit, false);
1225 payload = xstrcat(payload, payloadu); 1227 payload = xstrcat(payload, payloadu);
1226 payload = xstrcat(payload, (char *)"}"); 1228 payload = xstrcat(payload, (char *)"}");
1227 ws_broadcast(payload); 1229 ws_broadcast(payload);
1228 free(payload); 1230 free(payload);
1229 payload = NULL; 1231 payload = NULL;
1230 free(payloadu); 1232 free(payloadu);
1231 payloadu = NULL; 1233 payloadu = NULL;
1234
1235 unit->mqtt_flag &= ~MQTT_FLAG_DATA;
1232 } 1236 }
1233 1237
1234 1238
1235 1239
1236 void publishDBirth(units_list *unit) 1240 void publishDBirth(units_list *unit)
1408 void node_ws(void) 1412 void node_ws(void)
1409 { 1413 {
1410 char *payload = NULL, buf[64]; 1414 char *payload = NULL, buf[64];
1411 struct utsname ubuf; 1415 struct utsname ubuf;
1412 1416
1413 payload = xstrcpy((char *)"{\"thermferm\":{"); 1417 payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\"");
1414 1418 payload = xstrcat(payload, Config.name);
1419 payload = xstrcat(payload, (char *)"\",\"node\":\"");
1415 if (uname(&ubuf) == 0) { 1420 if (uname(&ubuf) == 0) {
1416 payload = xstrcat(payload, (char *)"\"node\":\"");
1417 payload = xstrcat(payload, ubuf.nodename); 1421 payload = xstrcat(payload, ubuf.nodename);
1418 payload = xstrcat(payload, (char *)"\",\"os\":\""); 1422 payload = xstrcat(payload, (char *)"\",\"os\":\"");
1419 payload = xstrcat(payload, ubuf.sysname); 1423 payload = xstrcat(payload, ubuf.sysname);
1420 payload = xstrcat(payload, (char *)"\",\"os_version\":\""); 1424 payload = xstrcat(payload, (char *)"\",\"os_version\":\"");
1421 payload = xstrcat(payload, ubuf.release); 1425 payload = xstrcat(payload, ubuf.release);
1422 payload = xstrcat(payload, (char *)"\"");
1423 } else { 1426 } else {
1424 payload = xstrcat(payload, (char *)"\"node\":\"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown\""); 1427 payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown");
1425 } 1428 }
1426 payload = xstrcat(payload, (char *)",\"FW\":\""); 1429 payload = xstrcat(payload, (char *)"\",\"FW\":\"");
1427 payload = xstrcat(payload, (char *)VERSION); 1430 payload = xstrcat(payload, (char *)VERSION);
1428 payload = xstrcat(payload, (char *)"\""); 1431 payload = xstrcat(payload, (char *)"\"");
1429 1432
1430 if (Config.temp_address || Config.hum_address) { 1433 if (Config.temp_address || Config.hum_address) {
1431 payload = xstrcat(payload, (char *)",\"THB\":{"); 1434 payload = xstrcat(payload, (char *)",\"THB\":{");
1442 payload = xstrcat(payload, buf); 1445 payload = xstrcat(payload, buf);
1443 } 1446 }
1444 payload = xstrcat(payload, (char *)"}"); 1447 payload = xstrcat(payload, (char *)"}");
1445 } 1448 }
1446 1449
1447 payload = xstrcat(payload, (char *)"}}"); 1450 payload = xstrcat(payload, (char *)"}");
1448 ws_broadcast(payload); 1451 ws_broadcast(payload);
1449 free(payload); 1452 free(payload);
1450 payload = NULL; 1453 payload = NULL;
1451 } 1454 }
1452 1455

mercurial