672 srv_send(s, (char *)"."); |
672 srv_send(s, (char *)"."); |
673 return 0; |
673 return 0; |
674 } |
674 } |
675 |
675 |
676 if (strcmp(opt, (char *)"JSON") == 0) { |
676 if (strcmp(opt, (char *)"JSON") == 0) { |
677 char *payload = NULL, tbuf[64]; |
677 char *payload = NULL; |
678 struct utsname ubuf; |
678 |
679 |
679 payload = global_json(); |
680 payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\""); |
|
681 payload = xstrcat(payload, Config.name); |
|
682 payload = xstrcat(payload, (char *)"\",\"node\":\""); |
|
683 if (uname(&ubuf) == 0) { |
|
684 payload = xstrcat(payload, ubuf.nodename); |
|
685 payload = xstrcat(payload, (char *)"\",\"os\":\""); |
|
686 payload = xstrcat(payload, ubuf.sysname); |
|
687 payload = xstrcat(payload, (char *)"\",\"os_version\":\""); |
|
688 payload = xstrcat(payload, ubuf.release); |
|
689 } else { |
|
690 payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown"); |
|
691 } |
|
692 payload = xstrcat(payload, (char *)"\",\"FW\":\""); |
|
693 payload = xstrcat(payload, (char *)VERSION); |
|
694 payload = xstrcat(payload, (char *)"\""); |
|
695 |
|
696 if (Config.temp_address || Config.hum_address) { |
|
697 payload = xstrcat(payload, (char *)",\"THB\":{"); |
|
698 if (Config.temp_address) { |
|
699 payload = xstrcat(payload, (char *)"\"temperature\":"); |
|
700 sprintf(tbuf, "%.1f", Config.temp_value / 1000.0); |
|
701 payload = xstrcat(payload, tbuf); |
|
702 } |
|
703 if (Config.temp_address && Config.hum_address) |
|
704 payload = xstrcat(payload, (char *)","); |
|
705 if (Config.hum_address) { |
|
706 payload = xstrcat(payload, (char *)"\"humidity\":"); |
|
707 sprintf(tbuf, "%.1f", Config.hum_value / 1000.0); |
|
708 payload = xstrcat(payload, tbuf); |
|
709 } |
|
710 payload = xstrcat(payload, (char *)"}"); |
|
711 } |
|
712 |
|
713 payload = xstrcat(payload, (char *)"}"); |
|
714 srv_send(s, (char *)"213 Global json data follows:"); |
680 srv_send(s, (char *)"213 Global json data follows:"); |
715 srv_send(s, payload); |
681 srv_send(s, payload); |
716 srv_send(s, (char *)"."); |
682 srv_send(s, (char *)"."); |
717 free(payload); |
683 free(payload); |
718 payload = NULL; |
684 payload = NULL; |