From 79c17b1f40c42ced083cadea91085618b26ff700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20B=C3=B6ttger?= Date: Tue, 5 Feb 2019 21:54:28 +0100 Subject: [PATCH 1/4] Added user authentification --- MQTT_LED_Controller.ino | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MQTT_LED_Controller.ino b/MQTT_LED_Controller.ino index 94104a5..ae36f47 100644 --- a/MQTT_LED_Controller.ino +++ b/MQTT_LED_Controller.ino @@ -27,6 +27,8 @@ const char* ssid = "WIFI-SSID"; const char* password = "PASSWORD"; const char* mqtt_server = "192.168.1.1"; +const char* mqtt_user = "MQTT-USER"; +const char* mqtt_password = "MQTT-PASS"; //Den MQTT-Topic können Sie in der Reconnect-Funktion ändern @@ -105,7 +107,7 @@ void callback(char* topic, byte* payload, unsigned int length) { void reconnect() { while (!client.connected()) { - if (client.connect("ESP8266 Client")) { + if (client.connect("ESP8266 Client", mqtt_user, mqtt_password)) { //Der Default-Topic lautet ledbar/lights. Sie können Ihn beliebig ändern client.subscribe("ledbar/lights"); pixels.setPixelColor(0, pixels.Color(0, 50, 0)); From a2b4d4e00bec1678fc973c47aedfb5f5d9dccfc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20B=C3=B6ttger?= Date: Tue, 5 Feb 2019 22:01:15 +0100 Subject: [PATCH 2/4] Bessere Variante mit Kommentar und Dokumentation --- MQTT_LED_Controller.ino | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/MQTT_LED_Controller.ino b/MQTT_LED_Controller.ino index ae36f47..bb222e7 100644 --- a/MQTT_LED_Controller.ino +++ b/MQTT_LED_Controller.ino @@ -27,10 +27,12 @@ const char* ssid = "WIFI-SSID"; const char* password = "PASSWORD"; const char* mqtt_server = "192.168.1.1"; -const char* mqtt_user = "MQTT-USER"; -const char* mqtt_password = "MQTT-PASS"; //Den MQTT-Topic können Sie in der Reconnect-Funktion ändern +//Wird Benutzerauthentifizierung verwendet, muss in der Reconnect-Funktion die andere Connect-Zeile aktiviert werden +//const char* mqtt_user = "MQTT-USER"; +//const char* mqtt_password = "MQTT-PASS"; + WiFiClient espClient; PubSubClient client(espClient); @@ -107,7 +109,9 @@ void callback(char* topic, byte* payload, unsigned int length) { void reconnect() { while (!client.connected()) { - if (client.connect("ESP8266 Client", mqtt_user, mqtt_password)) { + if (client.connect("ESP8266 Client")) { +// if (client.connect("ESP8266 Client", mqtt_user, mqtt_password)) { +// diese Connect-Zeile ist fuer Verbindungen mit Benutzerauthentifizierung //Der Default-Topic lautet ledbar/lights. Sie können Ihn beliebig ändern client.subscribe("ledbar/lights"); pixels.setPixelColor(0, pixels.Color(0, 50, 0)); From d9433840d4f9f03b4c5fa0741ef5c8497a838b14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20B=C3=B6ttger?= Date: Wed, 6 Feb 2019 17:09:20 +0100 Subject: [PATCH 3/4] Merge fastblinktask and blinktask improve blinking by eliminating delay for non-blinking pixels --- MQTT_LED_Controller.ino | 89 +++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 57 deletions(-) diff --git a/MQTT_LED_Controller.ino b/MQTT_LED_Controller.ino index bb222e7..f235630 100644 --- a/MQTT_LED_Controller.ino +++ b/MQTT_LED_Controller.ino @@ -33,7 +33,6 @@ const char* mqtt_server = "192.168.1.1"; //const char* mqtt_user = "MQTT-USER"; //const char* mqtt_password = "MQTT-PASS"; - WiFiClient espClient; PubSubClient client(espClient); @@ -95,8 +94,8 @@ void callback(char* topic, byte* payload, unsigned int length) { if (address == "all") { for (int i = 0; i < NUMPIXELS; i++){ pixels.setPixelColor(i, pixels.Color(r, g, b)); - pixels.show(); } + pixels.show(); } else { @@ -131,69 +130,45 @@ void reconnect() { class blinktask : public Task { protected: void loop() { + Serial.printf("Blinktask startet - %d\n",state); for (int i = 0; i < NUMPIXELS; i++) { String index = String(i); - if (blinkj[index]) { - r = blinkj[index]["r"].as(); - g = blinkj[index]["g"].as(); - b = blinkj[index]["b"].as(); - pixels.setPixelColor(i, pixels.Color(r, g, b)); + pixels.setPixelColor(i, pixels.Color(0, 0, 0)); + // Fastblink bei jedem 2. Durchgang einschalten + if ((state % 2) == 1) { + if (fastblinkj[index]) { + Serial.printf("f%d ",i); + r = fastblinkj[index]["r"].as(); + g = fastblinkj[index]["g"].as(); + b = fastblinkj[index]["b"].as(); + pixels.setPixelColor(i, pixels.Color(r, g, b)); + } } - else { - delay(50); + // Normales Blink bei der oberen Haelfte der Durchgaenge einschalten + if ((state / 8) == 1) { + if (blinkj[index]) { + Serial.printf("b%d ",i); + r = blinkj[index]["r"].as(); + g = blinkj[index]["g"].as(); + b = blinkj[index]["b"].as(); + pixels.setPixelColor(i, pixels.Color(r, g, b)); + } } } - pixels.show(); - delay(750); - for (int i = 0; i < NUMPIXELS; i++) { - String index = String(i); - if (blinkj[index]) { - pixels.setPixelColor(i, pixels.Color(0, 0, 0)); - } - else { - delay(50); - } + Serial.print(".\n"); + if (state < 15) { + state = state + 1; + } else { + state = 0; } pixels.show(); - delay(750); + delay(150); + Serial.printf("Blinktask fertig - %d\n", state); } private: uint8_t state; } blink_task; -class fastblinktask : public Task { -protected: - void loop() { - for (int i = 0; i < NUMPIXELS; i++) { - String index = String(i); - if (fastblinkj[index]) { - r = fastblinkj[index]["r"].as(); - g = fastblinkj[index]["g"].as(); - b = fastblinkj[index]["b"].as(); - pixels.setPixelColor(i, pixels.Color(r, g, b)); - } - else { - delay(50); - } - } - pixels.show(); - delay(100); - for (int i = 0; i < NUMPIXELS; i++) { - String index = String(i); - if (fastblinkj[index]) { - pixels.setPixelColor(i, pixels.Color(0, 0, 0)); - } - else { - delay(50); - } - } - pixels.show(); - delay(100); - } -private: - uint8_t state; -} fastblink_task; - class MQTTtask : public Task { protected: void loop() { @@ -207,9 +182,11 @@ private: void setup() { + Serial.begin(9600); pixels.begin(); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); + Serial.print("Connecting to WIFI"); for (int i = 0; i < NUMPIXELS; i++) pixels.setPixelColor(i, pixels.Color(0, 0, 0)); @@ -222,18 +199,16 @@ void setup() pixels.setPixelColor(0, pixels.Color(0, 0, 0)); pixels.show(); delay(50); + Serial.print("."); } - - + Serial.print("Connected\n"); - Serial.begin(9600); delay(500); client.setServer(mqtt_server, 1883); client.setCallback(callback); Scheduler.start(&mqtt_task); Scheduler.start(&blink_task); - Scheduler.start(&fastblink_task); Scheduler.begin(); From 7143c60c7334587e001f6fe71e51f346b4ca3b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20B=C3=B6ttger?= Date: Wed, 6 Feb 2019 18:06:44 +0100 Subject: [PATCH 4/4] Verbesserung und Reparatur des leuchtens trotz blinken --- MQTT_LED_Controller.ino | 91 ++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 29 deletions(-) diff --git a/MQTT_LED_Controller.ino b/MQTT_LED_Controller.ino index f235630..dcd04c6 100644 --- a/MQTT_LED_Controller.ino +++ b/MQTT_LED_Controller.ino @@ -9,6 +9,7 @@ #define NUMPIXELS 12 String address; +char address_str[5]; int r; int g; int b; @@ -59,32 +60,61 @@ void callback(char* topic, byte* payload, unsigned int length) { if (sv == "blink" || sv == "fastblink" || sv == "stop"){ - int firstaddress; - int iaddress = address.toInt(); - - r = tv.toInt(); - g = fov.toInt(); - b = fiv.toInt(); - - if (sv == "blink") { - JsonObject& led = blinkj.createNestedObject(address); - led["r"] = tv; - led["g"] = fov; - led["b"] = fiv; - } - else if (sv == "fastblink") { - JsonObject& led = fastblinkj.createNestedObject(address); - led["r"] = tv; - led["g"] = fov; - led["b"] = fiv; - } - else if (sv == "stop") { - blinkj.remove(address); - fastblinkj.remove(address); - pixels.setPixelColor(iaddress, pixels.Color(0, 0, 0)); - pixels.show(); + if (address == "all") { + r = tv.toInt(); + g = fov.toInt(); + b = fiv.toInt(); + + for (int i = 0; i < NUMPIXELS; i++){ + sprintf(address_str,"%d", i); + if (sv == "blink") { + JsonObject& led = blinkj.createNestedObject(address_str); + led["r"] = tv; + led["g"] = fov; + led["b"] = fiv; + } + else if (sv == "fastblink") { + JsonObject& led = fastblinkj.createNestedObject(address_str); + led["r"] = tv; + led["g"] = fov; + led["b"] = fiv; + } + else if (sv == "stop") { + blinkj.remove(address_str); + fastblinkj.remove(address_str); + pixels.setPixelColor(i, pixels.Color(0, 0, 0)); + pixels.show(); + } + pixels.setPixelColor(i, pixels.Color(r, g, b)); + pixels.show(); } + } else { + int firstaddress; + int iaddress = address.toInt(); + + r = tv.toInt(); + g = fov.toInt(); + b = fiv.toInt(); + if (sv == "blink") { + JsonObject& led = blinkj.createNestedObject(address); + led["r"] = tv; + led["g"] = fov; + led["b"] = fiv; + } + else if (sv == "fastblink") { + JsonObject& led = fastblinkj.createNestedObject(address); + led["r"] = tv; + led["g"] = fov; + led["b"] = fiv; + } + else if (sv == "stop") { + blinkj.remove(address); + fastblinkj.remove(address); + pixels.setPixelColor(iaddress, pixels.Color(0, 0, 0)); + pixels.show(); + } + } } else { int r = sv.toInt(); @@ -133,25 +163,28 @@ protected: Serial.printf("Blinktask startet - %d\n",state); for (int i = 0; i < NUMPIXELS; i++) { String index = String(i); - pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // Fastblink bei jedem 2. Durchgang einschalten - if ((state % 2) == 1) { - if (fastblinkj[index]) { + if (fastblinkj[index]) { + if ((state % 2) == 1) { Serial.printf("f%d ",i); r = fastblinkj[index]["r"].as(); g = fastblinkj[index]["g"].as(); b = fastblinkj[index]["b"].as(); pixels.setPixelColor(i, pixels.Color(r, g, b)); + } else { + pixels.setPixelColor(i, pixels.Color(0, 0, 0)); } } // Normales Blink bei der oberen Haelfte der Durchgaenge einschalten - if ((state / 8) == 1) { - if (blinkj[index]) { + if (blinkj[index]) { + if ((state / 8) == 1) { Serial.printf("b%d ",i); r = blinkj[index]["r"].as(); g = blinkj[index]["g"].as(); b = blinkj[index]["b"].as(); pixels.setPixelColor(i, pixels.Color(r, g, b)); + } else { + pixels.setPixelColor(i, pixels.Color(0, 0, 0)); } } }