Hop til indhold
  • 0

Google Home - Roth Touchline - Virker


Szafranski
 Share

Spørgsmål

Jeg har fået Roth Touchline til at virke med Google Assistant, fandt en kode som jeg har ændret lidt i, hvis nogen skulle være interesseret. 

Openhab2 ser det ikke længere som en termostat, men det gør Google Home og set punkt kan ændres.

Har dog ikke fundet løsningen på at skifte mellem "Varme - Køling - Fra"

HTTP binding skal installeres i PaperUI - Husk af ændre IP i Rules fil

 

Items fil

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 fil

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 = "<body><item_list>
    <i><n>G0.name</n></i><i><n>G0.RaumTemp</n></i><i><n>G0.SollTemp</n></i>
    <i><n>G1.name</n></i><i><n>G1.RaumTemp</n></i><i><n>G1.SollTemp</n></i>
    <i><n>G2.name</n></i><i><n>G2.RaumTemp</n></i><i><n>G2.SollTemp</n></i>
    <i><n>G3.name</n></i><i><n>G3.RaumTemp</n></i><i><n>G3.SollTemp</n></i>
    <i><n>G4.name</n></i><i><n>G4.RaumTemp</n></i><i><n>G4.SollTemp</n></i>
    <i><n>G5.name</n></i><i><n>G5.RaumTemp</n></i><i><n>G5.SollTemp</n></i>
    <i><n>G6.name</n></i><i><n>G6.RaumTemp</n></i><i><n>G6.SollTemp</n></i>
    <i><n>G7.name</n></i><i><n>G7.RaumTemp</n></i><i><n>G7.SollTemp</n></i>
    <i><n>G8.name</n></i><i><n>G8.RaumTemp</n></i><i><n>G8.SollTemp</n></i>
    <i><n>G9.name</n></i><i><n>G9.RaumTemp</n></i><i><n>G9.SollTemp</n></i>
    <i><n>G10.name</n></i><i><n>G10.RaumTemp</n></i><i><n>G10.SollTemp</n></i>
    <i><n>G11.name</n></i><i><n>G11.RaumTemp</n></i><i><n>G11.SollTemp</n></i>
    </item_list></body>"

    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 fil

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
    }

 

Link til kommentar
Del på andre sites

0 svar på dette spørgsmål

Recommended Posts

Der er ingen der har svaret på dette spørgsmål endnu

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gæst
Svar på dette spørgsmål

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loader...
 Share

×
×
  • Tilføj...

Important Information

Privatlivspolitik og We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

1200x630bb.png

ok