Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Styre virtual device i HS3 fra HSTouch


Anbefalte innlegg

Jeg har en virtual device i HS3 (Heat Pump Target Temperature) som jeg bruker til å sette måltemperaturen på varmepumpen via Sensibo.  Så hvis Heat Pump Target Temperature endres og vi er hjemme, videresendes temperaturen til varmepumpen direkte.  Hvis den endres når det er natt eller når vi er borte, så gjøres ingenting ettersom varmepumpen er satt ned på 16 grader for å spare strøm.  Men på morgenen igjen, vil verdien i Heat Pump Target Temperature bli satt i varmepumpen.

 

I HS3 fungerer dette fint, både ved å sette Heat Pump Target Temperature direkte, samt å bruke verdien i events i løpet av dagen.

 

Men hvordan kan jeg endre verdien på en virtual device fra HSTouch?  Jeg har to knapper som jeg ønsker å endre verdien i steg, enten opp eller ned.

 

Jeg har kommet så langt at jeg har laget en manuell event i HS3 som kjører et skript for å heve eller senke verdien på Heat Pump Target Temperature.  Og jeg kan trigge eventen fra HSTouch.  Men skriptet gjør ikke jobben sin.

 

Jeg har prøvd hs.SetDeviceString, som setter verdien i Status-feltet.  Men da følger ikke Control-feltet med.  Hva er riktige måten å gjøre dette på?  Og trenger jeg å ta høyde for ytre grenser på device'en, eller håndteres det av seg selv siden den bare kan settes til verdier 16-30 grader?

 

 

2019-07-04 12_47_16-Window.png

Lenke til kommentar
Del på andre sider

hs.SetDeviceValueByRef(dev_ref, hs.DeviceValue(dev_ref) + 1, True)

for å justere opp... og

hs.SetDeviceValueByRef(dev_ref, hs.DeviceValue(dev_ref) - 1, True)

for å justere ned. :) 

 

Alle "dev_ref" må endres til deviceIDen til "Heat Pump, Target Temperature"-IDen (den står øverst på Advanced-tab'en på device property siden)

  • Like 1
Lenke til kommentar
Del på andre sider

Takker og bukker! Skal teste det ut. 

 

Må fordype meg litt i det grensesnittet til HS. Er ikke helt klart for meg hvorfor en har SetDeviceValueByRef-metode og GetDeviceValue-metode som begge bruker RefID til device som input, men ikke kan bruke SetDeviceValue (som jeg prøvde før jeg postet spørsmålet, men ikke fikk til å fungere). ?

  • Like 1
Lenke til kommentar
Del på andre sider

2 timer siden, ØysteinHJ skrev:

Er ikke helt klart for meg hvorfor en har SetDeviceValueByRef-metode og GetDeviceValue-metode som begge bruker RefID til device som input, men ikke kan bruke SetDeviceValue

Og akkurat DER oppsummerte du det absolutt dummeste valget HomeSeer-folka gjorde i 2013. Ja, det er inkonsekvent og helt fjernt. Man kan ikke ødelegge APIens egen struktur slik.

 

... og nå er jeg redd det er for sent.

  • Like 1
Lenke til kommentar
Del på andre sider

6 minutter siden, Moskus skrev:

... og nå er jeg redd det er for sent.

 

Hvor vanskelig er det for dem å legge til dette i koden sin da?

Sitat

Function setDeviceValue(refid, value) {

return setDeviceValueByRef(refid, value)

}

 

(Tatt på husken)

 

Er nok bare viljen det står på, det tar dem 2 minutter...!

Lenke til kommentar
Del på andre sider

Nei, fordi SetDeviceValue-funksjonen finnes allerede. Strengt tatt burde det være mulig å bruke overrides (altså flere funksjoner med forskjellig input), men HS er merkelig nok ikke glad i det. F.eks. har de hs.DeviceValue for å hente device-verdien i heltall og hs.DeviceValueEX for å hente device-verdien som desimaltall.

 

Det er ikke galt. Bare gammelt. :) 

Lenke til kommentar
Del på andre sider

Men det er jo allerede en SetDeviceValue-funksjon (tenkte .NET med "metode" i forrige innlegg). Vil endringen din ødelegge annen oppførsel?

 

Forhåpentligvis blir "rusk og rask" fra HS3 endret i HS4, med mulighet for "legacy" for å støtte gammel konfigurasjo.

Lenke til kommentar
Del på andre sider

6 minutter siden, Moskus skrev:

F.eks. har de hs.DeviceValue for å hente device-verdien i heltall og hs.DeviceValueEX for å hente device-verdien som desimaltall.

Det tror jeg forresten ikke du slipper unna. Hvis metode-navnet er det samme, tror jeg returverdien også må være det samme. Men det går jo an å bruke "out" parameter da.

 

Merk at jeg prater C# her. Har ikke peiling på VB-skript, så aner ikke om det er overførbart. ?

Lenke til kommentar
Del på andre sider

1 minutt siden, ØysteinHJ skrev:

Overloading, er der ikke? I hvert fall i C#.

Jo, wops! :) 

 

Jeg har sagt det mange ganger at det er fint mulig å overloade funksjoner og rutiner i .NET, men har ikke vunnet fram så langt. Det var strengt tatt ikke mulig i VB5.0 så vidt jeg husker, men DET begynner å bli lenge siden. ;) 

 

Kanskje verdt å ta kampen en gang til med HS4. :) 

 

Akkurat nå, ØysteinHJ skrev:

Det tror jeg forresten ikke du slipper unna. Hvis metode-navnet er det samme, tror jeg returverdien også må være det samme. Men det går jo an å bruke "out" parameter da.

Jo, men hvorfor trenger man to funksjoner? 24 og 24,0 er det samme tallet. Hvis man lagrer et heltall i devicen, så får man et heltall ut, desimaltall hvis ikke.

 

Det ble gjort for å "lette overgangen" fra HS2, men siden overgangen var såpass stor uansett kunne man bare tatt 10 minutter ekstra for å gi en fornuftig struktur.

Lenke til kommentar
Del på andre sider

6 minutter siden, ØysteinHJ skrev:

Merk at jeg prater C# her. Har ikke peiling på VB-skript, så aner ikke om det er overførbart. ?

Jeg kan nå begge deler. Nesten alt man kan i C# kan man i VB.net også, forskjellene er omtrent ikke-eksisterende nå. Men synes C# har noen fordeler med forenkling av syntax, spesielt når det gjelder lambda-funksjoner.

 

Men ellers er VB.net mye enklere å lese: Det er som å skrive pseudo-kode og leselig for alle. :) 

Lenke til kommentar
Del på andre sider

19 minutter siden, Moskus skrev:

Kanskje verdt å ta kampen en gang til med HS4. :)

Vet du hvor langt unna HS4 er? Tenker litt lisenskjøp også. ?

 

20 minutter siden, Moskus skrev:

Jo, men hvorfor trenger man to funksjoner? 24 og 24,0 er det samme tallet. Hvis man lagrer et heltall i devicen, så får man et heltall ut, desimaltall hvis ikke.

Det har med datatypen på returverdien å gjøre. Er ganske sikker på at det ikke går an å overloade metoder med forskjellig retur-datatype. Men det finnes jo masse måter å snike det til. ?

Lenke til kommentar
Del på andre sider

13 minutter siden, Moskus skrev:

 Jeg kan nå begge deler.

Hehe.. En kosekvens av HomeSeer-hobby?

 

17 minutter siden, Moskus skrev:

Men ellers er VB.net mye enklere å lese: Det er som å skrive pseudo-kode og leselig for alle. :) 

Ja, ser at skripting blir helt nødvendig for meg å sette meg inn i. 

Lenke til kommentar
Del på andre sider

10 timer siden, ØysteinHJ skrev:

Vet du hvor langt unna HS4 er? Tenker litt lisenskjøp også. ?

Det er vel sagt "i løpet av 2020". Men hvis vi skal trekke erfaringer fra HS2->HS3, så ble vel HS3 annonsert i 2010/2011, og sluppet i 2013...

 

Jeg hadde håpet at de gikk over på .NET Core, men jeg er redd at Core ikke har alle biblioteker. Det er ikke bare-bare å konvertere et såpass komplisert prosjekt.

 

10 timer siden, ØysteinHJ skrev:

Hehe.. En kosekvens av HomeSeer-hobby?

Haha, nei faktisk ikke. Det er en konsekvens at at hvis jeg skulle trenge hjelp av proffer når jeg koder i jobb-sammenheng, så er det mye lettere hvis prosjektet er i C#. ;) 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.