Med en esp8266 arduino för att styra ett relä med hembiträdet (4 / 4 steg)
Steg 4: ESP8266 skiss
Skissen jag skrivit för esp8266 har också kod för att läsa temperaturen från en DS18b20 och även upptäcka om lampan är på eller av på rutan kontroll för min panna, men jag har tagit bort denna koden för detta Instructable och kommer att inkludera det i separata Instructables.
#include < ESP8266WiFi.h >
#include < PubSubClient.h >
Uppdatera dessa med värden lämpligt för ditt nätverk.
CONST char * ssid = "";
CONST char * lösenord = "";
CONST char * mqtt_server = "";
WiFiClient espClient;
PubSubClient client(espClient);
int HeatingPin = 16.
Sträng VÄXEL1;
Sträng strTopic;
Sträng strPayload;
void setup_wifi() {
Delay(10);
Vi börjar med att ansluta till WiFi-nätverk
Serial.println();
Serial.Print ("ansluter till");
Serial.println(SSID);
WiFi.begin (ssid, lösenord);
medan (WiFi.status()! = WL_CONNECTED)
{
Delay(500);
Serial.Print(".");
}
Serial.println("");
Serial.println ("WiFi-anslutna");
Serial.println ("IP-adress:");
Serial.println(WiFi.localIP());
}
{Ogiltigt återanrop (char * ämne, byte-nyttolasten, unsigned int längd)
nyttolast [längd] = '\0';
strTopic = String((char*)topic);
om (strTopic == "ha/VÄXEL1")
{
VÄXEL1 = String((char*)payload);
om (VÄXEL1 == "På")
{
Serial.println("on");
digitalWrite (HeatingPin, hög);
}
annat
{
Serial.println("off");
digitalWrite (HeatingPin, låg);
}
}
}
void reconnect() {
Loop tills vi är återansluts
medan (! client.connected()) {
Serial.Print ("försöker MQTT anslutning...");
Försök att ansluta
om (client.connect("arduinoClient")) {
Serial.println("Connected");
En gång kopplet, offentliggöra ett tillkännagivande...
client.subscribe("ha/#");
} annat {
Serial.Print ("misslyckades, rc =");
Serial.Print(client.State());
Serial.println ("försök igen i 5 sekunder");
Vänta 5 sekunder innan du försöker igen
Delay(5000);
}
}
}
void setup()
{
Serial.BEGIN(115200);
setup_wifi();
client.setServer (mqtt_server, 1883);
client.setCallback(callback);
pinMode (HeatingPin, OUTPUT);
digitalWrite (HeatingPin, hög);
}
void loop()
{
om (! client.connected()) {
reconnect();
}
client.loop();
}
Denna skiss växlar reläet på och av när någonsin MQTT mäklaren mottar ett meddelande för "På" och "OFF" till ämnet av "ha/VÄXEL1".
Du kan ändra detta hur allt du vill ha i skissen, så länge du också ändra hembiträdet switch config för i steg 3.