Umstieg von OH1
Verfasst: 28. Okt 2022 19:02
Hallo zusammen,
ich habe mich jetzt doch mal an den Umstieg von OH1 zu OH3 gewagt und muss sagen, da hat sich doch ein bisschen was geändert
Hab mittlerweile schon einiges mehr oder weniger gut in der neuen basicui hin bekommen.
Jetzt schlage ich mich gerade mit der Heizungsregelung herum. Meine RTR sind KNX Tritons von Busch Jäger.
Denke dass ich meine alten Regeln der Betriebsarteneinstellungen sicher etwas vereinfachen kann. Weiß aber nicht wirklich wie ich da ran gehen soll. (Is schon ziemlich lange her dass ich das Programmiert habe)
Hat evtl. jemand einen Tipp wie ich das schöner hin bekomme? Glaube mit Gruppen geht das irgendwie eleganter...
Vielen Dank im Voraus
Uwe
RULE:
ITEMS:
ich habe mich jetzt doch mal an den Umstieg von OH1 zu OH3 gewagt und muss sagen, da hat sich doch ein bisschen was geändert

Hab mittlerweile schon einiges mehr oder weniger gut in der neuen basicui hin bekommen.
Jetzt schlage ich mich gerade mit der Heizungsregelung herum. Meine RTR sind KNX Tritons von Busch Jäger.
Denke dass ich meine alten Regeln der Betriebsarteneinstellungen sicher etwas vereinfachen kann. Weiß aber nicht wirklich wie ich da ran gehen soll. (Is schon ziemlich lange her dass ich das Programmiert habe)
Hat evtl. jemand einen Tipp wie ich das schöner hin bekomme? Glaube mit Gruppen geht das irgendwie eleganter...
Vielen Dank im Voraus
Uwe
RULE:
Code: Alles auswählen
rule "Modus Heizen"
when
Modus_Heizen received update
or
Time cron "0 10 * * * ?"
then
var Number day = now.getDayOfWeek
var Number hour = now.getHourOfDay +1
var Number minute = now.getMinuteOfHour
var boolean Nacht = false
if( day == 5 ){ // Freitag
if( hour < 6 || hour >= 22 ) Nacht = true
}
else if( day == 6 ){ // Samstag
if( hour < 7 || hour >= 22 ) Nacht = true
}
else if( day == 7 ){ // Sonntag
if( hour < 7 || hour >= 21 ) Nacht = true
}
else{ // Montag - Donnerstag
if( hour < 6 || hour >= 21 ) Nacht = true
}
logInfo("test", "Modus heizen Schleife")
if (Modus_Heizen.state == 1){ // Normal
logInfo("test", "Modus heizen = Normal")
sendCommand(Betriebsart_EG_WZ_OH, PreBetriebsart_EG_WZ_OH.state as DecimalType)
sendCommand(Betriebsart_EG_Kochen_OH, PreBetriebsart_EG_Kochen_OH.state as DecimalType)
sendCommand(Betriebsart_OG_Bad_OH, PreBetriebsart_OG_Bad_OH.state as DecimalType)
}
else if (Modus_Heizen.state == 2){ // Abwesend
logInfo("test", "Modus heizen = Abwesend")
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(OFF)
Betriebsart_EG_WZ_Frost.postUpdate(OFF)
Betriebsart_EG_WZ_OH.postUpdate(2)
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(OFF)
Betriebsart_EG_Kochen_Frost.postUpdate(OFF)
Betriebsart_EG_Kochen_OH.postUpdate(2)
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(OFF)
Betriebsart_OG_Bad_Frost.postUpdate(OFF)
Betriebsart_OG_Bad_OH.postUpdate(2)
}
else if (Modus_Heizen.state == 3){ // Tag/Nacht
if ( Nacht ) {
logInfo("test", "Modus heizen = Nacht")
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(ON)
Betriebsart_EG_WZ_Frost.postUpdate(OFF)
Betriebsart_EG_WZ_OH.postUpdate(3)
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(ON)
Betriebsart_EG_Kochen_Frost.postUpdate(OFF)
Betriebsart_EG_Kochen_OH.postUpdate(3)
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(ON)
Betriebsart_OG_Bad_Frost.postUpdate(OFF)
Betriebsart_OG_Bad_OH.postUpdate(3)
}
else {
logInfo("test", "Modus heizen = Tag")
sendCommand(Betriebsart_EG_WZ_OH, PreBetriebsart_EG_WZ_OH.state as DecimalType)
sendCommand(Betriebsart_EG_Kochen_OH, PreBetriebsart_EG_Kochen_OH.state as DecimalType)
sendCommand(Betriebsart_OG_Bad_OH, PreBetriebsart_OG_Bad_OH.state as DecimalType)
}
}
else if (Modus_Heizen.state == 4){ // Frost
logInfo("test", "Modus heizen = Frost")
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(OFF)
Betriebsart_EG_WZ_Frost.postUpdate(ON)
Betriebsart_EG_WZ_OH.postUpdate(4)
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(OFF)
Betriebsart_EG_Kochen_Frost.postUpdate(ON)
Betriebsart_EG_Kochen_OH.postUpdate(4)
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(OFF)
Betriebsart_OG_Bad_Frost.postUpdate(ON)
Betriebsart_OG_Bad_OH.postUpdate(4)
}
end
rule "Betriebsart EG WZ senden"
when
Item Betriebsart_EG_WZ_OH received command
then
if (receivedCommand == 1) {
Betriebsart_EG_WZ_Komfort.postUpdate(ON)
Betriebsart_EG_WZ_Nacht.postUpdate(OFF)
Betriebsart_EG_WZ_Frost.postUpdate(OFF)
PreBetriebsart_EG_WZ_OH.postUpdate(1)
}
else if (receivedCommand == 2) {
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(OFF)
Betriebsart_EG_WZ_Frost.postUpdate(OFF)
PreBetriebsart_EG_WZ_OH.postUpdate(2)
}
else if (receivedCommand == 3) {
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(ON)
Betriebsart_EG_WZ_Frost.postUpdate(OFF)
PreBetriebsart_EG_WZ_OH.postUpdate(3)
}
else if (receivedCommand == 4) {
Betriebsart_EG_WZ_Komfort.postUpdate(OFF)
Betriebsart_EG_WZ_Nacht.postUpdate(OFF)
Betriebsart_EG_WZ_Frost.postUpdate(ON)
PreBetriebsart_EG_WZ_OH.postUpdate(4)
}
end
rule "Betriebsart EG WZ lesen"
when
Item Betriebsart_EG_WZ_Komfort received command or
Item Betriebsart_EG_WZ_Nacht received command or
Item Betriebsart_EG_WZ_Frost received command or
System started
then
if (Betriebsart_EG_WZ_Komfort.state == ON) {
Betriebsart_EG_WZ_OH.postUpdate(1)
PreBetriebsart_EG_WZ_OH.postUpdate(1)
}
else if (Betriebsart_EG_WZ_Nacht.state == ON) {
Betriebsart_EG_WZ_OH.postUpdate(3)
PreBetriebsart_EG_WZ_OH.postUpdate(3)
}
else if (Betriebsart_EG_WZ_Frost.state == ON) {
Betriebsart_EG_WZ_OH.postUpdate(4)
PreBetriebsart_EG_WZ_OH.postUpdate(4)
}
else {
Betriebsart_EG_WZ_OH.postUpdate(2)
PreBetriebsart_EG_WZ_OH.postUpdate(2)
}
end
rule "Betriebsart EG Kochen senden"
when
Item Betriebsart_EG_Kochen_OH received command
then
if (receivedCommand == 1) {
Betriebsart_EG_Kochen_Komfort.postUpdate(ON)
Betriebsart_EG_Kochen_Nacht.postUpdate(OFF)
Betriebsart_EG_Kochen_Frost.postUpdate(OFF)
PreBetriebsart_EG_Kochen_OH.postUpdate(1)
}
else if (receivedCommand == 2) {
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(OFF)
Betriebsart_EG_Kochen_Frost.postUpdate(OFF)
PreBetriebsart_EG_Kochen_OH.postUpdate(2)
}
else if (receivedCommand == 3) {
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(ON)
Betriebsart_EG_Kochen_Frost.postUpdate(OFF)
PreBetriebsart_EG_Kochen_OH.postUpdate(3)
}
else if (receivedCommand == 4) {
Betriebsart_EG_Kochen_Komfort.postUpdate(OFF)
Betriebsart_EG_Kochen_Nacht.postUpdate(OFF)
Betriebsart_EG_Kochen_Frost.postUpdate(ON)
PreBetriebsart_EG_Kochen_OH.postUpdate(4)
}
end
rule "Betriebsart EG Kochen lesen"
when
Item Betriebsart_EG_Kochen_Komfort received command or
Item Betriebsart_EG_Kochen_Nacht received command or
Item Betriebsart_EG_Kochen_Frost received command or
System started
then
if (Betriebsart_EG_Kochen_Komfort.state == ON) {
Betriebsart_EG_Kochen_OH.postUpdate(1)
PreBetriebsart_EG_Kochen_OH.postUpdate(1)
}
else if (Betriebsart_EG_Kochen_Nacht.state == ON) {
Betriebsart_EG_Kochen_OH.postUpdate(3)
PreBetriebsart_EG_Kochen_OH.postUpdate(3)
}
else if (Betriebsart_EG_Kochen_Frost.state == ON) {
Betriebsart_EG_Kochen_OH.postUpdate(4)
PreBetriebsart_EG_Kochen_OH.postUpdate(4)
}
else {
Betriebsart_EG_Kochen_OH.postUpdate(2)
PreBetriebsart_EG_Kochen_OH.postUpdate(2)
}
end
rule "Betriebsart OG Bad senden"
when
Item Betriebsart_OG_Bad_OH received command
then
if (receivedCommand == 1) {
Betriebsart_OG_Bad_Komfort.postUpdate(ON)
Betriebsart_OG_Bad_Nacht.postUpdate(OFF)
Betriebsart_OG_Bad_Frost.postUpdate(OFF)
PreBetriebsart_OG_Bad_OH.postUpdate(1)
}
else if (receivedCommand == 2) {
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(OFF)
Betriebsart_OG_Bad_Frost.postUpdate(OFF)
PreBetriebsart_OG_Bad_OH.postUpdate(2)
}
else if (receivedCommand == 3) {
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(ON)
Betriebsart_OG_Bad_Frost.postUpdate(OFF)
PreBetriebsart_OG_Bad_OH.postUpdate(3)
}
else if (receivedCommand == 4) {
Betriebsart_OG_Bad_Komfort.postUpdate(OFF)
Betriebsart_OG_Bad_Nacht.postUpdate(OFF)
Betriebsart_OG_Bad_Frost.postUpdate(ON)
PreBetriebsart_OG_Bad_OH.postUpdate(4)
}
end
rule "Betriebsart OG Bad lesen"
when
Item Betriebsart_OG_Bad_Komfort received command or
Item Betriebsart_OG_Bad_Nacht received command or
Item Betriebsart_OG_Bad_Frost received command or
System started
then
if (Betriebsart_OG_Bad_Komfort.state == ON) {
Betriebsart_OG_Bad_OH.postUpdate(1)
PreBetriebsart_OG_Bad_OH.postUpdate(1)
}
else if (Betriebsart_OG_Bad_Nacht.state == ON) {
Betriebsart_OG_Bad_OH.postUpdate(3)
PreBetriebsart_OG_Bad_OH.postUpdate(3)
}
else if (Betriebsart_OG_Bad_Frost.state == ON) {
Betriebsart_OG_Bad_OH.postUpdate(4)
PreBetriebsart_OG_Bad_OH.postUpdate(4)
}
else {
Betriebsart_OG_Bad_OH.postUpdate(2)
PreBetriebsart_OG_Bad_OH.postUpdate(2)
}
end
ITEMS:
Code: Alles auswählen
Group Temperatur
String TempStr_EG_Wohnen "Wohnzimmer Soll/Ist [%s]" <heating>
Number TempIst_EG_Wohnen "Temperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Wohnen) { channel="knx:device:bridge:heizung:TempIst_EG_Wohnen" }
Number TempSoll_EG_Wohnen "Solltemperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Wohnen) { channel="knx:device:bridge:heizung:TempSoll_EG_Wohnen" }
Number TempBSoll_EG_Wohnen "Basis Sollwert [%.1f °C]" <heating> (EG_WZ_Temp,EG_Wohnen) { channel="knx:device:bridge:heizung:TempBSoll_EG_Wohnen" }
Contact Heizen_EG_Wohnen "Heizen [MAP(heizen_de.map):%s]" <heating> (EG_WZ_Temp) { channel="knx:device:bridge:heizung:Heizen_EG_Wohnen" }
String TempStr_EG_Kochen "Küche Soll/Ist [%s]" <heating>
Number TempIst_EG_Kochen "Temperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Kochen) { channel="knx:device:bridge:heizung:TempIst_EG_Kochen" }
Number TempSoll_EG_Kochen "Solltemperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Kochen) { channel="knx:device:bridge:heizung:TempSoll_EG_Kochen" }
Number TempBSoll_EG_Kochen "Basis Sollwert [%.1f °C]" <heating> (EG_WZ_Temp,EG_Kochen) { channel="knx:device:bridge:heizung:TempBSoll_EG_Kochen" }
Contact Heizen_EG_Kochen "Heizen [MAP(heizen_de.map):%s]" <heating> (EG_WZ_Temp) { channel="knx:device:bridge:heizung:Heizen_EG_Kochen" }
String TempStr_EG_Bad "Bad Soll/Ist [%s]" <heating>
Number TempIst_EG_Bad "Temperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Bad) { channel="knx:device:bridge:heizung:TempIst_EG_Bad" }
Number TempSoll_EG_Bad "Solltemperatur [%.1f °C]" <heating> (Temperatur,EG_WZ_Temp,EG_Bad) { channel="knx:device:bridge:heizung:TempSoll_EG_Bad" }
Number TempBSoll_EG_Bad "Basis Sollwert [%.1f °C]" <heating> (EG_WZ_Temp,EG_Bad) { channel="knx:device:bridge:heizung:TempBSoll_EG_Bad" }
Contact Heizen_EG_Bad "Heizen [MAP(heizen_de.map):%s]" <heating> (EG_WZ_Temp) { channel="knx:device:bridge:heizung:Heizen_EG_Bad" }
Number TempIst_OG_Buero "Temperatur Büro [%.1f °C]" <temperature> (Nur_Temp) { channel="knx:device:bridge:heizung:TempIst_OG_Buero" }
Number TempIst_EG_Windfang "Temperatur Winfang [%.1f °C]" <temperature> (Nur_Temp) { channel="knx:device:bridge:heizung:TempIst_EG_Windfang" }
Number TempIst_OG_Flur "Temperatur OG [%.1f °C]" <temperature> (Nur_Temp) { channel="knx:device:bridge:heizung:TempIst_OG_Flur" }
Number TempIst_DG_Flur "Temperatur DG [%.1f °C]" <temperature> (Nur_Temp) { channel="knx:device:bridge:heizung:TempIst_DG_Flur" }
Number TempKeller "Temperatur Keller [%.1f °C]" <temperature> (Nur_Temp) { exec="<[./configurations/scripts/getTempKeller.sh:300000:REGEX((.*?))]" }
Number HumKeller "Luftfeuchte Keller [%.1f %%]" <temperature> (Nur_Temp) { exec="<[./configurations/scripts/getHumiKeller.sh:300000:REGEX((.*?))]" }
Number Modus_Heizen "Modus Heizen"
Group BetriebsartOH
Group BetriebsartKNX
Number Betriebsart_EG_WZ_OH "Betriebsart WZ" <betriebsart> (BetriebsartOH)
Number PreBetriebsart_EG_WZ_OH "Betriebsart" <betriebsart> (BetriebsartOH)
Switch Betriebsart_EG_WZ_Komfort "Komfort" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_WZ_Komfort" }
Switch Betriebsart_EG_WZ_Nacht "Nacht" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_WZ_Nacht" }
Switch Betriebsart_EG_WZ_Frost "Frost" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_WZ_Frost" }
Number Betriebsart_EG_Kochen_OH "Betriebsart Küche" <betriebsart> (BetriebsartOH)
Number PreBetriebsart_EG_Kochen_OH "Betriebsart" <betriebsart> (BetriebsartOH)
Switch Betriebsart_EG_Kochen_Komfort "Komfort" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_Kochen_Komfort" }
Switch Betriebsart_EG_Kochen_Nacht "Nacht" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_Kochen_Nacht" }
Switch Betriebsart_EG_Kochen_Frost "Frost" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_EG_Kochen_Frost" }
Number Betriebsart_OG_Bad_OH "Betriebsart Bad" <betriebsart> (BetriebsartOH)
Number PreBetriebsart_OG_Bad_OH "Betriebsart" <betriebsart> (BetriebsartOH)
Switch Betriebsart_OG_Bad_Komfort "Komfort" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_OG_Bad_Komfort" }
Switch Betriebsart_OG_Bad_Nacht "Nacht" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_OG_Bad_Nacht" }
Switch Betriebsart_OG_Bad_Frost "Frost" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_OG_Bad_Frost" }
Number Betriebsart_Alle_OH "Betriebsart Alle" <betriebsart> (BetriebsartOH)
Switch Betriebsart_Alle_Komfort "Komfort" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_Alle_Komfort" }
Switch Betriebsart_Alle_Nacht "Nacht" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_Alle_Nacht" }
Switch Betriebsart_Alle_Frost "Frost" <heating> (BetriebsartKNX) { channel="knx:device:bridge:heizung:Betriebsart_Alle_Frost" }