diff --git a/ESP8266-MQTT-Aten-MagicBox/ESP8266-MQTT-Aten-MagicBox.ino b/ESP8266-MQTT-Aten-MagicBox/ESP8266-MQTT-Aten-MagicBox.ino index 45ceb84..e17b17b 100644 --- a/ESP8266-MQTT-Aten-MagicBox/ESP8266-MQTT-Aten-MagicBox.ino +++ b/ESP8266-MQTT-Aten-MagicBox/ESP8266-MQTT-Aten-MagicBox.ino @@ -40,8 +40,6 @@ #include #include "ESP8266-MQTT-Aten-MagicBox.h" -#define DEBUGTOSERIAL 1 - // Timestamp for last publish long lastMsg = 0; long publishInterval = 5000; @@ -55,7 +53,7 @@ PubSubClient client(espClient); */ void setup() { // Configure serial port - Serial.begin(115200); + Serial.begin(19200); delay(10); // Prepare WiFi connection @@ -74,25 +72,9 @@ void setup_wifi() { WiFi.mode(WIFI_STA); // Do the connection - if (DEBUGTOSERIAL) { - Serial.println(); - Serial.print("Connecting to "); - Serial.println(ssid); - } WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); - if (DEBUGTOSERIAL) { - Serial.print("."); - } - } - if (DEBUGTOSERIAL) { - Serial.println(""); - Serial.println("WiFi connected"); - - // Print IP address to serial - Serial.print("My IP address: "); - Serial.println(WiFi.localIP()); } ArduinoOTA.setHostname(ota_hostname); ArduinoOTA.setPassword(ota_hostname); @@ -103,28 +85,12 @@ void setup_wifi() { * Callback method for incoming mqtt messages */ void incoming_mqtt(char* topic, byte* payload, unsigned int length) { - if (DEBUGTOSERIAL) { - Serial.print("Message arrived ["); - Serial.print(topic); - Serial.print("] "); - for (int i = 0; i < length; i++) { - Serial.print((char)payload[i]); - } - Serial.println(); - } - - if (strcmp(topic, mqtt_topic_power) == 0) { + if (strcmp(topic, mqtt_topic_port) == 0) { if (length == 1) { - if (DEBUGTOSERIAL) { - Serial.println("Setting new power state"); - } - if ((char)payload[0] == '0') { - // Switch power off - Serial.print("\r*pow=off#\r"); - } else { - // Switch power on - Serial.print("\r*pow=on#\r"); - } + // Select the port + Serial.print("\rsw i0"); + Serial.print((char)payload[0]); + Serial.print("\r"); } } } @@ -135,22 +101,11 @@ void incoming_mqtt(char* topic, byte* payload, unsigned int length) { void reconnect() { // Loop until we're reconnected while (!client.connected()) { - if (DEBUGTOSERIAL) { - Serial.print("Attempting MQTT connection..."); - } // Attempt to connect if (client.connect(mqtt_device)) { - if (DEBUGTOSERIAL) { - Serial.println("connected"); - } // subscribe to incoming topics - client.subscribe(mqtt_topic_power); + client.subscribe(mqtt_topic_port); } else { - if (DEBUGTOSERIAL) { - Serial.print("failed, rc="); - Serial.print(client.state()); - Serial.println(" try again in 5 seconds"); - } // Wait 5 seconds before retrying delay(5000); } @@ -163,44 +118,25 @@ void clearSerialInput() { } } -void updateLamptime() { +void updateState() { + Serial.print("\r"); + delay(250); // Clean input buffer clearSerialInput(); // Write request to serial - Serial.print("\r*ltim=?#\r"); + Serial.print("read\r"); delay(250); // Extract lamp time from response String message = Serial.readString(); - int startIndex = message.lastIndexOf('='); - int endIndex = message.lastIndexOf('#'); - if (startIndex != -1 && endIndex != -1) { - char publi[endIndex - startIndex]; - message.substring(startIndex + 1, endIndex).toCharArray(publi, (endIndex - startIndex)); - // client.publish(mqtt_topic_lamptime, publi); - } -} - -void updatePowerState() { - // Clean input buffer - clearSerialInput(); - - // Write request to serial - Serial.print("\r*pow=?#\r"); - delay(250); - - // Extract lamp time from response - String message = Serial.readString(); - int startIndex = message.lastIndexOf('='); - int endIndex = message.lastIndexOf('#'); - if (startIndex != -1 && endIndex != -1) { - String state = message.substring(startIndex + 1, endIndex); - if (state.equalsIgnoreCase("off")) { - // client.publish(mqtt_topic_powerState, "0"); - } else if (state.equalsIgnoreCase("on")) { - // client.publish(mqtt_topic_powerState, "1"); - } + + int startIndex = message.lastIndexOf("Input:port"); + if (startIndex != -1) { + String state = message.substring(startIndex + 11, startIndex + 12); + char buffer[2]; + state.toCharArray(buffer, 2); + client.publish(mqtt_topic_portState, buffer); } } @@ -220,7 +156,6 @@ void loop() { long now = millis(); if (now - lastMsg > publishInterval) { lastMsg = now; - updateLamptime(); - updatePowerState(); + updateState(); } }