Stap 4: ESP8266 schets
De schets die ik voor de esp8266 geschreven heb heeft ook code voor het lezen van de temperatuur van een DS18b20 en ook detecteren als de LED in- of uitschakelen op de control box voor mijn ketel is, maar ik heb deze code voor dit Instructable verwijderd en zal dit opnemen in afzonderlijke Instructables.
#include <ESP8266WiFi.h>#include <PubSubClient.h>// Update these with values suitable for your network. const char* ssid = ""; const char* password = ""; const char* mqtt_server = "";WiFiClient espClient; PubSubClient client(espClient); int HeatingPin = 16; String switch1; String strTopic; String strPayload;void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); }void callback(char* topic, byte* payload, unsigned int length) { payload[length] = '\0'; strTopic = String((char*)topic); if(strTopic == "ha/switch1") { switch1 = String((char*)payload); if(switch1 == "ON") { Serial.println("ON"); digitalWrite(HeatingPin, HIGH); } else { Serial.println("OFF"); digitalWrite(HeatingPin, LOW); } } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("arduinoClient")) { Serial.println("connected"); // Once connected, publish an announcement... client.subscribe("ha/#"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); pinMode(HeatingPin, OUTPUT); digitalWrite(HeatingPin, HIGH); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); }
Deze schets gaat de estafette in- en uitschakelen wanneer ooit de MQTT makelaar een bericht van 'ON ontvangt' en 'OFF' naar het onderwerp van 'ha/switch1'.
U kunt dit wijzigen hoe ooit in de sketch, de gewenste zolang u ook de home-assistant schakelaar config ook in stap 3 verandert.