From af30c84d820576c37e57de31bc47d18b6e4b89e1 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Wed, 21 Apr 2021 16:52:34 +0800
Subject: [PATCH] update iotd, test MQTT subscriber ok

---
 iotd/mqtt/mqtt.c |   58 ++++++++++++++--------------------------------------------
 1 files changed, 14 insertions(+), 44 deletions(-)

diff --git a/iotd/mqtt/mqtt.c b/iotd/mqtt/mqtt.c
index 9b70fbc..ed29843 100644
--- a/iotd/mqtt/mqtt.c
+++ b/iotd/mqtt/mqtt.c
@@ -56,7 +56,7 @@
     if( hal_ctx->ds18b20_enable )
     {   
         memset(msg, 0, sizeof(msg));
-    
+
         if( ds18b20_get_temperature(&temp) < 0 ) 
             snprintf(msg, sizeof(msg), "{ \"id\":%s, \"temp\":\"error\" }", mqtt_ctx->id);
         else 
@@ -76,7 +76,7 @@
     if( hal_ctx->sht2x_enable )
     {   
         memset(msg, 0, sizeof(msg));
-    
+
         if( sht2x_get_temp_humidity(&temp, &rh) < 0 ) 
             snprintf(msg, sizeof(msg), "{ \"id\":%s, \"temp\":\"error\", \"RH\":\"error\" }", mqtt_ctx->id);
         else 
@@ -168,8 +168,10 @@
         log_err("Subscriber connect to broker server failed, rv=%d\n", result);
         return ;
     }
-    
+
     log_nrml("Subscriber connect to broker server[%s:%d] successfully\n", ctx->mqtt_ctx.host, ctx->mqtt_ctx.port); 
+
+    log_nrml("Subscriber subTopic '%s' with Qos[%d]\n", ctx->mqtt_ctx.subTopic, ctx->mqtt_ctx.subQos);
     mosquitto_subscribe(mosq, NULL, ctx->mqtt_ctx.subTopic, ctx->mqtt_ctx.subQos);
 }
 
@@ -178,7 +180,7 @@
     iotd_ctx_t             *ctx = (iotd_ctx_t *)userdata;
 
     log_warn("Subscriber disconnect to broker server[%s:%d], reason=%d\n", 
-		    ctx->mqtt_ctx.host, ctx->mqtt_ctx.port, result); 
+            ctx->mqtt_ctx.host, ctx->mqtt_ctx.port, result); 
 }
 
 void proc_json_items(cJSON *root)
@@ -209,51 +211,19 @@
         {
             value = cJSON_Print(item);
 
-            /* light controled by relay */
-            if( !strcasecmp(item->string, "hallway") )
+            log_dbg("JSON Parser key: %s value: %s\n", item->string, value);
+            if( strstr(item->string, "light") || strstr(item->string, "led") || strstr(item->string, "relay"))
             {
-                if( strcasestr(value, "on") )
+                if( strstr(value, "on") || strstr(value, "off") )
                 {
-                    //turn_light(LIGHT_HALLWAY, ON);
-                    log_nrml("Turn on hallway light\n");
-                }
-                else if( strcasestr(value, "off") )
-                {
-                    //turn_light(LIGHT_HALLWAY, OFF);
-                    log_nrml("Turn off hallway light\n");
+                    log_nrml("parser get turn '%s' %s from JSON string\n", item->string, value);
+                    gpio_out(item->string, value);
                 }
             }
-            else if( !strcasecmp(item->string, "livroom_left") )
-            {
-                if( strcasestr(value, "on") )
-                {
-                    //turn_light(LIGHT_LVROOM_LEFT, ON);
-                    log_nrml("Turn on livingroom left light\n");
-                }
-                else if( strcasestr(value, "off") )
-                {
-                    //turn_light(LIGHT_LVROOM_LEFT, OFF);
-                    log_nrml("Turn off livingroom left light\n");
-                }
-            }
-            if( !strcasecmp(item->string, "livroom_right") )
-            {
-                if( strcasestr(value, "on") )
-                {
-                    //turn_light(LIGHT_LVROOM_RIGHT, ON);
-                    log_nrml("Turn on livingroom right light\n");
-                }
-                else if( strcasestr(value, "off") )
-                {
-                    //turn_light(LIGHT_LVROOM_RIGHT, OFF);
-                    log_nrml("Turn off livingroom right light\n");
-                }
-            }
-
+ 
             free(value); /* must free it, or it will result memory leak */
         }
     }
-
 }
 
 void sub_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message)
@@ -295,7 +265,7 @@
         free(value);
         goto OUT;
     }
-    
+
     free(value); 
 
     /* proc JSON mesage */
@@ -318,7 +288,7 @@
     if( !ctx )
     {
         log_err("Invalid input arguments\n");
-	return NULL;
+        return NULL;
     }
 
     mqtt_ctx = &ctx->mqtt_ctx;

--
Gitblit v1.9.1