[Tuto] Lampe Informative RGB WIFI
Publié : 07 avr. 2016, 11:12
J'avais un probleme :
Mon Alarme est connécté a Domoticz : Si elle est Armé Domoticz le sait, si elle est désarmé Domoticz le sait également, enfin si il y a une intrusion Domoticz le sait, dans tout les cas madame est moi recevons un SMS qui nous en informe.
Il arrive que : La famille, les voisins ai besoin de passé a la maison sans que nous soyons présent, ma centrale d'alarme est bien caché dans la maison, de tel façon qu'il est impossible de savoir si elle est armée ou non, ce qui a posé plusieurs situations delicates : on rentre sans désactivé et une fois dedans la sirene hurle, ou on part sans la remettre en route, etc etc.
Du coup j'ai Fait un system lumineux qui indique l’état de l'alarme.
ATTENTION LES LEDS SONT PUISSANTES ET PEUVENT VRAIMENT VOUS EBLOUIRE POUR UN MOMENT, EVITEZ DE LES REGARDER EN DIRECT
Ici tout ce passe sur un environnement Windows.
Les outils :
- Un Domoticz qui fonctionne (pas de tuto vous savez comment faire)
- Une Wemos Mini D1 (http://fr.aliexpress.com/item/D1-mini-M ... 33f1652fa8)
- l'IDE Arduino installé grace a ce tuto : viewtopic.php?f=24&t=1832
- Un code qui pilote des Leds ws2812b depuis une ESP8266
- 15 cm de ruban de LED WS2812B (http://fr.aliexpress.com/item/1m-4m-5m- ... cd3747588d)
- Une lampe avec Abat Jour et de quoi fixer la wemos + le ruban a la lampe
L'idée :
La Wemos va ce connecté a votre reseau Wifi, elle va hebergé un petit site WEB qui va faire office de nuancier de couleur, a chaque fois que vous allez cliquez sur une couleur, le ruban de led va suivre.
Ce petit Site Web en HTTP est pilotable directement depuis Domoticz.
Votre "Atelier" est pret ? vous avez le materiel ? on y va :
Le Raccordement :
Je ne vais pas vous expliquer comment brancher votre cable USB a la Wemos ni a votre PC, ici on va juste raccorder les 15 Cm de ruban de LED a la Wemos :
La Wemos a la Bonne Idée de fournir une sortie 5V : juste ce qu'il faut pour alimenté le petit bout de ruban de led.
Donc :
- Le fils rouge du ruban raccordé a la PIN 5V de la Wemos
- Le fils noir du ruban raccodé a la PIN GND de la Wemos
- Le fils DATA du ruban raccordé a la PIn D4 de la Wemos
Le Programme
J'ai trouver un programme qui fait le boulot tres bien, au depart il n y avait que 3 couleurs (Rouge, Vert, Bleu), je l ai modifier pour en ajouter quelque unes, encore une fois je n'ai rien inventé, juste beaucoup de curiosité, et du temps pour lire lire et lire (de toute façon c'est 90% des demarches : La lecture).
Il faut que votre "atelier" est la librairie necessaire pour parler aux LED :
Dans l'IDE : Croquis -> Include Library - > manage Library
Vous cherchez NeoPixelBus puis l'installez
De façon generale : Si l'IDE vous dit qu'il manque une LIb c'est par ce biais que vous allez ajouter la bonne.
Dans la Partie code : coller ceci
Des Choses sont a personnaliser :
Ligne 8 : entre les "" mettre votre nom de reseau Wifi
Ligne 9 : entre les "" mettre votre code de reseau Wifi
Ligne 12 : apres pixelCount mettre le nombre de Pixel (le petit machin blanc qui s'allume) present sur le ruban
Ligne 13 : Si vous ne voulez pas utiliser la pin D4 (qui est le GPIO2 et qui s'appelle Pin2 dans le language de programmation arduino/esp), mettez la votre.
Une fois la personnalisation fini faite un premier essaye de compilation, en prenant garde de bien avoir sélectionner la Wemos comme carte active...
Si tout ce passe bien, vous pouvez téléverser le programme.
Une fois le televersement terminé, ouvrez la fenetre du moniteur serie en mettant la bonne vitesse de communication (115200), appuyez sur le bouton reset de la Wemos et vous devriez voir apparaitre ceci :
Le Ruban de Led : a Flasher blanc pour vous dire que la Wemos a Booter, puis Vert pour vous indiquer qu'elle est connectée au reseau WIFI.
Si le ruban a flasher Rouge : Elle n'a pas pu ce connecter au reseau Wifi.
Dans votre navigateur preferé saisisez l'adresse IP que vous a donné le moniteur serie, et apparait devant vos yeux :
Ici 19 Choix pour 17 Couleurs (le blanc et le noir ne sont pas des couleurs !), a chaque fois que vous allez cliquer sur une couleur le ruban de led passe a la couleur choisi.
La partie config n'est pas fini : elle n'apparaitera pas.
Pour eteindre choisisez le Noir.
Exemples d'utilisation :
- Etat de l'alarme
- Notification d’événement
- Eclairage nocturne
Pour l'interaction avec Domoticz c'est simple : Utilisez les Action On et Action Off :
J'aurais aimer avoir des effets sympa (Serpent, K2000, Cyclope, rien qu'un fadding pour passer de couleur a noir et vice et versa) mais je n'ai pas trouvé comment les ajouter pour le moment.
Ma Lampe en situation :
Mon Alarme est connécté a Domoticz : Si elle est Armé Domoticz le sait, si elle est désarmé Domoticz le sait également, enfin si il y a une intrusion Domoticz le sait, dans tout les cas madame est moi recevons un SMS qui nous en informe.
Il arrive que : La famille, les voisins ai besoin de passé a la maison sans que nous soyons présent, ma centrale d'alarme est bien caché dans la maison, de tel façon qu'il est impossible de savoir si elle est armée ou non, ce qui a posé plusieurs situations delicates : on rentre sans désactivé et une fois dedans la sirene hurle, ou on part sans la remettre en route, etc etc.
Du coup j'ai Fait un system lumineux qui indique l’état de l'alarme.
ATTENTION LES LEDS SONT PUISSANTES ET PEUVENT VRAIMENT VOUS EBLOUIRE POUR UN MOMENT, EVITEZ DE LES REGARDER EN DIRECT
Ici tout ce passe sur un environnement Windows.
Les outils :
- Un Domoticz qui fonctionne (pas de tuto vous savez comment faire)
- Une Wemos Mini D1 (http://fr.aliexpress.com/item/D1-mini-M ... 33f1652fa8)
- l'IDE Arduino installé grace a ce tuto : viewtopic.php?f=24&t=1832
- Un code qui pilote des Leds ws2812b depuis une ESP8266
- 15 cm de ruban de LED WS2812B (http://fr.aliexpress.com/item/1m-4m-5m- ... cd3747588d)
- Une lampe avec Abat Jour et de quoi fixer la wemos + le ruban a la lampe
L'idée :
La Wemos va ce connecté a votre reseau Wifi, elle va hebergé un petit site WEB qui va faire office de nuancier de couleur, a chaque fois que vous allez cliquez sur une couleur, le ruban de led va suivre.
Ce petit Site Web en HTTP est pilotable directement depuis Domoticz.
Votre "Atelier" est pret ? vous avez le materiel ? on y va :
Le Raccordement :
Je ne vais pas vous expliquer comment brancher votre cable USB a la Wemos ni a votre PC, ici on va juste raccorder les 15 Cm de ruban de LED a la Wemos :
La Wemos a la Bonne Idée de fournir une sortie 5V : juste ce qu'il faut pour alimenté le petit bout de ruban de led.
Donc :
- Le fils rouge du ruban raccordé a la PIN 5V de la Wemos
- Le fils noir du ruban raccodé a la PIN GND de la Wemos
- Le fils DATA du ruban raccordé a la PIn D4 de la Wemos
Le Programme
J'ai trouver un programme qui fait le boulot tres bien, au depart il n y avait que 3 couleurs (Rouge, Vert, Bleu), je l ai modifier pour en ajouter quelque unes, encore une fois je n'ai rien inventé, juste beaucoup de curiosité, et du temps pour lire lire et lire (de toute façon c'est 90% des demarches : La lecture).
Il faut que votre "atelier" est la librairie necessaire pour parler aux LED :
Dans l'IDE : Croquis -> Include Library - > manage Library
Vous cherchez NeoPixelBus puis l'installez
De façon generale : Si l'IDE vous dit qu'il manque une LIb c'est par ce biais que vous allez ajouter la bonne.
Dans la Partie code : coller ceci
Code : Tout sélectionner
include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <NeoPixelBus.h> //ledstrip driver
const char *ssid = ""; //put your ssid between the ""
const char *password = ""; // put your key between the ""
//led strip config
#define pixelCount 15 // your pixel number
#define pixelPin 2 // pixel pin
NeoPixelBus strip = NeoPixelBus(pixelCount, pixelPin, NEO_GRB);
NeoPixelAnimator animator(&strip); // NeoPixel animation management object made run effect and fader
//Color Definition
#define colorSaturation 255
//RgbColor yourcolor = Rgbcolor (redvalue, greenvalue, redvalue);
RgbColor red = RgbColor(colorSaturation, 0, 0);
RgbColor green = RgbColor(0, colorSaturation, 0);
RgbColor blue = RgbColor(0, 0, colorSaturation);
RgbColor white = RgbColor(colorSaturation);
RgbColor yellow = RgbColor(colorSaturation, colorSaturation, 0);
RgbColor orange = RgbColor(colorSaturation, 165, 0);
RgbColor violet = RgbColor(238, 130, 238);
RgbColor royalblue = RgbColor(65, 105, 225);
RgbColor lightskyblue = RgbColor(135, 206, 250);
RgbColor aqua = RgbColor(0, colorSaturation, colorSaturation);
RgbColor aquamarine = RgbColor(127, 255, 212);
RgbColor seagreen = RgbColor(46, 139, 87);
RgbColor limegreen = RgbColor(50, 205, 50);
RgbColor goldenrod = RgbColor(218, 165, 32);
RgbColor pink = RgbColor(255, 192, 203);
RgbColor fuchsia = RgbColor(colorSaturation, 0, colorSaturation);
RgbColor orchid = RgbColor(218, 112, 214);
RgbColor lavender = RgbColor(230, 230, 250);
RgbColor black = RgbColor(0);
// Flash the strip in the selected color. White = booted, green = WLAN connected, red = WLAN could not connect
void infoLight(RgbColor color) {
for (int i = 0; i < pixelCount; i++){
strip.SetPixelColor(i, color);
strip.Show();
delay(10);
strip.SetPixelColor(i, black);
strip.Show();
}
}
//Webserver
MDNSResponder mdns;
ESP8266WebServer server ( 80 );
const int led = 13;
void handleRoot() {
digitalWrite ( led, 1 );
String out = "<html><head><title>Lampe Wifi</title></head>";
out += "<body style='background-color:gray'>";
out += "<span style='display:block; width:100%; font-size:2em; font-family:Verdana; text-align:center'>Choose color</span><br/>";
out += "<a href='Config'><span style='display:block; width:100%; font-size:2em; font-family:Verdana; text-align:center'>Config</span><br/>";
out += "<a href='white'><span style='display:block; background-color:white; width:100%; height:6em;'></span></a><br/>";
out += "<a href='red'><span style='display:block; background-color:red; width:100%; height:6em;'></span></a><br/>";
out += "<a href='green'><span style='display:block; background-color:green; width:100%; height:6em;'></span></a><br/>";
out += "<a href='blue'><span style='display:block; background-color:blue; width:100%; height:6em;'></span></a><br/>";
out += "<a href='yellow'><span style='display:block; background-color:yellow; width:100%; height:6em;'></span></br>";
out += "<a href='orange'><span style='display:block; background-color:orange; width:100%; height:6em;'></span></br>";
out += "<a href='violet'><span style='display:block; background-color:violet; width:100%; height:6em;'></span></br>";
out += "<a href='royalblue'><span style='display:block; background-color:royalblue; width:100%; height:6em;'></span></br>";
out += "<a href='lightskyblue'><span style='display:block; background-color:lightskyblue; width:100%; height:6em;'></span></br>";
out += "<a href='aqua'><span style='display:block; background-color:aqua; width:100%; height:6em;'></span></br>";
out += "<a href='aquamarine'><span style='display:block; background-color:aquamarine; width:100%; height:6em;'></span></br>";
out += "<a href='seagreen'><span style='display:block; background-color:seagreen; width:100%; height:6em;'></span></br>";
out += "<a href='limegreen'><span style='display:block; background-color:limegreen; width:100%; height:6em;'></span></br>";
out += "<a href='goldenrod'><span style='display:block; background-color:goldenrod; width:100%; height:6em;'></span></br>";
out += "<a href='pink'><span style='display:block; background-color:pink; width:100%; height:6em;'></span></br>";
out += "<a href='fuchsia'><span style='display:block; background-color:fuchsia; width:100%; height:6em;'></span></br>";
out += "<a href='orchid'><span style='display:block; background-color:orchid; width:100%; height:6em;'></span></br>";
out += "<a href='lavender'><span style='display:block; background-color:lavender; width:100%; height:6em;'></span></br>";
out += "<a href='black'><span style='display:block; background-color:black; width:100%; height:6em;'></span></a>";
out += "</body>";
out += "</html>";
server.send ( 200, "text/html", out );
digitalWrite ( led, 0 );
}
void handleNotFound() {
digitalWrite ( led, 1 );
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += ( server.method() == HTTP_GET ) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for ( uint8_t i = 0; i < server.args(); i++ ) {
message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n";
}
server.send ( 404, "text/plain", message );
digitalWrite ( led, 0 );
}
//////////////////Start Working/////////
void setup ( void ) {
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
pinMode ( led, OUTPUT );
digitalWrite ( led, 0 );
strip.Begin();
strip.Show();
// WiFi.mode(WIFI_AP_STA);
// WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
// WiFi.softAP("Lampe Wifi://192.168.4.1"); // Create WiFi network
// WiFi.begin(ssid, password);
// delay(5000);
// server.begin();
// Show that the NeoPixels are alive
delay(120); // Apparently needed to make the first few pixels animate correctly
infoLight(white);
Serial.begin ( 115200 );
//WIFI Part
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Failed");
// Show that we are not connected
infoLight(red);
while (1) delay(100);
}
WiFi.begin ( ssid, password );
Serial.println ( "" );
// Wait for connection
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );}
Serial.println ( "" );
Serial.print ( "Connected to " );
Serial.println ( ssid );
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );
if ( mdns.begin ( "esp8266", WiFi.localIP() ) ) {
Serial.println ( "MDNS responder started" );
// Show that we are connected
infoLight(green);}
//Set action on color choose
server.on ( "/", []() {handleRoot();} );
server.on ( "/white", []() {setColor(white); handleRoot();} );
server.on ( "/red", []() {setColor(red); handleRoot();} );
server.on ( "/green", []() {setColor(green); handleRoot();} );
server.on ( "/blue", []() {setColor(blue); handleRoot();} );
server.on ( "/black", []() {setColor(black); handleRoot();} );
server.on ( "/yellow", []() {setColor(yellow); handleRoot();} );
server.on ( "/orange", []() {setColor(orange); handleRoot();} );
server.on ( "/violet", []() {setColor(violet); handleRoot();} );
server.on ( "/royalblue", []() {setColor(royalblue); handleRoot();} );
server.on ( "/lightskyblue", []() {setColor(lightskyblue); handleRoot();} );
server.on ( "/aqua", []() {setColor(aqua); handleRoot();} );
server.on ( "/aquamarine", []() {setColor(aquamarine); handleRoot();} );
server.on ( "/seagreen", []() {setColor(seagreen); handleRoot();} );
server.on ( "/limegreen", []() {setColor(limegreen); handleRoot();} );
server.on ( "/goldenrod", []() {setColor(goldenrod); handleRoot();} );
server.on ( "/pink", []() {setColor(pink); handleRoot();} );
server.on ( "/fuchsia", []() {setColor(fuchsia); handleRoot();} );
server.on ( "/orchid", []() {setColor(orchid); handleRoot();} );
server.on ( "/lavender", []() {setColor(lavender); handleRoot();} );
server.onNotFound ( handleNotFound );
server.begin();
Serial.println ( "HTTP server started" );
}
void loop ( void ) {
mdns.update();
server.handleClient();
}
//Acting on Led Strip
void setColor(RgbColor color){
int i;
for (i=0; i<pixelCount; i++) {
strip.SetPixelColor(i, color);
}
strip.Show();
}Ligne 8 : entre les "" mettre votre nom de reseau Wifi
Ligne 9 : entre les "" mettre votre code de reseau Wifi
Ligne 12 : apres pixelCount mettre le nombre de Pixel (le petit machin blanc qui s'allume) present sur le ruban
Ligne 13 : Si vous ne voulez pas utiliser la pin D4 (qui est le GPIO2 et qui s'appelle Pin2 dans le language de programmation arduino/esp), mettez la votre.
Une fois la personnalisation fini faite un premier essaye de compilation, en prenant garde de bien avoir sélectionner la Wemos comme carte active...
Si tout ce passe bien, vous pouvez téléverser le programme.
Une fois le televersement terminé, ouvrez la fenetre du moniteur serie en mettant la bonne vitesse de communication (115200), appuyez sur le bouton reset de la Wemos et vous devriez voir apparaitre ceci :
Le Ruban de Led : a Flasher blanc pour vous dire que la Wemos a Booter, puis Vert pour vous indiquer qu'elle est connectée au reseau WIFI.
Si le ruban a flasher Rouge : Elle n'a pas pu ce connecter au reseau Wifi.
Dans votre navigateur preferé saisisez l'adresse IP que vous a donné le moniteur serie, et apparait devant vos yeux :
Ici 19 Choix pour 17 Couleurs (le blanc et le noir ne sont pas des couleurs !), a chaque fois que vous allez cliquer sur une couleur le ruban de led passe a la couleur choisi.
La partie config n'est pas fini : elle n'apparaitera pas.
Pour eteindre choisisez le Noir.
Exemples d'utilisation :
- Etat de l'alarme
- Notification d’événement
- Eclairage nocturne
Pour l'interaction avec Domoticz c'est simple : Utilisez les Action On et Action Off :
J'aurais aimer avoir des effets sympa (Serpent, K2000, Cyclope, rien qu'un fadding pour passer de couleur a noir et vice et versa) mais je n'ai pas trouvé comment les ajouter pour le moment.
Ma Lampe en situation :