From 679b4dd3a0a0bf40242c8a3b830797dc7ae11dc5 Mon Sep 17 00:00:00 2001 From: lexa Date: Sat, 15 Aug 2020 19:33:52 +0300 Subject: [PATCH] Change mqtt settings --- KuhLight_ESP/src/main.cpp | 144 ++++++--------- Sw_BigRoom/src/main.cpp | 163 +++++++++-------- Sw_Koridor/src/main.cpp | 214 ++++++++++++----------- Sw_MidlRoom/src/main.cpp | 359 +++++++------------------------------- Sw_SmallRoom/src/main.cpp | 259 ++++++++++++--------------- 5 files changed, 439 insertions(+), 700 deletions(-) diff --git a/KuhLight_ESP/src/main.cpp b/KuhLight_ESP/src/main.cpp index 3ffc528..1bd5418 100644 --- a/KuhLight_ESP/src/main.cpp +++ b/KuhLight_ESP/src/main.cpp @@ -1,5 +1,4 @@ #include -//#include #include #include #include @@ -24,79 +23,18 @@ Ticker wifiReconnectTimer; unsigned long cRun = 0; unsigned long lastSense; uint16_t nSec = 0; -uint8_t lamp, lampP; +//uint8_t lamp, lampP; uint8_t light; -void connectToWifi() { - Serial.println("Connecting to Wi-Fi..."); - WiFi.begin(ssid, password); -} +bool switchLight(uint8_t nLamp, int state, bool pub); +void connectToWifi(); +void connectToMqtt(); +void onWifiConnect(const WiFiEventStationModeGotIP& event); +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event); +void onMqttConnect(bool sessionPresent); +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason); +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total); -void connectToMqtt() { - Serial.println("Connecting to MQTT..."); - mqttClient.connect(); -} - -void onWifiConnect(const WiFiEventStationModeGotIP& event) { - Serial.println("Connected to Wi-Fi."); - Serial.print("IP: "); - Serial.println(WiFi.localIP()); - connectToMqtt(); - digitalWrite(LED_WF, HIGH); -} - -void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { - Serial.println("Disconnected from Wi-Fi."); - mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi - wifiReconnectTimer.once(2, connectToWifi); - digitalWrite(LED_WF, LOW); -} - -void onMqttConnect(bool sessionPresent) { - Serial.println("Connected to MQTT."); - Serial.print("Session present: "); - Serial.println(sessionPresent); - mqttClient.subscribe("/home/kuh/lighttbl_set", 0); - mqttClient.publish("/home/kuh/lighttbl", 0, false, light ? "1" : "0"); - digitalWrite(LED_MQ, HIGH); -} - -void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - //Serial.println("Disconnected from MQTT."); - - if (WiFi.isConnected()) { - mqttReconnectTimer.once(2, connectToMqtt); - } - digitalWrite(LED_MQ, LOW); -} - -void onMqttSubscribe(uint16_t packetId, uint8_t qos) { - Serial.println("Subscribe acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); - Serial.print(" qos: "); - Serial.println(qos); -} - -void onMqttUnsubscribe(uint16_t packetId) { - Serial.println("Unsubscribe acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); -} - -void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - if(strcmp(topic, "/home/kuh/lighttbl_set") == 0){ - light = atoi(payload); - digitalWrite(LAMP, light); - mqttClient.publish("/home/kuh/lighttbl", 0, false, light ? "1" : "0"); - } -} - -void onMqttPublish(uint16_t packetId) { - Serial.println("Publish acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); -} void setup() { Serial.begin(9600); @@ -132,14 +70,9 @@ void setup() { mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); mqttClient.setServer(mqtt_server, 1883); - // EEPROM.begin(16); - // EEPROM.get(0, lamp); pinMode(LAMP, OUTPUT); pinMode(LED_WF, OUTPUT); @@ -150,12 +83,11 @@ void setup() { digitalWrite(LED_WF, LOW); digitalWrite(LED_MQ, LOW); digitalWrite(LED_WRK, LOW); + digitalWrite(LAMP, LOW); Serial.println("Connect to WiFi"); connectToWifi(); lastSense = millis(); - light = false; - Serial.println("Loop"); } void loop() { @@ -163,13 +95,9 @@ void loop() { ArduinoOTA.handle(); if(digitalRead(SENS) == 0){ - if(lastSense + 3000 < millis()){ + if(lastSense + 2999 < millis()){ lastSense = millis(); - light = !light; - digitalWrite(LAMP, light); - mqttClient.publish("/home/kuh/lighttbl", 0, false, light ? "1" : "0"); - Serial.println("Change state"); - Serial.println(light); + switchLight(LAMP, !digitalRead(LAMP), true); } } if(cRun + 999 < millis()){ @@ -182,10 +110,54 @@ void loop() { char v[11]; itoa(millis(), v, 10); mqttClient.publish("/home/kuh/ltblmillis", 0, false, v); - Serial.print("Millis: "); - Serial.println(millis()); } nSec = 0; } } } + +bool switchLight(uint8_t nLamp, int state, bool pub) +{ + digitalWrite(nLamp, state); + if (pub) mqttClient.publish("/home/kuh/lighttbl", 0, false, state ? "1" : "0"); + return state; +} + +void connectToWifi() { + WiFi.begin(ssid, password); +} + +void connectToMqtt() { + mqttClient.connect(); +} + +void onWifiConnect(const WiFiEventStationModeGotIP& event) { + connectToMqtt(); + digitalWrite(LED_WF, HIGH); +} + +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { + mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + wifiReconnectTimer.once(2, connectToWifi); + digitalWrite(LED_WF, LOW); +} + +void onMqttConnect(bool sessionPresent) { + mqttClient.publish("/home/kuh/lighttbl", 0, false, digitalRead(LAMP) == 1 ? "1" : "0"); + mqttClient.subscribe("/home/kuh/lighttbl", 0); + digitalWrite(LED_MQ, HIGH); +} + +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { + if (WiFi.isConnected()) { + mqttReconnectTimer.once(2, connectToMqtt); + } + digitalWrite(LED_MQ, LOW); +} + +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { + if(strcmp(topic, "/home/kuh/lighttbl") == 0){ + if (atoi(payload) == 1) switchLight(LAMP, 1, false);//lStat2 = true; + else switchLight(LAMP, 0, false);//lStat2 = false; + } +} diff --git a/Sw_BigRoom/src/main.cpp b/Sw_BigRoom/src/main.cpp index d74b504..b1b5866 100644 --- a/Sw_BigRoom/src/main.cpp +++ b/Sw_BigRoom/src/main.cpp @@ -18,6 +18,7 @@ Ticker wifiReconnectTimer; bool lStat1, oldLStat1; bool lStat2, oldLStat2; +bool rcv; unsigned long cRun; #define B_LED (16) #define R_LED1 (4) @@ -28,57 +29,15 @@ unsigned long cRun; Bounce l1 = Bounce(); Bounce l2 = Bounce(); -void connectToWifi() { - WiFi.begin(ssid, password); -} +bool switchLight(uint8_t nLamp, int state, bool pub); +void connectToWifi(); +void connectToMqtt(); +void onWifiConnect(const WiFiEventStationModeGotIP& event); +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event); +void onMqttConnect(bool sessionPresent); +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason); +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total); -void connectToMqtt() { - mqttClient.connect(); -} - -void onWifiConnect(const WiFiEventStationModeGotIP& event) { - connectToMqtt(); -} - -void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { - mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi - wifiReconnectTimer.once(2, connectToWifi); -} - -void onMqttConnect(bool sessionPresent) { - mqttClient.subscribe("/home/bigroom/lamp1_set", 0); - mqttClient.subscribe("/home/bigroom/lamp2_set", 0); - mqttClient.publish("/home/bigroom/lamp1", 0, false, lStat1 ? "1" : "0"); - mqttClient.publish("/home/bigroom/lamp2", 0, false, lStat2 ? "1" : "0"); - digitalWrite(B_LED, LOW); -} - -void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - if (WiFi.isConnected()) { - mqttReconnectTimer.once(2, connectToMqtt); - } - digitalWrite(B_LED, HIGH); -} - -void onMqttSubscribe(uint16_t packetId, uint8_t qos) { -} - -void onMqttUnsubscribe(uint16_t packetId) { -} - -void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - if(strcmp(topic, "/home/bigroom/lamp1_set") == 0){ - if (atoi(payload) == 1) lStat1 = true; - else lStat1 = false; - } - if(strcmp(topic, "/home/bigroom/lamp2_set") == 0){ - if (atoi(payload) == 1) lStat2 = true; - else lStat2 = false; - } -} - -void onMqttPublish(uint16_t packetId) { -} void setup() { WiFi.mode(WIFI_STA); @@ -122,6 +81,7 @@ void setup() { EEPROM.get(1, lStat2); oldLStat1 = lStat1; oldLStat2 = lStat2; + rcv = false; // Serial.print("Lamp1: "); // Serial.println(lStat1); digitalWrite(R_LED1, lStat1); @@ -133,10 +93,10 @@ void setup() { mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); +// mqttClient.onSubscribe(onMqttSubscribe); +// mqttClient.onUnsubscribe(onMqttUnsubscribe); mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); +// mqttClient.onPublish(onMqttPublish); mqttClient.setServer(mqtt_server, 1883); mqttClient.setClientId("SW_Bigroom"); @@ -150,25 +110,33 @@ void loop() { l1.update(); l2.update(); if(l1.fell()){ - lStat1 = !lStat1; + switchLight(R_LED1, !digitalRead(R_LED1), true); + //lStat1 = !lStat1; } if(l2.fell()){ - lStat2 = !lStat2; - } - if(lStat1 != oldLStat1){ - digitalWrite(R_LED1, lStat1); - oldLStat1 = lStat1; - mqttClient.publish("/home/bigroom/lamp1", 0, false, lStat1 ? "1" : "0"); - EEPROM.put(0, lStat1); - EEPROM.commit(); - } - if(lStat2 != oldLStat2){ - digitalWrite(R_LED2, lStat2); - oldLStat2 = lStat2; - mqttClient.publish("/home/bigroom/lamp2", 0, false, lStat2 ? "1" : "0"); - EEPROM.put(1, lStat2); - EEPROM.commit(); + switchLight(R_LED2, !digitalRead(R_LED2), true); + //lStat2 = !lStat2; } + // if(lStat1 != oldLStat1){ + // digitalWrite(R_LED1, lStat1); + // oldLStat1 = lStat1; + // if(!rcv) + // mqttClient.publish("/home/bigroom/lamp1", 0, false, lStat1 ? "1" : "0"); + // else + // rcv = false; + // EEPROM.put(0, lStat1); + // EEPROM.commit(); + // } + // if(lStat2 != oldLStat2){ + // digitalWrite(R_LED2, lStat2); + // oldLStat2 = lStat2; + // if(!rcv) + // mqttClient.publish("/home/bigroom/lamp2", 0, false, lStat2 ? "1" : "0"); + // else + // rcv = false; + // EEPROM.put(1, lStat2); + // EEPROM.commit(); + // } if (cRun + 9999 < millis()){ cRun = millis(); char v[11]; @@ -177,4 +145,61 @@ void loop() { } } +bool switchLight(uint8_t nLamp, int state, bool pub) +{ + digitalWrite(nLamp, state); + EEPROM.put(nLamp == R_LED1 ? 0 : 1, state); + EEPROM.commit(); + String topic = "/home/bigroom/lamp"; + char n = nLamp == R_LED1 ? '1' : '2'; + if (pub) mqttClient.publish(String(topic + n).c_str(), 0, false, state ? "1" : "0"); + return state; +} +void connectToWifi() { + WiFi.begin(ssid, password); +} + +void connectToMqtt() { + mqttClient.connect(); +} + +void onWifiConnect(const WiFiEventStationModeGotIP& event) { + connectToMqtt(); +} + +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { + mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + wifiReconnectTimer.once(2, connectToWifi); +} + +void onMqttConnect(bool sessionPresent) { + mqttClient.publish("/home/bigroom/lamp1", 0, false, lStat1 ? "1" : "0"); + mqttClient.publish("/home/bigroom/lamp2", 0, false, lStat2 ? "1" : "0"); + mqttClient.subscribe("/home/bigroom/lamp1", 0); + mqttClient.subscribe("/home/bigroom/lamp2", 0); + digitalWrite(B_LED, LOW); +} + +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { + if (WiFi.isConnected()) { + mqttReconnectTimer.once(2, connectToMqtt); + } + digitalWrite(B_LED, HIGH); +} + +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { + if(String(topic) == "/home/bigroom/lamp1"){ + + if (atoi(payload) == 1) switchLight(R_LED1, 1, false); + //lStat1 = true; + else switchLight(R_LED1, 0, false); + //lStat1 = false; + //rcv = true; + } + if(String(topic) == "/home/bigroom/lamp2"){ + if (atoi(payload) == 1) switchLight(R_LED2, 1, false); + //lStat1 = true; + else switchLight(R_LED2, 0, false); + } +} diff --git a/Sw_Koridor/src/main.cpp b/Sw_Koridor/src/main.cpp index b2e8d4a..55c0790 100644 --- a/Sw_Koridor/src/main.cpp +++ b/Sw_Koridor/src/main.cpp @@ -22,92 +22,25 @@ WiFiEventHandler wifiConnectHandler; WiFiEventHandler wifiDisconnectHandler; Ticker wifiReconnectTimer; -bool lStat1, oldLStat1; -bool lStat2, oldLStat2; +//bool lStat1, oldLStat1; +//bool lStat2, oldLStat2; unsigned long cRun; +//bool rcv; #define B_LED (1) #define R_LED (12) #define BUTT (5) -bool led = false; +//bool led = false; OneButton button(BUTT); +bool switchLight(uint8_t nLamp, int state, bool pub); +void connectToWifi(); +void connectToMqtt(); +void onWifiConnect(const WiFiEventStationModeGotIP& event); +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event); +void onMqttConnect(bool sessionPresent); +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason); +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total); -void connectToWifi() { - //Serial.println("Connecting to Wi-Fi..."); - WiFi.begin(ssid, password); -} - -void connectToMqtt() { - //Serial.println("Connecting to MQTT..."); - mqttClient.connect(); -} - -void onWifiConnect(const WiFiEventStationModeGotIP& event) { - //Serial.println("Connected to Wi-Fi."); - //Serial.print("IP: "); - //Serial.println(WiFi.localIP()); - connectToMqtt(); -} - -void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { - //Serial.println("Disconnected from Wi-Fi."); - mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi - wifiReconnectTimer.once(2, connectToWifi); -} - -void onMqttConnect(bool sessionPresent) { - // Serial.println("Connected to MQTT."); - // Serial.print("Session present: "); - // Serial.println(sessionPresent); - //uint16_t packetIdSub = - mqttClient.subscribe("/home/kor/lamp1_set", 0); - // Serial.print("Subscribing Lamp1, packetId: "); - // Serial.println(packetIdSub); - //packetIdSub = mqttClient.subscribe("/home/kor/lamp2_set", 1); - //Serial.print("Subscribing Lamp2, packetId: "); - //Serial.println(packetIdSub); - mqttClient.publish("/home/kor/lamp1", 0, false, lStat1 ? "1" : "0"); - //Serial.println("Publishing at Lamp 1"); - //mqttClient.publish("/home/kor/lamp2", 1, false, lStat2 ? "1" : "0"); - //Serial.println("Publishing at Lamp 2"); - digitalWrite(B_LED, LOW); -} - -void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - //Serial.println("Disconnected from MQTT."); - - if (WiFi.isConnected()) { - mqttReconnectTimer.once(2, connectToMqtt); - } - digitalWrite(B_LED, HIGH); -} - -void onMqttSubscribe(uint16_t packetId, uint8_t qos) { - // Serial.println("Subscribe acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); - // Serial.print(" qos: "); - // Serial.println(qos); -} - -void onMqttUnsubscribe(uint16_t packetId) { - // Serial.println("Unsubscribe acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); -} - -void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - if(strcmp(topic, "/home/kor/lamp1_set") == 0){ - if (atoi(payload) == 1) lStat1 = true; - else lStat1 = false; - } -} - -void onMqttPublish(uint16_t packetId) { - // Serial.println("Publish acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); -} // void ICACHE_RAM_ATTR sw_func() // { @@ -116,18 +49,21 @@ void onMqttPublish(uint16_t packetId) { void oneClick() { - lStat1 = !lStat1; + switchLight(R_LED, !digitalRead(R_LED), true); + //lStat1 = !lStat1; } void longPress() { - lStat1 = false; - mqttClient.publish("/home/bigroom/lamp1_set", 0, false, "0"); - mqttClient.publish("/home/bigroom/lamp2_set", 0, false, "0"); - mqttClient.publish("/home/midroom/lamp1_set", 0, false, "0"); - mqttClient.publish("/home/midroom/lamp2_set", 0, false, "0"); - mqttClient.publish("/home/smallroom/lamp1_set", 0, false, "0"); - mqttClient.publish("/home/smallroom/lamp2_set", 0, false, "0"); + //lStat1 = false; + switchLight(R_LED, 0, true); + mqttClient.publish("/home/bigroom/lamp1", 0, false, "0"); + mqttClient.publish("/home/bigroom/lamp2", 0, false, "0"); + mqttClient.publish("/home/midroom/lamp1", 0, false, "0"); + mqttClient.publish("/home/midroom/lamp2", 0, false, "0"); + mqttClient.publish("/home/smallroom/lamp1", 0, false, "0"); + mqttClient.publish("/home/smallroom/lamp2", 0, false, "0"); + mqttClient.publish("/home/kuh/lighttbl", 0, false, "0"); } void setup() { @@ -165,11 +101,12 @@ void setup() { pinMode(R_LED, OUTPUT); pinMode(BUTT, INPUT_PULLUP); EEPROM.begin(16); - EEPROM.get(0, lStat1); - oldLStat1 = lStat1; + uint8_t lstat = 0; + EEPROM.get(0, lstat); + //oldLStat1 = lStat1; // Serial.print("Lamp1: "); // Serial.println(lStat1); - digitalWrite(R_LED, lStat1); + digitalWrite(R_LED, lstat); //oldLStat2 = lStat2; wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect); @@ -177,10 +114,10 @@ void setup() { mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); + // mqttClient.onSubscribe(onMqttSubscribe); + // mqttClient.onUnsubscribe(onMqttUnsubscribe); mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); + // mqttClient.onPublish(onMqttPublish); mqttClient.setServer(mqtt_server, 1883); mqttClient.setClientId("SW_Koridor"); @@ -198,13 +135,16 @@ void setup() { void loop() { ArduinoOTA.handle(); button.tick(); - if(lStat1 != oldLStat1){ - digitalWrite(R_LED, lStat1); - oldLStat1 = lStat1; - mqttClient.publish("/home/kor/lamp1", 0, false, lStat1 ? "1" : "0"); - EEPROM.put(0, lStat1); - EEPROM.commit(); - } + // if(lStat1 != oldLStat1){ + // digitalWrite(R_LED, lStat1); + // oldLStat1 = lStat1; + // if(!rcv) + // mqttClient.publish("/home/kor/lamp1", 0, false, lStat1 ? "1" : "0"); + // else + // rcv = false; + // EEPROM.put(0, lStat1); + // EEPROM.commit(); + // } if (cRun + 9999 < millis()){ cRun = millis(); char v[11]; @@ -213,3 +153,77 @@ void loop() { } } +bool switchLight(uint8_t nLamp, int state, bool pub) +{ + digitalWrite(nLamp, state); + EEPROM.put(0, state); + EEPROM.commit(); + if (pub) mqttClient.publish("/home/kor/lamp1", 0, false, state ? "1" : "0"); + return state; +} + +void connectToWifi() { + //Serial.println("Connecting to Wi-Fi..."); + WiFi.begin(ssid, password); +} + +void connectToMqtt() { + //Serial.println("Connecting to MQTT..."); + mqttClient.connect(); +} + +void onWifiConnect(const WiFiEventStationModeGotIP& event) { + //Serial.println("Connected to Wi-Fi."); + //Serial.print("IP: "); + //Serial.println(WiFi.localIP()); + connectToMqtt(); +} + +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { + //Serial.println("Disconnected from Wi-Fi."); + mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + wifiReconnectTimer.once(2, connectToWifi); +} + +void onMqttConnect(bool sessionPresent) { + mqttClient.publish("/home/kor/lamp1", 0, false, digitalRead(R_LED) == 1 ? "1" : "0"); + mqttClient.subscribe("/home/kor/lamp1", 0); + digitalWrite(B_LED, LOW); +} + +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { + //Serial.println("Disconnected from MQTT."); + + if (WiFi.isConnected()) { + mqttReconnectTimer.once(2, connectToMqtt); + } + digitalWrite(B_LED, HIGH); +} + +void onMqttSubscribe(uint16_t packetId, uint8_t qos) { + // Serial.println("Subscribe acknowledged."); + // Serial.print(" packetId: "); + // Serial.println(packetId); + // Serial.print(" qos: "); + // Serial.println(qos); +} + +void onMqttUnsubscribe(uint16_t packetId) { + // Serial.println("Unsubscribe acknowledged."); + // Serial.print(" packetId: "); + // Serial.println(packetId); +} + +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { + if(strcmp(topic, "/home/kor/lamp1") == 0){ + if (atoi(payload) == 1) switchLight(R_LED, 1, false);//lStat1 = true; + else switchLight(R_LED, 0, false);//lStat1 = false; + //rcv = true; + } +} + +void onMqttPublish(uint16_t packetId) { + // Serial.println("Publish acknowledged."); + // Serial.print(" packetId: "); + // Serial.println(packetId); +} diff --git a/Sw_MidlRoom/src/main.cpp b/Sw_MidlRoom/src/main.cpp index f415f5b..85793c9 100644 --- a/Sw_MidlRoom/src/main.cpp +++ b/Sw_MidlRoom/src/main.cpp @@ -16,70 +16,29 @@ WiFiEventHandler wifiConnectHandler; WiFiEventHandler wifiDisconnectHandler; Ticker wifiReconnectTimer; -bool lStat1, oldLStat1; -bool lStat2, oldLStat2; +// bool lStat1, oldLStat1; +// bool lStat2, oldLStat2; +// bool rcv; unsigned long cRun; #define B_LED (16) #define R_LED1 (4) #define R_LED2 (13) #define BUTT1 (14) #define BUTT2 (12) -bool led = false; +//bool led = false; Bounce l1 = Bounce(); Bounce l2 = Bounce(); -void connectToWifi() { - WiFi.begin(ssid, password); -} +bool switchLight(uint8_t nLamp, int state, bool pub); +void connectToWifi(); +void connectToMqtt(); +void onWifiConnect(const WiFiEventStationModeGotIP& event); +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event); +void onMqttConnect(bool sessionPresent); +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason); +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total); -void connectToMqtt() { - mqttClient.connect(); -} - -void onWifiConnect(const WiFiEventStationModeGotIP& event) { - connectToMqtt(); -} - -void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { - mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi - wifiReconnectTimer.once(2, connectToWifi); -} - -void onMqttConnect(bool sessionPresent) { - mqttClient.subscribe("/home/midroom/lamp1_set", 0); - mqttClient.subscribe("/home/midroom/lamp2_set", 0); - mqttClient.publish("/home/midroom/lamp1", 0, false, lStat1 ? "1" : "0"); - mqttClient.publish("/home/midroom/lamp2", 0, false, lStat2 ? "1" : "0"); - digitalWrite(B_LED, LOW); -} - -void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - if (WiFi.isConnected()) { - mqttReconnectTimer.once(2, connectToMqtt); - } - digitalWrite(B_LED, HIGH); -} - -void onMqttSubscribe(uint16_t packetId, uint8_t qos) { -} - -void onMqttUnsubscribe(uint16_t packetId) { -} - -void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - if(strcmp(topic, "/home/midroom/lamp1_set") == 0){ - if (atoi(payload) == 1) lStat1 = true; - else lStat1 = false; - } - if(strcmp(topic, "/home/midroom/lamp2_set") == 0){ - if (atoi(payload) == 1) lStat2 = true; - else lStat2 = false; - } -} - -void onMqttPublish(uint16_t packetId) { -} void setup() { WiFi.mode(WIFI_STA); @@ -118,26 +77,19 @@ void setup() { l2.attach(BUTT2); + uint8_t stat = 0; EEPROM.begin(16); - EEPROM.get(0, lStat1); - EEPROM.get(1, lStat2); - oldLStat1 = lStat1; - oldLStat2 = lStat2; - // Serial.print("Lamp1: "); - // Serial.println(lStat1); - digitalWrite(R_LED1, lStat1); - digitalWrite(R_LED2, lStat2); - //oldLStat2 = lStat2; + EEPROM.get(0, stat); + digitalWrite(R_LED1, stat); + EEPROM.get(1, stat); + digitalWrite(R_LED2, stat); wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect); wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect); mqttClient.onConnect(onMqttConnect); mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); mqttClient.setServer(mqtt_server, 1883); connectToWifi(); @@ -150,244 +102,63 @@ void loop() { l1.update(); l2.update(); if(l1.fell()){ - lStat1 = !lStat1; + switchLight(R_LED1, !digitalRead(R_LED1), true); } if(l2.fell()){ - lStat2 = !lStat2; - } - if(lStat1 != oldLStat1){ - digitalWrite(R_LED1, lStat1); - oldLStat1 = lStat1; - mqttClient.publish("/home/midroom/lamp1", 0, false, lStat1 ? "1" : "0"); - EEPROM.put(0, lStat1); - EEPROM.commit(); - } - if(lStat2 != oldLStat2){ - digitalWrite(R_LED2, lStat2); - oldLStat2 = lStat2; - mqttClient.publish("/home/midroom/lamp2", 0, false, lStat2 ? "1" : "0"); - EEPROM.put(1, lStat2); - EEPROM.commit(); + switchLight(R_LED2, !digitalRead(R_LED2), true); } } +bool switchLight(uint8_t nLamp, int state, bool pub) +{ + digitalWrite(nLamp, state); + EEPROM.put(nLamp == R_LED1 ? 0 : 1, state); + EEPROM.commit(); + String topic = "/home/midroom/lamp"; + char n = nLamp == R_LED1 ? '1' : '2'; + if (pub) mqttClient.publish(String(topic + n).c_str(), 0, false, state ? "1" : "0"); + return state; +} +void connectToWifi() { + WiFi.begin(ssid, password); +} +void connectToMqtt() { + mqttClient.connect(); +} -///////////////////////////////////////////////////// +void onWifiConnect(const WiFiEventStationModeGotIP& event) { + connectToMqtt(); +} +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { + mqttReconnectTimer.detach(); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + wifiReconnectTimer.once(2, connectToWifi); +} -// /********* -// Руи Сантос (Rui Santos) -// Более подробно о проекте на: http://randomnerdtutorials.com -// Пример в IDE Arduino: File > Examples > Arduino OTA > BasicOTA.ino -// (Файл > Примеры > Arduino OTA > BasicOTA.ino) -// *********/ -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include +void onMqttConnect(bool sessionPresent) { + mqttClient.publish("/home/midroom/lamp1", 0, false, digitalRead(R_LED1) == 1 ? "1" : "0"); + mqttClient.publish("/home/midroom/lamp2", 0, false, digitalRead(R_LED2) == 1 ? "1" : "0"); + mqttClient.subscribe("/home/midroom/lamp1", 0); + mqttClient.subscribe("/home/midroom/lamp2", 0); + digitalWrite(B_LED, LOW); +} -// // замените значения в этих константах на те, -// // что соответствуют вашей сети: -// const char* ssid = "wf-home"; -// const char* password = "0ndthnrf"; -// const char* mqtt_server = "192.168.1.250"; -// //unsigned long int cRun; -// bool lStat1; -// bool lStat2; -// #define B_LED 16 -// //bool led = false; +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { + if (WiFi.isConnected()) { + mqttReconnectTimer.once(2, connectToMqtt); + } + digitalWrite(B_LED, HIGH); +} -// Bounce l1 = Bounce(); -// Bounce l2 = Bounce(); - -// WiFiClient espClient; -// PubSubClient client(espClient); - -// void callback(char* topic, byte* payload, unsigned int length) { -// Serial.print("Message arrived ["); -// Serial.print(topic); -// Serial.print("] "); -// for (unsigned int i = 0; i < length; i++) { -// Serial.print((char)payload[i]); -// } -// Serial.println(); -// if(strcmp(topic, "/home/midroom/lamp1_set") == 0){ -// if ((char)payload[0] == '1') lStat1 = true; -// else lStat1 = false; -// EEPROM.put(0, lStat1); -// EEPROM.commit(); -// Serial.print("Lamp 1: "); -// Serial.println(lStat1); -// if (client.connected()) -// client.publish("/home/midroom/lamp1", lStat1 ? "1" : "0"); -// //setLamp(0); -// } -// if(strcmp(topic, "/home/midroom/lamp2_set") == 0){ -// if ((char)payload[0] == '1') lStat2 = true; -// else lStat2 = false; -// //setLamp(1); -// EEPROM.put(1, lStat2); -// EEPROM.commit(); -// Serial.print("Lamp 2: "); -// Serial.println(lStat2); -// if (client.connected()) -// client.publish("/home/midroom/lamp2", lStat2 ? "1" : "0"); -// } - -// // Switch on the LED if an 1 was received as first character -// //if ((char)payload[0] == '1') { -// //digitalWrite(LED_BUILTIN, LOW); // Turn the LED on (Note that LOW is the voltage level -// // but actually the LED is on; this is because -// // it is active low on the ESP-01) -// //} else { -// //digitalWrite(LED_BUILTIN, HIGH); // Turn the LED off by making the voltage HIGH -// //} -// } - -// void reconnect() { -// // Loop until we're reconnected -// int cntConn = 0; -// while (!client.connected() && cntConn < 5) { -// Serial.print("Attempting MQTT connection..."); -// // Create a random client ID -// String clientId = "SwitchMidRoom"; -// //clientId += String(random(0xffff), HEX); -// // Attempt to connect -// if (client.connect(clientId.c_str())) { -// Serial.println("connected"); -// // Once connected, publish an announcement... -// //client.publish("outTopic", "hello world"); -// // ... and resubscribe -// client.subscribe("/home/midroom/lamp1_set"); -// client.subscribe("/home/midroom/lamp2_set"); -// digitalWrite(B_LED, LOW); -// } else { -// Serial.print("failed, rc="); -// Serial.print(client.state()); -// Serial.println(" try again in 5 seconds"); -// digitalWrite(B_LED, HIGH); -// // Wait 5 seconds before retrying -// //delay(5000); -// } -// cntConn++; -// } -// } - -// void setup() { -// Serial.begin(9600); -// Serial.println("Booting"); // "Загрузка" -// WiFi.mode(WIFI_STA); -// WiFi.hostname("SW-MidRoom"); -// WiFi.begin(ssid, password); -// int cntConn = 0; -// while ((WiFi.waitForConnectResult() != WL_CONNECTED) && cntConn < 5) { -// Serial.println("Connection Failed! Rebooting..."); -// // "Соединиться не удалось! Перезагрузка..." -// delay(1000); -// cntConn++; -// ESP.restart(); -// } - -// // строчка для номера порта по умолчанию -// // можно вписать «8266»: -// // ArduinoOTA.setPort(8266); - -// // строчка для названия хоста по умолчанию; -// // можно вписать «esp8266-[ID чипа]»: -// // ArduinoOTA.setHostname("myesp8266"); - -// // строчка для аутентификации -// // (по умолчанию никакой аутентификации не будет): -// // ArduinoOTA.setPassword((const char *)"123"); - -// ArduinoOTA.onStart([]() { -// Serial.println("Start"); // "Начало OTA-апдейта" - -// }); -// ArduinoOTA.onEnd([]() { -// Serial.println("\nEnd"); // "Завершение OTA-апдейта" -// }); -// ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { -// Serial.printf("Progress: %u%%\r", (progress / (total / 100))); -// }); -// ArduinoOTA.onError([](ota_error_t error) { -// Serial.printf("Error[%u]: ", error); -// if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); -// // "Ошибка при аутентификации" -// else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); -// // "Ошибка при начале OTA-апдейта" -// else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); -// // "Ошибка при подключении" -// else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); -// // "Ошибка при получении данных" -// else if (error == OTA_END_ERROR) Serial.println("End Failed"); -// // "Ошибка при завершении OTA-апдейта" -// }); -// ArduinoOTA.begin(); -// Serial.println("Ready"); // "Готово" -// Serial.print("IP address: "); // "IP-адрес: " -// Serial.println(WiFi.localIP()); -// //pinMode(0, INPUT_PULLUP); -// //l1.attach(0); -// pinMode(B_LED, OUTPUT); -// pinMode(4, OUTPUT); -// pinMode(13, OUTPUT); -// pinMode(14, INPUT); -// l1.attach(14); -// pinMode(12, INPUT); -// l2.attach(12); -// lStat1 = false; -// lStat2 = false; -// client.setServer(mqtt_server, 1883); -// client.setCallback(callback); -// EEPROM.begin(16); -// EEPROM.get(0, lStat1); -// EEPROM.get(1, lStat2); - -// //cRun = millis(); -// } - -// void loop() { -// ArduinoOTA.handle(); - -// digitalWrite(4, lStat1); -// digitalWrite(13, lStat2); -// if (!client.connected()) { -// reconnect(); -// } -// client.loop(); - -// l1.update(); -// l2.update(); -// if(l1.fell()){ -// lStat1 = !lStat1; -// //digitalWrite(4, lStat1); -// EEPROM.put(0, lStat1); -// EEPROM.commit(); -// Serial.print("Lamp 1: "); -// Serial.println(lStat1); -// if (client.connected()) -// client.publish("/home/midroom/lamp1", String(lStat1).c_str()); -// } -// if(l2.fell()){ -// lStat2 = !lStat2; -// //digitalWrite(13, lStat2); -// EEPROM.put(1, lStat2); -// EEPROM.commit(); -// Serial.print("Lamp 2: "); -// Serial.println(lStat2); -// if (client.connected()) -// client.publish("/home/midroom/lamp2", String(lStat2).c_str()); -// } -// // if(cRun + 500 < millis()){ -// // digitalWrite(B_LED, led); -// // led = !led; -// // cRun = millis(); -// // } -// } +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { + if(strcmp(topic, "/home/midroom/lamp1") == 0){ + if (atoi(payload) == 1) switchLight(R_LED1, 1, false);//lStat1 = true; + else switchLight(R_LED1, 0, false);//lStat1 = false; + } + if(strcmp(topic, "/home/midroom/lamp2") == 0){ + if (atoi(payload) == 1) switchLight(R_LED2, 1, false);//lStat2 = true; + else switchLight(R_LED2, 0, false);//lStat2 = false; + } +} diff --git a/Sw_SmallRoom/src/main.cpp b/Sw_SmallRoom/src/main.cpp index 6a3aa37..737206f 100644 --- a/Sw_SmallRoom/src/main.cpp +++ b/Sw_SmallRoom/src/main.cpp @@ -22,19 +22,113 @@ WiFiEventHandler wifiConnectHandler; WiFiEventHandler wifiDisconnectHandler; Ticker wifiReconnectTimer; -bool lStat1, oldLStat1; -bool lStat2, oldLStat2; -unsigned long cRun; +// bool lStat1, oldLStat1; +// bool lStat2, oldLStat2; +// bool rcv; +//unsigned long cRun; #define B_LED (1) #define R_LED1 (14) #define R_LED2 (13) #define BUTT1 (4) #define BUTT2 (3) -bool led = false; +//bool led = false; Bounce l1 = Bounce(); Bounce l2 = Bounce(); +bool switchLight(uint8_t nLamp, int state, bool pub); +void connectToWifi(); +void connectToMqtt(); +void onWifiConnect(const WiFiEventStationModeGotIP& event); +void onWifiDisconnect(const WiFiEventStationModeDisconnected& event); +void onMqttConnect(bool sessionPresent); +void onMqttDisconnect(AsyncMqttClientDisconnectReason reason); +void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total); + +void setup() { + //Serial.begin(9600); + //Serial.println("Booting"); // "Загрузка" + WiFi.mode(WIFI_STA); + WiFi.hostname("SW-SmallRoom"); + ArduinoOTA.onStart([]() { + // Serial.println("Start"); // "Начало OTA-апдейта" + }); + ArduinoOTA.onEnd([]() { + // Serial.println("\nEnd"); // "Завершение OTA-апдейта" + }); + ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { + // Serial.printf("Progress: %u%%\r", (progress / (total / 100))); + }); + ArduinoOTA.onError([](ota_error_t error) { + // Serial.printf("Error[%u]: ", error); + // if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); + // // "Ошибка при аутентификации" + // else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); + // // "Ошибка при начале OTA-апдейта" + // else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); + // // "Ошибка при подключении" + // else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); + // // "Ошибка при получении данных" + // else if (error == OTA_END_ERROR) Serial.println("End Failed"); + // // "Ошибка при завершении OTA-апдейта" + }); + ArduinoOTA.begin(); + + pinMode(B_LED, FUNCTION_3); + pinMode(B_LED, OUTPUT); + digitalWrite(B_LED, HIGH); + pinMode(R_LED1, OUTPUT); + pinMode(BUTT1, INPUT_PULLUP); + pinMode(R_LED2, OUTPUT); + pinMode(BUTT2, FUNCTION_3); + pinMode(BUTT2, INPUT_PULLUP); + l1.attach(BUTT1); + l2.attach(BUTT2); + + EEPROM.begin(16); + uint8_t stat = 0; + EEPROM.get(0, stat); + digitalWrite(R_LED1, stat); + EEPROM.get(1, stat); + digitalWrite(R_LED2, stat); + + wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect); + wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect); + + mqttClient.onConnect(onMqttConnect); + mqttClient.onDisconnect(onMqttDisconnect); + mqttClient.onMessage(onMqttMessage); + mqttClient.setServer(mqtt_server, 1883); + mqttClient.setClientId("SmallRoomSW"); + + connectToWifi(); + +// cRun = millis(); +} + +void loop() { + ArduinoOTA.handle(); + l1.update(); + l2.update(); + if(l1.fell()){ + switchLight(R_LED1, !digitalRead(R_LED1), true); + } + if(l2.fell()){ + switchLight(R_LED2, !digitalRead(R_LED2), true); + } +} + +bool switchLight(uint8_t nLamp, int state, bool pub) +{ + digitalWrite(nLamp, state); + EEPROM.put(nLamp == R_LED1 ? 0 : 1, state); + EEPROM.commit(); + String topic = "/home/smallroom/lamp"; + char n = nLamp == R_LED1 ? '1' : '2'; + if (pub) mqttClient.publish(String(topic + n).c_str(), 0, false, state ? "1" : "0"); + return state; +} + void connectToWifi() { //Serial.println("Connecting to Wi-Fi..."); WiFi.begin(ssid, password); @@ -59,165 +153,28 @@ void onWifiDisconnect(const WiFiEventStationModeDisconnected& event) { } void onMqttConnect(bool sessionPresent) { - // Serial.println("Connected to MQTT."); - // Serial.print("Session present: "); - // Serial.println(sessionPresent); - //uint16_t packetIdSub = - mqttClient.subscribe("/home/smallroom/lamp1_set", 0); - mqttClient.subscribe("/home/smallroom/lamp2_set", 0); - // Serial.print("Subscribing Lamp1, packetId: "); - // Serial.println(packetIdSub); - //packetIdSub = mqttClient.subscribe("/home/kor/lamp2_set", 1); - //Serial.print("Subscribing Lamp2, packetId: "); - //Serial.println(packetIdSub); - mqttClient.publish("/home/smallroom/lamp1", 0, false, lStat1 ? "1" : "0"); - mqttClient.publish("/home/smallroom/lamp2", 0, false, lStat2 ? "1" : "0"); - //Serial.println("Publishing at Lamp 1"); - //mqttClient.publish("/home/kor/lamp2", 1, false, lStat2 ? "1" : "0"); - //Serial.println("Publishing at Lamp 2"); + mqttClient.publish("/home/smallroom/lamp1", 0, false, digitalRead(R_LED1) == 1 ? "1" : "0"); + mqttClient.publish("/home/smallroom/lamp2", 0, false, digitalRead(R_LED2) == 1 ? "1" : "0"); + mqttClient.subscribe("/home/smallroom/lamp1", 0); + mqttClient.subscribe("/home/smallroom/lamp2", 0); digitalWrite(B_LED, LOW); } void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - //Serial.println("Disconnected from MQTT."); - if (WiFi.isConnected()) { mqttReconnectTimer.once(2, connectToMqtt); } digitalWrite(B_LED, HIGH); } -void onMqttSubscribe(uint16_t packetId, uint8_t qos) { - // Serial.println("Subscribe acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); - // Serial.print(" qos: "); - // Serial.println(qos); -} - -void onMqttUnsubscribe(uint16_t packetId) { - // Serial.println("Unsubscribe acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); -} - void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - if(strcmp(topic, "/home/smallroom/lamp1_set") == 0){ - if (atoi(payload) == 1) lStat1 = true; - else lStat1 = false; + if(strcmp(topic, "/home/smallroom/lamp1") == 0){ + if (atoi(payload) == 1) switchLight(R_LED1, 1, false);//lStat1 = true; + else switchLight(R_LED1, 0, false);//lStat1 = false; } - if(strcmp(topic, "/home/smallroom/lamp2_set") == 0){ - if (atoi(payload) == 1) lStat2 = true; - else lStat2 = false; - } -} - -void onMqttPublish(uint16_t packetId) { - // Serial.println("Publish acknowledged."); - // Serial.print(" packetId: "); - // Serial.println(packetId); -} - -void setup() { - //Serial.begin(9600); - //Serial.println("Booting"); // "Загрузка" - WiFi.mode(WIFI_STA); - WiFi.hostname("SW-SmallRoom1"); - ArduinoOTA.onStart([]() { - // Serial.println("Start"); // "Начало OTA-апдейта" - }); - ArduinoOTA.onEnd([]() { - // Serial.println("\nEnd"); // "Завершение OTA-апдейта" - }); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - // Serial.printf("Progress: %u%%\r", (progress / (total / 100))); - }); - ArduinoOTA.onError([](ota_error_t error) { - // Serial.printf("Error[%u]: ", error); - // if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); - // // "Ошибка при аутентификации" - // else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); - // // "Ошибка при начале OTA-апдейта" - // else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); - // // "Ошибка при подключении" - // else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); - // // "Ошибка при получении данных" - // else if (error == OTA_END_ERROR) Serial.println("End Failed"); - // // "Ошибка при завершении OTA-апдейта" - }); - ArduinoOTA.begin(); - - - - - pinMode(B_LED, FUNCTION_3); - pinMode(B_LED, OUTPUT); - digitalWrite(B_LED, HIGH); - pinMode(R_LED1, OUTPUT); - pinMode(BUTT1, INPUT_PULLUP); - pinMode(R_LED2, OUTPUT); - pinMode(BUTT2, FUNCTION_3); - pinMode(BUTT2, INPUT_PULLUP); - l1.attach(BUTT1); - l2.attach(BUTT2); - - - EEPROM.begin(16); - EEPROM.get(0, lStat1); - EEPROM.get(1, lStat2); - oldLStat1 = lStat1; - oldLStat2 = lStat2; - // Serial.print("Lamp1: "); - // Serial.println(lStat1); - digitalWrite(R_LED1, lStat1); - digitalWrite(R_LED2, lStat2); - //oldLStat2 = lStat2; - - wifiConnectHandler = WiFi.onStationModeGotIP(onWifiConnect); - wifiDisconnectHandler = WiFi.onStationModeDisconnected(onWifiDisconnect); - - mqttClient.onConnect(onMqttConnect); - mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); - mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); - mqttClient.setServer(mqtt_server, 1883); - - connectToWifi(); - - cRun = millis(); -} - -void loop() { - ArduinoOTA.handle(); - l1.update(); - l2.update(); - if(l1.fell()){ - lStat1 = !lStat1; - } - if(l2.fell()){ - lStat2 = !lStat2; - } - if(lStat1 != oldLStat1){ - digitalWrite(R_LED1, lStat1); - oldLStat1 = lStat1; - mqttClient.publish("/home/smallroom/lamp1", 0, false, lStat1 ? "1" : "0"); - // Serial.println("Publishing at Lamp 1"); - EEPROM.put(0, lStat1); - EEPROM.commit(); - // Serial.print("Lamp 1: "); - // Serial.println(lStat1); - } - if(lStat2 != oldLStat2){ - digitalWrite(R_LED2, lStat2); - oldLStat2 = lStat2; - mqttClient.publish("/home/smallroom/lamp2", 0, false, lStat2 ? "1" : "0"); - // Serial.println("Publishing at Lamp 1"); - EEPROM.put(1, lStat2); - EEPROM.commit(); - // Serial.print("Lamp 1: "); - // Serial.println(lStat1); + if(strcmp(topic, "/home/smallroom/lamp2") == 0){ + if (atoi(payload) == 1) switchLight(R_LED2, 1, false);//lStat2 = true; + else switchLight(R_LED2, 0, false);//lStat2 = false; } }