Ich versuche schon mehre Tage meine Regel für eine geplante Heizungssteuerung hin zu bekommen.
Vom haus aus Programmiere ich Roboter und tue mir schwer mit dem Syntax von OpenHab Regeln.
Ins besonderen ist mir die Bedeutung der Klammern nicht ganz geläufig. Wie und wann und mit welcher klammer gearbeitet werden muß.
hier mal meine erstellt Regel die leider nicht läuft, ich denke es liegt an den Zeiten bei den Bedingungen. Habe aber leider keine Ahnung wie ich das machen soll.
Und noch eine Frage zu den variablen von Tag Minute und Stunde. Die hatte ich erst in einer separaten Regel die dann aber laut Log nicht beschrieben wurden. Jetzt hab ich diese in die Regel der Heizung gepackt. Ich wollte die variablen auch noch nutzen für andere Regeln geht das dann ?
Code: Alles auswählen
//---------------------------------------------------
// Heizung Wohnzimmer
//---------------------------------------------------
rule "Init Heizung"
when
System started or Time cron "0 00 21 * * ?"
then
Heizung_W_Soll.postUpdate(21.0)
Heizung_W_Soll_N.postUpdate(18.0)
Heizung_E_Soll.postUpdate(21.0)
Heizung_E_Soll_N.postUpdate(18.0)
end
//----------------------------------------------------
rule "Heizung WZ Ist/Soll vergleich"
when
Item Sonoff85Temp changed or // Istwert Temp Wohnzimmer
Item Heizung_W_Soll changed or // Sollwert Heizung Wohnzimmer
Item Heizung_W_Soll_N changed // Sollwert Nacht Heizung Wohnzimmer
then
var hour = now.getHourOfDay
var min = now.getMinuteOfHour
var wd = now.getDayOfWeek
if (hour >= 05 && min >= 45 && wd <= 5 && hour < 20) // Wochentags (Mo - Fr 5:45Uhr-20:00Uhr)
{
var double wtsp=(Heizung_W_Soll.state as DecimalType).doubleValue // Temperatur Soll Tag
var double wtsi=(Sonoff85Temp.state as DecimalType).doubleValue
if (wtsi < wtsp)
{
Heizung_W.sendCommand(ON)
}
else
{
Heizung_W.sendCommand (OFF)
}
}
else if (hour >= 8 && min >= 00 && wd >= 6 && hour < 20) // Wochende (Sa - So 8:00-20:00Uhr)
{
var double wtsp=(Heizung_W_Soll.state as DecimalType).doubleValue // Temperatur Soll Tag
var double wtsi=(Sonoff85Temp.state as DecimalType).doubleValue
if (wtsi < wtsp)
{
Heizung_W.sendCommand(ON)
}
else
{
Heizung_W.sendCommand (OFF)
}
}
else if (hour >= 20 && min <= 0 && hour < 5 && min <=45) //Absenkung Nacht
{
var double wtspN=(Heizung_W_Soll_N.state as DecimalType).doubleValue // Temperatur Soll Nacht
var double wtsi=(Sonoff85Temp.state as DecimalType).doubleValue
if (wtsi < wtspN)
{
Heizung_W.sendCommand(ON)
}
else
{
Heizung_W.sendCommand (OFF)
}
}
end