Added publish logs. Another fix for DS18B20 rom address copy.

Fri, 11 Oct 2019 15:56:30 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 11 Oct 2019 15:56:30 +0200
changeset 9
a85995941d0d
parent 8
c6bbd1380f22
child 10
d08c7466bb40

Added publish logs. Another fix for DS18B20 rom address copy.

main/co2meter.c file | annotate | diff | comparison | revisions
main/config.h file | annotate | diff | comparison | revisions
main/task_mqtt.c file | annotate | diff | comparison | revisions
main/task_mqtt.h file | annotate | diff | comparison | revisions
--- 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;
--- 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
--- 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) {
--- 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);
 
 
 /**

mercurial