Wecker mit openHAB

openhabweckerAls ein kleines Gimmik habe ich in openHAB einen kleinen Wecker realisiert. Dabei nutzte ich ein vorhandenes Squeezebox-Radio, das bereits in openHAB integriert ist. Mit ein paar Erweiterungen der openHAB-Konfiguration kann ich nun in der Sitemap den Wecker ein- und ausschalten und die Weckzeit definieren. Wie ich das umsetzte, zeigt dieser kleine Artikel.

Verfügbare Artikel zu openHAB

little_blue_dot Einleitunglittle_blue_dot Einbinden der Internetgeschwindigkeitlittle_blue_dot RFID-Lesegerät einbinden
little_blue_dot Installationlittle_blue_dot Präsenzerkennung via Bluetooth und Pinglittle_blue_dot Einbinden von DS18B20-Sensoren
little_blue_dot Konfigurationlittle_blue_dot Kleines Netzwerkmonitoringlittle_blue_dot ical-Abfallkalender einbinden
little_blue_dot Reverse-Proxy für OpenHABlittle_blue_dot Einbinden von LG-Fernsehern [Update]little_blue_dot openHAB als Wecker
little_blue_dot Datenspeicherung und Statistikenlittle_blue_dot Einbinden Schaltern und Kontaktenlittle_blue_dot Einbinden von Bewegungssensoren
little_blue_dot Regeln planen und konfigurierenlittle_blue_dot Einbinden von Funksteckdosen (433 MHz)little_blue_dot Einbinden einer FritzBox
little_blue_dot Einbinden von USB-Steckdosenleisten (SIS-PMS)little_blue_dot Infrarotgesteuerte Geräte einbindenlittle_blue_dot Sprachausgabe auf einem Raspberry
little_blue_dot Einbinden von Temperatursensorenlittle_blue_dot Steuerung mit NFC-Tagslittle_blue_dot Schaltbare Steckdosenleiste mit Relais
little_blue_dot Externer Zugriff mit my.openhab

 

Items definieren

Zunächst benötigen wir drei weitere Items, die wir einfach zu den bereits vorhandenen Squeezebox-Items hinzufügen:

Switch RDO61_WECKER      "Wecker"                  <clock>
Number RDO61_WECKER_H    "Weckzeit Stunde [%s]"    <calendar>
Number RDO61_WECKER_M    "Weckzeit Minute [%s]"    <calendar>

Die Items haben außerhalb von openHAB keine Funktion und dienen quasi nur als Dummies, damit die Weckzeit und der Weckbetrieb gespeichert werden können.

 

Sitemap einrichten

Nun erweitern wir unsere Sitemap an gewünschter Stelle, damit wir den Wecker bequem von unserem openHAB-Client aus konfigurieren können:

Switch item=RDO61_WECKER        mappings=[ON="Wecker an", OFF="Wecker aus"]
Setpoint item=RDO61_WECKER_H    minValue=0 maxValue=23 step=1
Setpoint item=RDO61_WECKER_M    minValue=0 maxValue=59 step=1

 

sitemapwecker

 

 

Regel erstellen

Die hauptsächliche Aufgabe besteht in der Erstellung einer neuen Regel, die wie folgt aussehen kann:

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.openhab.action.squeezebox.*
import org.joda.time.*

var Timer timerRDO61 = null

rule "Wecker Radio"
    when
        Time cron "0 * * * * ?"
    then
	if (RDO61_WECKER.state == ON) {
		var sollMinute = (RDO61_WECKER_M.state as DecimalType).intValue
		var sollStunde = (RDO61_WECKER_H.state as DecimalType).intValue

		if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
			squeezeboxPlayUrl("rdo61", "http://www.folkalley.com/sidestream.pls")
			timerRDO61 = createTimer(now.plusMinutes(30)) [|
				sendCommand(RDO61_POWER, OFF)
				]
		}
	}
end

 

Diese Regel wird minütlich ausgeführt und prüft, ob die aktuelle Uhrzeit mit der als Weckzeit konfigurierten Zeit übereinstimmt. Wenn dem so ist, wird auf einer zuvor konfigurierten Squeezebox ein in der Regel konfigurierter Radiosender abgespielt. Nach einer halben Stunde wird die Squeezebox wieder ausgeschaltet.