Archiv der Kategorie: linux

[openhab] Onewire Sensoren einbinden

In dem ein oder anderen Zimmer befindet sich ein Onewire Sensor um die Temperatur zu messen, die gemessene Temperatur soll nun im openhab dargestellt werden.

Für das auslesen habe ich das Shellscript onewiretemp.sh erstellt:

#!/bin/bash
wert=`cat /sys/bus/w1/devices/$1/w1_slave | tail -n1 | cut -d '=' -f2`
wert2=`echo "scale=3; $wert/1000" | bc`
echo $wert2

Das Script liegt unter /home/openhab/bin und beim Aufruf muss die Sensor ID mit angegeben werden.

./onewiretemp.sh Sensor Id
Die gemessene Temperatur wird dann wie folgt ausgegeben 20,745.

Die Abfragen der einzelnen Sensoren habe ich in einer items Datei zusammengefasst.

Group temperatur

Number Temperature_Flur "Temperatur Flur [%.1f °C]" (flur,temperatur) { exec="<[/home/openhab/bin/onewiretemp.sh 28-000004b92eb4:60000:REGEX((.*?))]" } Number Temperature_Pia "Temperatur Pia [%.1f °C]" (temperatur) { exec="<[/home/openhab/bin/onewiretemp.sh 28-000004b91510:60000:REGEX((.*?))]" }

Damit die Ausgabe an mehreren Stellen in der Sitemap erfolgt, können bei der jeweiligen Abfrage mehrere Gruppen angegeben werden.

Hier noch ein Auszug aus der sitemap:

Frame label="Temperatur"{
Group label="Temperatur" icon="house" item=temperatur
}

ob-onewire1

ob-onewire2

Wie die Onewire Sensoren mit dem Raspberry Pi verbunden werden, habe ich in dem Artikel beschrieben.

[openhab] 433 MHz Steckdosen über eine Gruppe schalten

Manchmal ist es hilfreich wenn man alle Steckdosen auf einmal an oder ausschalten kann, zum Beispiel für die Anwesenheitserkennung.

Für das schalten habe ich in der /home/openhab/configurations/items/flur.items einen neuen Schalter angelegt.

Switch FlurAlle "Alle" (flur) {OFF,ON}

Da über den 433MHz Sender die verschiedenen Schaltcodes nicht gleichzeitig gesendet werden können, habe ich eine Regel erstellt um die einzelnen Steckdosen mit einer kleinen Verzögerung zu schalten.

Inhalt der /home/openhab/configurations/rules/flur.rules:
rule FlurAlleOn
when
Item FlurAlle received command ON
then
sendCommand(Treppe, ON)
timer = createTimer(now.plusSeconds(2)) [
sendCommand(Telefon, ON)
]
end

rule FlurAlleOff
when
Item FlurAlle received command OFF
then
sendCommand(Treppe, OFF)
timer = createTimer(now.plusSeconds(2)) [
sendCommand(Telefon, OFF)
]
end

[openhab] Items mit Hilfe von Gruppen sortieren

Wenn man in openhab mehrere Items anlegt zum Beispiel mehrere Lichtschalter fürs Wohnzimmer oder für die Weihnachtsbeleuchtung, empfiehlt es sich wegen der Übersichtlichkeit auf Gruppen zurückzugreifen.

Bevor die Gruppe genutzt werden kann, muss Sie über Group Gruppenname definiert werden. In der Item Konfiguration wird die Gruppe in runden Klammern angegeben.

Item Konfiguration:
Group flur
Switch Treppe "Im Fenster" (flur) {exec="OFF:/home/openhab/bin/flur.py 2 0,ON:/home/openhab/bin/flur.py 2 1"}
Switch Telefon "Telefon" (flur) {exec="OFF:/home/openhab/bin/flur.py 1 0,ON:/home/openhab/bin/flur.py 1 1"}

default.sitemap:
sitemap default label="Main Menu"
{
Frame label="Weihnachten"{
Group label="Weihnachten" icon="house" item=weihnachten
}
Frame label="Flur"{
Group label="Flur" icon="house" item=flur
}
Frame label="Wohnzimmer"{
Group label="Wohnzimmer" icon="house" item=wohnzimmer
}
}

Es ist auch möglich mehrere Gruppen Komma separiert anzugeben, somit kann ein Item in verschiedenen Frames aufgeführt werden.

[centos] httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied

Bei einem neu aufgesetzten centos System und nach ein wenig Konfiguration hier und da, bekam ich beim starten des Apache folgende Meldung:

/etc/init.d/httpd start
httpd starten: httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied [FEHLGESCHLAGEN]

Das Problem ließ sich schnell lösen in dem ich selinux deaktivierte.
Einfach in der Datei /etc/sysconfig/selinux die Zeile SELINUX=enforcing auf SELINUX=disabled ändern und den Server neustarten.

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