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 program 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égi funkciók működésének javulását érhetjük el, esetleg 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" (pl S20!), 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:

https://bitekmindenhol.blog.hu/api/trackback/id/tr7413384389

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 és az adatvédelmi tájékoztatóban.

Bulerias 2017.12.13. 23:21:39

Szia!
Le tudom tíltani, hogy ne menjen AP módba ha tartósan elvesztette a Wifi-vel a kapcsolatot? Éjszakára kikapcsolom a wifi routert, de a local rule-ok persze dolgoznának továbbra is offline-ban, viszont nem szeretnék a feléledő AP móddal felesleges electrosmogot.
Nagyon jó a blog, csak így tovább! :)

eNeS 2017.12.14. 08:14:57

@Bulerias: Szervusz! Köszönöm, igyekszem! Az ESPEasy alapvetően aktív hálózati kapcsolatot feltételez, így 30 másodpercenként próbálkozik a kapcsolódással, ezt csak a forráskód átírásával lehet kikapcsolni, ami egy sor előre nem látható egyéb szövődményt okozhat. Írtam egy WifiMan nevű plugint egyébként, amivel rule-ból kikapcsolható a WIFI (így kevesebbet is fogyaszt) majd bekapcsolható rule-ból. Az AP módot is kiiktatja elvileg (erősen kísérleti még), a 4/1M bináris és a plugin forrás is elérhető itt: www.letscontrolit.com/forum/viewtopic.php?f=6&t=2846#p21151

Bulerias 2017.12.14. 13:54:56

Ki fogom próbálni az 1M-st, egy sima sonoff-ba lesz. Tudsz abban segíteni, hogy nézzen ki az a rule, ami ha elveszti a routert, akkor "modemsleep,1" mondjuk 1 percre. Utána ellenőrzi, hogy tud-e már csatlakozni, ha nem akkor alszik megint.
Az AP módot meg longpressel vagy reboottal lehetne kierőltetni, ha mégis szükség van rá.

eNeS 2017.12.14. 18:04:45

@Bulerias: jeleneleg semmi ilyesmi event nincs, amivel hasonlót tudnál csinálni. Annyit tudsz tenni, hogy ha éjszakára kikapcsolod a wifi routert, akkor egyúttal a modemsleepet is bekapcsolod, és a rule-ban tudsz pl reggel 6-ra állítani modemsleep,0-t. Hacsak valaki nem fejleszt ilyen plugint is. :) Kéne egy háttérben futó folyamat, ami figyelné a wifi állapotát és generálna egy event-et, ha elvész...

Bulerias 2017.12.17. 19:01:30

Az 1M-s binárishoz tudsz adni elérést? A fenti linken csak a 4M-s találtam.

eNeS 2017.12.17. 21:40:45

@Bulerias: Jogos, csak 4M-st fordítottam. Feltöltöttem egy 1M/128k SPIFFS verziót is. Van ötletem arra, hogyan lehetne a plugint bővíteni azzal, hogy generáljon egy Rule-ban érzékelhető eseményt is, de az AP mód kikapcsolására, úgy hogy közben kliensként próbáljon kapcsolódni néha, még nincs konkrét ötletem. www.letscontrolit.com/forum/download/file.php?id=1786

Bulerias 2017.12.26. 13:31:04

Szuper ez a 2 új lehetőség: KillAP,Wifistate. Számomra ezzel az espeasy tud egy teljesen egyedi módot, képes a rule-okkal offline eldolgolzni és wifi-ről konfigurálható marad.
A mostani update-d előtt úgy oldottam meg az AP mód elnyomást, hogy az IP cim 3. értékét figyeltem eventtel, ha elváltott "1" -ről, akkor AP módba ment, amit egy idő múlva modemslep-pel kilőttem. De ez mostantól még kifinomultabban kezelhető. Köszi!

csonkat 2018.07.26. 14:14:53

Készítettem egy r120-as binárist a saját WiFi azonosítómmal (Arduino IDE 1.8.5). Működik is rendesen. Viszont ha beleteszem az _R166_WifiMan.ino-t (github.com/letscontrolit/ESPEasyPluginPlayground) akkor a következő hibaüzeneteket kapom fordításkor:

Arduino: 1.8.5 (Windows 7), Alaplap:"Generic ESP8266 Module, 80 MHz, 40MHz, DOUT, 115200, 1M (128K SPIFFS), ck, Disabled, None"

C:\Users\csonkat\Desktop\ESPEasy\_P166_WiFiMan.ino: In function 'boolean Plugin_166(byte, EventStruct*, String&)':
_P166_WiFiMan:96: error: 'WifiIsAP' was not declared in this scope
if (WifiIsAP(WiFi.getMode())) {
^
_P166_WiFiMan:97: error: 'setAP' was not declared in this scope
setAP(false); // setWifiState(WifiDisableAP); // WifiAPMode(false);
^
C:\Users\csonkat\Desktop\ESPEasy\_P166_WiFiMan.ino: In function 'void setmodemsleep(byte)':
_P166_WiFiMan:214: error: 'tryConnectWiFi' was not declared in this scope
tryConnectWiFi(); // WiFiConnectRelaxed();
^
exit status 1
'WifiIsAP' was not declared in this scope

Mi lehet a hiba?

eNeS 2018.07.26. 19:29:19

@csonkat: Az, hogy a P166 az aktuális (2018. május) fejlesztői Mega változathoz készült. R120-ban nincs ilyen nevű funkció. De szerintem a többi sincs még benne, pl a tryconnectwifi() és az eggyel előbbi Wificonnectrelaxed() sem, ami valamikor év elején került az ESPEasy forrásba, majd ki onnan. Talán a legelső változat a pluginból még lefordul az ősi R120-on is: github.com/letscontrolit/ESPEasyPluginPlayground/commit/3a55e29f9536fb15106e4304fb1d2219180a1318#diff-0483b6c8b223915173dc69418faaa3c2

csonkat 2018.07.27. 08:34:10

@eNeS: Köszönöm. A Mega változattal sikeres lett a fordítás.

Elektro_atmel 2019.01.10. 09:22:32

Sziasztok! Ismerkedem az ESPEasy-vel, azt megfigyeltem, hogy a 2.0-ban a GPIO nem jól működik, ezt a készítőknek többen jelezték. De valami egyszerű leírás nincs arról, hogy hogy lehet összeszedni egy saját ESPEasy verziót, kihagyva azokat, ami nem kell? Nézegettem az angol leírásokat, de van még egy-két fehér folt. Köszi.

eNeS 2019.01.10. 18:41:28

@Elektro_atmel: szerintem nem a 2.0-ás verzióra gondolsz kompletten, csak a 2018 december 1 utáni development verzióra. Láttam én is, hogy átszervezik a GPIO kezelést, így nem frissítek, amíg azt nem véglegesítik. Nálam 2018. szeptemberi binárisok futnak és semmi baja. Arduinoval szoktam fordítani forrásból néha, a _Pxxx kezdetű pluginokból kitörlöm, amit nem használok, így kisebb lesz a bináris, legegyszerűbb módszer. De ha visszamész a githubon a tavalyi releasek közé, a 2018. szeptember környéki kész binárisokat minden további nélkül tudod használni szerintem...

Elektro_atmel 2019.01.16. 13:12:14

@eNeS: Köszi, most megnéztem a 20181214-est pl., abban a GPIO jónak néz ki. Arduino alól nem próbáltam fordítani, de kérdés:
- kicsomagolod egy mappába, és a _Pxx fájlokat egyszerűen törlöd? Meg a mappát átnevezed ESPEasy-re, és fordítás?
Köszi a segítséget

Elektro_atmel 2019.01.16. 13:31:37

Tehát, pl. nekem nem kell a 10-es, fényérzékelő, akkor a _P010...io fájlt törlöm a mappából és fordítom a "Lefordított bináris exportálása" ponttal? Vagy a _PPlugin.ino-t szerkesztem? Köszi

eNeS 2019.01.16. 18:39:17

@Elektro_atmel: Én át szoktam helyezni a nem kívánt pluginokat egy másik mappába, de a törlés is megteszi. :) Egyébként van egy pluginsets fájl, ahol be lehet állítani saját "szetteket", hogy melyik controller és melyik plugin kell, de egyszerűbbnek találtam a törléses megoldást. :)

Elektro_atmel 2019.02.01. 14:14:53

@eNeS: Én többször megpróbáltam , főleg ez alapján: www.letscontrolit.com/wiki/index.php/Tutorial_Arduino_Firmware_Upload , de csak nem akar összejönni. Nincs egy cicafarknyi leírás lépésről-lépésre, mert most mindig valami hibát dob.
Most pl. ilyeneket:
sketch\Commands/Common.h:28:27: error: 'IPAddress' has not been declared IPAddress dhcpIP,
^
sketch\Commands/Common.h: In function 'String Command_GetORSetIP(EventStruct*, const __FlashStringHelper*, const char*, byte*, int, int)':

sketch\Commands/Common.h:36:39: error: 'GetArgv' was not declared in this scope if (GetArgv(Line, TmpStr1, arg + 1)) {
^
sketch\Commands/Common.h:39:38: error: 'str2ip' was not declared in this scope if (!str2ip(TmpStr1.c_str(), IP)) {
^
és még egy csomó ilyet. Egyelőre csak egy teljesen alap fordítását akartam kipróbálni, de nem akar összejönni. Tudna valaki egy kicsit segíteni? Előre is köszi

Elektro_atmel 2019.02.02. 09:51:11

Vagy az is lehet, hogy nem a legújabb Arduino fejlesztőt kell használni? De ezek a hibaüzik deklarációs hibára utalnak, kellene még valami fájl?

eNeS 2019.02.02. 10:09:38

@Elektro_atmel: Nekem nem volt ilyen problémám a tavaly szeptemberi forráskód fordításával... lehet az ESP8266 core for Arduino nem megfelelő verzió hozzá, amit használsz, van béta 2.5 belőle meg a régi 2.4.1 amit én használok, meg a sok hibával rendelkező 2.4.2, és a régi stabil 2.3... aki instabil fejlesztői verzióval dolgozik, fel kell készülnie, hogy sok munka lesz a lefordítással. Az is lehet, hogy a napi build-ben van hiba, ezért szoktam régebbit használni...

Takimobil 2019.02.02. 13:00:17

Szia! Tudnál segíteni nekem, hogy lehet egyedi pluginokat feltölteni? Köszi

eNeS 2019.02.02. 18:15:12

@Takimobil: ha a kérdés az, hogy lehet egyedi pluginokat csatolni az ESPEasy-be, akkor úgy, be kell másolni az ESPEasy forrásai közé és újra kell fordítani. A platformio-t ajánlják fordításra: www.letscontrolit.com/wiki/index.php/Tutorial_building_and_uploading_with_platformio

fecus 2019.02.02. 18:51:46

Valaki tud megoldást a falban lévő sonoff kapcsoló R148 fw-ről "ESP_Easy_mega-20190116_minimal_ESP8266_1024_OTA.bin" verzióra frissítésre kiszerelés nélkül?
Ha jól értem onnan már tudnám OTA frissíteni a minimál verziókat!?

eNeS 2019.02.03. 09:53:43

@fecus: Van egy "ESPEasyUploaderMega" nevű bináris, ami elvileg erre való (két lépcsős frissítés 1MB eszközök számára), de mivel a régi stabil és a fejlesztői változat másképp kezeli a SPIFFS tárhelyet, elképzelhető, hogy feltöltés után megáll és nem fog AP módba lépni.. én kétszer is így jártam, azóta kizárólag Tasmotát teszek falba szerelt 1MB flashel rendelkező eszközökre.

Elektro_atmel 2019.02.03. 20:49:32

@eNeS: Szia, nem nagyon akarlak zavargatni a problémámmal, de vagy 6 verziót kipróbáltam, és mindnél szinte ugyanazok a hibák:
Pl.: In file included from C:\Users\User\Documents\Arduino\EspEasy\Command.ino:2:0:
sketch\Commands/Common.h:28:27: error: 'IPAddress' has not been declared
IPAddress dhcpIP,
^
sketch\Commands/Common.h: In function 'String Command_GetORSetIP(EventStruct*, const __FlashStringHelper*, const char*, byte*, int, int)':
sketch\Commands/Common.h:36:39: error: 'GetArgv' was not declared in this scope
if (GetArgv(Line, TmpStr1, arg + 1)) {
^
sketch\Commands/Common.h:39:38: error: 'str2ip' was not declared in this scope
if (!str2ip(TmpStr1.c_str(), IP)) {
^
és így tovább...

Szóval csináltam egy friss, üres Arduinot, leszedtem a 2018...mega.zip-et (többet is). A lib tartalmát bemásoltam az Arduino library mappájába, előtte mindent kitöröltem. Aztán az src könyvtárat a sketchek közé raktam, és átneveztem EspEasy-re. Majd az EspEasy.ino-ra álltam és "Lefordított bináris exportálása" menüpontot választottam. Előtte beállítottam az alaplapot Wemos D1 Mini-re, 115200, 4M (1M sniff), port, amire kell, és egy kis fordítás után ezek a hibák jönnek elő. Már megőrülök tőle, de akárhány változatot fordítottam, a hibák szinte ugyanazok.
Szeretnék kérni egy alap lib és src állományt, ami nálad lefordul, az Arduino verziószámával együtt, hogy nálam lefordul-e. De csak ha nem nagy kérés. Előre is köszönöm.
Itt is az IPaddress-t hiányolja, melyik definíciós fájl(ok) hiányozhatnak pl.?
Vagy a mega csomagból be kell még valamit másolni valahová?
Köszi előre is...

eNeS 2019.02.03. 22:50:06

@Elektro_atmel: Akárhogy olvasom amit írtál, nem látom benne, hogy feltetted volna a 2.4.1-es ESP alaplapot az Arduino alá, amit írtam pár napja. Az IPAddress abban van definiálva. Ha nem megy, amit szintén írtam Platformio-t kicsit feljebb, a feloldja a fordításnál a függőségeket...

fecus 2019.02.04. 09:22:56

@eNeS: Igen, akkor én is így jártam Arra jutottam, hogy a ESPEasyUploaderMega csak a 2-es verzió miniről-minire frissítést támogatja. Köszönöm. Akkor csavarhúzó.

Elektro_atmel 2019.02.04. 16:53:37

@eNeS: Szia! Az alaplap-kezelőben eltávolítottam a 2.5.0-béta-t, és feltelepítettem a 2.4.1-et, csak nem írtam, de megvolt. Azzal kezdtem.

Gazso75 2019.02.26. 09:10:03

Szia, tanácsra lenne szükségem. Csináltam egy PIR,Lux,Relay kombót NodeMCU v3-al. Nem sikerül rendesen megírnom a Rules-t. A koncepció az lenne, hogy :
- Ha mozgás van és a lux<5 akkor kapcsoljon be 30secre a relay.

on PIR#Switch=1 do
if [LUX#Lux]<5
gpio,13,1
endif
endon

on Rules#Timer=1 do
timerSet,1,30
GPIO,13,0

Endon

nem akarja az igazságot :(
ki/be kapcsolgat

eNeS 2019.02.26. 18:13:18

@Gazso75: és mit szólsz ehhez?

on System#Boot do
gpio,13,0
endon

on PIR#Switch do
if [PIR#Switch]>0 and [LUX#Lux]<5
gpio,13,1
timerSet,1,30
endif
endon

on Rules#Timer=1 do
gpio,13,0
endon

Gazso75 2019.02.26. 20:34:31

@eNeS: Zsír, működik, koszi. Már csak arra kéne rájönnöm, hogy miért úgy kapcsol be, meg ki, hogy 4-szer 5-ször be/ki. És van, hogy ugymarad. Bekapcsol villog és kikapcsolva marad, vagy kikapcs parancs, villog és bekapcsolva marad.

eNeS 2019.02.27. 07:05:20

@Gazso75: Ez csak az eseménynaplóból derülhet ki. Esetleg a PIR-en az időzítést feljebb kell csavarni, hogy tovább tartsa a jelet. (lehet többször bedob mozgást a 30 másodperc alatt, ez bizony több be és kikapcsolást fog eredményezni)
Vagy ha nem ez a baj, de a relé 5V-os, az mindent megmagyaráz.
bitekmindenhol.blog.hu/2018/03/13/elektronikus_kapcsolo_jelfogo_rele

eNeS 2019.02.27. 18:45:59

@Gazso75: Az SSR 3V-al is jól megy, így az nem lehet gond. Viszont a PIR-en érdemes lenne növelni a tartási időt, amikor mozgást észlel. Vagy egy Dummy változóval kell bővíteni a detektálást, hogy ne indítsa újra a Timert, amíg tart az előző 30 másodperces késleltetés

Gazso75 2019.02.28. 09:06:23

Az ESPeasyben relay-en beállítottam az Inversed Logic-ot, és minden patika lett. A mozgással azért nem lehetett probléma, mert egy sima kinyitom-kilépek-bekapcsol-belépek-ajtóbezár után villogott, úgy, hogy semmi mozgás nem volt.

karolyia 2019.12.29. 18:50:10

BUÉK & heeeeeelp!

kaphatok egy lua példát arra, hogy tudom beszúrni X eszközből a hőmérsékletadatot egy url végére? plusz még szeretném, ha 10sec intervallumban ismételné is.

nagyon nem megy a lua :(
addig jutottam, hogy bekapcsoláskor már tudok küldeni url parancsot. nem értem, hogy tudok beszúrni az url-be stringet. :((((

ennyi a tudományom:
commandArray = {}
if (devicechanged['LCD'] == 'On') then
os.execute ('curl -s "http://192.168.1.252/control?cmd=LCD,1,1,LCD:ON!!"')
end
return commandArray

eNeS 2019.12.29. 19:56:40

Mondjuk így? A 10sec intervallumra nincs ötletem, ha 1 perc is jó, akkor Time alapú LUA szkriptet kell létrehozni, az eleve időzítve fut.

termcurl = 'http://192.168.1.100/control?cmd=event,exttemp='
sTemp, sHum = otherdevices_svalues['Eloszoba_homero']:match("([^;]+);([^;]+)")
commandArray['OpenURL'] = termcurl .. 'event,exttemp=' .. tostring(sTemp)

eNeS 2019.12.29. 19:57:19

termcurl = 'http://192.168.1.100/control?cmd=event,exttemp='
sTemp, sHum = otherdevices_svalues['Eloszoba_homero']:match("([^;]+);([^;]+)")
commandArray['OpenURL'] = termcurl .. tostring(sTemp)

karolyia 2019.12.29. 20:35:12

elég a 60 sec is. viszont nem tudom, hogy miért, de nem működik. lehet, hogy ékezet probléma?

termcurl = 'http://192.168.1.252/control?cmd=LCD,1,14,'
sTemp = otherdevices_svalues['Puffertartály_hőmérséklet']:match("([^;]+)")
commandArray['OpenURL'] = termcurl .. tostring(sTemp)

karolyia 2019.12.29. 20:41:27

ezt adja:

Error: EventSystem: in Script #2: [string "termcurl = 'http://192.168.1.252/control?cmd=..."]:2: attempt to index field 'Puffertartaly_homerseklet' (a nil value)

eNeS 2019.12.29. 20:50:26

attól függ mit akartál ezzel a sorral elérni:
sTemp = otherdevices_svalues['Puffertartály_hőmérséklet']:match("([^;]+)")
Ahogy én írtam, két paraméterrel, úgy működik, ha egy Temp+Humidity típusú eszközből kell kinyernie a hőmérsékletet és a páratartalmat. Ha csak egy paramétere van, mert Temp típusú az eszköz, akkor felesleges a mókolás, úgysincs ; a végén. Másrészt lehet hogy nem ez a neve az eszközödnek, azért ad vissza nil értéket... Print -el érdemes kiíratni a változók értékét, ha vaktában lövöldözöl és nem tudod mi nem megy.

karolyia 2019.12.29. 21:42:46

az eszköznév tuti. akkor ezzel lesz a bajom? match("([^;])")

itt tartok, de még mindig üres:

commandArray = {}

if devicechanged['Puffertartály hőmerséklet'] then
termcurl = 'http://192.168.1.252/control?cmd=LCD,1,1,'
sTemp = otherdevices_svalues['Puffertartály hőmerséklet']:match("[^]")
print ("Puffer:", sTemp)
commandArray['OpenURL'] = termcurl .. tostring(sTemp)
end

return commandArray

karolyia 2019.12.29. 21:54:42

ja ez nem is jó nekem, mert csak akkor ír ha változás van :D

karolyia 2019.12.29. 23:02:00

szóval marad ez: termcurl = 'http://192.168.1.252/control?cmd=LCD,1,1,'
sTemp = otherdevices_svalues['Puffertartály hőmérséklet']:match("[^]")
print ("Puffer:", sTemp)
commandArray['OpenURL'] = termcurl .. tostring(sTemp)

az eszköz nevét próbáltam ékezet nélkül, alsóvonással szóköz helyett, de semmi :(

eNeS 2019.12.31. 09:42:06

Szerintem ha sima hőmérőd van, és nem páratartalmas, ahogy már utaltam rá, akkor a match() rész felesleges, mivel nincs több érték, sem ; a szövegben:
sTemp = otherdevices_svalues['Puffertartály hőmerséklet']

karolyia 2020.01.02. 17:18:56

áááá köszi! elsiklottam felette. és a hibára is rájöttem. valamiért, ha kézzel írom be az ékezetes-szóközös device nevét, akkor null értéket ad. ha kimásolom az eszközlistából, akkor hibátlanul működik!

Kodmen 2020.01.04. 09:12:30

Szia! Már egy ideje "követem" az írásaidat, sokat segítenek, köszi! Az ESPEasí bemutatásod hatására döntöttem úgy, hogy ArduinoIDE helyett ezzel látok neki egy okos termosztátnak. Egyelőre csak az alap funkciókat szeretném megvalósítani távoli állítási lehetőséggel, később majd megyek tovább. A bejegyzésed és ezen oldal ( www.letscontrolit.com/wiki/index.php?title=NEXTIONDisplay ) alapján már egész jól állok: Méri és kijelzi a hőmérsékletet, páratartalmat, a beállított hőmérsékletet. A gond ott van, hogy a beállított hőmérsékletet jelenleg nem tudom, csak paranccsal megváltoztatni, mert a kijelző felől nem tudok adatot átadni az ESP-nek. A kijelzőn lévő gombokkal tudom változtatni egy változó értékét, ezt kellene átvegye az ESP egy dummy változóba, amit a kijelzőnek visszaküld egy másikba, amit végül megjelenít. Azért ilyen kacifántos, hogy biztos az az érték látszódjon a kijelzőn, ami az ESP-be is (kijelzőről vagy web-ről, vagy domoticz-ból) bekerült.

Így adom át a kijelzőnek a hőmérsékletet a Nextion eszköz lapján:
page0.vHo.txt="[Status#Hom_0]"

És így venném vissza:
Status#Hom_1="page0.vHoc0.val"

A Hoc0 numerikus érték (mivel növelni csökkenteni kell a gombokkal), lehet, hogy ezzel van a baj? Convertálnom kellene előbb txt-be? Vagy az átadási metódus nem jó? Milyen paranccsal kellene próbálkozzam? Nem találtam ilyen leírást angolul sem eddig.

Köszönöm & BUÉK!

eNeS 2020.01.04. 10:15:14

A hivatkozott oldal sajnos nem elérhető, és sosem használtam még Nextiont, nincs is tervben. Az biztos, hogy az ESPEasy belső változói számok, egész pontosan float típusúak, fix hosszan, tehát text nem fog belemenni. Ha nem találtál semmit, akkor vagy nem lehetséges ilyen irányban az átadás, vagy senkinek nem volt még rá szüksége.

Kodmen 2020.01.04. 10:39:44

Őrület! Ráfrissítettem, és már nálam sem működik. Remélem az Evernote-ban lementettem... Bár az egész letscontrolit wiki leállt, ha jól látom. Az ESP-ből a float átment a Nextion txt-jébe, ezt biztos a plugin intézte, értett az idézőjelekből. Ez esetben pedig a szám átadásának működnie kellene, persze kérdés, hogy a plugin hogy kezeli... Egyébként a DHT22-es változójában is láttam már sajnos NaN értéket, ami arra enged következtetni, hogy nem csak numerikus értéket tárol.

Nagy előnye lenne ennek a Nextionos megoldásnak, hogy laikus számára (édesanyámék) is könnyen kezelhető lenne, és nem vesznének el a menüben.

Ha betölt az oldal, látni fogod, hogy miről szól a leírás: domoticz-ra kötött kijelző, amin a fűtésszabályozás mellett látszik a termelt napenergia mennyisége és egyéb dolgok is. Mivel nincs ott a teljes kód, fájlok, így persze akár kamu is lehet, csak szépen mutat, de nem is működik. Itt szépen működik:
www.youtube.com/watch?v=CjZeMiXYrWU
Sajnos nem ESPEasy-vel, hanem arduino IDE-vel. Kezdem azt érezni, hogy nem nyerek annyit az ESPEasy könnyebb webes elérésével, mint amennyit bukok azzal, hogy nincs a Nextion-hoz jó leírás. Persze azért jó, hogy egy csomó kódot nem kell megírni, beilleszteni, testre szabni, de azért vannak korlátai, főleg, ha a plugin nem kellően dokuemtált. De lehet, hogy én várok sokat, mivel Testing pluginről van szó... Megnézem a fórumot, hátha találok infót.

Ha van még ötleted, szívesen fogadom, az eddigieket pedig köszönöm!

lt1977 2020.05.20. 15:30:02

Hi,
kipróbálnám az ESPEasy firmware-t viszont még nem látok mindent tisztán először is a plugin rész az a program egy olyan része ami módosítható tehát nem egy külön (utólag) cserélhető része hanem a programot vissza kell fordítani forrásra és azon belül változtatni a plugint majd azt ismét bin-re fordítva feltölteni jól gondolom ? A másik ami még nem tiszta a firmware mérete, ha egy 4megás modulom van, csak a 4 megás méretűt tölthetem rá vagy az 1megás is rá mehet és nem lesz működésbeli problémája, mert méretileg nem látok különbséget a file-k között ?
Ami még érdekelne hogy ha ezt egy PLC-vel akarnám összekötni lehetséges a soros kommunikáción keresztül egy szintillesztővel, tudnám olvasni a plc-ből az adatokat és wifin keresztül figyelni ?
köszi előre is

eNeS 2020.05.20. 19:02:39

Igen az ESPEasy egy C nyelvű mikroprogram, a benne levő pluginok fordításkor kerülnek bele. Tehát ha más plugin kell, mint amivel készült, újra kell fordítani. A 4 megás és 1 megás is ugyanaz a program, csak egyetlen eltérés van köztük: az, hogy honnan és mennyi SPIFFS fájlrendszert formáznak a flashben. Szóval igen, egy 1mb binárist is fel lehet tölteni a 4mb flash-re, mert talál elegendő formázandó kapacitást, de fordítva hibával leállna. Az ESPEasy a soros kimenetén debug információkat küld, amit a PLC esetleg másként értelmez, de lehetséges a soros logolás kikapcsolása után a Ser2Net pluginnal a soros kommunikációt figyelni wifin. www.letscontrolit.com/wiki/index.php/Ser2Net

lt1977 2020.05.26. 12:59:28

Köszi ,kipróbáltam, Tasmotához képest tényleg részletesebben konfigurálható viszont nincs olyan közvetlen "kijelző" felülete mint a Tasmotanak, mindegyiknek van előnye "hátránya". A Tasmotához I2C-n keresztül lehet LCD vagy Oled kijelzőt menüből választani ? Ezt hogy lehet (kell) konfigurálni ,hogy mit hol jelenítsen meg ?

Friss topikok

Címkék

433mhz (12) adc (1) ads1015 (2) ads1115 (1) ajtó (1) alkatrész (23) alternatív kapcsoló (1) am2320 (1) amg8833 (1) analóg (1) android (1) apds-9960 (1) arduino (1) arduinoeasy (5) automatizálás (3) basic (2) basic r3 (1) bemenet (2) bh1750 (1) blitzwolf (2) bluetooth (8) camhi (2) csengő (1) csináld magad (22) dht22 (1) digoo (1) DIY (2) diy (25) do-it-yourself (26) domoticz (7) ds18b20 (1) ds3231 (1) easpeasy (1) ebay (3) érintő (2) érintőkapcsoló (6) érzékelő (11) esp-01 (2) esp32 (2) esp8266 (18) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) flash (1) fogyasztásmérő (3) ftdi (1) füstérzékelő (1) gesture (1) gpio (1) hang (4) hangjelző (1) hc-sr501 (1) hőmérséklet (12) htu21 (1) impulzus relé (1) izzó (1) javascript (1) jelenlétérzékelő (2) kamera (13) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (18) konnektor (4) lan (3) lángérzékelő (2) led (3) linux (3) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) mobil (1) mosfet (1) mozgás (3) mq-2 (2) mqtt (1) MQTT (1) működtető rendszer (5) nedvesség (1) neopixel (1) Node-RED (1) nvr (2) nyitás (4) okosház (5) okosizzó (2) okosotthon (9) oled (1) onvif (5) opencv (1) openwrt (3) orange pi (4) páratartalom (6) php (1) pow (1) programozás (7) projekt (22) proximity olvasó (1) python (1) raspberry (12) raspberry projekt (5) raspbian (1) rcwl-0516 (1) reed (1) relé (20) remote (2) rf (2) rgb (6) rögzítő (2) router (1) rpieasy (1) rtc (1) rtsp (1) shelly (10) shelly em (1) shutter (1) solid state relay (1) sonoff (14) sonoff dual (1) SonOTA (1) soros (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (2) szünetmentesítés (4) t1 (1) t4 (1) tasmota (2) Tasmota (1) távirányító (3) Telegram (1) termékteszt (55) termosztát (1) touch (2) ups (4) usb (5) usb hub (1) valós idejű óra (1) vezérlések (17) vezérlő (5) világítás (4) villanykapcsoló (11) webkamera (1) wiegand (1) wifi (20) ws2812 (1) xiaomi (5) xm (1) xmeye (1) yoosee (1) zigbee (4) zwave (1) Címkefelhő