Controle d'une LED au travers de Home Assistant
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include <Arduino.h>
#include "mqttled.h"
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// WIFI
WiFiClient espClient;
// MQTT
char message_buff[100];PubSubClient client(espClient);
void setup() { Serial.begin(SERIAL_SPEED); Serial.println("\nresetting");
// WIFI
setupWifi();
// MQTT
client.setServer(MQTT_SERVER, MQTT_PORT); client.setCallback(callbackMQTT); testConnectMQTT();
pinMode(LED_PIN, OUTPUT);}
// WIFI
void setupWifi() { Serial.print("Connexion a "); Serial.print(WIFI_SSID); WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" OK"); Serial.print("IP : "); Serial.println(WiFi.localIP());}
// MQTT
void testConnectMQTT() { while (!client.connected()) { Serial.print("Connexion au serveur MQTT... "); if (client.connect("ESP8266Client", MQTT_USER, MQTT_PASS)) { Serial.print("OK\nSubscribe"); client.subscribe("homeassistant/switch1"); Serial.println(" OK"); } else { Serial.print("KO, erreur : "); Serial.print(client.state()); Serial.println(", on attend 5 secondes avant de recommencer"); delay(5000); } }}
void callbackMQTT(char* topic, byte* payload, unsigned int length) { String stopic = String(topic);
unsigned int i = 0; for(i = 0; i < length; i++) { message_buff[i] = payload[i]; } message_buff[i] = '\0'; String msgString = String(message_buff); Serial.print("Received [" + stopic + "] : "); Serial.println(msgString);
if (msgString == "ON") { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); }}
void loop() { testConnectMQTT(); client.loop();}
|