commit 848a7fd58399bfd64c051bfaae3b29647858565f Author: Julien Cabillot Date: Thu Mar 2 17:14:09 2017 +0100 import diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..60a0493 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +mqttled.h diff --git a/IMG_0214.jpg b/IMG_0214.jpg new file mode 100644 index 0000000..353a661 Binary files /dev/null and b/IMG_0214.jpg differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..19742d2 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +Introduction +============ + +Simple blink qui toggle la led à chaque appel MQTT. +Pour mettre la LED du port D0 à ON : +```bash +mosquitto_pub -d -u "" -P "" -t "" -m "ON" +``` +Pour la mettre à Off : +```bash +mosquitto_pub -d -u "" -P "" -t "" -m "OFF" +``` + +Un exemple de configuration pour home-assistant se trouve dans [ha_configuration.yml](ha\_configuration.yml). + +Matériel +======== + * 1x ESP8266 Lolin (Nodemcu v3) + * 1x Breadboard + * 1x Resistance 220Ω (jusqu'à 1kΩ) + * 1x LED + +Médias +====== + +![Fritzing BreadBoard](mqttled_bb.png) +![IRL](IMG_0214.jpg) diff --git a/ha_configuration.yml b/ha_configuration.yml new file mode 100644 index 0000000..98c7556 --- /dev/null +++ b/ha_configuration.yml @@ -0,0 +1,10 @@ +switch: + platform: "mqtt" + name: "Test LED" + command_topic: "homeassistant/switch1" #Topic sur lequel on publie l'état de l'interrupteur + payload_on: "ON" # A vous de choisir le message envoyé lorsque l'interrupteur est allumé  + payload_off: "OFF" # et éteint + optimistic: true # Mettez à true pour maintenir l'état + qos: 0 + retain: true + value_template: '{{ value.x }}' diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..36e8bbd Binary files /dev/null and b/logo.png differ diff --git a/mqttled.example.h b/mqttled.example.h new file mode 100644 index 0000000..55b712c --- /dev/null +++ b/mqttled.example.h @@ -0,0 +1,12 @@ +// LED +#define LED_PIN D0 + +// WIFI +#define wifi_ssid "XXX" +#define wifi_password "XXX" + +// MQTT +#define mqtt_server "XXX" +#define mqtt_port 1883 +#define mqtt_user "XXX" +#define mqtt_password "XXX" diff --git a/mqttled.fzz b/mqttled.fzz new file mode 100644 index 0000000..7e86850 Binary files /dev/null and b/mqttled.fzz differ diff --git a/mqttled.ino b/mqttled.ino new file mode 100644 index 0000000..c52b33d --- /dev/null +++ b/mqttled.ino @@ -0,0 +1,89 @@ +// 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"); + } +} diff --git a/mqttled_bb.png b/mqttled_bb.png new file mode 100644 index 0000000..49dbd90 Binary files /dev/null and b/mqttled_bb.png differ