thermferm/server.c

changeset 689
f94b525f7563
parent 687
f5d05b420732
child 693
3518c07737d8
equal deleted inserted replaced
688:8bf6389e59a2 689:f94b525f7563
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;

mercurial