2. díl - OpenHAB na Raspberry Pi
Srdcem našeho řešení je otevřený projekt OpenHAB, který běží v našem případě na desce Raspberry Pi (dále jen RPi). V tomto článku si připravíme krok po kroku image, spustíme OpenHAB a nastavíme základní služby. Tímto dostaneme stabilní základ ať už budeme používat drátové senzory, relé nebo bezdrátový standard jako Z-Wave atd.
Raspberry Pi používáme jako centrální jednotku systému Pi-Home. Je to jedno z nejpopulárnějších mini PC, výkonově bohatě dostačující pro naší aplikaci s odběrem ~ 5W. Díky jeho příznivé ceně a miniaturním rozměrům je doporučováno jej v rozvaděči zdvojit do zálohy.
Co budeme potřebovat:
RPi 4 B 2GB nebo vyšší (volitelně case / DIN držák)
alespoň 64 GB SSD flash disk (v testovacím provozu lze nahradit kvalitnější microSD kartou alespoň 16 GB)
USB HUB s externím napájenim (alespoň 25W) nebo USB adaptér
Napájení a propojení
Raspberry Pi je pro tuto aplikaci ideální napájet přímo z USB hubu s externím napájením. USB port Raspberry Pi může být také propojen do USB rozbočovače pro komunikaci s deskami Arduino Mega viz schéma zapojení. Veškerá komunikace s okolím je pak provaděna prostředníctvím sítě LAN.
Software
V našich projektech používámé open source software OpenHAB 3 na deskách Raspberry Pi 4B. Níže naleznete podrobný postup jak si OpenHAB zprovoznit na svém RPi.
1) Stáhněte si program Pi Imager dostupný pro Linux, Mac i Windows.
https://www.raspberrypi.com/software/
2) PřipojtemicroSD kartu nebo SSD disk pro OpenHAB do počítače. Spusťte Pi Imager. Vyberte OS:
zvolte Other specific-purpose OS -> Home Assistant and home automation -> openHAB -> vyberte 32bit variantu.
V bodě Choose Storage vyberte vaši microSD kartu nebo SSD disk a dejte Write!
Pozor: Přijdete o všechna data na vybraném zařízení. Budťe opatrní, aby jste nepřepsali nějaký jiný disk, doporučuji veškeré ostatní externí disky odpojit a dvakrát zkontrolovat!!!
3) Zapojte microSD kartu nebo SSD disk s OpenHAB, ethernetový kabel a USB napájení do desky Raspberry Pi. Když RPi připojíte k monitoru/TV přes HDMI, uvidíte jenom příkazový řádek. Pokud máte ale zapojený ethernetový kabel, váš OpenHAB dostal nejspíš adresu od DHCP routeru. Připojte se ke svému routeru a podívejte se do seznamu připojených zařízení, jakou IP má zařízení s hostname "openHABianPi". U mě je to dejme tomu 192.168.4.30. Počkejte cca 30 minut, stahují se potřebné balíky a konfiguruje se first boot.
Tip: V síti kam přípojíte openhabian pro první nastavení musí být k dispozici internet, jinak se může stát, že first boot nedoběhne
Po skončení zadejte do prohlížeče adresu vašeho OpenHAB (nahraďte ale adresu níže tou svou)
Vytvořte nového uživatele a zadejte heslo:
Vyplňte regionální nastavení, můžete z mapy vybrat lokaci a nainstalujte základní rozšíření. Pro začátek budeme potřebovat těchto 7 Addonů viz níže (klikněte pro zvětšení):
Po instalaci přejděte do Settings->Things a vytvořte nový Thing ikonou + vpravo dole. Zvolte typ MQTT Binding->MQTT Broker. Vyplňte libovolné UID a jako adresu serveru zadejte localhost. Potvrďte pomoci tlačítka Create Thing úplně dole.
Co ještě budeme potřebovat? Umět SSH přístup
Použijte SSH k přístupu k vašemu RPi. Toto budete používat při každém vývoji/zásahu/ladění, takže si SSH osvojte. Možná je nejvyšší čas seznámit se pro neznalé s terminálem (přikazový řádek v Linuxu), například v Průvodce příkazovým řádkem pro začátečníky v Linuxu. Vypadá to děsivě, ale je to ta nejkrásnější věc na Linuxu. Prostě funguje vždy a všude a vždy stejně.
Pro Windows 10 uživatele už existuje SSH podpora zabudovaná přes shell. Pro ostatní Windows uživatelé doporučuji Putty. Pro ty, co mají Linux, nemusím dál nic psát. Připojíme se přes SSH příkazem do terminálu. Pozor: IP adresu níže nahraďte tou svou z routeru pro openHABianPi.
Login: openhabian, Pass: openhabian
ssh openhabian@192.168.4.30
Po přihlášení zadejte příkaz
sudo openhabian-config
Zde provedeme základní nastavení. V System Settings můžete změnit hostname (název openhabu v síti) a případně změnit čas, umístnění nebo rozložení klávesnice ale hlavně změňte výchozí heslo pro všechny služby z openhabian na svoje heslo, které ideálně nepoužívate na internetu a bude sloužit primárně pro smarthome. Heslo změníte v položce Change passwords.
V Optional Components je důležitá část a to nainstalovat službu Mosquitto. Během instalace se vás to zeptá na heslo k MQTT Brokeru. Výchozí užviatel je openhabian zvolte si vlastní heslo, které bude chránit přenášení dat od senzorů a k relé!
Pro ARDUINO
Pokud chcete používat Arduino a nahrávat do něj sketche přímo z Raspberry Pi, nezaobejdete se bez balíka arduino. Na RPi, kde nám běží OpenHAB se přihlaste přes SSH a nainstalujte utilitu schopnou uploadovat sketche do Arduina. Dalším příkazem přidejte uživatele openhabian do skupiny dialout:
sudo apt-get install arduino-core arduino-mk
sudo usermod -a -G dialout openhabian
V základu je OpenHAB přístupný přes Sambu tedy po sítí. Stačí vepsat do File Exploreru cestu např. \\192.168.4.30\ nebo v linuxu smb://192.168.4.30/ Dostanete se tak vzdáleně na své RPi kde v domovském adresáři /home/openhabian/ pro lepší přehlednost vytvořte adresáře se specifickým označením dané desky Arduino, například adresáře Ard0, Ard1, Ard2, atd. dle potřeby. Do těchto složek pak vždy nakopírujte makefile a sketch z příkladů ať už se jedná o ovládaní relé nebo sběr dat ze senzorů, viz další články.
Makefile - obsahuje informace o typu desky, použitých knihovnách a cestu v /dev/serial, nemá žadnou příponu je to obýčejný textový soubor
Sketch - soubor s příponou .ino obsahující vlastní program
Vaše složka pro Ard0 může vypadat nějak takto:
otevřete si zase terminál a v terminálu přejděte do dané složky, níže např. složka Ard0
a v tomto adresáři spusťte příkaz:
sudo make upload
vytvoří se složka build-xxy a sketch se nahraje do příslušného Arduina. Nezapomínejte na knihovny. Každý sketch může mít nějaké jiné. Jsou definováné v makefilu. Pokud potřebujete nějaké další knihovny pro Arduino, stáhněte je do složky /usr/share/arduino/libraries/ na vašem RPi.
Tip: Přidejte si složky /home/openhabian a /usr/share/arduino/libraries/ do Samby, aby je bylo možné sdílet a lehce nahrávat nové knihovny a sketche do RPi. Sdílené složky přidáte vložením následujících bloků do konfiguračního soubory Samby na vašem RPi. Připojte se přes SSH a spusťte:
sudo nano /etc/samba/smb.conf
a na konec souboru pak přidejte:
[home]
comment=home folder
path = /home/openhabian
writeable=yes
create mask=0664
directory mask=0775
public=no
veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/._*/
delete veto files = yes
[libraries]
comment=lib folder
path = /usr/share/arduino/libraries
writeable=yes
create mask=0664
directory mask=0775
public=no
veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/._*/
delete veto files = yes
uložte stisknutím kláves CTRL+O a Enter. Restartujte RPi.
Pro vysvětlení:
Samba
Co je Samba si můžete přečíst například zde. Samba je v openhabianu již defaultně zapnutá, jednoduše s ní můžete po síti sdílet soubory s Windows, PiKodi, PiNAS a dalšími zařízeními. Podporuje také autentifikaci a šifrování, ale do internetu bych Sambu nepublikoval. Ve vnitřní síti je ideální. Ve Windows File Exploreru pak stačí zadat \\192.168.4.30\ a uvidíte nasdílené složky z OpenHAB. Autentifikace pomocí defaultních login/pass.
Mosquitto
Protokol MQTT (zatím 3.1.1) použijeme pro komunikaci mezi Arduinem a OpenHAB. Později i s dalšími zařízeními. Přes MQTT komunikuje obrovská hromada věcí a vy pak pouze v OpenHAB odposlechnete hodnoty a vykonáte nějakou akci, nebo to nějak zobrazíte, uložíte do grafu atp. MQTT se v praxi používá pro několik málo klientů (například domácí automatizace) až po průmyslové použití (tisíce klientů).
V tomto kroku máme nainstalovaný a zprovozněný OpenHAB. Pokud si vytvoříte zálohu SSD disku/SD karty a dáte jej do druhého RPi, máte postaráno o robustní zálohu. Nezapomeňte vždy průbežně zálohovat SSD disk!