Hlavní navigace

Spuštění openHAB serveru na routeru Turris

Jiří Pech 10. 8. 2015

Inteligentní dům a internet věcí jsou dva moderní a často skloňované buzzwordy. Jedním z nástrojů pro jejich ovládání je i open source a svobodný projekt openHAB. Minule jsme si openHAB nainstalovali jej na malý počítač Raspberry Pi. V této části si ukážeme, jak tento server spustit na routeru Turris.

Úvodní informace

Operačním systémem použitým na routeru Turris je OpenWrt, což je distribuce Linuxu. Turris lze nastavit, tak, že je možné se k tomuto prostředí přihlásit pomocí SSH do příkazové řádky a tam získat práva roota. Proto vás jistě napadne, že je možné nainstalovat openHAB nativně na Turris.

Zde se však dostaví poměrně rychle zklamání. Pro běh openHABu jak jsme si minule řekli, je nutné mít v systému nainstalovanou podporu pro Javu. Použitým OS, jak bylo řečeno, je sice OpenWrt, ale na platformě PPCSPE – PowerPC SPE (Signal Processing Engine). Pro OpenWrt se sice na internetu dá najít několik návodů pro instalaci Javy, ale žádný z nich mi nefunguje pro tuto platformu.

Navíc si jistě budete přát ponechat základní systém Turrisu pokud možno nedotčený, proto systém nainstalujeme na SD kartu a použijeme chroot. Jako vhodný operační systém v chrootu použijeme Debian. Instalace do chrootu pomocí debootstrap je pro Debian poměrně dobře zdokumentována a současně existuje verze Debianu pro platformu PPCSPE.

Budeme potřebovat jednu microSD kartu o minimální velikosti 4 GB, na které bude umístěn Debian. Dále doporučuji jeden USB flash disk, také nejlépe alespoň 4 GB. Ten využijeme pro přenos připraveného Debianu na Turris, abychom nemuseli, v případě neúspěšných pokusů, kartu z Turrisu opakovaně vyjímat a vkládat. Dále je nutné si na Turrisu připravit pomocí webového administračního rozhraní přístup pomocí SSH pro roota, samozřejmě pouze ze zabezpečené části sítě.

Instalace Debianu

Debian nainstalujeme, jak jsme si již řekli, na SD kartu a ponecháme tak původní filesystém Turrisu nedotčený. Tuto kartu je možné do systému přidat po sejmutí vrchního krytu tak, jak je popsáno na stránkách výrobce. Co je zde však minimálně matoucí, je skutečnost, že se všude píše o SD kartě, ve skutečnosti je ale nutná microSD karta. Tato je po vložení a startu Turrisu v systému přístupná jako /dev/mmcblk0 a první oddíl na ní jako  /dev/mmcblk0p1.

Máme.li kartu vloženou, můžeme přistoupit k instalaci Debianu. Výchozí informace pro instalaci najdeme na výše uvedených odkazech. Pro přípravu struktury Debianu do chrootu je třeba jiný systém založený na Debianu. Doporučuji buď jiný Debian nebo Ubuntu 14.04, které jsem s úspěchem použil. Je jedno, zda se jedná o 32 nebo 64 bitový systém, instalujeme stejně zcela odlišnou architekturu. Do tohoto počítače nainstalujeme potřebné programy:

apt-get install binutils debootstrap

Je možné použít i „nedebianí“ distribuci, ale musíme pak nainstalovat debootstrap ze zdrojového kódu.

Dále pak vytvoříme na vhodném místě adresář debian a přejdeme do něj:

mkdir debian
cd debian

Nyní spustíme debootstrap následujícím příkazem a chvíli počkáme:

debootstrap --foreign --no-check-gpg --arch powerpcspe unstable . http://antcom.de/powerpcspe/

Po skončení příkazu pak výsledek zabalíme do archivu:

cd ..
tar cvzf debian.tgz debian

Vytvořený soubor debian.tgz, nyní musíme nějak překopírovat na Turris, nejlépe pomocí USB disku. Je možné samozřejmě instalovat debootstrap adresář přímo na microSD kartu, ale nedoporučuji to, v případě, že něco pokazíme, musíme microSD kartu opět z Turrisu vyjmout a znovu na ní instalovat atd. Přímé kopírování souboru debian.tgz na Turris možné není, na Turrisu pro něj není dostatek volného prostoru. Soubor debian.tgz si někde dobře uschováme, v případě potíží jej nemusíme znovu vytvářet.

Od této chvíle veškerá další činnost bude probíhat na Turrisu, kde je třeba být přihlášen přes ssh s právy roota. Nyní si připravíme microSD kartu vloženou do Turrisu (pokud jsme to již neudělali dříve). Tato karta je systémem detekována jako zařízení /dev/mmcblk0 a její první oddíl jako /dev/mmcblk0p1. Kartu naformátujeme nejlépe systémem extended2, aby práce s ní byla rychlá a nedocházelo k rychlému opotřebení při práci se journálem:

mke2fs /dev/mmcblk0p1

Vytvoříme si přípojný bod a kartu do něj připojíme:

mkdir /mnt/debian
mount /dev/mmcblk0p1 /mnt/debian

Nyní si připojíme i USB disk, který by měl být systémem rozpoznán jako /dev/sda. Vytvoříme si přípojný bod a připojíme USB disk a ověříme existující připojené disky:

mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1
df -h

Měli bychom vidět něco jako:

Filesystem                Size      Used Available Use% Mounted on
rootfs                  249.0M     72.1M    176.9M  29% /
/dev/root               249.0M     72.1M    176.9M  29% /
tmpfs                  1013.8M      2.0M   1011.8M   0% /tmp
tmpfs                   512.0K      4.0K    508.0K   1% /dev
/dev/mmcblk0p1          14.5G      2.9G     10.9G  21% /mnt/debian
tmpfs             512.0K      4.0K    508.0K   1% /mnt/debian/dev
/dev/sda1               3.7G      1.0G      2.5G  29% /mnt/sda1

Samozřejmě v tomto okamžiku máme (na rozdíl od tohoto výpisu) disk připojený na /mnt/debian ještě prázdný. Nyní již rozbalíme připravený archiv:

cd /mnt/debian
tar xzvf /mnt/sda1/debian.tgz

Nyní již je čas chrootnout se do nového debianu. Pro spuštění a vypnutí debianu si můžeme připravit následující skripty, které nám ušetří spousty přepisování. Pro start debianu skript debinit.sh, pro vstup do již běžícího debianu debian.sh a pro vypnutí debianu debout.sh. Pak stačí pro požadovanou činnost pouze spustit odpovídající skript. Tyto skripty umístíme do /usr/bin (Turris nemá adresář /usr/local) a nastavíme jim práva pro spuštění např: chmod a+x /usr/bin/debinit.sh, Zdrojové kódy skriptů jsou následující

debinit.sh:
#!/bin/bash
mount /dev/mmcblk0p1 /mnt/debian -t ext4 # nebo ext2
mount -o bind /dev /mnt/debian/dev
mount -o bind /proc /mnt/debian/proc
mount -o bind /sys /mnt/debian/sys
mount --bind /dev/pts /mnt/debian/dev/pts
cp /etc/resolv.conf /mnt/debian/etc/
cp /etc/hosts /mnt/debian/etc/
chroot /mnt/debian/ /bin/bash

debout.sh:
#!/bin/bash
umount /mnt/debian/dev/pts -l
umount /mnt/debian/dev -l
umount /mnt/debian/sys -l
umount /mnt/debian/proc -l
umount /mnt/debian -l

debian.sh
#!/bin/bash
chroot /mnt/debian/ /bin/bash

Nastavení debianu na Turrisu

Nyní již můžeme přejít do Debianu pomocí našeho skriptu debinit.sh. To že jsme na správném místě se přesvědčíme příkazem cat /etc/issue který by měl dát odpověď typu Debian GNU/Linux 8 \n \l. Nyní je čas upravit instalační zdroje v souboru /etc/apt/sources.list pomocí oblíbeného editoru na:

deb http://ftp.de.debian.org/debian-ports unstable main
deb http://ftp.de.debian.org/debian-ports experimental main
deb http://ftp.de.debian.org/debian-ports unreleased main

Než přistoupíme k aktualizaci systému musíme napravit jednu nepříjemnou věc. Nové balíky libc6 a libc6-dev pro Debian PPCSPE jsou rozbité a jejich instalací uvedeme systém do nepoužitelného stavu. Je nutné zakázat jejich instalaci:

echo "libc6-dev hold" | dpkg --set-selections
echo "libc6 hold" | dpkg --set-selections

a teprve nyní můžeme přistoupit k aktualizaci:

apt-get update
apt-cache gencaches
apt-get upgrade
apt-get dist-upgrade

a k instalaci dalších balíků. Je možné, že kvůli závislosti na nových verzích libc6 se některé balíky nainstalovat nepodaří, ale vhodným střídáním ap-get a aptitude se dá dosáhnout hodně. Čas od času je nutné sáhnout i po typu apt-get install -f. Po prvním apt-get update pravděpodobně obdržíme zprávu o chybějícím klíči, která se bude opakovat:

W: GPG error: ftp://ftp.debian.org/ testing Release:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A53AB45AC448326E

Pro její odstranění provedeme následující kroky:

gpg --keyserver pgpkeys.mit.edu --recv-key A53AB45AC448326E
gpg -a --export A53AB45AC448326E | apt-key add -

Z Debianu zpět do Turrisu se v případě potřeby odhlásíme příkazem exit anebo klávesovou zkratkou Ctrl+D. Do Debianu se naopak vrátíme pomocí připraveného skriptu debian.sh. Jsme-li v Turrisu a chceme odpojit všechny zdroje, které Debian používá použijeme skript  debout.sh.

Instalace OpenHab

Předpokládejme, že jsme nyní přihlášení v Debianu na Turrisu. Pro správnou funkci OpenHabu ještě potřebujeme nainstalovanou javu. K dispozici máme openjdk ve verzích 6, 7 i 8. Použijme například verzi 7:

apt-get install openjdk-7-jdk openjdk-7-jre

Po úspěšné instalaci, již můžeme nainstalovat a rozběhnout OpenHab. Tentokrát nemáme k dispozici balíčky z distribuce jako ne Raspberry Pi a proto budeme postupovat dle stránek pro manuální instalaci. Budeme jak je doporučeno instalovat do adresáře /opt/openhab. Samotná instalace spočívá pouze v postupném rozbalení potřebných součástí, přičemž povinný je pouze balík openhab-runtime. Samotné spuštění openHABu je pak pomocí skriptu  /opt/openhab/start.sh.

Pozor v nových verzích Turrisu je defaultní port 8080 použit jako alternativní pro zobrazení webového konfiguračního rozhraní, proto změníme v již zmíněném souboru /opt/openhab/start.sh parametr HTTP_PORT=8080 např na HTTP_PORT=8888 a současně nesmíme zapomenout port 8888 povolit v konfiguračním rozhraní Turrisu.

Po úspěšném rozběhnutí můžeme začít OpenHab konfigurovat. Ale to už je jiný příběh.

Závěr

Tento článek by vám měl pomoci při řešení dvou různých problémů

  1. Jak rozběhnout openHAB na domácím routeru. Je třeba si uvědomit, že obdobným způsobem můžeme openHAB rozběhnout na libovolném routeru, na kterém lze spustit OpenWrt. Je třeba pouze počítat s tím, že se skoro jistě bude jednat o jinou architekturu než PPCSPE, ale základní postup by měl být stejný
  2. Jak rozběhnout na Turrisu software (služby), které neposkytuje přímo Turris. A současně jak na Turrisu rozběhnout Debian.
Našli jste v článku chybu?

17. 8. 2015 9:42

Image Debianu pro Turris včetně OpenHabu naleznete na adrese:
home.prf.jcu.cz/~pechj/d­ebian_turris.tgz. Nechám jí tam alespoň do konce srpna 2015. Pokud jí tam po tomto datu nenaleznete, napište mi e-mail.


2. 10. 2016 4:05

LuRy (neregistrovaný)

Jen update - verze 2.22 nainstalovana bez problemu, vse mi zatim funguje. Instaloval jsem jdk a jre pro javu 8 a spusteno bez erroru

Setting up libc6:powerpcspe (2.22-13) ...
Setting up libc6-dev:powerpcspe (2.22-13) ...


Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Root.cz: Kamery Sony se dají ovládnout na dálku

Kamery Sony se dají ovládnout na dálku

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?