A bit simpler mqtt event handling.

Wed, 12 Apr 2023 16:37:17 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 12 Apr 2023 16:37:17 +0200
changeset 25
c5a9bde0268f
parent 24
74609f70411e
child 26
29dc2064e2ce

A bit simpler mqtt event handling.

main/task_mqtt.c file | annotate | diff | comparison | revisions
--- a/main/task_mqtt.c	Wed Apr 12 16:23:02 2023 +0200
+++ b/main/task_mqtt.c	Wed Apr 12 16:37:17 2023 +0200
@@ -250,7 +250,7 @@
 	    subscr = topic_base();
             subscr = xstrcat(subscr, (char *)"output/set/#");
 	    int msgid = esp_mqtt_client_subscribe(client, subscr, 0);
-            ESP_LOGI(TAG, "Subscribe `%s' id %d", subscr, msgid);
+            ESP_LOGD(TAG, "Subscribe `%s' id %d", subscr, msgid);
             free(subscr);
 	    subscr = NULL;
 	    xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECTED);
@@ -284,7 +284,6 @@
             break;
 
         case MQTT_EVENT_DATA:
-	    bool gotit = false;
 	    char data[65], topic[128];
 	    if (event->data_len < 65)
 		snprintf(data, 64, "%.*s", event->data_len, event->data);
@@ -300,50 +299,32 @@
             check = xstrcat(check, (char *)"output/set/1");
 	    if (strncmp(check, event->topic, event->topic_len) == 0) {
 		ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
-		gotit = true;
 		Relay1 = (uint8_t)atoi(data);
 		nvsio_write_u8((char *)"out1", Relay1);
 	    }
-	    free(check);
-	    check = NULL;
 
-	    check = topic_base();
-            check = xstrcat(check, (char *)"output/set/2");
+	    check[strlen(check)-1] = '2';
 	    if (strncmp(check, event->topic, event->topic_len) == 0) {
                 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
-                gotit = true;
                 Relay2 = (uint8_t)atoi(data);
 		nvsio_write_u8((char *)"out2", Relay2);
             }
-            free(check);
-            check = NULL;
 
-	    check = topic_base();
-            check = xstrcat(check, (char *)"output/set/3");
+	    check[strlen(check)-1] = '3';
             if (strncmp(check, event->topic, event->topic_len) == 0) {
-                ESP_LOGI(TAG, "Got %s `%s' %d", check, data, atoi(data));
-                gotit = true;
+                ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
                 Dimmer3 = (uint8_t)atoi(data);
 		nvsio_write_u8((char *)"out3", Dimmer3);
             }
-            free(check);
-            check = NULL;
 
-	    check = topic_base();
-            check = xstrcat(check, (char *)"output/set/4");
+	    check[strlen(check)-1] = '4';
             if (strncmp(check, event->topic, event->topic_len) == 0) {
                 ESP_LOGD(TAG, "Got %s `%s' %d", check, data, atoi(data));
-                gotit = true;
                 Dimmer4 = (uint8_t)atoi(data);
 		nvsio_write_u8((char *)"out4", Dimmer4);
             }
             free(check);
             check = NULL;
-
-	    if (! gotit) {
-            	printf("TOPIC=%.*s ", event->topic_len, event->topic);
-            	printf("DATA=%.*s\r\n", event->data_len, event->data);
-	    }
             break;
 
         case MQTT_EVENT_ERROR:

mercurial