thermferm/mqtt.c

changeset 689
f94b525f7563
parent 678
cc49115e769e
child 693
3518c07737d8
equal deleted inserted replaced
688:8bf6389e59a2 689:f94b525f7563
1407 topic = NULL; 1407 topic = NULL;
1408 } 1408 }
1409 } 1409 }
1410 1410
1411 1411
1412 void node_ws(void) 1412 char *global_json(void)
1413 { 1413 {
1414 char *payload = NULL, buf[64]; 1414 char *payload, buf[64];
1415 struct utsname ubuf; 1415 struct utsname ubuf;
1416 1416
1417 payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\""); 1417 payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\"");
1418 payload = xstrcat(payload, Config.name); 1418 payload = xstrcat(payload, Config.name);
1419 payload = xstrcat(payload, (char *)"\",\"node\":\""); 1419 payload = xstrcat(payload, (char *)"\",\"node\":\"");
1426 } else { 1426 } else {
1427 payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown"); 1427 payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown");
1428 } 1428 }
1429 payload = xstrcat(payload, (char *)"\",\"FW\":\""); 1429 payload = xstrcat(payload, (char *)"\",\"FW\":\"");
1430 payload = xstrcat(payload, (char *)VERSION); 1430 payload = xstrcat(payload, (char *)VERSION);
1431 payload = xstrcat(payload, (char *)"\""); 1431 payload = xstrcat(payload, (char *)"\",\"server_port\":");
1432 sprintf(buf, "%d", Config.my_port);
1433 payload = xstrcat(payload, buf);
1434 payload = xstrcat(payload, (char *)",\"websocket_port\":");
1435 sprintf(buf, "%d", Config.websocket_port);
1436 payload = xstrcat(payload, buf);
1432 1437
1433 if (Config.temp_address || Config.hum_address) { 1438 if (Config.temp_address || Config.hum_address) {
1434 payload = xstrcat(payload, (char *)",\"THB\":{"); 1439 payload = xstrcat(payload, (char *)",\"THB\":{");
1435 if (Config.temp_address) { 1440 if (Config.temp_address) {
1436 payload = xstrcat(payload, (char *)"\"temperature\":"); 1441 payload = xstrcat(payload, (char *)"\"temperature\":{\"address\":\"");
1437 sprintf(buf, "%.1f", Config.temp_value / 1000.0); 1442 payload = xstrcat(payload, Config.temp_address);
1443 payload = xstrcat(payload, (char *)"\",\"state\":\"");
1444 payload = xstrcat(payload, (char *)TEMPSTATE[Config.temp_state]);
1445 payload = xstrcat(payload, (char *)"\",\"value\":");
1446 sprintf(buf, "%d", Config.temp_value);
1438 payload = xstrcat(payload, buf); 1447 payload = xstrcat(payload, buf);
1448 payload = xstrcat(payload, (char *)"}");
1439 } 1449 }
1440 if (Config.temp_address && Config.hum_address) 1450 if (Config.temp_address && Config.hum_address)
1441 payload = xstrcat(payload, (char *)","); 1451 payload = xstrcat(payload, (char *)",");
1442 if (Config.hum_address) { 1452 if (Config.hum_address) {
1443 payload = xstrcat(payload, (char *)"\"humidity\":"); 1453 payload = xstrcat(payload, (char *)"\"humidity\":{\"address\":\"");
1444 sprintf(buf, "%.1f", Config.hum_value / 1000.0); 1454 payload = xstrcat(payload, Config.hum_address);
1455 payload = xstrcat(payload, (char *)"\",\"state\":\"");
1456 payload = xstrcat(payload, (char *)TEMPSTATE[Config.hum_state]);
1457 payload = xstrcat(payload, (char *)"\",\"value\":");
1458 sprintf(buf, "%d", Config.hum_value);
1445 payload = xstrcat(payload, buf); 1459 payload = xstrcat(payload, buf);
1460 payload = xstrcat(payload, (char *)"}");
1446 } 1461 }
1462 if (Config.temp_address || Config.hum_address)
1463 payload = xstrcat(payload, (char *)",");
1464 payload = xstrcat(payload, (char *)"\"index\":");
1465 sprintf(buf, "%d", Config.temp_hum_idx);
1466 payload = xstrcat(payload, buf);
1447 payload = xstrcat(payload, (char *)"}"); 1467 payload = xstrcat(payload, (char *)"}");
1448 } 1468 }
1449 1469 payload = xstrcat(payload, (char *)",\"LCD\":{\"address\":");
1450 payload = xstrcat(payload, (char *)"}"); 1470 sprintf(buf, "%d", Config.lcd_address);
1471 payload = xstrcat(payload, buf);
1472 payload = xstrcat(payload, (char *)",\"cols\":");
1473 sprintf(buf, "%d", Config.lcd_cols);
1474 payload = xstrcat(payload, buf);
1475 payload = xstrcat(payload, (char *)",\"rows\":");
1476 sprintf(buf, "%d", Config.lcd_rows);
1477 payload = xstrcat(payload, buf);
1478 payload = xstrcat(payload, (char *)"},\"MQTT\":{\"host\":\"");
1479 payload = xstrcat(payload, Config.mqtt_host);
1480 payload = xstrcat(payload, (char *)"\",\"port\":");
1481 sprintf(buf, "%d", Config.mqtt_port);
1482 payload = xstrcat(payload, buf);
1483 if (Config.mqtt_username) {
1484 payload = xstrcat(payload, (char *)",\"username\":\"");
1485 payload = xstrcat(payload, Config.mqtt_username);
1486 payload = xstrcat(payload, (char *)"\"");
1487 if (Config.mqtt_password) {
1488 payload = xstrcat(payload, (char *)",\"password\":\"");
1489 payload = xstrcat(payload, Config.mqtt_password);
1490 payload = xstrcat(payload, (char *)"\"");
1491 }
1492 }
1493 payload = xstrcat(payload, (char *)"}}");
1494 return payload;
1495 }
1496
1497
1498
1499 void node_ws(void)
1500 {
1501 char *payload = NULL;
1502
1503 payload = global_json();
1451 ws_broadcast(payload); 1504 ws_broadcast(payload);
1452 free(payload); 1505 free(payload);
1453 payload = NULL; 1506 payload = NULL;
1454 } 1507 }
1455 1508

mercurial