Sonntag, 17. November 2019

Openhab - Presence Sensor

Um einige Regeln Triggern zu können, habe ich mir einen Presence Sensor gebaut. Diesen verwende ich um z.B. die Heizung nur dann einzuschalten, wenn auch jemand zu Hause ist.
Der Sensor ist ein einfacher Ping auf die Handys, die im WLAN sind.

Hierfür benötigt ihr erstmal das Network Binding.
Geht hierfür auf Paper UI, klickt auf "Configuration - Bindings - "+" - Bindings - Network Binding - INSTALL"
Nachdem es installiert wurde, klickt man auf "Configuration - Things - "+" - Network Binding - ADD MANUALLY - Pingable network device".
Gebt die IP Adresse des Geräts ein und gebt dem Kind einen Namen. Klickt nun auf das Häkchen um es hinzuzufügen.

Nun solltet Ihr unter "Configuration - Things" einen Eintrag mit eurem Gerät finden und daneben sollte "ONLINE" stehen.
Klickt euer Gerät an und speichert euch den Eintrag bei "Online" weg, den benötigen wir gleich.
Dieser sollte in etwa so aussehen: "network:pingdevice:7af75308:online"

Öffnen nun im SMB Ordner "Items" die Datei "default.items" und fügt dort eine neue Zeile hinzu:

Switch   ChristopherHandy   <network>   { channel="network:pingdevice:7af75308:online" }

Der erste Teil "Switch" sagt Openhab, dass es sich um einen Schalter (ON/OFF) handelt. "ChristopherHandy" ist in dem Fall eine Art Spitzname für diesen Schalter. "<network>" ist ein optionaler Wert. Dahinter kommt dann { channel="<network:pingdevice:7af75308:online" }, also genau der Wert, den wir uns vorher weggespeichert haben.

Nachdem wir diese Datei speichern, müssten wir nachher nicht nach network:pingdevice:7af75308:online suchen, sondern können nach "ChristopherHandy" suchen. Dies macht es besonders dann einfacher, wenn man mehrere Geräte anpingen möchte.

Hat man mehrere Personen im Haushalt und möchte eine Regel bauen, die dann greift, wenn mindestens eine Person zu hause ist, fügt man dieses Gerät wie oben beschrieben ebenfalls hinzu.
Außerdem wird noch eine Art "Dummy Schalter" in die default.items Datei hinzugefügt mit folgender Zeile:

Switch   SomeOneHome   <switch>

Damit haben wir nun einen Schalter mit den Namen "SomeOneHome" hinzugefügt, der im ersten Moment nichts tut. Dieser kommt weiter unten zum Einsatz.

HABPanel

Als nächstes wollte ich ein aussagekräftiges Icon in HABPanel haben, welches kein einfacher ON/OFF Schalter ist. Dies ist ein Icon, welches ein Haus anzeigt, wenn ich zu Hause bin, und ein Cocktail Glas, wenn ich nicht zu Hause bin

   

Dafür habe ich ein Template mit folgendem Code erstellt:

<p>Christopher</p><br>

<div ng-if="itemValue('ChristopherHandy')=='ON'">
<div class="template-contents">
<div class="row">
<div class="col-xs-25"><span><widget-icon iconset="'eclipse-smarthome-classic'" icon="'presence'" backdrop="true" center="true"/></span></div>
</div>
<div class="row">
</div>
</div>
</div>
<div ng-if="itemValue('ChristopherHandy')=='OFF'">
<div class="template-contents">
<div class="row">
<div class="col-xs-25"><span><widget-icon iconset="'eclipse-smarthome-classic'" icon="'party'" backdrop="true" center="true"/></span></div>
</div>
<div class="row">
</div>
</div>
</div>



Mehrere Personen

Ihr habt nun also einen Haushalt mit mehreren Personen und möchtet z.B. die Heizung eingeschaltet haben, solange mindestens eine Person zu Hause ist.

Gehen wir hierfür in die Paper UI unter "Rules" (hierfür müssen die Next-Gen Rules installiert sein) und erstellen eine Regel Namens "Someone Home ON"

Wir klicken bei When auf das + und wählen "an item state is updated" aus und klicken auf Next.

Wir geben dem Trigger einen Namen, z.B.: "Christopher Home". Bei Item wählen wir den erstellten Spitznamen "ChristopherHome" aus. Bei Previous State wählen wir "OFF" aus und bei "State" wählen wir "ON". Nun klicken wir auf OK.

Dies macht ihr für alle Geräte/Personen, die hierbei berücksichtigt werden sollen.

Klickt nun bei Then auf das + und wählt "send a command" aus und klickt auf Next.

Dieser Action gebt ihr wieder einen Namen z.B.: "SomeOneHome ON", wählt bei Item den erstellen Dummy Schalter "SomeOneHome" aus und wählt bei Command "ON" aus. Klickt nun auf OK.

Vergesst nicht die Regel zu speichern, indem ihr oben auf das Häkchen klickt.

Nun haben wir also eine Regel erstellt. Diese Regel bewirkt, dass der Schalter "SomeOne Home" auf ON steht, solange mindestens eine Person zu Hause ist.
Sobald niemand mehr zu Hause ist, geht der Schalter auf OFF.

SomeOne Home Schalter verwenden

Nun können wir uns bei Regeln auf diesen Schalter beziehen.
Erstellen wir also eine Regel, bei der die Heizung um 7 Uhr morgens eingeschaltet wird, aber nur wenn jemand zu hause ist.

Bei When wählen wir "it is a fixed time of the day" aus und klicken auf Next. Wir vergeben einen Namen und stellen die Uhrzeit auf 07:00 Uhr.

Bei Then stellen wir ein, dass die Heizung eingeschaltet werden soll. Dies kann je nach Hersteller anders sein. Ihr kennt euch bei eurem Gerät da besser aus.

Bei but only if wählt ihr "an item has a given state" aus und klickt auf Next. Ihr vergebt wieder einen Namen, wählt bei Item den "SomeOne Home" Schalter aus, als Operator nehmt ihr "=" und bei State "ON". Klickt nun auf OK und speichert die Regel.

Nun schaltet sich eure Heizung um 7 Uhr ein, aber nur, wenn auch jemand zu hause ist.

Hinweis:
Ich habe diese Regel zusätzlich dafür benutzt die Heizung einzuschalten, sobald jemand nach Hause kommt.
Dafür fügt man bei When einen Trigger vom Typ "an iten state is updated" hinzu, wählt bei Item den Someone Home Schalter aus und bei Previous State OFF und bei State ON aus.

Labels: , , , , , , , , , , , , ,

0 Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]

<< Startseite