#include #include #include #include #include #include #include StaticJsonDocument<200> doc; String message, message2; int s01, s02, s03, s04, s05, s06, s07, s08, s09, s10, s11, s12,s13; int s14, s15,s17, s18, s19, s20,ss16; // Update these with values suitable for your network. const char* mqtt_server = "mqttgo.io"; WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (200) int timezone = 7 * 3600; //ตั้งค่า TimeZone ตามเวลาประเทศไทย int dst = 0; //กำหนดค่า Date Swing Time char msg[MSG_BUFFER_SIZE]; String data ; #define ConfigWiFi_Pin 15 #define ESP_AP_NAME "ESP8266 sak Config 202" int th, tw, tm, ts, td, tn, ty; String vs, strz, strx, stry; int tsec, vset_t1,f_reset; float mml,vmin; int ii = 0, vz, fx, fm, vf; char strzx[15]; float vsec; int value = 0; String vx1 = "202"; #define vtopic "xxxx/yyy" //กำหนดค่า topic and subscribe void setup() { Wire.begin(); EEPROM.begin(2000); pinMode(2, OUTPUT); // Initialize the BUILTIN_LED pin as an output pinMode(5, INPUT_PULLUP); Serial.begin(9600); Serial2.begin(9600); Serial.println("Starting..."); WiFiManager wifiManager; if (digitalRead(ConfigWiFi_Pin) == LOW) // Press button { //reset saved settings wifiManager.resetSettings(); // go to ip 192.168.4.1 to config } wifiManager.autoConnect(ESP_AP_NAME); while (WiFi.status() != WL_CONNECTED) { delay(250); Serial.print("."); } /* WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(250); Serial.print("."); } */ Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server Serial.println("\nLoading time"); while (!time(nullptr)) { Serial.print("*"); delay(1000); // wdt_enable(WDTO_2S); } client.setServer(mqtt_server, 1883); client.setCallback(callback); // put your setup code here, to run once: } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); message = ""; message2= ""; for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); message = message + (char)payload[i]; message2 = message2 + (char)payload[i]; } Serial.print("message="); Serial.println(message); String v2 = String(message).substring(0, 1); String v2x = String(message).substring(0, 6); String vxx = String(message).substring(3, 6); String v4 = String(message).substring(3, length); String v3 = String(message).substring(6, length); String vtt = String(message).substring(0, length); // Serial.println(v3); // Serial.println( ); //Serial.println(vstateStr2 ); // Serial.println(v2x ); //Serial.println(message ); // Serial.println(vtt ); if (message2.substring(0, 5) == vx1 + "SV") { int len=message2.length(); Serial2.println(message2.substring(3, len)); Serial.println("51111111111"); } if (message2.substring(0, 5) == vx1 + "G1") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message2.substring(0, 5) == vx1 + "G2") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message2.substring(0, 5) == vx1 + "G3") { int len=message2.length(); Serial2.println(message2.substring(3, len)); Serial.println("5555555555"); } if (message2.substring(0, 5) == vx1 + "ES") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message2.substring(0, 5) == vx1 + "RR") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message2.substring(0, 5) == vx1 + "EE") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message2.substring(0, 5) == vx1 + "RP") { int len=message2.length(); Serial2.println(message2.substring(3, len)); } if (message == vx1 + "H00") { if (s01==1) { data = vx1+"1ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"1OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s02==1) { data = vx1+"2ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"2OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s03==1) { data = vx1+"3ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"3OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s04==1) { data = vx1+"4ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"4OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s05==1) { data = vx1+"5ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"5OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s06==1) { data = vx1+"6ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"6OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s07==1) { data = vx1+"7ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"7OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s08==1) { data = vx1+"8ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"8OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s09==1) { data = vx1+"9ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"9OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s10==1) { data = vx1+"10ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"10OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s11==1) { data = vx1+"11ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"11OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s12==1) { data = vx1+"12ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"12OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s13==1) { data = vx1+"13ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"13OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s14==1) { data = vx1+"14ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"14OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s15==1) { data = vx1+"15ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"15OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (ss16==1) { data = vx1+"16ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"16OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s17==1) { data = vx1+"17ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"17OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s18==1) { data = vx1+"18ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"18OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s19==1) { data = vx1+"19ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"19OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } if (s20==1) { data = vx1+"20ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); } else { data = vx1+"20OFF"; data.toCharArray(msg, (data.length() + 1));client.publish(vtopic, msg); } } if (message == vx1 + "AON") { data = vx1+"1ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s01 = 1; Serial2.println("SP11"); } if (message == vx1 + "AOFF") { data = vx1+"1OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s01 = 0; Serial2.println("SP10"); } if (message == vx1 + "BON") { data = vx1+"2ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s02 = 1; Serial2.println("SP21"); } if (message == vx1 + "BOFF") { data = vx1+"2OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s02 = 0; Serial2.println("SP20"); } if (message == vx1 + "CON") { data = vx1+"3ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s03 = 1; Serial2.println("SP31"); } if (message == vx1 + "COFF") { data = vx1+"3OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s03 = 0; Serial2.println("SP30"); } if (message == vx1 + "DON") { data = vx1+"4ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s04 = 1; Serial2.println("SP41"); } if (message == vx1 + "DOFF") { data = vx1+"4OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s04 = 0; Serial2.println("SP40"); } if (message == vx1 + "EON") { data = vx1+"5ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s05 = 1; Serial2.println("SP51"); } if (message == vx1 + "EOFF") { data = vx1+"5OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s05 = 0; Serial2.println("SP50"); } if (message == vx1 + "FON") { data = vx1+"6ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s06 = 1; Serial2.println("SP61"); } if (message == vx1 + "FOFF") { data = vx1+"6OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s06 = 0; Serial2.println("SP60"); } if (message == vx1 + "GON") { data = vx1+"7ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s07 = 1; Serial2.println("SP71"); } if (message == vx1 + "GOFF") { data = vx1+"7OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s07 = 0; Serial2.println("SP70"); } if (message == vx1 + "HON") { data = vx1+"8ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s08 = 1; Serial2.println("SP81"); } if (message == vx1 + "HOFF") { data = vx1+"8OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s08 = 0; Serial2.println("SP80"); } if (message == vx1 + "ION") { data = vx1+"9ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s09 = 1; Serial2.println("SP91"); } if (message == vx1 + "IOFF") { data = vx1+"9OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s09 = 0; Serial2.println("SP90"); } if (message == vx1 + "JON") { data = vx1+"10ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s10 = 1; Serial2.println("SPA1"); } if (message == vx1 + "JOFF") { data = vx1+"10OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s10 = 0; Serial2.println("SPA0"); } if (message == vx1 + "KON") { data = vx1+"11ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s11 = 1; Serial2.println("SPB1"); } if (message == vx1 + "KOFF") { data = vx1+"11OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s11 = 0; Serial2.println("SPB0"); } if (message == vx1 + "LON") { data = vx1+"12ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s12 = 1; Serial2.println("SPC1"); } if (message == vx1 + "LOFF") { data = vx1+"12OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s12 = 0; Serial2.println("SPC0"); } if (message == vx1 + "MON") { data = vx1+"13ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s13 = 1; Serial2.println("SPD1"); } if (message == vx1 + "MOFF") { data = vx1+"13OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s13 = 0; Serial2.println("SPD0"); } if (message == vx1 + "NON") { data = vx1+"14ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s14 = 1; Serial2.println("SPE1"); } if (message == vx1 + "NOFF") { data = vx1+"14OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s14 = 0; Serial2.println("SPE0"); } if (message == vx1 + "OON") { data = vx1+"15ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s15 = 1; Serial2.println("SPF1"); } if (message == vx1 + "OOFF") { data = vx1+"15OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s15 = 0; Serial2.println("SPF0"); } if (message == vx1 + "PON") { data = vx1+"16ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); ss16 = 1; } if (message == vx1 + "POFF") { data = vx1+"16OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); ss16 = 0; } if (message == vx1 + "QON") { data = vx1+"17ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s17 = 1; } if (message == vx1 + "QOFF") { data = vx1+"17OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s17 = 0; } if (message == vx1 + "RON") { data = vx1+"18ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s18 = 1; } if (message == vx1 + "ROFF") { data = vx1+"18OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s18 = 0; } if (message == vx1 + "SON") { data = vx1+"19ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s19 = 1; } if (message == vx1 + "SOFF") { data = vx1+"19OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s19 = 0; } if (message == vx1 + "TON") { data = vx1+"20ON";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s20 = 1; } if (message == vx1 + "TOFF") { data = vx1+"20OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg); s20 = 0; } Serial.print("s="); Serial.print(s01); Serial.print(s02); Serial.print(s03); Serial.println(s04); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); if (client.connect(clientId.c_str())) { Serial.println("connected"); client.subscribe(vtopic); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { // put your main code here, to run repeatedly: if (!client.connected()) { reconnect(); } client.loop(); if (millis()-vmin>1000) { vmin=millis(); if (digitalRead(2)==1) digitalWrite(2,0); else digitalWrite(2,1); } //if (s01==1 ){ Serial2.println("SP11"); s01=0; data = vx1+"1OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg);} //if (s02==1 ){ Serial2.println("SP21");s02=0; data = vx1+"2OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg);} //if (s03==1 ){ Serial2.println("SP31"); s03=0; data = vx1+"3OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg);} //if (s04==1 ){ Serial2.println("SP41"); s04=0; data = vx1+"4OFF";data.toCharArray(msg, (data.length() + 1)); client.publish(vtopic, msg);} }