Created
November 16, 2018 08:10
-
-
Save li2hub/31c5ba8d8f324def419a7a4b77158348 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
#include "Adafruit_MQTT.h" | |
#include "Adafruit_MQTT_Client.h" | |
#define Relay1 D1 | |
#define Relay2 D2 | |
#define Relay3 D3 | |
#define Relay4 D5 | |
#define WLAN_SSID "xxxxxxxx" // Your WiFi SSID | |
#define WLAN_PASS "xxxxxxxx" // Your WiFi password | |
#define AIO_SERVER "io.adafruit.com" //Adafruit Server | |
#define AIO_SERVERPORT 1883 | |
#define AIO_USERNAME "xxxxxxxx" // Adafruit Username | |
#define AIO_KEY "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" // AIO Key from Adafruit | |
//WIFI CLIENT | |
WiFiClient client; | |
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); | |
Adafruit_MQTT_Subscribe Light1 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME"/feeds/Relay1"); // Feeds name should be same everywhere | |
Adafruit_MQTT_Subscribe Light2 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/Relay2"); | |
Adafruit_MQTT_Subscribe Light3 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/Relay3"); | |
Adafruit_MQTT_Subscribe Light4 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/Relay4"); | |
Adafruit_MQTT_Subscribe LightAll = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/RelayAll"); | |
void MQTT_connect(); | |
void setup() { | |
Serial.begin(115200); | |
pinMode(Relay1, OUTPUT); | |
pinMode(Relay2, OUTPUT); | |
pinMode(Relay3, OUTPUT); | |
pinMode(Relay4, OUTPUT); | |
// Connect to WiFi access point. | |
Serial.println(); Serial.println(); | |
Serial.print("Connecting to "); | |
Serial.println(WLAN_SSID); | |
WiFi.begin(WLAN_SSID, WLAN_PASS); | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); | |
Serial.print("."); | |
} | |
Serial.println(); | |
Serial.println("WiFi connected"); | |
Serial.println("IP address: "); | |
Serial.println(WiFi.localIP()); | |
mqtt.subscribe(&Light1); | |
mqtt.subscribe(&Light3); | |
mqtt.subscribe(&Light2); | |
mqtt.subscribe(&Light4); | |
mqtt.subscribe(&LightAll); | |
} | |
void loop() { | |
MQTT_connect(); | |
Adafruit_MQTT_Subscribe *subscription; | |
while ((subscription = mqtt.readSubscription(20000))) { | |
if (subscription == &Light1) { | |
Serial.print(F("Got: ")); | |
Serial.println((char *)Light1.lastread); | |
int Light1_State = atoi((char *)Light1.lastread); | |
digitalWrite(Relay1, Light1_State); | |
} | |
if (subscription == &Light2) { | |
Serial.print(F("Got: ")); | |
Serial.println((char *)Light2.lastread); | |
int Light2_State = atoi((char *)Light2.lastread); | |
digitalWrite(Relay2, Light2_State); | |
} | |
if (subscription == &Light3) { | |
Serial.print(F("Got: ")); | |
Serial.println((char *)Light3.lastread); | |
int Light3_State = atoi((char *)Light3.lastread); | |
digitalWrite(Relay3, Light3_State); | |
} | |
if (subscription == &Light4) { | |
Serial.print(F("Got: ")); | |
Serial.println((char *)Light4.lastread); | |
int Light4_State = atoi((char *)Light4.lastread); | |
digitalWrite(Relay4, Light4_State); | |
} | |
if (subscription == &LightAll) { | |
Serial.print(F("Got: ")); | |
Serial.println((char *)LightAll.lastread); | |
int LightAll_State = atoi((char *)LightAll.lastread); | |
digitalWrite(Relay1, LightAll_State); | |
digitalWrite(Relay2, LightAll_State); | |
digitalWrite(Relay3, LightAll_State); | |
digitalWrite(Relay4, LightAll_State); | |
} | |
} | |
} | |
void MQTT_connect() { | |
int8_t ret; | |
if (mqtt.connected()) { | |
return; | |
} | |
Serial.print("Connecting to MQTT... "); | |
uint8_t retries = 3; | |
while ((ret = mqtt.connect()) != 0) { | |
Serial.println(mqtt.connectErrorString(ret)); | |
Serial.println("Retrying MQTT connection in 5 seconds..."); | |
mqtt.disconnect(); | |
delay(5000); | |
retries--; | |
if (retries == 0) { | |
while (1); | |
} | |
} | |
Serial.println("MQTT Connected!"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment