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.

Pi-Home - schéma zapojení OpenHAB

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:

PiHome - Pi Imager

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)

http://192.168.4.30:8080

 

Vytvořte nového uživatele a zadejte heslo:

OpenHAB 3 - First Login​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í):

OpenHAB - Bindings

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.

OpenHAB - MQTT Broker Settings

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.

 

Pi-Home - nastavení OpenHAB

 

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é!

Pi-Home - nastavení OpenHAB - MQTT

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

 

Nahrávání skecthů Arduina z Raspberry Pi

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!

 

Komentáře

Your profile picture

Dobrý den, nevidím home folder ve Windows, vidím jen openHAB-addons, openHAB-conf, openHAB-sys a openHAB-userdata. Nemáte tip co dělám špatně? Díky

Your profile picture

Dobrý den,

přidal jste složky /home/openhabian a /usr/share/arduino/libraries/ viz návod ke konci do Samby?

.......

Tip: Přidejte si složky /home/openhabian a   /usr/share/arduino/libraries/ do Samby.....

.....

Pokud ano zkuste ještě restart. Pak by se ty složky měli objevit také. Pokud nejsou vidět je chyba někde v konfiguráku samby.

Your profile picture

Díky moc - funguje. Ten Tip jsem přehlídl.

Your profile picture

Co mi teda ještě vrtá hlavou, proč se přes Windows dostanu v pohodě do všech složek (včetně home), ale jediná lib mě nepustí - přístup odepřen, nestalo se vám? Díky

Your profile picture

V tom případě mohou být ještě práva složky libraries. Připojte se přes SSH a zkontrolujte práva složky:

cd /usr/share/arduino

ls -al

změnil bych pak klidně na 775 nebo i vyšší

sudo chmod -R 775 libraries

Your profile picture

Zdravím. Skvělý článek, ale pro začátečníky chybí spousta detailů, které už znalý openHabiaňák bere automaticky. Chtěl bych dát do složky Ard0 soubor makefile a sketch. U sketche je uvedená přípona souboru .ino. Ale v jakém formátu má být makefile?

Díky za pomoc.

Martin

Your profile picture

Zdravím Martine,

makefile nemá žádnou příponu. Upravím a doplním v návodu aby to bylo jasnější.

Díky!

Your profile picture

Taky jsem vytvořil obě složky pro potřeby Arduina podle tipu, tj otevřel jsem konfigurační soubor samby a vepsal kód pro složky home a lib. Do složky home se pomocí průzkumníka dostanu, vytvořím další podsložky, ale do složky lib ne. Co mám špatně?

Your profile picture

Ještě může být problém v právech. Zkus nastavit neomezené práva čtení/zápisu pro složku /usr/share/arduino/libraries/:

sudo chmod -R 777 /usr/share/arduino/libraries

Your profile picture

Dobrý den, je nějaký konkrétní důvod, proč volit 32bit verzi a ne 64bit? Děkuji za informaci.

Your profile picture

Dobry den,

64-bit byla dlouho beta. Aktualne dle:

https://www.openhab.org/docs/installation/openhabian.html

je uvedeno:

"Choose the 32bit version, it's more efficient !!" Takze davam na toto doporuceni ;)

Your profile picture

Ahoj, díky za skvělý web! Kdysi jsem si s Arduino hrál a teď, když to začínám řešit, protože mám za sebou hrubou stavbu, oprášil jsem desky, dokoupil Raspberry a nějaký shieldy a s nadšením se pustil do toho.Nicméně mám problém rozchodit komunikaci přes MQTT.Snažím se zatím jen číst data ze senzorů a vlastně si tak trochu vyzkoušet, jestli to zvládnu. Cílem totiž je neuvazovat se na nikoho a prostě si to celé spravovat sám. Jen překonat ty prvotní bolesti.. 
Problém 1: Není asi úplně správné, že nevidím v nastavení routeru i připojené jedno AMega?Problém 2: Při nastavení MQTT brokera v OpenHab mi to vyhazuje rovnou Error - je někde nějaký log, kam se mohu na tu konkrétní chybu podívat?
Díky za super práci. Sice bych si to chtěl udělat sám, ale když se mi to povede, rád se nějakým způsobem revanšuji - minimálně nákupem komponent přes tebe.
Honza

Your profile picture

Zdravím Honzo,

určitě se to zvládnout dá, někdy se člověk zasekne, kdyžtak poradí Google nebo ChatGPT.

ad1) Pokud ma Arduino Mega statickou IP tak ho router ani videt nemusi (teda nebude v DHCP adresach). Zkus jej jednoduse pingnout, pokud vraci ping komunikuje

ad2) Logy jsou v linuxovem svete ve /var/log adresari na Raspberry Pi. Přes SSH se tam dosatneš. Jako první, ověř si, že ti běží mosquitto služba:

Budu dávat k dispozici celý image pro Raspberry Pi s nakonfiguravným demem včetně Arduino knihoven, MQTT atp. Napiš mi přes kontaktní formulář a pošlu ti odkaz na cely image, hodiš na SD kartu a stačí upravit demo, třeba to bude snadnější pro začátek. Michal

Your profile picture

Dík moc za rychlou odpověď. Nakonec jsem to vygooglil, zřejmě něco mezi nebem a zemí. Víceméně jsem udělal to, co píšeš v návodu, jen namísto instalace MQTT přes sudo openhabian-config jsem instalaci provedl přes příkazy, co jsem našel zde:
https://community.openhab.org/t/oh3-mqtt-setup-and-configuration/111494
po úpravě souboru mosquitto.conf jsem se vrátil k tvému návodu a vše prošlo.Dávám tedy sem jako tip, pokud by měl někdo další obdobný problém, na kterém se zbytečně na pár hodin zasekl.
Teď už jen prokopnout ten Ethernet Shield - zatím se mi nedaří Arduino ani pingnout. Shieldy mám dva, pokaždé je to stejné a nejdou mi ani Examples... Arduino nicméně funguje standardně. Tak asi zase něco mezi nebem a zemím :-)

Přidat komentář

Nejlepší články z blogu

Linux Live Distribution Persistent USB
Vytvoření Persistent Live USBHodnocení: 
20%

Jak si vyzkoušet Linux? Přímo na vašem notebooku nebo počítači nabootováním z USB flash disku, nebo ještě lépe z externího SSD. Pokud se vám to zalíbí, v tomto návodu naleznete postup, jak vytvořit persistentní live distribuci, což znamená, že všechny změny, které v Linuxu uložíte, tam zůstanou. Můžete si tedy nainstalovat aplikace, ukládat dokumenty atd. Prostě takový přenositelný Linux v kapse, který lze spustit na jakémkoliv podporovaném počítači nebo notebooku.

SmartHome WhatsApp notifikace OpenHAB, Home Assistant
WhatsApp - notifikace zdarmaHodnocení: 
0%

Rádi byste dostávali notifikace z chytré domácnosti formou zpráv do WhatsApp messengeru? Ačkoliv z tohoto messengeru nejsme nadšení, mnoho lidí jej používá a je zbytečné instalovat jiný pouze kvůli chytrému domu. Pro daný kontakt je pak možné nastavit specifické zvonění, takže budete hned vědět, že zpráva přišla z vašeho domu. Našli jsme možnost, jak toto využívat bez poplatku. Jmenuje se CallMeBot...

Tailscale - VPN bez veřejné IP
Tailscale - přístup bez veřejné IP adresyHodnocení: 
100%

Služba Tailscale řeší přístup mezi jednotlivými zařízeními, pokud nemáte možnost veřejné IP adresy. Pro jednoho uživatele je zdarma s podporou max 100 zařízení. Ukážeme si jak Tailscale nainstalovat na Raspberry Pi, které budeme mít někde doma a do klienta (Android, iPhone) ze kterého budeme chtít přistupovat k domácímu Raspberry Pi. Náším příkladem bude vzdálený přístup k OpenHAB běžícím na Raspberry Pi. Nicméně stejné nastavení platí pro spoustu jiných aplikací - domácí NAS, PiHole, Home Assistant, Domoticz, NextCloud a jiné.

Shelly MQTT implementace
Shelly a OpenHABHodnocení: 
100%

Značka Shelly je známa svými produkty komunikujicími hlavně přes WiFi a zahrnujicími ovládané zásuvky, relé pod vypínače, relé pro ovládaní žaluzíí a mnoho dalších produktů. Jedna z výhod pro nasazení je možnost načítat a taky ovládat tyto zařízení pomocí univerzálního protokolu MQTT. Napříč existujícímu addonu pro OpenHAB i Home Assistant si ukážeme jak používat Shelly zařízení bez instalace jakéhokoliv rozšíření.

Victron & OpenHAB
Victron a chytrý důmHodnocení: 
100%

V tomto příspěvku si ukážeme jak načítat informace z fotovoltaické elektrárny od firmy Victron. Propojíme se s jednotkou Cerbo přes MQTT. Na základě těchto hodnot pak můžeme spínat různé spotřebiče (topení, bojler atp.) a předejít plýtvání baterie pro velké spotřebiče v době, kdy nemusí běžet atp.

GoodWe a chytrá domácnost
Smart Home a GoodWeHodnocení: 
100%

V příspěvku ukážeme krok po kroku jak komunikovat chytrou domácnosti přímo se střídačem Goodwe a dostávát aktuální informace (narozdíl od SEMS portálu). Tyto informace jsou nezbytné pokud chceme v chytrém domě nějak reagovat na aktuální parametry např. spínání dodatečného chlazení nebo spínání zásuvky se zátěží.

Ovládání domu hlasem
Hlasové ovládání domu AlexouHodnocení: 
100%

V tomto článku propojíme hlasového asistenta Amazon Echo Dot s open source domácí automatizací. Nepoužíváme OpenHAB Cloud, tz. vše běží lokálně. V tomto případě je nutných pár nastavení navíc, nicméně výsledek stojí za to!

NFC Tag Chytrý dům
NFC tagy v chytrém doměHodnocení: 
100%

NFC (Near Field Communication) tagy jsou malé plastové nebo papírové nálepky, které mohou být použity k automatizaci různých funkcí v domácnosti. V čláku vám ukážeme příklady použití a návod jak zapsat akci na NFC tag pomocí mobilního telefonu.

WireGuard iOS
Nastavení WireGuard připojení v iOSHodnocení: 
0%

V tomto článku najdete podrobný návod, jak se připojit k WireGuard VPN z iOS.

WireGuard z Androidu
Nastavení WireGuard připojení v AndroiduHodnocení: 
100%

V tomto článku najdete podrobný návod, jak se připojit k WireGuard VPN z Androidu.