#include #include #include #include #include "switch.h" #include "UpnpBroadcastResponder.h" #include "CallbackFunction.h" // prototypes boolean connectWifi(); //on/off callbacks void Relay1On(); void Relay1Off(); void Relay2On(); void Relay2Off(); void Relay3On(); void Relay3Off(); void Relay4On(); void Relay4Off(); void Relay5On(); void Relay5Off(); void Relay6On(); void Relay6Off(); void Relay7On(); void Relay7Off(); void Relay8On(); void Relay8Off(); // Change this before you flash const char* ssid = "SSID"; const char* password = "PASSWORD"; boolean wifiConnected = false; UpnpBroadcastResponder upnpBroadcastResponder; Switch *relay1 = NULL; Switch *relay2 = NULL; Switch *relay3 = NULL; Switch *relay4 = NULL; Switch *relay5 = NULL; Switch *relay6 = NULL; Switch *relay7 = NULL; Switch *relay8 = NULL; void setup() { pinMode (D1, OUTPUT); pinMode (D2, OUTPUT); pinMode (D3, OUTPUT); pinMode (D4, OUTPUT); pinMode (D5, OUTPUT); pinMode (D6, OUTPUT); pinMode (D7, OUTPUT); pinMode (D8, OUTPUT); digitalWrite (D1,HIGH); digitalWrite (D2,HIGH); digitalWrite (D3,HIGH); digitalWrite (D4,HIGH); digitalWrite (D5,HIGH); digitalWrite (D6,HIGH); digitalWrite (D7,HIGH); digitalWrite (D8,HIGH); Serial.begin(9600); // Initialise wifi connection wifiConnected = connectWifi(); if(wifiConnected){ upnpBroadcastResponder.beginUdpMulticast(); // Define your switches here. Max 14 // Format: Alexa invocation name, local port no, on callback, off callback relay1 = new Switch("Kitchen Ceiling", 80, Relay1On, Relay1Off); relay2 = new Switch("Kitchen Units", 81, Relay2On, Relay2Off); relay3 = new Switch("Kitchen Bar", 82, Relay3On, Relay3Off); relay4 = new Switch("Dining Room Ceiling", 83, Relay4On, Relay4Off); relay5 = new Switch("Dining Table", 84, Relay5On, Relay5Off); relay6 = new Switch("Living Room", 85, Relay6On, Relay6Off); relay7 = new Switch("Front Door", 86, Relay7On, Relay7Off); relay8 = new Switch("Back Door", 87, Relay8On, Relay8Off); Serial.println("Adding switches upnp broadcast responder"); upnpBroadcastResponder.addDevice(*relay1); upnpBroadcastResponder.addDevice(*relay2); upnpBroadcastResponder.addDevice(*relay3); upnpBroadcastResponder.addDevice(*relay4); upnpBroadcastResponder.addDevice(*relay5); upnpBroadcastResponder.addDevice(*relay6); upnpBroadcastResponder.addDevice(*relay7); upnpBroadcastResponder.addDevice(*relay8); } } void loop() { if(wifiConnected){ upnpBroadcastResponder.serverLoop(); relay1->serverLoop(); relay2->serverLoop(); relay3->serverLoop(); relay4->serverLoop(); relay5->serverLoop(); relay6->serverLoop(); relay7->serverLoop(); relay8->serverLoop(); } } void Relay1On() { Serial.print("Switch Relay 1 turn on ..."); digitalWrite (D1,LOW); } void Relay1Off() { Serial.print("Switch Relay 1 turn off ..."); digitalWrite (D1,HIGH); } void Relay2On() { Serial.print("Switch Relay 2 turn on ..."); digitalWrite (D2,LOW); } void Relay2Off() { Serial.print("Switch Relay 2 turn off ..."); digitalWrite(D2,HIGH); } void Relay3On() { Serial.print("Switch Relay 3 turn on ..."); digitalWrite (D3,LOW); } void Relay3Off() { Serial.print("Switch Relay 3 turn off ..."); digitalWrite (D3,HIGH); } void Relay4On() { Serial.print("Switch Relay 4 turn on ..."); digitalWrite (D4,LOW); } void Relay4Off() { Serial.print("Switch Relay 4 turn off ..."); digitalWrite(D4,HIGH); } void Relay5On() { Serial.print("Switch Relay 5 turn on ..."); digitalWrite (D5,LOW); } void Relay5Off() { Serial.print("Switch Relay 5 turn off ..."); digitalWrite (D5,HIGH); } void Relay6On() { Serial.print("Switch Relay 6 turn on ..."); digitalWrite (D6,LOW); } void Relay6Off() { Serial.print("Switch Relay 6 turn off ..."); digitalWrite(D6,HIGH); } void Relay7On() { Serial.print("Switch Relay 7 turn on ..."); digitalWrite (D7,LOW); } void Relay7Off() { Serial.print("Switch Relay 7 turn off ..."); digitalWrite (D7,HIGH); } void Relay8On() { Serial.print("Switch Relay 8 turn on ..."); digitalWrite (D8,LOW); } void Relay8Off() { Serial.print("Switch Relay 8 turn off ..."); digitalWrite(D8,HIGH); } // connect to wifi – returns true if successful or false if not boolean connectWifi(){ boolean state = true; int i = 0; WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); Serial.println("Connecting to WiFi"); // Wait for connection Serial.print("Connecting ..."); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); if (i > 10){ state = false; break; } i++; } if (state){ Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } else { Serial.println(""); Serial.println("Connection failed."); } return state; }