// C'est moche mais c'est pour récuperer EVERY_N_SECONDS :) #include #include #include // WIFI WiFiClient espClient; // MQTT char message_buff[100]; PubSubClient client(espClient); void setup() { Serial.begin(115200); Serial.println("\nresetting"); // WIFI setupWifi(); // MQTT client.setServer(mqtt_server, mqtt_port); client.setCallback(callbackMQTT); testConnectMQTT(); client.subscribe("homeassistant/switch1"); pinMode(LED_PIN, OUTPUT); } // WIFI void setupWifi() { Serial.println(); Serial.print("Connexion a "); Serial.print(wifi_ssid); WiFi.begin(wifi_ssid, wifi_password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); 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_password)) { 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) { unsigned int i = 0; Serial.print("Received [" + String(topic) + "] : "); for(i = 0; i < length; i++) { message_buff[i] = payload[i]; } message_buff[i] = '\0'; String msgString = String(message_buff); Serial.print(msgString); if (msgString == "ON") { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } } void loop() { testConnectMQTT(); client.loop(); EVERY_N_SECONDS(180) { Serial.print("MQTT Subscribe refresh"); client.subscribe("homeassistant/select1"); Serial.println(" done"); } }