586 if (strcmp(opt, (char *)"HELP") == 0) { |
587 if (strcmp(opt, (char *)"HELP") == 0) { |
587 srv_send(s, (char *)"100 Help text follows:"); |
588 srv_send(s, (char *)"100 Help text follows:"); |
588 srv_send(s, (char *)"Recognized commands:"); |
589 srv_send(s, (char *)"Recognized commands:"); |
589 srv_send(s, (char *)"GLOBAL GET Get global settings"); |
590 srv_send(s, (char *)"GLOBAL GET Get global settings"); |
590 srv_send(s, (char *)"GLOBAL PUT Put global settings"); |
591 srv_send(s, (char *)"GLOBAL PUT Put global settings"); |
|
592 srv_send(s, (char *)"GLOBAL JSON Get global json settings"); |
591 srv_send(s, (char *)"."); |
593 srv_send(s, (char *)"."); |
592 return 0; |
594 return 0; |
593 } |
595 } |
594 |
596 |
595 if (strcmp(opt, (char *)"GET") == 0) { |
597 if (strcmp(opt, (char *)"GET") == 0) { |
612 srv_send(s, (char *)"MQTT_PORT,%d", Config.mqtt_port); |
614 srv_send(s, (char *)"MQTT_PORT,%d", Config.mqtt_port); |
613 srv_send(s, (char *)"MQTT_USER,%s", Config.mqtt_username); |
615 srv_send(s, (char *)"MQTT_USER,%s", Config.mqtt_username); |
614 srv_send(s, (char *)"MQTT_PASS,%s", Config.mqtt_password); |
616 srv_send(s, (char *)"MQTT_PASS,%s", Config.mqtt_password); |
615 srv_send(s, (char *)"WEBSOCKET_PORT,%d", Config.websocket_port); |
617 srv_send(s, (char *)"WEBSOCKET_PORT,%d", Config.websocket_port); |
616 srv_send(s, (char *)"."); |
618 srv_send(s, (char *)"."); |
|
619 return 0; |
|
620 } |
|
621 |
|
622 if (strcmp(opt, (char *)"JSON") == 0) { |
|
623 char *payload = NULL, tbuf[64]; |
|
624 struct utsname ubuf; |
|
625 |
|
626 payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\""); |
|
627 payload = xstrcat(payload, Config.name); |
|
628 payload = xstrcat(payload, (char *)"\",\"node\":\""); |
|
629 if (uname(&ubuf) == 0) { |
|
630 payload = xstrcat(payload, ubuf.nodename); |
|
631 payload = xstrcat(payload, (char *)"\",\"os\":\""); |
|
632 payload = xstrcat(payload, ubuf.sysname); |
|
633 payload = xstrcat(payload, (char *)"\",\"os_version\":\""); |
|
634 payload = xstrcat(payload, ubuf.release); |
|
635 } else { |
|
636 payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown"); |
|
637 } |
|
638 payload = xstrcat(payload, (char *)"\",\"FW\":\""); |
|
639 payload = xstrcat(payload, (char *)VERSION); |
|
640 payload = xstrcat(payload, (char *)"\""); |
|
641 |
|
642 if (Config.temp_address || Config.hum_address) { |
|
643 payload = xstrcat(payload, (char *)",\"THB\":{"); |
|
644 if (Config.temp_address) { |
|
645 payload = xstrcat(payload, (char *)"\"temperature\":"); |
|
646 sprintf(tbuf, "%.1f", Config.temp_value / 1000.0); |
|
647 payload = xstrcat(payload, tbuf); |
|
648 } |
|
649 if (Config.temp_address && Config.hum_address) |
|
650 payload = xstrcat(payload, (char *)","); |
|
651 if (Config.hum_address) { |
|
652 payload = xstrcat(payload, (char *)"\"humidity\":"); |
|
653 sprintf(tbuf, "%.1f", Config.hum_value / 1000.0); |
|
654 payload = xstrcat(payload, tbuf); |
|
655 } |
|
656 payload = xstrcat(payload, (char *)"}"); |
|
657 } |
|
658 |
|
659 payload = xstrcat(payload, (char *)"}"); |
|
660 srv_send(s, (char *)"213 Global json data follows:"); |
|
661 srv_send(s, payload); |
|
662 srv_send(s, (char *)"."); |
|
663 free(payload); |
|
664 payload = NULL; |
617 return 0; |
665 return 0; |
618 } |
666 } |
619 |
667 |
620 if (strcmp(opt, (char *)"PUT") == 0) { |
668 if (strcmp(opt, (char *)"PUT") == 0) { |
621 int mqtt_reconnect = 0; |
669 int mqtt_reconnect = 0; |
1533 srv_send(s, (char *)"440 No such unit"); |
1581 srv_send(s, (char *)"440 No such unit"); |
1534 return 0; |
1582 return 0; |
1535 } |
1583 } |
1536 |
1584 |
1537 if (strcmp(opt, (char *)"JSON") == 0) { |
1585 if (strcmp(opt, (char *)"JSON") == 0) { |
|
1586 syslog(LOG_NOTICE, "UNIT JSON %s", param); |
1538 for (unit = Config.units; unit; unit = unit->next) { |
1587 for (unit = Config.units; unit; unit = unit->next) { |
1539 if (strcmp(param, unit->uuid) == 0) { |
1588 if (strcmp(param, unit->uuid) == 0) { |
1540 char *payload, *payloadu; |
1589 char *payload, *payloadu; |
1541 |
1590 |
1542 srv_send(s, (char *)"213 Unit json data follows:"); |
1591 srv_send(s, (char *)"213 Unit json data follows:"); |
1543 payload = xstrcpy((char *)"{\"fermenter\":"); |
1592 |
1544 payloadu = unit_data(unit, true); |
1593 payload = xstrcpy((char *)"{\"type\":\"fermenter\",\"unit\":\""); |
|
1594 payload = xstrcat(payload, unit->alias); |
|
1595 payload = xstrcat(payload, (char *)"\",\"metric\":"); |
|
1596 payloadu = unit_data(unit, false); |
1545 payload = xstrcat(payload, payloadu); |
1597 payload = xstrcat(payload, payloadu); |
1546 payload = xstrcat(payload, (char *)"}"); |
1598 payload = xstrcat(payload, (char *)"}"); |
1547 srv_send(s, payload); |
1599 srv_send(s, payload); |
1548 free(payload); |
1600 free(payload); |
1549 free(payloadu); |
1601 free(payloadu); |