Inspireret af Zafranski´s indlæg fra August 2019 om Roth varmestyring, så kommer her en lille hurtigt vejledning til, hvordan man får IHC varmestyring til at virke med openHAB2 og Google Home.
Det forudsætter at man har opsat sin openHAB2 med forbindelse til myopenhab.org cloud. openHAB skal/bør helst være version 2.5. eller nyere.
Det er IKKE tiltænkt som en guide til openhab generelt. Det forudsætter derfor man har en vis viden om things og items, eller i det mindste kan gennemskue det grundlæggende.
Der er brugt en temperatur & fugt sensor fra Zigza, men en "original" IHC gør præcis det samme.
Der er brugt IHC avanceret varmestyrings blok 5.2.05.c på en HW6.2 controller med firmware 2.8.4.
Bemærk - Det er opsat med en things fil, fordi man skal bruge setpunkt i varmestyrings funktionsblokken. Setpunktet er ikke tilgængelig via produktet, desværre. Det er muligt man kan hekse noget på een eller anden måde. Spørg en IHC ekspert :-)
ihc.things:
ihc:controller:elko [ hostname="IP", username="username", password="password", timeout=10000, loadProjectFile=true, createChannelsAutomatically=true ] {
Channels:
// Stort bad - Rum
Type number :stortbad_temperatur_fb "Stortbad Temperatur" [ resourceId=7986196, direction="ReadOnly" ]
Type number :stortbad_temperaturSet_fb "Stortbad Temperatur setpunkt" [ resourceId=7989780 ]
Type number :stortbad_fugtighed "Stortbad Fugtighed" [ resourceId=13699623, direction="ReadOnly" ]
Type number :stortbad_sensorfejl "Stortbad sensorfejl" [ resourceId=7989522, direction="ReadOnly" ]
Type switch :stortbad_telestat "Stortbad Telestat" [ resourceId=6144859, direction="ReadOnly" ]
}
Forklaring:
things filen gør intet andet end, at den laver dels laver selve bridge (broen) mellem openhab og IHC controlleren.
Og nedenunder defineres channels manuelt, ud fra de resourceIDére som man skal bruge (dem der står i [ ] klammerne). direction=ReadOnly" giver sig selv. OpenHAB læser kun fra IHC controlleren på disse resourceIDére. Der hvor der ikke er sat noget direction, der er det ReadWrite, fordi det er default. Og det er netop det man skal bruge til setpunktet, for at man kan skifte temperaturen (setpunktet) på en IHC "termostat" fx via Google Home.
ihc.items:
//Stort Bad
Group g_Stortbad_TSTAT "Stort Bad Termostat" [ "Thermostat" ]
Number stort_bad_Temperature "Stort Bad Temperatur [%.1f °C]" <cu_heating> (g_Stortbad_TSTAT) [ "CurrentTemperature" ] { channel="ihc:controller:elko:stortbad_temperatur_fb" }
Number stort_bad_Tempsetpunkt "Stort Bad Temperature setpunkt [%.1f °C]" <temperature> (g_Stortbad_TSTAT) [ "homekit:TargetTemperature" ] { channel="ihc:controller:elko:stortbad_temperaturSet_fb", autoupdate="false" }
Number stort_bad_fugt "Stort Bad Fugtighed [%.0f %%]" <Humidity> (g_Stortbad_TSTAT) [ "CurrentHumidity" ] { channel="ihc:controller:elko:stortbad_fugtighed" }
String stort_bad_Mode "Stort Bad Mode [%s]" (g_Stortbad_TSTAT) [ "homekit:TargetHeatingCoolingMode" ]
Switch telestat1_stort_bad "Stort Bad Telestat [%s]" <cu_switch> (g_Stortbad_TSTAT) { channel="ihc:controller:elko:stortbad_telestat" }
Forklaring:
Først skal der laves en Group item. Den hedder i det her tilfælde g_Stortbad_TSTAT. Og den skal bruge Google Home tagget [ "Thermostat" ]. Denne group fortæller Google, at der er tale om en termostat.
Derefter tilføjes de items som skal bruges til samme group for at Google kan forstå og arbejde med denne termostat korrekt. Dvs items som har disse tags:
"CurrentTemperature", den reelle temperatur.
"Homekit:TargetTemperature", der reelt er setpunktet. <- (Derfor skal den channel være ReadWrite)
"Homekit:TargetHeatingCoolingMode" som gør det, at den fortæller hvilken "mode" termostaten er i.
Normalt vil man have en "rigtig" termostat som sender et nummer, alt afhængig af om den er heat, cool, ON, OFF eller fx Auto.
Sådan en funktion har vi ikke med IHC sensorene og varmestyringen, da den reelt "bare" er sensorer/følere, der sender data retur til controlleren, så så kan tænde/slukke en telestat. Derfor er der ikke linket til nogen IHC resourceID for Mode status. Men vi kan sagtens bruge Mode alligevel, og ret smart endda.
Det gør vi ved at bruge en String type item til "Homekit:TargetHeatingCoolingMode". Ved brug af den og telestaten fortæller vi simpelthen Google om "termostaten" varmer eller ikke-varmer(køler). (heat eller cool). Simpel logik.
Men først et par billeder af "termostaten i Google Home, når det er sat op, og man har synkroniseret sine enheder. Det ser således ud i Google Home (virker også i Google Nest Hub):
Bemærk, det er samme termostat men den er rød på det ene billede og blå på det andet. Det er her Mode og String type item og en simpel rule kommer ind..
Den aktuelle temperatur aflæses under teksten "Indendørs". På begge billeder er aktuelle temperatur altså 22.5. Men dreje knappen er den man stiller setpunktet på.
På det røde billede er setpunkt sat til 23grader. Men da temperaturen kun er 22.5 grader, så er den altså i varmetilstand. Telestaten er tændt.
På det blå billede har jeg skruet setpunktet ned til 22 grader. Altså mindre end den egentlig temperatur. Og derfor er den i køletilstand. Telestaten er slukket.
Det her er ikke noget Google selv finder ud af.. Det laves via en simpel rule som benytter telestaten til at fortælle Google, via Mode, hvad status er. Den ser således ud:
rule "heatingmode stortbad"
when
Item telestat1_stort_bad changed
then
if (telestat1_stort_bad.state.toString == "ON" ) {
stort_bad_Mode.postUpdate("heat") }
else {
stort_bad_Mode.postUpdate("cool") }
end
Hvis man har en smule indblik I openhab, så vil man lyn hurtigt gennemskue denne rule.
Den betyder simpelthen:
Hvis telestat1 er ændret
så
Hvis den er ændret til ON
Sendes "heat" til item stort_bad_Mode
ellers
Sendes "cool" til item stort_bad_Mode
end
Kort sagt - Er telestaten ON, så sættes Mode til "heat" og ellers er telestaten OFF, og Mode sættes til "cool".
Det er netop det der trigger Google Home termostaten - "heat" så er den rød, "cool" så er den blå.
Og dette kan vi gøre, fordi det er en String item type.
Selve telestaten styres helt normalt via IHC og setpunktet i varmestyringsblokken. Og fordi vi har ReadWrite på setpunktet, så kan vi også skrue op/ned for setpunktet i IHC varmestyringen via Google Home.
Så nemt er det faktisk.
Det virker i Google Home app (både Android og IOS). Det virker med Google Nest Hubs, (dem med skærm). Og det virker med stemmekontrol.
Spørger jeg fx Google "Hey Google, hvad er temperaturen i stort bad" - Så får jeg svaret 22.5 grader.
Hvis jeg beder Google om at ændre termostaten til 23 grader, så gør Google også det, og setpunktet ændre sig til 23 grader i IHC varmestyrings blokken.
Fordi det er en temperatur og fugt sensor, så kan jeg også sige, "Hey Google, hvad er luftfugtigheden i stort bad". Og Google svarer retur, hvad luftfugtigheden er.
Man kan IKKE se luftfugtigheden angivet nogle steder.. Der er faktisk ingen der kan forklare, hvorfor man ikke kan se det. Men det er en feature som Google åbenbart ikke mener er nødvendig at kunne se, men som man skal spørge ind til.. Lidt mystisk holdning, men det er altså Google´s skyld.
Thats it.. Håber det kan bruges til noget.
Spørgsmål - Så bare skyd løs.
Spørgsmål
Kandersen
Inspireret af Zafranski´s indlæg fra August 2019 om Roth varmestyring, så kommer her en lille hurtigt vejledning til, hvordan man får IHC varmestyring til at virke med openHAB2 og Google Home.
Det forudsætter at man har opsat sin openHAB2 med forbindelse til myopenhab.org cloud. openHAB skal/bør helst være version 2.5. eller nyere.
Det er IKKE tiltænkt som en guide til openhab generelt. Det forudsætter derfor man har en vis viden om things og items, eller i det mindste kan gennemskue det grundlæggende.
Der er brugt en temperatur & fugt sensor fra Zigza, men en "original" IHC gør præcis det samme.
Der er brugt IHC avanceret varmestyrings blok 5.2.05.c på en HW6.2 controller med firmware 2.8.4.
Bemærk - Det er opsat med en things fil, fordi man skal bruge setpunkt i varmestyrings funktionsblokken. Setpunktet er ikke tilgængelig via produktet, desværre. Det er muligt man kan hekse noget på een eller anden måde. Spørg en IHC ekspert :-)
ihc.things:
ihc:controller:elko [ hostname="IP", username="username", password="password", timeout=10000, loadProjectFile=true, createChannelsAutomatically=true ] { Channels: // Stort bad - Rum Type number :stortbad_temperatur_fb "Stortbad Temperatur" [ resourceId=7986196, direction="ReadOnly" ] Type number :stortbad_temperaturSet_fb "Stortbad Temperatur setpunkt" [ resourceId=7989780 ] Type number :stortbad_fugtighed "Stortbad Fugtighed" [ resourceId=13699623, direction="ReadOnly" ] Type number :stortbad_sensorfejl "Stortbad sensorfejl" [ resourceId=7989522, direction="ReadOnly" ] Type switch :stortbad_telestat "Stortbad Telestat" [ resourceId=6144859, direction="ReadOnly" ] }
Forklaring:
things filen gør intet andet end, at den laver dels laver selve bridge (broen) mellem openhab og IHC controlleren.
Og nedenunder defineres channels manuelt, ud fra de resourceIDére som man skal bruge (dem der står i [ ] klammerne). direction=ReadOnly" giver sig selv. OpenHAB læser kun fra IHC controlleren på disse resourceIDére. Der hvor der ikke er sat noget direction, der er det ReadWrite, fordi det er default. Og det er netop det man skal bruge til setpunktet, for at man kan skifte temperaturen (setpunktet) på en IHC "termostat" fx via Google Home.
ihc.items:
Forklaring:
Først skal der laves en Group item. Den hedder i det her tilfælde g_Stortbad_TSTAT. Og den skal bruge Google Home tagget [ "Thermostat" ]. Denne group fortæller Google, at der er tale om en termostat.
Derefter tilføjes de items som skal bruges til samme group for at Google kan forstå og arbejde med denne termostat korrekt. Dvs items som har disse tags:
"CurrentTemperature", den reelle temperatur.
"Homekit:TargetTemperature", der reelt er setpunktet. <- (Derfor skal den channel være ReadWrite)
"Homekit:TargetHeatingCoolingMode" som gør det, at den fortæller hvilken "mode" termostaten er i.
Normalt vil man have en "rigtig" termostat som sender et nummer, alt afhængig af om den er heat, cool, ON, OFF eller fx Auto.
Sådan en funktion har vi ikke med IHC sensorene og varmestyringen, da den reelt "bare" er sensorer/følere, der sender data retur til controlleren, så så kan tænde/slukke en telestat. Derfor er der ikke linket til nogen IHC resourceID for Mode status. Men vi kan sagtens bruge Mode alligevel, og ret smart endda.
Det gør vi ved at bruge en String type item til "Homekit:TargetHeatingCoolingMode". Ved brug af den og telestaten fortæller vi simpelthen Google om "termostaten" varmer eller ikke-varmer(køler). (heat eller cool). Simpel logik.
Men først et par billeder af "termostaten i Google Home, når det er sat op, og man har synkroniseret sine enheder. Det ser således ud i Google Home (virker også i Google Nest Hub):
Bemærk, det er samme termostat men den er rød på det ene billede og blå på det andet. Det er her Mode og String type item og en simpel rule kommer ind..
Den aktuelle temperatur aflæses under teksten "Indendørs". På begge billeder er aktuelle temperatur altså 22.5. Men dreje knappen er den man stiller setpunktet på.
På det røde billede er setpunkt sat til 23grader. Men da temperaturen kun er 22.5 grader, så er den altså i varmetilstand. Telestaten er tændt.
På det blå billede har jeg skruet setpunktet ned til 22 grader. Altså mindre end den egentlig temperatur. Og derfor er den i køletilstand. Telestaten er slukket.
Det her er ikke noget Google selv finder ud af.. Det laves via en simpel rule som benytter telestaten til at fortælle Google, via Mode, hvad status er. Den ser således ud:
rule "heatingmode stortbad" when Item telestat1_stort_bad changed then if (telestat1_stort_bad.state.toString == "ON" ) { stort_bad_Mode.postUpdate("heat") } else { stort_bad_Mode.postUpdate("cool") } end
Hvis man har en smule indblik I openhab, så vil man lyn hurtigt gennemskue denne rule.
Den betyder simpelthen:
Hvis telestat1 er ændret
så
Hvis den er ændret til ON
Sendes "heat" til item stort_bad_Mode
ellers
Sendes "cool" til item stort_bad_Mode
end
Kort sagt - Er telestaten ON, så sættes Mode til "heat" og ellers er telestaten OFF, og Mode sættes til "cool".
Det er netop det der trigger Google Home termostaten - "heat" så er den rød, "cool" så er den blå.
Og dette kan vi gøre, fordi det er en String item type.
Selve telestaten styres helt normalt via IHC og setpunktet i varmestyringsblokken. Og fordi vi har ReadWrite på setpunktet, så kan vi også skrue op/ned for setpunktet i IHC varmestyringen via Google Home.
Så nemt er det faktisk.
Det virker i Google Home app (både Android og IOS). Det virker med Google Nest Hubs, (dem med skærm). Og det virker med stemmekontrol.
Spørger jeg fx Google "Hey Google, hvad er temperaturen i stort bad" - Så får jeg svaret 22.5 grader.
Hvis jeg beder Google om at ændre termostaten til 23 grader, så gør Google også det, og setpunktet ændre sig til 23 grader i IHC varmestyrings blokken.
Fordi det er en temperatur og fugt sensor, så kan jeg også sige, "Hey Google, hvad er luftfugtigheden i stort bad". Og Google svarer retur, hvad luftfugtigheden er.
Man kan IKKE se luftfugtigheden angivet nogle steder.. Der er faktisk ingen der kan forklare, hvorfor man ikke kan se det. Men det er en feature som Google åbenbart ikke mener er nødvendig at kunne se, men som man skal spørge ind til.. Lidt mystisk holdning, men det er altså Google´s skyld.
Thats it.. Håber det kan bruges til noget.
Spørgsmål - Så bare skyd løs.
Link til kommentar
Del på andre sites
14 svar på dette spørgsmål
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.