ESPEasy firmware
2017. november 27. írta: eNeS

ESPEasy firmware

Ha röviden jellemeznem kellene, a firmware-ek svájcibicskája névvel illetném, segítségével programozói tudás nélkül, hosszas fejlesztgetés nélkül tudunk sokféle szenzort néhány kattintással életre kelteni.
Az első feltöltése persze kíván némi gyakorlatot... ám meglátásom szerint egy ESPEasy beállítása nem sokkal bonyolultabb, mint egy WiFi router beállítása. 

A firmware vagy mikroprogram olyan mely a hardver alapszintű funkcióit teszi elérhetővé magasabb szinten álló programok vagy driverek számára. Gyakorlatilag a hardver szükséges, beágyazott része, ami azonban a későbbiekben frissíthető, ezzel jó esetben új funkciókat, illetve a régiek funkciók működésének javulását érhetjük el, illetve az intelligens, hálózatra kötött eszközök esetében a biztonsági hiányosságok foltozását.

Az ESPEasy az okoskütyükben méltán népszerű ESP8266 WIFI chipekre készült, gyakorlatilag bármelyikre feltölthetjük, egyesekben könnyebben, másokban nehezebben hozzáférhetőek a feltöltéshez szükséges RX/TX és tápfeszültséget szolgáltató csatlakozók. De természetesen ESP modulokat saját magunk is rendelhetünk, pl könnyen programozható, USB csatlakozóval szerelt fejlesztői panelként, amiből saját szenzorokat építhetünk.

A működőképes ESPEasy böngészőből elérhető felületet biztosít, ezen keresztül lehet mindent beállítani, valahogy így néz ki:

espeasy0.jpg

De haladjunk sorban, első körben letöltjük a szükséges binárist. (vagy a forrást, ha az Arduino fordítóval tudunk bánni)

A legutolsó stabil kiadás az 1.2, több mint egy éves:
http://www.letscontrolit.com/downloads/ESPEasy_R120.zip

Három bináris található benne, különböző méretű Flash memóriával szerelt ESP modulokhoz, meg a feltöltést segítő Windowson futó esptool.exe.
Képekkel segített bemutató van a letscontrolit honlapon, ami szemlélteti milyen kinézetű modulok, jellemzően mennyi memóriával szoktak árulni.
https://www.letscontrolit.com/wiki/index.php/Tutorial_ESPEasy_Firmware_Upload#Flash_size

Én azt javasolnám, ha lehetőségünk van vásárláskor választani 1MB alattit sose vegyünk, 1MB-osat is csak akkor, ha feltétlenül indokolt. (Vásárlási tipp: szoktak trükközni a bitekkel és bájtokkal 512KB=4Mbit, 1MB=8Mbit,4MB=32Mbit)
A 4MB-ossal könnyebb az élet, és a későbbi OTA (On-The-Air) frissítés, WiFi-n/böngészőn keresztül. De a lényeg most az, hogy a fájlnévben jelölik melyik bináris melyik méretűhöz való.

Az 1MB-os modulokkal is meg lehet oldani, de két lépésben, először az alábbi kis méretű firmware-t kell rátölteni, ami aztán be tudja húzni a nagyobbikat a helyére a következő lépésben:
https://www.letscontrolit.com/wiki/index.php/ESPEasy#2.0.2B_firmware_on_1MB_modules

A legújabb 2.x verzió még nem "stabil" kiadás, de azért ennek használatát javaslom, mivel nagyon sok javítás van benne az előző stabil kiadáshoz képest:
https://github.com/letscontrolit/ESPEasy/releases

Jelenleg az ESPEasy_v2.0.0-dev12.zip a legújabb, ezt kicsomagolva már többféle dolgot láthatunk, a 8285 végű bináris az ESP8266 kissebbik verziójához az ESP8285-höz való, ami pl a Sonoff Touch-ban, valamint az újabb Sonoff S20-akban is megtalálható. (Az S20-ak régebbi szériája 8266-os)
Ezen kívül 1MB (1024) és 4MB (4096) típusokhoz található kész bináris és mindezen verziókból van Normal/Test/Development verzió. A Normal a legkisebb csak egy alap plugin készlettel rendelkezik a Test-ben van pár működő, de még nem széleskörűen tesztelt plugin, a Dev-ben pedig vannak kísérleti, még alig tesztelt pluginok. Ezen felül szintén megtalálhatóak benne a Windows alatti flasheléshez szükséges alkalmazások.

Plugin: olyan programrész, mely az eredeti program nélkül nem működőképes, annak működését bővíti valamely új elemmel, esetünkben valamilyen új szenzor támogatása szerepel bennük. Ezt a plugint vagy az eredeti fejlesztőgárda, vagy nyílt forrású projekt lévén bárki készíthette.

Nem vagyok Windows hívő, szerencsére az esptool-t bármikor telepíthetném a Linuxom alatt is egy tárolóból, de a sokkal barátibb PyFlasher-t szoktam választani. (egyébként ez is elérhető Windowsra is) Jó hír, hogy immár az ESP8285-ök számára létfontosságú DOUT módot is támogatja! (Megjegyzés: Feltöltés előtt a GPIO0 lábat GND-re kell kötni.)
Az alábbi képen még a régi látható. Használata pofonegyszerű, kitallózzuk a letöltött firmware fájlt, kiválasztjuk az USB-soros csatlakozónkat a Serial port-nál, egy szimpatikus feltöltési sebességet választva (a 115200 általában jó) a Flash mode a 4MB-al szerelteknél általában "dio", ESP8285-nél mindig "dout", kivéve ha más szerepel a chipen. Az "Erase flash" segítségével az eszközön levő korábbi konfigurációtól tudunk megszabadulni, pl Wifi jelszó, admin jelszó, stb..

nodemcu2.jpg

Feltöltés után újra kell indítani az eszközt, illetve ha USB csatlakozós NodeMCU rendszerű, akkor meg kell győződni róla, hogy nem adatkábellel vagy nem gazdaUSB-re van kötve, hanem 5V dugasztápra.

Ha mindent jól csináltunk meg fog jelenni egy ESP_Easy_0 nevű WiFi AP, a jelszava configesp.
Csatlakozzunk ehhez és böngészővel látogassuk meg a 192.168.4.1 weboldalt. Az alábbihoz hasonló listából válassszuk ki rajta a saját WiFi-nket és adjuk meg a jelszavunkat. (az eszközökön levő felhős gyári kínai firmware-ekkel ellentétben ez nyílt forrású, így meggyőződhetünk róla, hogy valóban nem gyűjti és továbbítja a jelszavainkat)
Fél percenként ellenőrzi, van-e élő WiFi kapcsolat, ha nincs, akkor megpróbálja a másodlagosként megadott AP-t elérni, ha ez sem megy, akkor visszaáll AP üzemmódba, ahol a fentihez hasonló módon érhető el, és állítható be újra. (Az alapértelmezett AP jelszót ezért érdemes átállítani!)

Gépünkkel újracsatlakozunk saját WiFi hálózatunkhoz és a routeren megkeressük a kiosztott DHCP IP címek listáján az új ESP eszközt.. majd ennek IP címét beütve a böngészőbe máris kezdhetjük a beállítását.

Az első menüpont a Main, ez töltődik be nyitóoldalként, és a cikk elején már bemutatott információkat jeleníti meg.

Config menü

Itt adható meg az eszköz neve, ami bármi lehet, de célszerű olyasmit választani, hogy később tudjuk azonosítani mi ez. :)

Fontos! A Unit Number értéke mindig egy 0-tól nagyobb (1-31), és a hálózatban egyedi szám legyen.. pl két 1-es számú ESP ugyanazon a hálózaton furcsa MQTT hibákat fog okozni.

Megadható egy elsődleges WiFi AP, illetve ha erre nem tud csatlakozni, egy másodlagos is, valamint ezek jelszava. Az AP mode key akkor fog kelleni, ha hosszabb időre elveszti mindkét AP-val a kapcsolatot, akkor az eszköz maga lép AP módba, amire ezzel a jelszóval tudunk rácsatlakozni, hogy konfiguráljuk. Ez alapbeállításban "configesp". Beállítható fix IP cím is, ami nagyban gyorsítja az indulási sebességet, illetve a DeepSleep mód, aminek bekapcsolásától óva intek mindenkit, aki most kezd ismerkedni az eszközzel, mivel ha nincs rendesen bekötve a szükséges csatlakozó, az eszköz bekapcsolás után pár másodperccel elérhetetlenné válik. Egyébként hozzáértők számára nagyon praktikusan csökkenti az energiafelvételt, akkumulátoros üzemhez nagyszerű.

espeasy_config.jpg

Controllers menü

Itt adható meg, milyen szerverek felé továbbítsa a begyűjtött adatokat. Egy időben háromfélét lehet felvenni az alábbiak közül:

  • Domoticz HTTP
  • Domoticz MQTT
  • ThingSpeak
  • OpenHAB MQTT
  • PiDome MQTT
  • EmonCMS
  • Generic HTTP
  • FHEM HTTP
  • Generic UDP

espeasy_cont.jpg

 

Hardware menü

Itt adható meg az egyes csatlakozók használati módja, pl mit használjon I2C kommunikációra, engedélyezzük-e az SPI-t, illetve hogy melyik csatlakozó milyen állapotban legyen bootoláskor. A PIN Led-et csak akkor válasszuk ki, ha konkrétan tudjuk, hogy egy LED van rákötve az adott GPIO-ra, mert ha rossz pint választunk lehet vehetjük elő ismét a kábeleket a flasheléshez.

espeasy_hw.jpg

Devices menü

Ez a legfontosabb rész, itt állíthatjuk be, hogy milyen eszközeink hová vannak kötve, és milyen gyakorisággal jelentsék az állapotukat. Az ESP korlátozott memóriája miatt 12-ben maximálták (4-es csoportokban 3 külön oldalon, a fent látható balra-jobbra nyilakkal lehet váltani köztük) a használható eszközök számát, ami forrásból történő fordítással növelhető egyébként. De most őszintén, 64 ezer bájtnyi műveleti és 96 ezer bájtnyi adattároló memóriával szemben ne legyenek túlzott elvárásaink, gondolom a kevéssé hozzáértőek is érzik, hogy egy DVD kapacitásához képest milyen kevés is ez. És mégis, a kütyü működik. Bármely kellőképpen fejlett technológia megkülönböztethetetlen a varázslattól! :)

espeasy_dev.jpg

A táblázatban láthatóak a legutóbb mért értékek is, de ez csak tájékoztató jellegű, csak kézzel lehet frissíteni, a végleges felhasználásuk valamely, Controllers részben megadott szerveren történik.

A támogatott eszközök sokfélék és egyre csak bővül a körük, a hivatalos lista itt található:
https://www.letscontrolit.com/wiki/index.php/Devices

Ám a letscontrolit fórumán nagyon sok új eszközzel kapcsolatban is találhatunk információkat, továbbá a PluginPlayground-ban több lelkes amatőr - többek között jómagam is - hozzájárul egyedi pluginokkal, további eszközök, funkciók elérésére.

Az eszközök beállításáról külön könyvet lehetne írni, de különösebben nem bonyult az eljárás, nézzünk két egyszerű példát, melyek talán a legnépszerűbbek:

DHT22 hőmérséklet-szenzor

A típus kiválasztása után meg kell adnunk a nevét az Enabled-et bepipálni, megadni melyik GPIO-ra kötöttük, az altípust is ki ki kell választani (DHT11/12/22), majd a Domoticz IDX-et, ami azonosítja a hőmérsékletmérőt a felvett MQTT eszközök között. Amennyiben a Controllers menüben be van állítva az MQTT szerver, van WiFi kapcsolat, akkor a Send to controller bepipálása után az ez alatt levő Delay rubrikában megadott másodpercenkénti gyakorisággal közli a szerverrel a mért értékeket.
A legalul levő két érték a hőmérséklet és páratartalom, melyhez társíthatunk nevet is, mellyel későbbi szabályokban hivatkozhatunk ezekre, illetve képlettel át lehet számolni, korrigálni, valamint meghatározni, hány tizedes pontossággal adja vissza a mért értéket. Legvégül a Submit menti el az eszközt. Látható, hogy különösebb programozói tudást a feladat nem igényel.

espeasy_dht.jpg

Mozgásérzékelő/kapcsoló/relé

Elsőre furcsának tűnhet, de mindezeket egy közös "Switch input" nevű plugin kezel, nevével ellentétben nemcsak bemenet, hanem kimenet is lehet. Gyakorlatilag minden kétállású eszközre jó lehet, ami egy adott GPIO állapotával vezérelhető, vagy arra adja vissza a státuszát. Pl a mozgásérzékelő logikai 1-et ad vissza, ha mozgás van, 0-át ha nyugalomba került. A kapcsolót logikai 1-el kapcsoljuk be, 0-val ki, stb, stb... (nyilván a mozgásérzékelőt nem akarjuk kimenetként használni azért)

Alább látható egy példa, egy mozgásérzékelővel, az előzőhoz hasonló módon megadjuk a nevét, a GPIO-t, amire az eszköz jelzi a státuszát. A típusa lehet dimmer, amivel egycsatornás többállású dimmert, vagy alapesetben kétállású kapcsolót készíthetünk. A gomb típusa normál kapcsolós, 0-ra aktív, vagy 1-re aktív lehet. A send boot state elküldi bekapcsoláskor az aktuális állapotát, ami praktikus.

espeasy_sw.jpg

A Send to Controllert is be kell pipálni, ha szeretnénk, hogy az IDX azonosítóval elküldje, ha mozgást észlel, majd a mozgás megszűnését is, egy alkalommal. (Nálam a képen azért nincs, mert egyéb szabályokkal történő feldolgozás után másképpen továbbítom az információt)
A Delay itt 0-án hagyható, ami azt jelenti, azonnal küldi az észlelést, nem bizonyos időközönként, mint a normál szenzorok esetén. További feldolgozáshoz nevet is adhatunk a változónak, majd Submit-al mentünk.

Notifications menü

Két egyszerű módon történő értesítés van implementálva jelenleg, egy GPIO-ra kötött csipogó-buzzer, vagy SMTP szerver megadása után e-mail küldésére van lehetőség. Igazából ezek a pluginok között voltak, azért lettek átemelve külön menübe, hogy ne foglalják a 12 db eszközhelyet.. no meg remélhetőleg, idővel több kommunikációs forma is rendelkezésre fog itt állni.

espeasy_not.jpg

Tools menü

Itt található több beállítás és diagnosztikát segítő menüpont. A reboot praktikus, ha a tápfeszültség elvétele nem annyira könnyen kivitelezhető (pl falba épített villanykapcsoló), de valamely beállítás érvényesítéséhez kellene. (pl Unit No szám módosítás)

A Log-ban megtekinthető a legutóbbi pár esemény, az Info egy összesítőt ad jelen állapotokról a Show JSON/Pin state buffer segítségével lekérhető a csatlakozók aktuális állapota, menedzselhető a Wifi is..
Az I2C Scan nagyon praktikus, ha engedélyeztük az I2C pineket a Hardware menüben és szeretnénk ellenőrizni, hogy a rá kötött eszközök működnek-e, vagy valamit elkötöttünk, kihagytunk egy felhúzó ellenállást, stb..
Elmenthetőek és visszatölthetőek a beállítások, a Flash memóriában létrehozott fájlrendszerbe is másolhatunk szükség esetén, de a legfontosabb a Firmware Load segítségével tudunk más firmware-t betölteni. (nemcsak ESPEasy-t, de akár Tasmotát vagy ESPurnát is)

espeasy_tool.jpg

Amit kihagytam a fentiekből még az Advanced pont, ahol további beállítások várnak ránk:

espeasy_adv.jpg

A legfontosabb a legelső "Rules", amit érdemes engedélyezni, ekkor jelenik meg a fenti menüben a Rules menü, ahol egyedi eseményvezérelt szabályokat írhatunk.
Ha az "Enable serial port" lehetőséget letiltjuk, a soros port számára fenntartott két csatlakozót más célra is ki tudjuk osztani az eszközöknél, ez is igen praktikus, ha egyébként nem használunk soros kommunikációt.

Rules menü

Egy elég szűkre szabott (új verzióban 4x) 2048 bájtnyi kód beírásával (itt jön képbe a korábban bemutatott eszközök és adatsoraik elnevezése, érdemes rövid nevet adni az eszközöknek, hogy több kód férjen) tudjuk saját szánk íze szerint alakítani az ESPEasy működését, a visszaadott értékeket további feldolgozásnak vethetjük alá, használhatunk időzítőket, más ESPEasy modulokkal kommunikálhatunk, több feltételtől függő eredményeket továbbíthatunk az MQTT szerver felé.. aránylag sok lehetőség közül választunk, és még mindig kevesebb munkával jutunk működő eszközhöz, mintha mindent saját magunknak kellene leprogramoznunk, hiszen egy működő keretrendszerbe dolgozunk.

A szabályok készítésére rengeteg példát találhatunk a neten, az alapsúgó:
https://www.letscontrolit.com/wiki/index.php/Tutorial_Rules

És egy konkrét példa, a Sonoff Touch szabályokkal történő kezelésére:
https://www.letscontrolit.com/wiki/index.php/Sonoff_Touch#ESP_Easy

A bejegyzés trackback címe:

http://bitekmindenhol.blog.hu/api/trackback/id/tr9113384389

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

Nincsenek hozzászólások.