Be kell vallanom, az első OpenHab post után azt hittem gyorsabban jön majd a folytatás, de időközben megérkezett a forrasztó kínából, az adafruit-os csomag Amerikából, de ezekről bővebben majd a a következő írások egyikében.
Az első openhab projekthez elviekben semmilyen okos eszközre nincs szükség. Okos ház helyett, az okos programokat vezérli, ezért bárki bármire használhatja. A cél egyszerű, ha elindítjuk a számítógépünket, álljon le a torrent kliens. Erre természetesen nem azért van szükség, hogy CS:GO alatt ne akadjon a játék, és nem is azért, mert a torrent szerver folyamatosan seedelne, vagy éppen töltene (ubuntu image-ket ofc).
A főbb funkciókhoz szükség volt pár shell scriptre, ezeket az sh könyvtárba raktam, kezdjük is ezekkel:
- sh\hostup.sh – megnézi, hogy a paraméterül kapott IP elérhető e a hálózaton. Kimenete: ON vagy OFF
- sh\qtorrentcmd.sh – a paraméterül kapott parancsot elpostolja a qtorrent szervernek. A lehetséges parancsokat nem sokat kerestem, elég a webes felületen kattintani, és firebug-ban szépen látszik, mikor mit küld a szervernek a böngésző.
- sh\terraria_srv.sh – elindítja, vagy leállítja a terraria szervert. Ezt a netről loptam, sajnos a szerver idle állapotban is megeszik egy magot, ezért nem nagyon akarom, hogy állandó jelleggel fusson. Mivel console-ról lehet csak szépen leállítani, tmux-olni kell. Nem a legelegánsabb megoldás, de működik.
Mint az látható a openhab_base\items\default.items-ben a változók értékeit többnyire a scriptek határozzák meg.
Switch Sh_qBittorrent "Torrent download [%s]" (S_Network) { exec=">[ON:/mnt/storage_local/openhab/scripts/qtorrentcmd.sh@@resumeAll] >[OFF:/mnt/storage_local/openhab/scripts/qtorrentcmd.sh@@pauseAll]" } Switch Sh_VojiPcIsUp "Voji-Pc status [%s]" (S_Network) { exec="<[/mnt/storage_local/openhab/scripts/hostup.sh@@192.168.1.68:10000:]" }
A lényeg, hogy ha esemény változásnál futtatni szeretnénk valamit, akkor azt > jellel tudjuk (erre példa a Sh_qBittorrent változó), ha egy változó értékét szeretnénk külső program által meghatározni, azt pedig a < jellel (erre példa a Sh_VojiPcIsUp változó). A szintaxis kicsit fura (pl. a program paramétereket a @@ jelöli), és a frissítés gyakoriságát :10000: formátumban kell megadni.
További részletekkel az exec binding dokumentáció tud szolgálni.
A projekt tartalmaz még példát a wake on lan funkcióra, valamint az astro modulra, aminek segítségével a napfelkeltét, és a napnyugta idejét tudjuk követni. Ez majd a jövőben lesz érdekes, amikor a világítás is képbe kerül.
Ha a változóink megvannak akkor erre tetszőleges szabályokat készíthetünk. Ezek annyira egyszerűek, hogy nagyon nincs is mit hozzáfűzni. De nem árulok el nagy titkot, ha azt mondom, hogy nem lesz ez mindig így 🙂
A sitemap pedig egy lehetséges kinézete a jelenlegi működésnek, almenükkel, kategóriákkal.
A demo projekt letölthető innen: http://voji.hu/downloads/openhab_base.zip
Az eredmény androidon valahogy így néz ki:
One Reply to “Openhab #2”