From 245d4ecf2f387260f6ef56d1f12211ae8343053f Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 26 Jun 2019 01:16:57 +0800 Subject: [PATCH] Update mqttd for add temperature report --- /dev/null | 0 mqttd/hal/hal.c | 5 ++++- mqttd/main.c | 36 +++++++++++++++++------------------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/mqttd/etc/conf.o b/mqttd/etc/conf.o deleted file mode 100644 index 2524c5b..0000000 --- a/mqttd/etc/conf.o +++ /dev/null Binary files differ diff --git a/mqttd/etc/libetc.a b/mqttd/etc/libetc.a deleted file mode 100644 index 0d0574c..0000000 --- a/mqttd/etc/libetc.a +++ /dev/null Binary files differ diff --git a/mqttd/hal/hal.c b/mqttd/hal/hal.c index 88decad..5ed9248 100644 --- a/mqttd/hal/hal.c +++ b/mqttd/hal/hal.c @@ -16,12 +16,15 @@ int hal_init(void) { init_led(); - + relay_init(); + +#if 0 if( sht2x_init() < 0 ) { log_err("Initialise SHT20 failure\n"); return -2; } +#endif return 0; } diff --git a/mqttd/main.c b/mqttd/main.c index c66d8c7..8808585 100644 --- a/mqttd/main.c +++ b/mqttd/main.c @@ -109,14 +109,12 @@ return -2; } -#if 0 if( hal_init() < 0 ) { log_err("Initialise hardware failure\n"); return -1; } log_nrml("HAL initialise ok\n"); -#endif install_proc_signal(); @@ -191,9 +189,7 @@ mqtt_ctx_t *ctx = (mqtt_ctx_t *)userdata; int rv = 0; char msg[128]; - float temp = 25.64; - float rh = 65.35; - char light[] = "on"; + float temp = 0.0; int retain = 0; if( result ) @@ -205,25 +201,15 @@ log_nrml("Publisher connect to broker server[%s:%d] successfully\n", ctx->host, ctx->port); memset(msg, 0, sizeof(msg)); - snprintf(msg, sizeof(msg), "{ \"temp\":\"%.2f\", \"R&H\":\"%.2f%%\" }", temp, rh); + if( ds18b20_get_temperature(&temp) < 0 ) + strncpy(msg, "{ \"temp\":\"error\" }", sizeof(msg)); + else + snprintf(msg, sizeof(msg), "{ \"temp\":\"%.2f\" }", temp); rv = mosquitto_publish(mosq, NULL, ctx->pubTopic, strlen(msg)+1, msg, ctx->pubQos, retain); if( rv ) { log_err("Publisher broadcast message '%s' failure: %d\n", msg, rv); - } - else - { - log_nrml("Publisher broadcast message '%s' ok\n", msg); - } - - memset(msg, 0, sizeof(msg)); - snprintf(msg, sizeof(msg), "{ \"light\":\"%s\" }", light); - - rv = mosquitto_publish(mosq, NULL, ctx->pubTopic, strlen(msg)+1, msg, ctx->pubQos, retain); - if( rv ) - { - log_err("Publisher broadcast message failure: %d\n", rv); } else { @@ -300,6 +286,13 @@ log_warn("Subscriber disconnect to broker server[%s:%d], reason=%d\n", ctx->host, ctx->port, result); } +static inline void mqtt_turn_led(int which, char *cmd) +{ + if( strcasestr(cmd, "on") ) + turn_led(which, ON); + else if( strcasestr(cmd, "off") ) + turn_led(which, OFF); +} void proc_json_items(cJSON *root) { @@ -338,16 +331,19 @@ if( NULL != (led_item=cJSON_GetObjectItem(array , "red")) ) { log_nrml("turn red led '%s'\n", led_item->valuestring); + mqtt_turn_led(LED_R, led_item->valuestring); } if( NULL != (led_item=cJSON_GetObjectItem(array , "green")) ) { log_nrml("turn green led '%s'\n", led_item->valuestring); + mqtt_turn_led(LED_G, led_item->valuestring); } if( NULL != (led_item=cJSON_GetObjectItem(array , "blue")) ) { log_nrml("turn blue led '%s'\n", led_item->valuestring); + mqtt_turn_led(LED_B, led_item->valuestring); } } } @@ -362,10 +358,12 @@ if( strcasestr(value, "on") ) { log_nrml("Turn light on\n"); + turn_relay(ON); } else if( strcasestr(value, "off") ) { log_nrml("Turn light off\n"); + turn_relay(OFF); } } -- Gitblit v1.9.1