RPIEasy
2019. január 02. írta: eNeS

RPIEasy

Már több mint egy éve próbálkozom ESP8266 és Raspberry alapú kütyükkel valami okosságot hozni a lakásomba. Előnye ezeknek a megoldásoknak az, hogy aránylag olcsón ki lehet hozni őket, hátránya, hogy elég sokat kell dolgozni velük, és nem kizárólag a forrasztópákával.. hanem bizony, ha azt akarjuk, hogy valami úgy működjön, ahogy elképzeltük (és ez az oka, amiért a gyári okosotthon-megoldások számomra nem igazán jöttek be), olykor magunknak kell azt leprogramozni.
Mivel a Python nyelven aránylag gyorsan lehet haladni és rengeteg példaprogram érhető el Raspberryhez is, ezért ezek alapján próbáltam az innen-onnan összevásárolt szenzorjaimat használni. Viszont az ESP8266-on megismert ESPEasy-hez hasonló megoldást nem találtam RPI-re, pedig nagyban gyorsítja a műveletet, ha nem kell minden eszközhöz egyedi programot készíteni. Fél év próbálkozás és kódolás után immár elő tudtam állítani egy olyan programot, amivel ez aránylag könnyen megvalósítható. Nem állítom, hogy mindent ismer, de a pluginok támogatása miatt sok minden bekerülhet a következő évek során. Hasonlósága az ESPEasy-hez nem a véletlen műve, sokat merítettem a nyílt forrású másából, de ez azért nem volt egyszerű másolás, aki ezt mondja, annak sejtelme sincs mi a különbség az Arduino C és a Python nyelvek között. Fejlesztés közben persze egyeztettem az ESPEasy fejlesztői csapattal is, azt kell mondjam mindenben támogatóak voltak.

Hogy ne áruljak zsákbamacskát, íme így néz ki a webes felülete akció közben:

rpi_devs.png

Látható, hogy az ESPEasy-től első körben inkább csak a színsémában üt el, ami málna-színt kapott a kék helyett. :)

De ne szaladjunk ennyire előre, hogyan tudjuk használatba venni a programot?

1. Szerzünk egy Raspberry Pi eszközt, optimális erre a célra a kis fogyasztású Raspberry Pi Zero W, de más RPI-k is megfelelőek lehetnek (félreértések elkerülése végett: nem, az Orange Pi nem kompatibilis a Raspberryvel)

2. Feltelepítjük az SD kártyájára a Raspbian Lite operációs rendszert (csak parancssoros, alaprendszer)

3. Ha sikeresen beléptünk a konzolra vagy SSH-n, vagy direkt módon az alábbi módon feltelepíthetjük előzetesen a függőségeket:

sudo apt install python3-pip screen alsa-utils wireless-tools wpasupplicant zip unzip git
sudo pip3 install jsonpickle

Amennyiben az ifconfig parancs nem települt fel alapértelmezetten, telepítsük azt is: (Linux disztribúció és verzió függő, a jelenlegi Stretch-ben még benne volt)

sudo apt install net-tools

Letöltjük, majd elindítjuk:

git clone https://github.com/enesbcs/rpieasy.git
cd rpieasy
sudo ./RPIEasy.py

A sudo parancs gondoskodik róla, hogy az RPIEasy root joggal indul, ami lehetővé teszi a rendszer minden beállításához való hozzáférést, és nem mellesleg a 80-as webes port használatát... ez első indításnál és az alapbeállítások elvégzéséig mindenképpen kell, a későbbiekben nem feltétlen muszáj így futtatni.
Bár elég sok minden nem fog működni root nélkül, pl a 80-as port helyett csak a 8080 vagy 8008-as porton tud webes felületet indítani, nem tud hardveres PWM funkciókat kezelni, hálózati beállításokat, wifi AP/jelszót módosítani, automatikus indítást, plugin függőségeket feloldani, wifit/BLE-t szkennelni, hangkártyát választani, újraindítani, leállítani... csak hogy pár fontos dolgot említsek. :)

Opcionális, de ajánlott lépés a rendszerünk frissítése, ha valami problémába futnánk a későbbiek során, akkor is ajánlott ezt elvégezni:

sudo rpi-update
sudo apt-get update
sudo apt-get upgrade

4. Beállítjuk:

No, ha a program sikeresen elindult, írja is a konzolon, hogy melyik porton tudott webes felületet nyitni, ha sikerült a 80-ason, akkor az eszköz IP címét beírva a böngészőbe az alábbi nyitóoldalt kapjuk:

rpi1.jpg

A második Config fülön beállítható az eszköz neve, sorszáma, (ESPEasy P2P hálózatban levő egyedi sorszám) valamint a Wifi jelszó, esetlegesen állíthatunk fix IP címet, ha az alap dhcpcd vagy interfaces fájlt használja a rendszerünk.

rpieasy_config.jpg

A Controllers fülön állítható be, hogy hová és hogyan továbbítsa a beállított eszközök adatait az RPIEasy. (A Domoticz HTTP/MQTT-n kívül általános MQTT és ESPEasy P2P érhető el jelenleg)

rpi2.jpg

A következő Hardware fülön érhető el az automatikus indítás, hangkártya kiválasztási lehetőségen túl több hadrverközeli egyéb beállítás is.

rpi_hw.png

Almenük:

  • Plugin&controller dependencies: megtekinthető melyik plugin használatának mik a feltételei, és ha root jogunk van, akkor egy kattintással telepíthetőek a hiányzó függőségek (sokáig tarthat, közben nincs visszajelzés!)
  • Pinout&ports: az RPI GPIO beállítások módosítása, érdemes itt kezdeni a beállításokat!
  • Scan wifi: csak root joggal megy, szkenneli az elérhető hálózatokat
  • I2C Scan: az I2C buszon válaszoló eszközök címeit listázza ki, feltétel az I2C bekapcsolása a Pinout&Ports részben, majd újraindítás!!!
  • Scan BLE: bluepy függőség telepítése és újraindítás után érhető el, root joggal

És akkor lássuk a legfontosabb, GPIO-k beállítását lehetővé tévő Pinout&Ports oldalt:

rpi_pinout.jpg

A felül látható, 2x20 tűs kiosztás vizuálisabb típusúak számára egyértelművé teszi, hogy melyik tű melyik, feltéve, hogy megtalálják az 1-es számút, ami a bal felső a webes felületen, a valóságban meg az RPI leírásában keresendő a megoldás. :)

A szabadon használható GPIO-k mellett levő lenyitható menükben állítható a típus, INPUT/OUTPUT, ezek alfajai a lehúzó és felhúzó ellenállásokkal, amik kifejtése egy hosszasabb cikket igényelnének, amit jelenleg mellőzök. Figyelem: A lent levő "Advanced features" beállításai befolyásolhatják a fenti kiosztást, ezért érdemes előbb lent kezdeni, és ha pl kikapcsoljuk az UART-ot, SPI-t, integrált audiót, akkor nyerhetünk pár használható tűt, illetve ha bekapcsoljuk, akkor elveszítjük ezeket, mivel ezek használatához a rendszer lefoglal bizonyos dedikált pineket.

A Submit gomb megnyomásával menthetőek el a beállítások a rendszer /boot/config.txt-be, ami ÚJRAINDÍTÁST követően fog érvénybe lépni. A GPU/videomemóriát headless rendszerben nyugodtan le lehet venni 16MB-ig, hogy több maradjon az operációs rendszer számára, de ha használunk kijelzőt, akkor minimum 64MB-t, vagy 128MB-t hagyjunk, ha valami kijelző gyorsítási funkciókat is szeretnénk használni. Ha Wifin kapcsolódunk, akkor az internal wifit ne kapcsoljuk ki... Ha soros/UART csatlakozást szeretnénk használni, a Bluetooth kikapcsolása sokat segíthet.

UPDATE: Előfordulhat, hogy a /boot partíció csak olvasható (ro), vagy csak a memóriában lett csatolva (tmpfs). Ebben az esetben ezt a fenti beállítás idejére meg kell szüntetnünk, vagy kézzel beállítani a config.txt tartalmát..

A Devices fül a cikk legelején látható, az EDIT gombra kattintva tudunk új eszközöket felvenni, eszköztől függő beállításoktól. Az Interval-nál adható meg, hány másodpercenként továbbítsa az adatokat.
Tipp: érdemes először a megfelelő Controllert beállítani, mert eszközönként kell megadni pl a Domoticz IDX-et és hogy forgalmaz-e az adott eszköz az adott Controller-en.
A jelenleg támogatott eszközök listája:

 

A Rules fülön adhatóak meg egyszerű szabályok, amiket a beérkező események (pl mozgás) hatására vagy időzítésre végrehajt. Nagyrészt az ESPEasy szabályrendszer használható.

rpi_rules.jpg

A Tools menüpont alatt érhető el pár hasznos rendszerfunkció, ebből első körben a "Files" pontot emelném ki, amiben lehetőség van fájlokat feltölteni, illetve letölteni (egyesével) az RPIEasy könyvtárában levő files/ mappa alá. (a felugró ablakok engedélyezése nem árthat ennek működésre bírásához)

rpi_tools.jpg

 

Természetesen mint minden program, ez sem hibátlan, ha ilyet talál valaki a github-on kérem jelezze egy issue-ban, megpróbálom orvosolni, hisz én is használom, nekem sem jó, ha rejtett hibák maradnak a programban. Ha új eszköz támogatását kéri valaki, amivel én nem rendelkezem, akkor küldjön egyet belőle és mindent megteszek az ügy érdekében.. vagy ott a Donate gomb a github oldal alján. :)

Egyébként sok sikert az RPI DIY kütyük készítéséhez!

Extra infó:

Az igazsághoz tartozik, hogy nemcsak Raspberry Raspbian, hanem PC alapú  Debian/Ubuntu rendszereken is működésre lehet bírni, természetesen GPIO nélkül, de az alap rendszerinformációs, USB, BLE és hangeszközök valamint a kontrollerek ettől függően használhatóak. Windows-al nem teszteltem, feltehetőleg nem megy, és nem is fog.

A bejegyzés trackback címe:

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