Végre olyan bejegyzést osztok meg ami ilyenkor napi használatba kerül. Ez nem más mint a ház elő teraszán levő LED füzér és LED-es dizájn csillagok bekapcsolása. Mindezt persze a Domoticz-ra, Raspberry-re és ESP8266-ra bízva. Régebben csak az ESP-t használtam hozzá, de amióta használom a Domoticz-ot sokkal jobban lehet vezérelni az ilyen dolgokat WiFi-n keresztül. Ezt a projektet egy régóta futó ESP-re bíztam, ami nem csak egy relét tud vezérelni, hanem egy külső időjárás állomásnak használok. Páratartalom, hőmérséklet és légnyomás mérésre.

Bevezetés, az alapok

Először is kell egy eszköz ami a vezérlés végzi, itt egy ESP8266-os WiFi-s lapka. És Arduino C nyelven íródott a program. Ennek a programnak van egy nagy hátránya, olyan egyszerűen készítettem valaha, hogy csak újraforgatássál és rátöltéssel lehet módosítani.

Az ESP programozását én még Arduino IDE használatával kezdtem, mivel elöbb használtam Arduinot mint ESP eszközt.

Egy lehetséges kivitelezés LUA nyelv használatával itt már írtam egy egyszerű megoldást: ESP8266 Első lépések LED + webszerver. És egy másik alternatíva ESPEasy használatával: ESP8266 egyszerűen ESPEasy használatával.Persze tovább kell a programokat fejleszteni, hogy a beérkezett paramétereket értelmezzék is.

De maradjunk a régi megoldásnál, hiszen az már évek óta dolgozik hiba nélkül. 2016 áprilisában már jó pár változtatáson esett át. Nagyjából 2015 elejétől működik folyamatosan. A képek között a panel már a második verzió. ESP-12 re lett cserélve egy régebbi ESP-01-es lapka. És látható a 2 szenzor is ami az adatokat gyűjti. Egy BMP180, és egy DHT21.

És a program, az egészet nem teszem ide ki, csak a leglényegesebbet részét ami a lényeget adja ennek a projektnek, persze a forrás letölthető.

A programról pár információ

És a lényeg a kapott HTML paraméterek értelmezése után indul a kimenet vezérlése, itt egy relé kapcsolása. Amin keresztül a 220V ki-be kapcsolása történik ami a LED-ek tápját adja.

A program leölhető innen: webServer_V0_1.zip

Vagy a Google drive-rol innen: webServer_V0_1.zip

És akkor pár részlet a kódból. Elsőre a használt könyvtárakból ami az Arduino IDE alá fel van telepítve. Így máris látszik, hogy nem kevés dolog van beemelve a programba.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "DHT.h"
#include <EEPROM.h>
#include <Wire.h>
#include <ESP8266mDNS.h>
#include <Time.h>
#include <Adafruit_BMP085.h>

Jöhet a kimenet beállítása ez a 13-as GPIO. Itt még LED-el azonosítva, de ide van kötve a relé.

byte switchLed = 13; // GPIO13

És a kapott paraméterek lekezelése, LED=OFF, LED=ON. Értelemszerűen ki-be kapcsolást azonosítják.

void handleControl() {
  wifiLedOn();
  String argument = server.argName(0) + ":" + server.arg(0);
  String ledHref = "";

  if (argument == ":" && !switchLedBlink) ledHref = "<a href=\"/control?LED=ON\">Switch LED ON</a>";
  else ledHref = "<a href=\"/control?LED=OFF\">Switch LED OFF</a>";
  if (argument == "LED:ON") {
    ledHref = "<a href=\"/control?LED=OFF\">Switch LED OFF</a>";
    digitalWrite(switchLed, HIGH);
    switchLedBlink = true;
    EEPROM.write(0, 1);
    EEPROM.commit();
  }
  if (argument == "LED:OFF") {
    ledHref = "<a href=\"/control?LED=ON\">Switch LED ON</a>";
    digitalWrite(switchLed, LOW);
    switchLedBlink = false;
    EEPROM.write(0, 0);
    EEPROM.commit();
  }
  String HTML = "<html>\
<title>ESP8266 -- Control</title>\
<body>\
<h1>ESP8266 LED Controll</h1>";
  if ( switchLedBlink ) HTML += "LED is ON<br>";
  else HTML += "LED is OFF<br>";
  HTML += "<br>";
  HTML += ledHref;
  HTML += "<br>";
  HTML += EEPROM.read(0);
  HTML += "</body>\
</html>";
  server.send ( 200, "text/html", HTML );
  wifiLedOff();
}

Ha valaki a kódot letöltötte és használta, vagy csak nézegette. Észrevett benne még rengeteg dolgot, ilyen a ThingSpeak-re való adat feltöltés. Ezt eddig még nem is említettem, az a lényeg, hogy az időjárás adatait egy felhő alapú szolgáltatásban is tárolom.

Itt lényeg a HTML paraméter átadás

Nos eddig csak egy kis bevezetés volt, csak azért volt erre szükség, hogy ami a kapcsolást végzi az egy régi maradék eszközöm, de még mindig hibátlanul teszi a dolgát. Ha lecserélem akkor csak annyi változna, hogy ESPEasy-t használnék, a “realtime” programozhatósága miatt. De egyelőre ezt nem tervezem.

A továbbiakban tényleg a lényeg jön. A Domoticz-al való vezérlés amihez nem is kell más csak 2 parancs.

Első a bekapcsolás, nálam a DHCP-n kapott IP a 75-ös végű, és oda megy az ON. Ilyen egyszerűen:

http://192.168.1.75/?pin=ON1

Második pedig a kikapcsolás ugyanarra az IP-re, értelemszerűen. Az OFF-al.

http://192.168.1.75/?pin=OFF1

Nos ezeket a paramétereket bármilyen eszközről ki lehet adni ami ugyanarra a WiFi hálózatra kapcsolódik, és HTML GET vagy POST metódust tud kezelni. Vagyis így paramétert tud átadni. Vissza fele semmit nem vár, csak elküldi a paraméter és annak teljes feldolgozás az ESP-re van hagyva. A továbbiakban ezt kihasználva leírom a vezérlését Domoticz segítségével. Ezzel folytatom a következő oldalon.