From 3ccbd309b2024868bd972dae25109f7eca2cdff1 Mon Sep 17 00:00:00 2001 From: martin chaparro Date: Tue, 13 Apr 2021 22:52:45 -0500 Subject: [PATCH] prueba exitosa matrix --- ESP8266/MatrixLedsRGB/platformio.ini | 5 +-- ESP8266/MatrixLedsRGB/src/main.cpp | 66 ++++------------------------ ESP8266/MatrixLedsRGB/src/matrix.hpp | 6 +-- ESP8266/MatrixLedsRGB/src/mqtt.hpp | 66 ++++++++++------------------ 4 files changed, 35 insertions(+), 108 deletions(-) diff --git a/ESP8266/MatrixLedsRGB/platformio.ini b/ESP8266/MatrixLedsRGB/platformio.ini index 4d95cce..d8b3fa1 100644 --- a/ESP8266/MatrixLedsRGB/platformio.ini +++ b/ESP8266/MatrixLedsRGB/platformio.ini @@ -19,9 +19,8 @@ lib_deps = arduino-libraries/NTPClient@^3.1.0 monitor_speed = 115200 upload_speed = 256000 -monitor_filters = colorize upload_protocol = espota -upload_port = 192.168.1.104 +upload_port = 192.168.1.108 upload_flags = --port=8266 - --auth=un260874 + --auth=un260874 \ No newline at end of file diff --git a/ESP8266/MatrixLedsRGB/src/main.cpp b/ESP8266/MatrixLedsRGB/src/main.cpp index e1b5be9..f262047 100644 --- a/ESP8266/MatrixLedsRGB/src/main.cpp +++ b/ESP8266/MatrixLedsRGB/src/main.cpp @@ -1,10 +1,8 @@ #include #include - - +#include #include #include -//#include WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, "0.south-america.pool.ntp.org", -18000, 6000); @@ -18,16 +16,6 @@ const char *password = "un260874"; long timeAnterior; long matrix_time; - -// void t1Callback(); -// void t2Callback(); -// void serialEvent(); - -// Task t1(120, TASK_FOREVER, &t1Callback); -// Task t2(100, TASK_FOREVER, &t2Callback); - -// Scheduler runner; - void setup() { Serial.begin(115200); @@ -46,53 +34,16 @@ void setup() timeClient.begin(); matrix_init(); - - - // runner.init(); - // runner.addTask(t1); - // runner.addTask(t2); - // delay(1000); - // t1.enable(); - // t2.enable(); } -// void loop() -// { -// runner.execute(); -// } -// void t1Callback() -// { -// ArduinoOTA.handle(); -// show_matrix(); -// } - -// void t2Callback() -// { - -// if ((millis() - timeAnterior) > 1000) -// { -// timeAnterior = millis(); -// if (!client.connected()) -// { -// reconnect(); -// } -// timeClient.update(); //sincronizamos con el server NTP -// hora = timeClient.getFormattedTime(); -// texto = mensaje + " " + hora; -// longitud = longitud = texto.length() * 5 + 64; -// } - -// client.loop(); -// } - - -void loop(){ +void loop() +{ ArduinoOTA.handle(); - if((millis() - matrix_time) > 100){ + if ((millis() - matrix_time) > 150) + { matrix_time = millis(); - show_matrix(); + show_matrix(); } - if ((millis() - timeAnterior) > 1000) { @@ -104,8 +55,9 @@ void loop(){ timeClient.update(); //sincronizamos con el server NTP hora = timeClient.getFormattedTime(); texto = mensaje + " " + hora; - longitud = texto.length() * 5 + 64; + longitud = texto.length() * 5 + 64; } client.loop(); -} \ No newline at end of file +} + diff --git a/ESP8266/MatrixLedsRGB/src/matrix.hpp b/ESP8266/MatrixLedsRGB/src/matrix.hpp index 527e04a..78987ce 100644 --- a/ESP8266/MatrixLedsRGB/src/matrix.hpp +++ b/ESP8266/MatrixLedsRGB/src/matrix.hpp @@ -1,3 +1,4 @@ + #include #include #include #include @@ -17,11 +18,6 @@ int x = matrix.width(); int longitud = 0; int pass = 0; -const uint16_t colors[] = { - matrix.Color(255, 102, 0), - matrix.Color(255, 204, 0), - matrix.Color(128, 0, 128), - matrix.Color(255, 0, 255)}; void matrix_init() { diff --git a/ESP8266/MatrixLedsRGB/src/mqtt.hpp b/ESP8266/MatrixLedsRGB/src/mqtt.hpp index df4723b..a3a5b60 100644 --- a/ESP8266/MatrixLedsRGB/src/mqtt.hpp +++ b/ESP8266/MatrixLedsRGB/src/mqtt.hpp @@ -1,17 +1,16 @@ #include // MQTT: ID, server IP, port, username and password -const char *MQTT_CLIENT_ID = "matrix_client"; -const char *MQTT_SERVER_IP = "192.168.1.105"; -const uint16_t MQTT_SERVER_PORT = 1883; -const char *MQTT_USER = "mdchaparror"; -const char *MQTT_PASSWORD = "un80187452"; -const char *MQTT_TOPIC_MENSAJE = "matrix/mensaje"; -const char *MQTT_TOPIC_RGB = "matrix/rgb"; +//const String MQTT_CLIENT_ID = "matrix_client_" + String(random(0xffff), HEX); +const char *MQTT_SERVER_IP = "192.168.1.105"; +const uint16_t MQTT_SERVER_PORT = 1883; +const char *MQTT_USER = "mdchaparror"; +const char *MQTT_PASSWORD = "un80187452"; +const char *MQTT_TOPIC_FULL = "matrix/full"; +DynamicJsonDocument doc(300); WiFiClient wifiClient; PubSubClient client(wifiClient); -String getValue(String data, char separator, int index); void callback(char *p_topic, byte *p_payload, unsigned int p_length) { @@ -22,44 +21,41 @@ void callback(char *p_topic, byte *p_payload, unsigned int p_length) payload.concat((char)p_payload[i]); } - if (String(MQTT_TOPIC_MENSAJE).equals(p_topic)) + if (String(MQTT_TOPIC_FULL).equals(p_topic)) { - mensaje = String(payload); + + DeserializationError err = deserializeJson(doc, String(payload)); + if (err) + { + Serial.print(F("deserializeJson() failed with code ")); + Serial.println(err.c_str()); + } + mensaje = doc["msg"].as(); + R = doc["R"]; + G = doc["G"]; + B = doc["B"]; texto = mensaje + " " + hora; x = matrix.width(); longitud = texto.length() * 5 + 64; } - if (String(MQTT_TOPIC_RGB).equals(p_topic)) - { - String rgb = String(payload); - R = getValue(rgb,',',0).toInt(); - G = getValue(rgb,',',1).toInt(); - B = getValue(rgb,',',2).toInt(); - texto = mensaje + " " + hora; - x = matrix.width(); - longitud = texto.length() * 5 + 64; - } - - - - } void reconnect() { while (!client.connected()) { - if (client.connect(MQTT_CLIENT_ID, MQTT_USER, MQTT_PASSWORD)) + String clientId = "matrix_client-" + String(random(0xffff), HEX); + if (client.connect(clientId.c_str(), MQTT_USER, MQTT_PASSWORD)) { Serial.println("INFO: connected"); - client.subscribe(MQTT_TOPIC_MENSAJE); - client.subscribe(MQTT_TOPIC_RGB); + client.subscribe(MQTT_TOPIC_FULL); } else { Serial.print("ERROR: failed, rc="); Serial.print(client.state()); Serial.println("DEBUG: try again in 5 seconds"); + delay(5000); } } } @@ -70,19 +66,3 @@ void mqtt_init() client.setCallback(callback); } -String getValue(String data, char separator, int index) -{ - int found = 0; - int strIndex[] = {0, -1}; - int maxIndex = data.length()-1; - - for(int i=0; i<=maxIndex && found<=index; i++){ - if(data.charAt(i)==separator || i==maxIndex){ - found++; - strIndex[0] = strIndex[1]+1; - strIndex[1] = (i == maxIndex) ? i+1 : i; - } - } - - return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; -} \ No newline at end of file