thermferm/devices.c

changeset 687
f5d05b420732
parent 685
819553a2b97e
child 693
3518c07737d8
equal deleted inserted replaced
686:372b2442a30f 687:f5d05b420732
375 375
376 376
377 /* 377 /*
378 * Return json data for one device. 378 * Return json data for one device.
379 */ 379 */
380 char *device_json(devices_list *device, bool full) 380 char *device_json(devices_list *device)
381 { 381 {
382 char *payload; 382 char *payload;
383 char vbuf[64]; 383 char vbuf[64];
384 384
385 payload = xstrcpy((char *)"{\"uuid\":\""); 385 payload = xstrcpy((char *)"{\"uuid\":\"");
394 snprintf(vbuf, 63, "%d", device->subdevice); 394 snprintf(vbuf, 63, "%d", device->subdevice);
395 payload = xstrcat(payload, vbuf); 395 payload = xstrcat(payload, vbuf);
396 payload = xstrcat(payload, (char *)",\"value\":"); 396 payload = xstrcat(payload, (char *)",\"value\":");
397 snprintf(vbuf, 63, "%d", device->value); 397 snprintf(vbuf, 63, "%d", device->value);
398 payload = xstrcat(payload, vbuf); 398 payload = xstrcat(payload, vbuf);
399 if (full) { 399 payload = xstrcat(payload, (char *)",\"offset\":");
400 payload = xstrcat(payload, (char *)",\"offset\":"); 400 snprintf(vbuf, 63, "%d", device->offset);
401 snprintf(vbuf, 63, "%d", device->offset); 401 payload = xstrcat(payload, vbuf);
402 payload = xstrcat(payload, vbuf);
403 }
404 payload = xstrcat(payload, (char *)",\"present\":\""); 402 payload = xstrcat(payload, (char *)",\"present\":\"");
405 payload = xstrcat(payload, (char *)DEVPRESENT[device->present]); 403 payload = xstrcat(payload, (char *)DEVPRESENT[device->present]);
406 payload = xstrcat(payload, (char *)"\""); 404 payload = xstrcat(payload, (char *)"\"");
407 if (full) { 405 payload = xstrcat(payload, (char *)",\"gpiopin\":");
408 payload = xstrcat(payload, (char *)",\"gpiopin\":"); 406 snprintf(vbuf, 63, "%d", device->gpiopin);
409 snprintf(vbuf, 63, "%d", device->gpiopin); 407 payload = xstrcat(payload, vbuf);
410 payload = xstrcat(payload, vbuf);
411 }
412 payload = xstrcat(payload, (char *)",\"inuse\":"); 408 payload = xstrcat(payload, (char *)",\"inuse\":");
413 snprintf(vbuf, 63, "%d", device->inuse); 409 snprintf(vbuf, 63, "%d", device->inuse);
414 payload = xstrcat(payload, vbuf); 410 payload = xstrcat(payload, vbuf);
415 payload = xstrcat(payload, (char *)",\"description\":\""); 411 payload = xstrcat(payload, (char *)",\"description\":\"");
416 payload = xstrcat(payload, device->description); 412 payload = xstrcat(payload, device->description);
417 if (full) { 413 payload = xstrcat(payload, (char *)"\",\"comment\":\"");
418 payload = xstrcat(payload, (char *)"\",\"comment\":\""); 414 payload = xstrcat(payload, device->comment);
419 payload = xstrcat(payload, device->comment);
420 }
421 payload = xstrcat(payload, (char *)"\",\"timestamp\":"); 415 payload = xstrcat(payload, (char *)"\",\"timestamp\":");
422 snprintf(vbuf, 63, "%ld", (long)device->timestamp); 416 snprintf(vbuf, 63, "%ld", (long)device->timestamp);
423 payload = xstrcat(payload, vbuf); 417 payload = xstrcat(payload, vbuf);
424 payload = xstrcat(payload, (char *)"}"); 418 payload = xstrcat(payload, (char *)"}");
425 419
436 430
437 payload = xstrcpy((char *)"{\"type\":\"device\",\"metric\":["); 431 payload = xstrcpy((char *)"{\"type\":\"device\",\"metric\":[");
438 for (device = Config.devices; device; device = device->next) { 432 for (device = Config.devices; device; device = device->next) {
439 if (comma) 433 if (comma)
440 payload = xstrcat(payload, (char *)","); 434 payload = xstrcat(payload, (char *)",");
441 payloadu = device_json(device, false); 435 payloadu = device_json(device);
442 payload = xstrcat(payload, payloadu); 436 payload = xstrcat(payload, payloadu);
443 comma = true; 437 comma = true;
444 free(payloadu); 438 free(payloadu);
445 payloadu = NULL; 439 payloadu = NULL;
446 } 440 }

mercurial