Schlagwort-Archive: Rasbperry Pi

[openhab] Livestream einer Kamera einbinden

Mittlerweile gibt es diverse Kameras die per Netzwerkanschluss bzw. WLAN in das heimische Netzwerk eingebunden werden können. Die unterschiedlichen Kameras bringen meistens eine App oder eine entsprechende Weboberfläche für den Zugriff auf das Livebild mit.

Die URL lässt sich mit wenigen Zeilen in Openhab integrieren, somit kann ein System für den Zugriff auf die verschiedenen Kameras genutzt werden.

Das Livebild der Kamera wird mit folgenden Zeilen in der Sitemap integriert.

Frame {
Text label="Kamera Oben" icon="camera" {
Image url="http://serverip" label="Kamera 1"
}
}

Openhab Cam

[openhab] Anwesenheitserkennung

Zeitgesteuert das Licht ein und ausschalten können einfache Schaltzeituhren schon seit Jahren. Praktischer und stromsparend ist es jedoch wenn das Licht nur eingeschaltet wird, wenn auch jemand zu Hause ist.

Die Anwesenheitserkennung lässt sich relativ einfach in openhab einrichten, hierfür muss zunächst das Addon org.openhab.binding.networkhealth-1.6.1.jar in dem addons Verzeichniss abgelegt werden. Mit Hilfe des bindings wird der Netzwerkstatus einer URL / IP überprüft.

Um zu prüfen ob sich ein Handy im WLAN befindet, reicht der folgende Eintrag in einer items Datei:

Switch Hermann {nh="android-000029388sjsdjd"}

Wenn sich das Handy im WLAN befindet, wird der Status auf on gesetzt.

Mehrere Handys

Da es in einem Haushalt meistens mehrere Handy gibt, ist es Hilfreich die Handys gesammelt abzufragen. Wenn nun Eins der hinterlegten Handys im WLAN gefunden wird, wird der Anwesenheitsstatus auf On gesetzt.

Für die Abfrage und das setzen des Anwesenheitsstatus gibt es bereits eine sehr gute Anleitung unter https://github.com/openhab/openhab/wiki/Samples-Tricks#check-presence-by-detecting-wifi-phonestablets.

Aktor nur bei Anwesenheit schalten

Die Aktoren sollen nun nur zwischen 16 Uhr und 23 Uhr eingeschaltet werden, jedoch nur wenn jemand zu Hause ist. Gleichzeitig sollte es eine einfach Möglichkeit geben, die automatische Schaltung zu deaktivieren.

Für das deaktivieren der Automatik habe ich den folgenden Switch in einer items Datei angelegt:
Switch FlurAutomatik "Automatik" (flur) {ON,OFF}

Für der schalten der Aktoren nutze ich folgende Regel:

rule Anwesend
when
Time cron "* */5 * * * ?"
then
if (now.getHourOfDay() >= 16 && now.getHourOfDay() <=22 && Presence.state == ON && FlurAutomatik.state == ON || now.getHourOfDay() >= 6 && now.getHourOfDay() <=8 && Presence.state == ON && FlurAutomatik.state == ON) { if(fs203.state == OFF){ sendCommand(fs203, ON) logInfo("PresenceCheck", "LICHT AN" ) } } else { if(fs203.state == ON && FlurAutomatik.state == ON){ sendCommand(fs203, OFF) logInfo("PresenceCheck", "LICHT AUS" ) } } end

Die if Abfrage if(fs203.state == ON/OFF){ wird benötigt, da ansonsten alle 5 Minuten ein f20 Signal abgesetzt wird und es dann dazu kommt das die Signale nicht verarbeitet werden.
In der openhab.log erhält man dann folgende Fehlermeldung:
2015-01-26 21:20:30.093 [WARN ] [o.o.i.t.c.i.AbstractCULHandler] - (LOVF) Limit Overflow: Last message lost. You are using more than 1% transmitting time. Reduce the number of rf messages

[openhab] FS20 Fernbedienung und Switch Status Aktualisierung

In dem letzten Artikel hatte ich geschrieben das sich der Status eines F20 Switches in openhab nicht ändert, wenn der Aktor über die FS20 Fernbedienung ein beziehungsweise ausgeschaltet wurde.

In einem Kommentar schrieb Elinoy(Kommentarersteller) das er ebenfalls vor dem Problem stand, hierfür jedoch eine Lösung(Workaround) gefunden hatte.

Ich habe mir seinen Workaround angesehen und dabei den Fehler entdeckt, warum der Status nicht aktualisiert wurde.

Wenn openhab im Debugmodus über /home/openhab/start_debug.sh gestartet wird und eine Taste auf der FS20 Fernbedienung gedrückt wird, erhält man folgend Ausgabe:

21:31:06.930 [DEBUG] [o.o.i.t.c.i.AbstractCULHandler:231 ] - Received raw message from CUL: F1B1B0100E6
21:31:06.936 [DEBUG] [o.o.i.t.c.i.AbstractCULHandler:280 ] - Requesting credit report
21:31:06.942 [DEBUG] [.o.b.fs20.internal.FS20Binding:204 ] - Received FS20 message: F1B1B0100E6
21:31:06.946 [DEBUG] [.o.b.fs20.internal.FS20Binding:224 ] - Received command OFF for device 1B1B01
21:31:06.951 [INFO ] [runtime.busevents :26 ] - weg state updated to OFF
21:31:06.964 [DEBUG] [o.o.i.t.c.i.AbstractCULHandler:231 ] - Received raw message from CUL: 21 900
21:31:06.968 [DEBUG] [o.o.i.t.c.i.AbstractCULHandler:262 ] - credit10ms = 900

Der Aktor wurde mit dem Haus+Geräteadresse wie folgt angesprochen: 1B1B01

Wenn man jedoch die Haus+Geräteadresse aus fhem übernommen hat, wurde sie mit 1b1b01 angegeben.
Über die Haus+Geräteadresse mit kleinem b kann der Aktor über openhab geschaltet werde, jedoch ändert sich der Status nicht wenn die Fernbedienung genutzt wird.

Mit der Angabe 1B1B01 ändert sich der Status wenn der Aktor über die Fernbedienung geschaltet wird.

openhab automatisch starten

Damit bei einem Neustart des Raspberry Pi openhab ebenfalls startet, gibt es unter https://code.google.com/p/openhab-samples/wiki/Tricks ein passendes Startscript.
Das Script habe ich unter /etc/init.d/openhab abgelegt und die ein oder andere Variable wie zum Beispiel NAME oder PID angepasst.

Im Anschluss die Datei ausführbar machen und in die entsprechenden Runlevel eintragen.

cd /etc/init.d
chmod 755 openhab
update-rc.d openhab defaults

[FHEM] mehrere 433 MHz Steckdosen auf einmal schalten

Mittlerweile werden mehrere Steckdosen über den Raspberry Pi geschaltet und die Funksteckdosen lassen sich ohne Probleme einzeln schalten. Alle Steckdosen über einen Taster zu schalten, ist jedoch bei den 433 MHz Steckdosen nicht auf dem Standardweg möglich.

Um die Steckdosen Licht1 und Licht2 über einen Taster (Flur) zu schalten, würde man es normalerweise wie folgt konfigurieren:

define Flur dummy
attr Flur eventMap on:an off:aus
attr Flur devStateIcon an:on:off aus:off:on
attr Flur room Flur
define FlurLichtOn notify Flur:on set Licht1,Licht2 on
define FlurLichtOff notify Flur:off set Licht1,Licht2 off

Leider funktioniert es nicht, denn der 433 MHz Sender ist nicht in der Lage die Schaltsignale gleichzeitig zu senden. Werden die einzelnen Schaltsignale mit einer kleinen Verzögerung gesendet, ist das Schalten über nur einen Taster möglich.

define Flur dummy
attr Flur eventMap on:an off:aus
attr Flur devStateIcon an:on:off aus:off:on
attr Flur room Flur
define FlurLichtOn notify Flur:on set Licht1 on;; sleep 5;; set Licht2 on
define FlurLichtOff notify Flur:off set Licht1 off;; sleep 5;; set Licht2 off