2016. április 6., szerda

Mesék a házautomatizálásról - Távirányító integráció

Ahhoz, hogy az ugrókódos távirányító működni tudjon az OpenHAB-bal, az első dolog, hogy a GPIO binding-ot engedélyezni kell. Egy egészen használható dokumentációt találunk az OpenHAB wikiben:

https://github.com/openhab/openhab/wiki/GPIO-Binding

Nagyjából azt követtem el, amit a doksi írt, de némi módosítés szükséges volt.

1. Telepítsük fel a natív JNA library-t:
apt-get install libjna-java

2. Módosítsuk a /opt/openhab/start.sh-t
Adjuk hozzá a java parancssori paraméterek listájához:
-Djna.boot.library.path=/usr/lib/jni

3. Módosítsuk a /etc/init.d/openhab fájlt.

Adjuk hozzá a DAEMON_ARGS paraméterek listájához:
-Djna.boot.library.path=/usr/lib/jni

és adjuk hozzá a GPIO unexport parancsokat a daemon leállási feladatokhoz:



4. A korábban letöltött distribution-1.8.1-addons.zip-ből (része az OpenHAB letöltéseknek) csomagoljuk ki a következő fájlokat:
     org.openhab.io.gpio
     org.openhab.binding.gpio

A /opt/openhab/addons könyvtárba

5. Indítsuk újra az OpenHAB-ot:

/etc/init.d/openhab restart

Mostmár az OpenHAB kész a GPIO kezelésére. Kell némi konfiguráció módosítás, hogy használni tudjuk.

6. Addjuk hozzá a szükséges elemeket.

A GPIO bemenetek Contact-okkal reprezentálhatóak az OpenHAB-ban. Tehát adjuk hozzá a  /opt/openhab/configurations/items könyvtár valamelyik fájljához (Én itt már kidobtam a demo konfigurációt, tehát nálam ez a saját házam item listája) a következőket:

Contact KeeLoq_Remote_A "Remote A [MAP(en.map:%s]" (<ID of your Group>, Windows) { gpio="pin:66"}
Contact KeeLoq_Remote_B "Remote B [MAP(en.map:%s]" (<ID of your Group>, Windows) { gpio="pin:67"}
Contact KeeLoq_Remote_C "Remote C [MAP(en.map:%s]" (<ID of your Group>, Windows) { gpio="pin:69"}
Contact KeeLoq_Remote_D "Remote D [MAP(en.map:%s]" (<ID of your Group>, Windows) { gpio="pin:68"}

Ha minden rendben van a következőt fogjuk látni:



És, ha megnyomjuk a távirányító valamelyik gombját a, a closed felirat open-re vált, majd vissza, ha elengedjük a gombot.

7. A világításhoz, ez nem lesz elég
Arra van szükségünk, hogy megtartsuk a státuszt, ahogy az be és kikapcsol.
Tehát, hozzádunk még egy Switch-et az items fájlhoz:

Switch Garage_Light "Garage Light" (<ID of your Group>, Lights)

Ez csak egy egyszerű kapcsoló, tehát, ha távirányítóról akarjuk vezérelni, még egy szabályt is létre kell hozni. Ezt a /opt/openhab/configurations/rules mappában lévő rules fájl szerkesztésével oldhatjuk meg:

rule "GarageLightToggle"
    when
        Item KeeLoq_Remote_B changed from CLOSED to OPEN
    then
        if(Garage_Light.state == ON)
        {
            sendCommand(Garage_Light, OFF)
        }
        else
        {
            sendCommand(Garage_Light, ON)
        }
end

Ezek után, ha megnyomjuk a B gombot a távirányítón, be és ki fogja kapcsolni a fenti switch elemet.
Ez még nincs hatással a fizikai lámpára. Ahhoz még gyártanom/vennem kell valami beavatkozó szervet.

4 megjegyzés:

  1. Háát :) Ez csak tényleg csak annak való, aki hobbyként tekint rá és szeret vele szívni... Nem leszólni akarom félre ne érts, de még macerásabb, mint amit gondoltam amikor először szóbakerült.

    VálaszTörlés
    Válaszok
    1. :-D
      És még folytatom. Készülnek a 3D nyomtatott dobozok, a moduláris rendszer paneljei, a WiFi-s szenzorok és beavatkozó szervek. Most épp a logging-on (itt persistence) agyalok, valamint egy NRF24L01+ alapú mesh network-öt kéne összeraknom és kipróbálnom.
      Ezért is írtam eredetileg, hogy tudom mibe kezdtem. :-)

      Törlés
  2. Huhú, ahogy bonyolódik a rendszer, lesznek itt csörték az aszonnyal :)

    VálaszTörlés
    Válaszok
    1. Remélem nem. A motorosított, rejtett fürdőszobai tükörvilágítást amit csináltam imádta. :-)

      Törlés