diff -r 8bf6389e59a2 -r f94b525f7563 thermferm/server.c --- a/thermferm/server.c Fri Apr 19 14:11:19 2024 +0200 +++ b/thermferm/server.c Fri Apr 19 20:56:55 2024 +0200 @@ -674,43 +674,9 @@ } if (strcmp(opt, (char *)"JSON") == 0) { - char *payload = NULL, tbuf[64]; - struct utsname ubuf; - - payload = xstrcpy((char *)"{\"type\":\"global\",\"name\":\""); - payload = xstrcat(payload, Config.name); - payload = xstrcat(payload, (char *)"\",\"node\":\""); - if (uname(&ubuf) == 0) { - payload = xstrcat(payload, ubuf.nodename); - payload = xstrcat(payload, (char *)"\",\"os\":\""); - payload = xstrcat(payload, ubuf.sysname); - payload = xstrcat(payload, (char *)"\",\"os_version\":\""); - payload = xstrcat(payload, ubuf.release); - } else { - payload = xstrcat(payload, (char *)"Unknown\",\"os\":\"Unknown\",\"os_version\":\"Unknown"); - } - payload = xstrcat(payload, (char *)"\",\"FW\":\""); - payload = xstrcat(payload, (char *)VERSION); - payload = xstrcat(payload, (char *)"\""); + char *payload = NULL; - if (Config.temp_address || Config.hum_address) { - payload = xstrcat(payload, (char *)",\"THB\":{"); - if (Config.temp_address) { - payload = xstrcat(payload, (char *)"\"temperature\":"); - sprintf(tbuf, "%.1f", Config.temp_value / 1000.0); - payload = xstrcat(payload, tbuf); - } - if (Config.temp_address && Config.hum_address) - payload = xstrcat(payload, (char *)","); - if (Config.hum_address) { - payload = xstrcat(payload, (char *)"\"humidity\":"); - sprintf(tbuf, "%.1f", Config.hum_value / 1000.0); - payload = xstrcat(payload, tbuf); - } - payload = xstrcat(payload, (char *)"}"); - } - - payload = xstrcat(payload, (char *)"}"); + payload = global_json(); srv_send(s, (char *)"213 Global json data follows:"); srv_send(s, payload); srv_send(s, (char *)".");