Hi.
Please be aware that i´m very new to openhab
I made some changes to this and it works. But it check the temperature every second, and make the connecting to google home crash. I think its maybe because of the request so often.
Is its possible to make some kind of delay.
Items file:
Group g_vaerelse0_TSTAT “Værelse 0” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse0_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse0_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse1_TSTAT “Værelse 1” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse1_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse1_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse2_TSTAT “Værelse 2” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse2_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse2_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse3_TSTAT “Værelse 3” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse3_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse3_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse4_TSTAT “Værelse 4” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse4_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse4_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse5_TSTAT “Værelse 5” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse5_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse5_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse6_TSTAT “Værelse 6” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse6_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse6_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse7_TSTAT “Værelse 7” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse7_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse7_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse8_TSTAT “Værelse 8” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse8_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse8_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse9_TSTAT “Værelse 9” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse9_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse9_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse10_TSTAT “Værelse 10” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse10_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse10_TSTAT) [ “TargetTemperature” ]
Group g_vaerelse11_TSTAT “Værelse 11” [ “Thermostat” ]
Number RaumTempG0 “[%.1f °C]” (g_vaerelse11_TSTAT) [ “CurrentTemperature” ]
Number SollTempG0 “[%.1f °C]” (g_vaerelse11_TSTAT) [ “TargetTemperature” ]
Rules file
val logName = “rothreadset”
val String roth_read = “http://192.168.0.70/cgi-bin/ILRReadValues.cgi”
val String roth_set = “http://192.168.0.70/cgi-bin/writeVal.cgi”
val String roth_post = “<item_list>
G0.nameG0.RaumTempG0.SollTemp
G1.nameG1.RaumTempG1.SollTemp
G2.nameG2.RaumTempG2.SollTemp
G3.nameG3.RaumTempG3.SollTemp
G4.nameG4.RaumTempG4.SollTemp
G5.nameG5.RaumTempG5.SollTemp
G6.nameG6.RaumTempG6.SollTemp
G7.nameG7.RaumTempG7.SollTemp
G8.nameG8.RaumTempG8.SollTemp
G9.nameG9.RaumTempG9.SollTemp
G10.nameG10.RaumTempG10.SollTemp
G11.nameG11.RaumTempG11.SollTemp
</item_list>”
rule "Update Roth Touchline+ temperatures"
when
System started or
//Time cron "*/10 * * * * ? *" or
Time cron "23 */10 * * * ? *"
then
var String SetPoint_read = sendHttpPostRequest(roth_read, "text/xml", roth_post)
RaumTempG0.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G0.RaumTemp')]/v", SetPoint_read)))
RaumTempG1.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G1.RaumTemp')]/v", SetPoint_read)))
RaumTempG2.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G2.RaumTemp')]/v", SetPoint_read)))
RaumTempG3.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G3.RaumTemp')]/v", SetPoint_read)))
RaumTempG4.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G4.RaumTemp')]/v", SetPoint_read)))
RaumTempG5.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G5.RaumTemp')]/v", SetPoint_read)))
RaumTempG6.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G6.RaumTemp')]/v", SetPoint_read)))
RaumTempG7.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G7.RaumTemp')]/v", SetPoint_read)))
RaumTempG8.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G8.RaumTemp')]/v", SetPoint_read)))
RaumTempG9.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G9.RaumTemp')]/v", SetPoint_read)))
RaumTempG10.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G10.RaumTemp')]/v", SetPoint_read)))
RaumTempG11.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G11.RaumTemp')]/v", SetPoint_read)))
SollTempG0.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G0.SollTemp')]/v", SetPoint_read)))
SollTempG1.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G1.SollTemp')]/v", SetPoint_read)))
SollTempG2.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G2.SollTemp')]/v", SetPoint_read)))
SollTempG3.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G3.SollTemp')]/v", SetPoint_read)))
SollTempG4.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G4.SollTemp')]/v", SetPoint_read)))
SollTempG5.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G5.SollTemp')]/v", SetPoint_read)))
SollTempG6.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G6.SollTemp')]/v", SetPoint_read)))
SollTempG7.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G7.SollTemp')]/v", SetPoint_read)))
SollTempG8.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G8.SollTemp')]/v", SetPoint_read)))
SollTempG9.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G9.SollTemp')]/v", SetPoint_read)))
SollTempG10.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G10.SollTemp')]/v", SetPoint_read)))
SollTempG11.sendCommand(transform("REGEX", "s/(.?.)(..)/$1.$2/g", transform("XPATH", "/body/item_list/i[contains(n,'G11.SollTemp')]/v", SetPoint_read)))
SollTempG0.label = transform("XPATH", "/body/item_list/i[contains(n,'G0.name')]/v", SetPoint_read).toString + " " + RaumTempG0.state as Number + "°C"
SollTempG1.label = transform("XPATH", "/body/item_list/i[contains(n,'G1.name')]/v", SetPoint_read).toString + " " + RaumTempG1.state as Number + "°C"
SollTempG2.label = transform("XPATH", "/body/item_list/i[contains(n,'G2.name')]/v", SetPoint_read).toString + " " + RaumTempG2.state as Number + "°C"
SollTempG3.label = transform("XPATH", "/body/item_list/i[contains(n,'G3.name')]/v", SetPoint_read).toString + " " + RaumTempG3.state as Number + "°C"
SollTempG4.label = transform("XPATH", "/body/item_list/i[contains(n,'G4.name')]/v", SetPoint_read).toString + " " + RaumTempG4.state as Number + "°C"
SollTempG5.label = transform("XPATH", "/body/item_list/i[contains(n,'G5.name')]/v", SetPoint_read).toString + " " + RaumTempG5.state as Number + "°C"
SollTempG6.label = transform("XPATH", "/body/item_list/i[contains(n,'G6.name')]/v", SetPoint_read).toString + " " + RaumTempG6.state as Number + "°C"
SollTempG7.label = transform("XPATH", "/body/item_list/i[contains(n,'G7.name')]/v", SetPoint_read).toString + " " + RaumTempG7.state as Number + "°C"
SollTempG8.label = transform("XPATH", "/body/item_list/i[contains(n,'G8.name')]/v", SetPoint_read).toString + " " + RaumTempG8.state as Number + "°C"
SollTempG9.label = transform("XPATH", "/body/item_list/i[contains(n,'G9.name')]/v", SetPoint_read).toString + " " + RaumTempG9.state as Number + "°C"
SollTempG10.label = transform("XPATH", "/body/item_list/i[contains(n,'G10.name')]/v", SetPoint_read).toString + " " + RaumTempG10.state as Number + "°C"
SollTempG11.label = transform("XPATH", "/body/item_list/i[contains(n,'G11.name')]/v", SetPoint_read).toString + " " + RaumTempG11.state as Number + "°C"
//logInfo(logName, "return from post" + SetPoint_read)
end
rule "Set Roth Touchline+ temperatures room 0"
when
Item SollTempG0 changed
then
sendHttpGetRequest(roth_set + "?G0.SollTemp=" + (SollTempG0.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 1"
when
Item SollTempG1 changed
then
sendHttpGetRequest(roth_set + "?G1.SollTemp=" + (SollTempG1.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 2"
when
Item SollTempG2 changed
then
sendHttpGetRequest(roth_set + "?G2.SollTemp=" + (SollTempG2.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 3"
when
Item SollTempG3 changed
then
sendHttpGetRequest(roth_set + "?G3.SollTemp=" + (SollTempG3.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 4"
when
Item SollTempG4 changed
then
sendHttpGetRequest(roth_set + "?G4.SollTemp=" + (SollTempG4.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 5"
when
Item SollTempG5 changed
then
sendHttpGetRequest(roth_set + "?G5.SollTemp=" + (SollTempG5.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 6"
when
Item SollTempG6 changed
then
sendHttpGetRequest(roth_set + "?G6.SollTemp=" + (SollTempG6.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 7"
when
Item SollTempG7 changed
then
sendHttpGetRequest(roth_set + "?G7.SollTemp=" + (SollTempG7.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 8"
when
Item SollTempG8 changed
then
sendHttpGetRequest(roth_set + "?G8.SollTemp=" + (SollTempG8.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 9"
when
Item SollTempG9 changed
then
sendHttpGetRequest(roth_set + "?G9.SollTemp=" + (SollTempG9.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 10"
when
Item SollTempG10 changed
then
sendHttpGetRequest(roth_set + "?G10.SollTemp=" + (SollTempG10.state as Number * 100).intValue())
end
rule "Set Roth Touchline+ temperatures room 11"
when
Item SollTempG11 changed
then
sendHttpGetRequest(roth_set + "?G11.SollTemp=" + (SollTempG11.state as Number * 100).intValue())
end
//logInfo(logName, "GET request" + roth_set + "?G0.SollTemp=" + (SollTempG0.state as Number * 100).intValue())
Site file
Text label=“Gulvvarme” icon=“temperature” {
//Setpoint item=SollTempG0 valuecolor=[>22=“red”,>21=“green”,>20=“orange”,<=20=“blue”]
Setpoint item=SollTempG0 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG1 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG2 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG3 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG4 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG5 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG6 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG7 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG8 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG9 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG10 minValue=5 maxValue=30 step=0.5
Setpoint item=SollTempG11 minValue=5 maxValue=30 step=0.5
}