# HG changeset patch # User Michiel Broek # Date 1570802190 -7200 # Node ID a85995941d0d11dabe8ea96f62639d29f70f09c3 # Parent c6bbd1380f22f7446f1d5452484d98d29a6993f8 Added publish logs. Another fix for DS18B20 rom address copy. diff -r c6bbd1380f22 -r a85995941d0d main/co2meter.c --- a/main/co2meter.c Fri Oct 11 13:12:34 2019 +0200 +++ b/main/co2meter.c Fri Oct 11 15:56:30 2019 +0200 @@ -266,7 +266,8 @@ if (xSemaphoreTake(xSemaphoreDS18B20, 10) == pdTRUE) { temp = (ds18b20_state->sensor[0].temperature * 1000); state = (ds18b20_state->sensor[0].error == 0) ? 0:1; - strncpy(rom_code, ds18b20_state->sensor[0].rom_code, strlen(ds18b20_state->sensor[0].rom_code)); + strncpy(rom_code, ds18b20_state->sensor[0].rom_code, 17); + rom_code[16] = '\0'; xSemaphoreGive(xSemaphoreDS18B20); } @@ -326,6 +327,7 @@ ESP_LOGI(TAG, "Loop timer: Send MQTT"); publishNode(); publishUnits(); + publishLogs(); Main_Loop1 = MAIN_LOOP1_MQTT_DISCONNECT; break; diff -r c6bbd1380f22 -r a85995941d0d main/config.h --- a/main/config.h Fri Oct 11 13:12:34 2019 +0200 +++ b/main/config.h Fri Oct 11 15:56:30 2019 +0200 @@ -165,9 +165,6 @@ */ typedef struct strUnit { char uuid[37]; ///< Unit uuid - char product_uuid[37]; ///< Beer product uuid - char product_code[33]; ///< Beer product code - char product_name[129]; ///< Beer product name char alias[33]; ///< Alias name 'unit1' int temperature_state; ///< Reading status char temperature_rom_code[17]; ///< DS18B20 address diff -r c6bbd1380f22 -r a85995941d0d main/task_mqtt.c --- a/main/task_mqtt.c Fri Oct 11 13:12:34 2019 +0200 +++ b/main/task_mqtt.c Fri Oct 11 15:56:30 2019 +0200 @@ -222,6 +222,39 @@ +void publishLogs(void) +{ + char *topic = NULL, *payload = NULL, buf[64]; + + for (int i = 0; i < 3; i++) { + if (units[i].mode && ! units[i].alarm) { + if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) { + payload = payload_header(); + payload = xstrcat(payload, (char *)"{\"uuid\":\""); + payload = xstrcat(payload, units[i].uuid); + payload = xstrcat(payload, (char *)"\",\"temperature\":"); + sprintf(buf, "%.3f", units[i].temperature / 1000.0); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"pressure\":"); + sprintf(buf, "%.3f", units[i].pressure / 1000.0); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)"}}"); + topic = topic_base((char *)"DLOG"); + topic = xstrcat(topic, (char *)"/"); + topic = xstrcat(topic, units[i].alias); + publisher(topic, payload); + free(topic); + topic = NULL; + free(payload); + payload = NULL; + xSemaphoreGive(xSemaphoreUnits); + } + } + } +} + + + static esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event) { switch (event->event_id) { diff -r c6bbd1380f22 -r a85995941d0d main/task_mqtt.h --- a/main/task_mqtt.h Fri Oct 11 13:12:34 2019 +0200 +++ b/main/task_mqtt.h Fri Oct 11 15:56:30 2019 +0200 @@ -24,6 +24,7 @@ void publishNode(void); void publishUnits(void); +void publishLogs(void); /**