Steeds meer apparaten worden "slim", waarom niet de kerstboom ook. Dit project gaat over de controle van de kerstboom fairy lights via browser en Alexa. In de browser en via LED ' s op de hardware kan ook het waterpeil in de basis van de kerstboom worden bewaakt. Natuurlijk kan ook een timer worden geconfigureerd om de verlichting regelmatig aan en uit te zetten. De volledige configuratie wordt gedaan in de browser. Dus ga door, waar wacht je op!
Vereiste hardware
Er worden twee varianten beschreven.
Vrije constructie Zonder behuizing:
Aantal |
Component |
Opmerking |
---|---|---|
1 |
|
|
1 |
|
|
1 |
Voor Waterniveau Sensor |
|
3 |
Voor Waterniveau Sensor |
|
4 |
Voor Waterniveau Sensor |
De componenten voor de waterpeilsensor zijn optioneel als deze functie wordt gebruikt.
Gebouwd op een dual-base shield met een behuizing van de 3D-printer:
Aantal |
Component |
Opmerking |
---|---|---|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
Voor Waterniveau Sensor |
|
1 |
Voor Waterniveau Sensor |
|
3 |
Voor Waterniveau Sensor |
|
4 |
Voor Waterniveau Sensor |
|
1 |
Hoekige pin header 3-pins |
Voor Waterniveau Sensor |
1 |
|
|
1 |
|
|
1 |
Voor Waterniveau Sensor |
|
1 |
Voor Waterniveau Sensor |
|
1 |
Voor Waterniveau Sensor |
De componenten voor de waterpeilsensor zijn optioneel als deze functie wordt gebruikt.
We hebben ook een video voorbereid voor de blog:
circuit
Vrije constructie Zonder behuizing:
Met dubbel Bas-schild en relaisschild:
Structuur van variant 2
Als de Waterpeilsensor optie wordt gebruikt, moet de D1-Mini worden uitgerust met de gecombineerde pin en veerstrips, zodat het sensorschild vervolgens kan worden aangesloten. Het heeft niets met het Relaisschild te maken. Het Dual Base Shield is voorzien van de meegeleverde veerstrips.


Software
Om de schets te compileren, moet de Arduino IDE dienovereenkomstig worden voorbereid. De Arduino IDE ondersteunt standaard een groot aantal boards met verschillende microcontrollers, maar niet de ESP8266. Daarom, om programma ' s voor de ESP8266 te maken en te uploaden, moet een softwarepakket voor het ondersteunen van de ESP8266 worden geïnstalleerd.
Eerst, moet u de Arduino IDE vertellen waar te om de extra gegevens te vinden u voor ESP8266 nodig hebt. Om dit te doen, opent u het Voorkeuren-item in het menu Bestand. In het venster Voorkeuren is er een invoerveld genaamd "extra Board Administrator URL 's". Als u op het pictogram rechts van het invoerveld klikt, wordt een venster geopend waarin u de URL kunt invoeren
https://arduino.esp8266.com/stable/package_esp8266com_index.json kan naar binnen.
Selecteer nu het board management in de Arduino IDE onder Tool → Board.
Er wordt een venster geopend waarin alle beschikbare pakketten worden weergegeven. Om de lijst te beperken, voert u "esp8266" in het zoekveld in. Dan krijg je maar één vermelding in de lijst.
Voor de Alexa-interface hebt u twee bibliotheken nodig die niet via bibliotheekbeheer kunnen worden geïnstalleerd. Deze moeten eerst worden gedownload als een ZIP-bestand. De asynchrone webserver van https://github.com/me-no-dev/ESPAsyncWebServer en asynchrone TCP van https://github.com/me-no-dev/ESPAsyncTCP. Om te downloaden, klikt u op de groene knop code en selecteer "Download ZIP".
Om de gedownloade ZIP-bestanden in de Arduino IDE te installeren, gaat u naar Sketch -> bibliotheek opnemen -> in het menu.Voeg ZIP-bibliotheek op de top. Een bestand selectie dialoog verschijnt door het selecteren van de gedownloade bestanden. Dat is alles wat er te doen is.
Tot slot zijn er nog twee bibliotheken nodig, die kunnen worden geïnstalleerd via het Arduino-bibliotheekbeheer. Dit is de bibliotheek "ESPFauxmo", die de interface naar Alexa implementeert en de bibliotheek" AsyncWebConfig", die de configuratie via de browser implementeert.
Wanneer alle bibliotheken zijn geïnstalleerd, kan de sketch worden gecompileerd en geüpload naar de hardware.
schets
#include <ESP8266WiFi.h> // WiFi ondersteuning #include <ESP8266mDNS.h> // Voor nameservers om namen te gebruiken in plaats van IP #include <MAGNEETSCHAKELAAR.h> // Tijdzone dfinities voor klok #include <AsyncWebConfig.h> // Bibliotheek voor configuratie #include <ESPAsyncWebServer.h> // Asynchrone webserver #include <fauxmoESP.h> // Interface voor Alexa // Pinnen gebruikt voor LED en relais #define PIN-RELAIS D1 #define PINEMPTY D2 #define PINHALF D3 #define PINFULL D4 #define LVLFULL 300 #define LVLEMPTY 600 #define TIJDSZONE TZ_Europe_Berlin #define VERBINDEN 300 // seconden om te wachten op Opnieuw verbinden na de verbinding verbreken // Vorm voor configuratie, JSON geformatteerd String params = "[" "{" "'name': 'ssid'," "'label': 'Name of the WLAN'," ""type":"+String(INPUTTEXT)+"," "'default':"" "}," "{" "'name': 'pwd'," "'label': 'WLAN-wachtwoord'," ""type":"+String(Inputwachtwoord)+"," "'default':"" "}," "{" "'name': 'alexaname'," "'label': 'naam voor Alexa'," ""type":"+String(INPUTTEXT)+"," "'default': 'Christmas tree'" "}," "{" "'name': 'ntpserver'," "'label': 'NTP Server'," ""type":"+String(INPUTTEXT)+"," "'default': 'pool.ntp.org '" "}," "{" "'name': 'showlevel'," "'label': 'Toon waterpeil'," ""type":"+String(INPUTCHECKBOX)+"," "'default': '1'" "}," "{" "'name': 'usetimer'," "'label': 'gebruik timer'," ""type":"+String(INPUTCHECKBOX)+"," "'default': '0'" "}," "{" "'name': 'starttime'," "'label': 'inschakeltijd'," ""type":"+String(Invoertijd)+"," "'default': '18: 30'" "}," "{" "'name': 'stoptime'," "'label': 'shutdown time'," ""type":"+String(Invoertijd)+"," "'default': '23: 00'" "}" "]"; const karakter HTML[] PROGMEM = "\n" "\n" "\n" "\n" "\n" "\n" "configuratie \n" "\n" "\n" "\n" "\n" ""
Attentie!!
Als het kleine verkeerslicht met gemeenschappelijke grondlijn wordt gebruikt in plaats van de individuele LED ' s, moet de functie setLeds () worden gewijzigd:
vervallen setLEDs(){ // lees van vochtsensor // lage waarde indien nat int x = analoog(A0); Serie.printf("Analoog lezen: % i\n",x); // output laag om LED aan te zetten bgempty = colnon; bghalf = colnon; bgfull = colnon; als (x > LVLEMPTY) { digitaal schrijven(PINEMPTY,1); digitaal schrijven(PINHALF,0); digitaal schrijven(PINFULL,0); bgempty = colempty; } anders als ((x <= LVLEMPTY) && (x >= LVLFULL)) { digitaal schrijven(PINEMPTY,0); digitaal schrijven(PINHALF,1); digitaal schrijven(PINFULL,0); bghalf = halve; } anders als (x < LVLFULL) { digitaal schrijven(PINEMPTY,0); digitaal schrijven(PINHALF,0); digitaal schrijven(PINFULL,1); bgfull = colfull; } }
Inbedrijfstelling
Als de sketch zonder fouten is gecompileerd en geüpload, zal het programma starten. Aangezien er nog geen configuratiegegevens beschikbaar zijn, wordt een toegangspunt gestart. De SSID wordt gevormd uit het MAC-adres van de D1 mini. Een verbinding met dit toegangspunt kan nu worden gemaakt met een smartphone of een andere WLAN-computer. Toegang is open, dus er is geen wachtwoord vereist. Nadat de WLAN-verbinding tot stand is gebracht, kunt u het adres in de browser invoeren bel 192.168.4.1. De configuratiepagina wordt weergegeven.
De naam van het toegangspunt zal later worden gebruikt als de DNS-naam. Dit wordt gevolgd door de toegangsgegevens tot het WLAN.
De naam voor Alexa is de naam van het apparaat te gebruiken in de Alexa app.
De NTP-server wordt gebruikt om de interne klok te synchroniseren. Fritz zou hier bijvoorbeeld ook kunnen zijn.als de Fritz-Box moet worden gebruikt als tijdserver.
Het selectievakje waterniveau weergeven bepaalt of het huidige waterniveau op de homepage wordt weergegeven of niet.
Dit wordt gevolgd door een ander selectievakje om de timer te activeren. Als de timer wordt gebruikt, moet ook een in-en uitschakeltijd worden ingesteld.
Met de "Save" knop wordt de configuratie opgeslagen in het flash bestandssysteem van de D1 mini.
De configuratie wordt ook opgeslagen met de" Restart " knop en dan wordt de D1-Mini opnieuw gestart.
De initiële configuratie moet worden beëindigd met" Restart", omdat de D1-Mini na de herstart verbinding moet maken met het WLAN. Als de verbinding succesvol is, wordt er geen toegangspunt gestart.
Het zou nu mogelijk moeten zijn om de homepage te openen met de URL
Alexa Inschakelen
Om dit te doen, je nodig hebt om de Alexa app te starten op uw smartphone. Tik op apparaten onderaan de werkbalk en tik op de Apparaatpagina die wordt weergegeven op het pluspictogram rechtsboven.
Selecteer Nu Apparaat toevoegen.
De selectie van het apparaattype wordt weergegeven. Ga helemaal naar beneden en selecteer "Diversen". Op de volgende pagina kunt u het zoeken naar apparaten starten. Controleer vooraf of de D1-Mini correct is gestart en de homepage kan weergeven.
Na enige tijd, de Alexa app moet laten zien dat een lamp is gevonden en aangesloten. Lamp wordt weergegeven omdat de bibliotheek een Philips HUE lamp emuleert.
Tik Op Apparaat Instellen. U kunt nu het nieuwe apparaat toewijzen aan een groep.
Tot slot ontvangt u het bericht "kerstboom is ingesteld en klaar voor gebruik". Als u een andere naam hebt geconfigureerd, staat deze naam en niet "kerstboom" in het bericht.
Nu kan de verlichting worden ingeschakeld met de spraakopdracht "Alexa, kerstboom aan".
Het aansluiten van de lichtsnoer
Elke lichtsnoer die een tweedraads aansluitkabel gebruikt en werkt met spanningen onder 40V kan worden gebruikt. Voor de aansluiting wordt een van de twee draden doorgeknipt en wordt het relais ertussen geschakeld. Een USB-kabel is vereist om de D1 mini van stroom te voorzien.
Veel plezier met het recreëren en hebben een aangename Advent seizoen!
1 Reactie
Jochen
Hallo zusammen,
zugegeben, Adventszeit ist rum, Weihnachtsbaum schon wieder weg, aber dennoch:
Ich habe versucht das Teil nachzubauen, ist ja “eigentlich” kein Hexenwerk, leider versagt der am wenigsten durchsichtige Step:
Das Hinzufügen zur AlexaApp funktioniert nicht. Selbst wenn ich in der FauxmoESp die Debugs anmache, sehe ich, dass Interaktion mit dem Device stattfindet. Die App meldet aber immer, dass kein Device gefunden wurde…
Hab ich was übersehen?
Danke und Grüße
Jochen