ich bin noch relativ neu im Thema openHAB und versuche gerade meine Programme von der CCU2 Stück für Stück auf openHAB2 zu übertragen. Das hat auch am Anfang relativ gut funktioniert bis ich auf meinem Ubuntu16.04LTS System openHAB wegen eines Fehlers neu installieren musste. Bis dahin wurden die rules auch immer ausgeführt. Allerdings wird nun seit der Neuinstallation von openHAB keine rule mehr ausgeführt, auch nicht neue rules welche ich testweise angelegt habe.
Eine rule, welche vorher immer funktioniert hat ist für einen programmierten Wecker und sieht wie folgt aus:
Code: Alles auswählen
//////////////////////////////////////////////////////////////////////////////////
// Enhält alle notwendigen Regeln zum Steuern des Weckers im Schlafzimmer //
//////////////////////////////////////////////////////////////////////////////////
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.*
import java.nio.channels.Channel
//////////////////////////////////////////////////////////////////////////////////
// Muss nur temporär benutzt werden für erstes Initialisieren von Items //
// da diese ab erstmaliger Benutzung in der mapDB gespeichert werden. Werden //
// die nicht persistiert hier Defaultwerte hinterlegen //
//////////////////////////////////////////////////////////////////////////////////
rule "Initialization Wecker"
when
System started
then
postUpdate(weckerZeitStunde, 06)
postUpdate(weckerZeitMinute, 00)
postUpdate(weckerMontag, ON)
postUpdate(weckerDienstag, ON)
postUpdate(weckerMittwoch, ON)
postUpdate(weckerDonnerstag, OFF)
postUpdate(weckerFreitag, ON)
postUpdate(weckerSamstag, ON)
postUpdate(weckerSonntag, OFF)
postUpdate(weckerMaxHelligkeit, 100)
postUpdate(weckerDimmerSleep, 5)
end
///////////////////////////////////////////////////////////////////////////////
rule "Wecker - Aenderung der Konfiguration"
when
Item weckerZeitStunde received update or
Item weckerZeitMinute received update
then
var weckerStunde = weckerZeitStunde.state as DecimalType
var weckerMinute = weckerZeitMinute.state as DecimalType
var String weckerText = ''
if (weckerStunde.intValue < 10) weckerText = '0'
weckerText = weckerText + weckerStunde.intValue + ':'
if (weckerMinute.intValue < 10) weckerText = weckerText + '0'
weckerText = weckerText + weckerMinute.intValue
postUpdate(weckerZeitMessage, weckerText)
end
///////////////////////////////////////////////////////////////////////////////
rule "Wecker - prüfen"
when
Time cron "0 0/1 * * * ?" // minütlicher Aufruf
then
var weckerStunde = (weckerZeitStunde.state as DecimalType).intValue
var weckerMinute = (weckerZeitMinute.state as DecimalType).intValue
var weckerHelligkeit = (weckerMaxHelligkeit.state as DecimalType).intValue
var weckerWartezeit = 1000 * (weckerDimmerSleep.state as DecimalType).intValue
//logInfo('rules','helligkeit: ' + weckerHelligkeit +' wartezeit ' + weckerWartezeit)
if (
(now.getHourOfDay.intValue == weckerStunde) && (now.getMinuteOfHour.intValue == weckerMinute)
&& (
((weckerMontag.state == ON) && now.getDayOfWeek.intValue == 1) ||
((weckerDienstag.state == ON) && now.getDayOfWeek.intValue == 2) ||
((weckerMittwoch.state == ON) && now.getDayOfWeek.intValue == 3) ||
((weckerDonnerstag.state == ON) && now.getDayOfWeek.intValue == 4) ||
((weckerFreitag.state == ON) && now.getDayOfWeek.intValue == 5) ||
((weckerSamstag.state == ON) && now.getDayOfWeek.intValue == 6) ||
((weckerSonntag.state == ON) && now.getDayOfWeek.intValue == 7)
)
) {
logInfo ('rules','Wecker wird aktiviert...')
// Wecker nur notwendig, wenn Licht aus ist
if (Licht_OG_Schlafzimmer.state < weckerHelligkeit) {
var Number dimmer = 0
while (dimmer < weckerHelligkeit) {
// Licht auf Dimmstufe schalten
sendCommand(Licht_OG_Schlafzimmer, dimmer.intValue)
createTimer(now.plusSeconds(1))[|sendCommand (TV_OG_Schlafzimmer,ON)]
// Konfigurierte Anzahl an Sekunden warten
Thread::sleep(weckerWartezeit)
// prüfen ob zwischenzeitlich Dimmerhelligkeit manuell veraendert wurde und damit der Wecker ausgemacht wurde
var dimmerStatus = (Licht_OG_Schlafzimmer.state as DecimalType).intValue
if (dimmer == dimmerStatus) {
dimmer = dimmer + 1
logInfo('rules', 'Wecker: Dimmer plus 1 gesetzt auf ' + dimmer)
} else {
dimmer = 100 // Abbruchbedingung
logInfo('rules', 'Wecker: Abbruch durch Tastendruck')
}
}
logInfo('rules', 'Wecker abgeschlossen, Zielhelligkeit erreicht')
} else {
logInfo('rules', 'Wecker nicht gestartet da Licht bereits heller als Ziel-Helligkeit des Weckers. Helligkeit Licht: ' + Licht_OG_Schlafzimmer.state)
}
} else {
logInfo('rules','Wecker nicht aktiviert, Bedingung für Wecker trifft nicht zu')
}
end
Code: Alles auswählen
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.*
import java.nio.channels.Channel
///////////////////////////////////////////////////////////////////////////////
rule "Test"
when Item Licht_Esszimmer_TV changed from OFF to ON
then sendCommand(Licht_Esszimmer_Wandleuchten, ON)
end
Danke