From 46d86eb6c9b9ef8e5f481f48a13b1239de0b0d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Tue, 18 Jul 2017 17:40:34 +0200 Subject: [PATCH] Report brightness via MQTT --- code/espurna/light.ino | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/code/espurna/light.ino b/code/espurna/light.ino index 6671a6c9..08c752c2 100644 --- a/code/espurna/light.ino +++ b/code/espurna/light.ino @@ -237,21 +237,27 @@ void lightColor(bool save, bool forward) { _lightProviderSet(_lightState, _lightColor[0], _lightColor[1], _lightColor[2], brightness); - char rgb[8]; - _color_array2rgb(_lightColor, brightness, rgb); - // Delay saving to EEPROM 5 seconds to avoid wearing it out unnecessarily if (save) colorTicker.once(LIGHT_SAVE_DELAY, _lightColorSave); - // Report color to MQTT broker + // Report color & brightness to MQTT broker if (forward) { + char rgb[8]; + _color_array2rgb(_lightColor, 1.0, rgb); mqttSend(MQTT_TOPIC_COLOR, rgb); + char buffer[5]; + sprintf(buffer, "%d", (int) (brightness * LIGHT_MAX_BRIGHTNESS)); + mqttSend(MQTT_TOPIC_BRIGHTNESS, buffer); } // Report color to WS clients - char message[64]; - sprintf(message, "{\"color\": \"%s\", \"brightness\": %d}", rgb, (int) (brightness * LIGHT_MAX_BRIGHTNESS)); - wsSend(message); + { + char rgb[8]; + _color_array2rgb(_lightColor, brightness, rgb); + char message[64]; + sprintf(message, "{\"color\": \"%s\"}", rgb); + wsSend(message); + } } @@ -358,14 +364,17 @@ void lightSetup() { }, [](const char * payload) { parseColor(payload); - lightColor(true, mqttForward()); + lightColor(true, true); } ); apiRegister(MQTT_TOPIC_BRIGHTNESS, MQTT_TOPIC_BRIGHTNESS, - NULL, + [](char * buffer, size_t len) { + snprintf(buffer, len, "%d", (int) (brightness * LIGHT_MAX_BRIGHTNESS)); + }, [](const char * payload) { - lightColor(true, mqttForward()); + brightness = (float) atoi(payload) / LIGHT_MAX_BRIGHTNESS; + lightColor(true, true); } );