2020. július 4., szombat

Gyorskeresés

Home Assistant telepítése és konfigurációs alapok

Írta: | Kulcsszavak: okos otthon . okosotthon . smart home . home assistant . homeassistant . xiaomi . aqara

[ ÚJ BEJEGYZÉS ]

A következő leírásban bemutatom, hogyan kell telepíteni a Home Assistant-ot Raspberry Pi-re. Utána bemutatom a Xiaomi Gateway és a gateway-hez párosított hőmérséklet érzékelő hozzáadását a rendszerhez, értékeik megjelenítését a felhasználói felületen. A felhasználói felületről kapcsolható lesz a gateway lámpája.

Eszközök:
- Raspberry Pi (nálam a Zero W verzió van, de a leírtak működnek bármely Raspberry-n. Kisebb módosításokkal az összes Linux disztribúción is működnek a parancsok)
- Xiaomi Gateway v2 (csak a v2 támogatott)
- Xiaomi Aqara hőmérséklet, pára és légnyomás szenzor (v2)

Előfeltétel:
- Raspberry Pi-n már telepítve van az operációs rendszer és be tudunk jelentkezni SSH-val
- Tudjuk a raspberry ip címét (ezt behelyettesítjük a leírásba az "ipcim" kulcsszó helyére
- Xiaomi Gateway LAN módba van kapcsolva és megvan a gateway mac címe és jelszava

Belépés a Raspberry Pi-be:
Windows alól PuTTY nevű szoftverrel, Linux és Mac OS alól Terminal segítségével:
ssh pi@ipcim

Telepítés (link):
- telepíteni kell a python3-t és egyéb szükséges python csomagokat:
sudo apt-get update
sudo apt-get install -y python3 python3-venv python3-pip

- és a Xiaomi Gateway-hez szükséges csomagokat:
sudo apt-get install -y libssl-dev libffi-dev

- biztonsági okokból ajánlott dedikált homeassistant felhasználót létrehozni
sudo useradd -rm homeassistant
cd /srv
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant
sudo su -s /bin/bash homeassistant

- létre kell hozni egy python virtuális környezetet, majd aktiválni kell
cd /srv/homeassistant
python3 -m venv .
source bin/activate

- a virtuális környezetben telepíteni kell a home assistant-ot
pip3 install homeassistant

- el kell indítani a szoftvert (első indításnál hozza létre a konfigurációs mappát. Sokáig tart az első indítás, akár 15 perc is lehet.)
hass


Telepítés kész

- a böngészőben a http://ipcim:8123 címen már lehet is látni az eredményt


Első indítás eredménye (nálam 5 szenzor van a gateway-re csatlakozva, ezért szerepel 5x néhány érték)

- Ezzel az előtérben fut a szoftver. Ha bezárod a terminal ablakot, azzal a szoftver is leáll. Kézi leállításhoz CTRL+C -t kell nyomni a terminál ablakban.

Ezzel a telepítés kész is van. Jelenleg minden bekapcsolás után kézzel kell elindítani a Home Assistant-ot a következő parancsokkal:
ssh pi@ipcim
sudo su -s /bin/bash homeassistant
cd /srv/homeassistant
source bin/activate
hass

Automatikus indítás (opcionális, de ajánlott) (link):
Érdemes az automatikus indítást megcsinálni, hogy minden bootoláskor induljon el a Home Assistant.

Első lépésként állítsuk le a futó Home Assistantot (ha még fut) és vissza kell váltani "pi" userre. (homeassistant user nem tagja a sudo csoportnak, ezért az alábbiak csak pi userrel végezhetők el). Ehhez vagy csatlakozzunk újra a raspberry-hez, vagy írjuk be:
exit

- létre kell hozni a következő fájlt:
sudo nano -w /etc/systemd/system/home-assistant@homeassistant.service

- be kell másolni az alábbit, majd elmenteni és kilépni a fájlból:

[Unit]
Description=Home Assistant
After=network.target
[Service]
Type=simple
User=%i
ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
[Install]
WantedBy=multi-user.target

nano használata: szerkesztés után CTRL+X -et nyomva kilép a fájlból. Ha volt módosítás megkérdezi, hogy akarod-e menteni a módosításokat. Y-t, majd enter-t nyomva megkérdezi a fájlnevet. Itt egy enterrel felülírja az eredeti fájlt.

- frissíteni kell a daemon listát:
sudo systemctl --system daemon-reload

- engedélyezni kell a daemon-t (bekapcsolni az automatikus indítást):
sudo systemctl enable home-assistant@homeassistant

- végül most manuálisan el kell indítani a process-t. Újraindítás után már magától indul:
sudo systemctl start home-assistant@homeassistant

Pár hasznos parancs a használathoz:
mostantól a Home Assistant a háttérben fut és automatikusan elindul bekapcsolás után. A következő parancsok hasznosak monitorozáshoz, újraindításhoz, automatikus indítás deaktiválásához:

- log-ok olvasása (érdemes egy második kapcsolatot létrehozni a pi-hez és ebben folyamatosan nézni a log-ot konfigurálás közben):
sudo journalctl -fu home-assistant@homeassistant

- home assistant újraindítása:
sudo systemctl restart home-assistant@homeassistant

- auto start kikapcsolása:
sudo systemctl disable home-assistant@homeassistant

- státusz monitorozás (fut / nem fut):
systemctl status home-assistant@homeassistant

Home Assistant konfigurálása:
A Home Assistant konfigurációs fájlok a következő mappában találhatók (első indítás után):
/home/homeassistant/.homeassistant

- belépés a mappába:
cd /home/homeassistant/.homeassistant

- fájlok kilistázása:
ls -la

- A fájlok szerkesztéséhez használhatjuk a következő parancsot pl:
sudo nano /home/homeassistant/.homeassistant/configuration.yaml

A fájlok amikre kitérek ebben a leírásban:
- configuration.yaml
- customize.yaml
- groups.yaml

És vannak még egyéb konfigurációs fájlok, amikre nem térek ki itt.

- configuration.yaml: a központi konfigurációs fájl. Mindent lehetne ebbe az egy fájlba írni, akkor is működne a program. A jobb olvashatóság miatt fel van darabolva a konfiguráció több fájlra témák szerint.

A yaml fájlnál nagyon fontos, hogy melyik sor hány space-el van behúzva. Ha eggyel több, vagy kevesebb space van a sor elején, az értelmezhetetlen konfigurációt tud eredményezni. A példák másolásánál erre nagyon figyelni kell.

Xiaomi gateway komponens hozzáadása (link):
Auto discovery miatt a Home Assitant már valószínűleg látja a Gatewayt. Ettől függetlenül szerintem érdemes kézzel is betenni a gateway konfigurációját a fájlba, és később ki is kapcsolható az auto discovery.

- A configuration.yaml fájlba a következőt kell bemásolni a fájl végére:

xiaomi_aqara:
discovery_retry: 5
gateways:
- mac: xxxxxxxxxxxx
key: xxxxxxxxxxxxxxxx

Az xxxxx értékeket a mi gateway-ünk mac címével és key-ével kell kitölteni.
Ha több gateway-t akarunk hozzáadni a rendszerhez, akkor itt még egy bejegyzést fel kell venni:

xiaomi_aqara:
discovery_retry: 5
gateways:
- mac: xxxxxxxxxxxx
key: xxxxxxxxxxxxxxxx
- mac: yyyyyyyyyyyy
key: yyyyyyyyyyyyyyyy

- újra kell indítani a Home Assistantot
sudo systemctl restart home-assistant@homeassistant

- Újraindítás után a böngészőben meg kell nyitni a grafikus felületet a http://ipcim:8123 címen.

- Nyissuk ki a bal menüt, majd alul a Developer Tools részen a < > ikonra kell kattintani. Itt megtaláljuk az összes detektált egységet (entity).

- A hőmérséklet érzékelőhöz a következő egységeket kell látni:
sensor.temperature_158d0xxxxxxxxx
sensor.humidity_158d0xxxxxxxxx
sensor.pressure_158d0xxxxxxxxx

Illetve a gateway-nek is van két egysége (fényérzékelő és világítás):
sensor.illumination_xxxxxxxxxxxxxx
light.gateway_light_xxxxxxxxxxxxxx

- Másoljuk ki ezt az 5 értéket a felhasználói felületről egy ideiglenes fájlba és használjuk fel őket a következő lépésben.

- A pi-n szerkesszük a groups.yaml fájlt:
sudo nano /home/homeassistant/.homeassistant/groups.yaml

Ez a fájl felel az elrendezésért a grafikus felületen.

- Másoljuk be a következőt (már az első sorban is van 2 space a sor elején!):

default_view:
view: yes
icon: mdi:home
entities:
- group.living_room
living_room:
name: Nappali
entities:
- sensor.temperature_158d0xxxxxxxxx
- sensor.humidity_158d0xxxxxxxxx
- sensor.pressure_158d0xxxxxxxxx
- sensor.illumination_xxxxxxxxxxxxxx
- light.gateway_light_xxxxxxxxxxxxxx

A fenti kóddal létrehoztunk egy oldalt (default_view) ami tartalmazni fog egy csoportot (living_room). A living_room csoportnak adtunk egy nevet (Nappali) és beletettük az egységeinket.

- Mentsük el a fájlt és zárjuk be. Indítsuk újra a home-assistantot (sudo systemctl restart home-assistant@homeassistant), majd reboot után már látnunk kell a hőmérő és fényérzékelő értékeit. A lámpa kapcsolójával már tudjuk kapcsolni a ledet a gateway-en.


Az egységek nevein még igazítani kell

Az egységek nevei még nem túl beszédesek, ehhez szerkesszük a következő fájlt:
sudo nano /home/homeassistant/.homeassistant/customize.yaml

Másoljuk be a következőt:

sensor.temperature_158d0xxxxxxxxx:
friendly_name: Nappali homerseklet
sensor.humidity_158d0xxxxxxxxx:
friendly_name: Nappali paratartalom
sensor.pressure_158d0xxxxxxxxx:
friendly_name: Nappali legnyomas
light.gateway_light_xxxxxxxxxxxxxx:
friendly_name: Nappali Gateway led
sensor.illumination_xxxxxxxxxxxxxx:
friendly_name: Nappali fenyero

- Mentsünk, indítsuk újra a Home Assistant-ot, és ezzel a felhasználói felületen is a fent megadott nevekkel látjuk az egységeket.


A végeredmény. A hőmérsékletre kattintva a múltbeli értékekek is láthatók.

Logbook és grafikonok:
az adatgyűjtés automatikusan be van kapcsolva és aktív. A felhasználói felületen rá lehet kattintani az egység nevére (pl. hőmérsékletre), ekkor egy popup ablakban a múltbeli hőmérséklet értékekek is leolvashatók egy grafikonról.

Másik lehetőség a histórikus adatok kinyerésére a bal menüt előhozva a Logbook és History menüpontok segítségével lehetséges.

A Logbook-ban a log-ok (események és állapotváltások) láthatók.
A History menüpont alatt pedig minden egység (összevont) grafikonját (azonos mértékegységű eszközök egy grafikonon. Értsd: minden hőmérséklet értéket egy grafikonra rajzol, ha több hőmérő is van).
Illetve állapotváltások időpontja is ábrázolva van.

Ezzel a leírással ennyit szerettem volna bemutatni. A rendszer bővítéséhez és finomhangolásához a hivatalos dokumentációt érdemeny olvasni, hogy az adott új eszközhöz milyen konfigurációt szükséges elvégezni.

Ha van igény egy második részre, akkor abban kitérhetek a következő témákra:
- "Logbook" és "History" beállítása (sok egység esetén nagyon zsúfolttá válik)
- saját grafikonok létrehozása a főképernyőn
- további tab-ok és csoportok létrehozása a főképernyőn
- jelzés megjelenítése a felhasználói felületen, ha merül az elem a hőmérőben
- jelzés küldése mobil telefonra is
- automatikus éjjeli fény készítése a gateway fényérzékelője és led-je segítségével
- vagy jöhetnek javaslatok és kérdések is, amiket megpróbálok megvalósítani/megválaszolni és bemutatni a megoldást

Módosítások a leírásban:
- 2017.11.06: az első verzió óta megjelent Home Assistant 0.57.2 új csomagokat követel a működéshez. A telepítés szekció frissítve az új csomagokkal.
- 2017.11.02: első publikált verzió (tesztelve a Home Assistant 0.56.2 -vel)

Hozzászólások

(#1) Nitrotitó


Nitrotitó
(csendes tag)

Köszönöm! :C :R
Nagyon jó cikk! Ez alapján sikerült végre életet lehelnem a Home Assistant-be.
Bár mivel teljesen kezdő vagyok, rengeteg dolog van, amit meg kell még tanulnom.
Valamikor megjönnek nekem is a xiaomi cuccok és akkor biztos fogok szenvedni, de remélem sikerül.
Jöhet a második rész! :))

Ha valamit nem akarok megvenni, nem írok!

(#2) hoodoo86 válasza Nitrotitó (#1) üzenetére


hoodoo86
(tag)

köszi a visszajelzést, örülök, hogy sikerült a telepítés! Lesz második rész, még gyűjtöm az ötleteket hozzá ahogy én is ismerkedek meg a rendszerrel.

(#3) toth_janika


toth_janika
(őstag)

Meg kell találnom ezt a bejegyzést! Isteni leírás, és nagyon elgondolkodtam, hogy én is megcsináljam. Remélem lesz 2. rész.

Flickr - http://www.flickr.com/photos/toth_janos/

(#4) lory256


lory256
(csendes tag)

Ez simma raspbian rendszerre? Mert nekem azon sehogy se sikerul mukodesre birni a gatewayt, mind hibat ad (The following components and platforms could not be set up: xiaomi-aqara)
Viszont raspbian lite-al tokeletesen mukodik, de szerettem volna ha a normal raspbian verzioval menjen.

(#5) hoodoo86 válasza lory256 (#4) üzenetére


hoodoo86
(tag)

Valóban lite verziót használtam a leírás készítésekor, de most kipróbáltam 0-ról egy teljes (Raspbian Stretch with desktop) verzióval is. Működött nálam a telepítés hiba nélkül mindkét verzión.

Nem felejtetted el a xiaomi-hoz szükséges csomagokat feltelepíteni?

(#6) Spuri2000


Spuri2000
(senior tag)

MySensorok konfigurálása is jöhet.

(#7) hoodoo86 válasza Spuri2000 (#6) üzenetére


hoodoo86
(tag)

Mysensors-ban nincs tapasztalatom. Dobd be a kerest a Smart home topikba, hatha lesz valaki, aki megcsinalja.

További hozzászólások megtekintése...
Copyright © 2000-2020 PROHARDVER Informatikai Kft.