diff --git a/esp_node-red_mqtt/sketch_may14b.ino b/esp_node-red_mqtt/sketch_may14b.ino index 0b649f5..ca2d1c0 100644 --- a/esp_node-red_mqtt/sketch_may14b.ino +++ b/esp_node-red_mqtt/sketch_may14b.ino @@ -1,7 +1,7 @@ #include "esp_camera.h" #include #include "esp_http_server.h" - +#include #include #include #include @@ -51,6 +51,14 @@ IPAddress dns(192,168,31,1); // HTTP SERVER httpd_handle_t server = NULL; +#define LED_PIN 21 +#define LED_COUNT 8 + +Adafruit_NeoPixel strip( + LED_COUNT, + LED_PIN, + NEO_GRB + NEO_KHZ800 +); // STREAM HANDLER static esp_err_t stream_handler(httpd_req_t *req) @@ -268,6 +276,12 @@ void setup() Serial.println("STREAM READY:"); Serial.println("http://192.168.31.235/stream"); + + strip.begin(); + strip.show(); + strip.setBrightness(80); + + client.setCallback(callback); } @@ -277,6 +291,7 @@ void connectMQTT() { if (client.connect(id.c_str())) { Serial.println("MQTT OK"); + client.subscribe("esp32/led"); } else { Serial.println("MQTT FAIL"); delay(2000); @@ -284,6 +299,42 @@ void connectMQTT() { } } +void setColor(int r, int g, int b) +{ + for (int i = 0; i < LED_COUNT; i++) + { + strip.setPixelColor(i, strip.Color(r, g, b)); + } + + strip.show(); +} + + +void callback(char* topic, byte* payload, unsigned int length) +{ + String msg; + + for (int i = 0; i < length; i++) + { + msg += (char)payload[i]; + } + + Serial.print("MQTT: "); + Serial.println(msg); + + // OFF + if (msg == "OFF") + { + setColor(0,0,0); + return; + } + + int r, g, b; + + sscanf(msg.c_str(), "%d,%d,%d", &r, &g, &b); + + setColor(r,g,b); +} void loop() {