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

Korleis lagre script og kjøre det i homeseer?


Join

Anbefalte innlegg

Hei! :)

 

Utvikleren til Device History plugin-et har vore meget serviceinnstilt og levert kode for å hente ut gjennomsnittsverdi frå sist time og skrive verdien til et virtuellt device.

 

På denne måten kan eg sammenligne direkte med en verdi, istedenfor å gjennomsnittsberegne for kvar enkelt funksjon.

 

Koden er som følger:

 

 

Public Sub UpdateHourlyStats(parms As String)

Dim intSourceRef As Integer Dim intDestRef As Integer Dim dtmFrom As Date Dim dtmTo As Date Dim strDeviceStats As String Dim astrStats() As String Const IDX_STATS_MIN As Integer = 0 Const IDX_STATS_MAX As Integer = 1 Const IDX_STATS_AVG As Integer = 2 Const IDX_STATS_COUNT As Integer = 3 Dim dblMin As Double Dim dblMax As Double Dim dblAvg As Double Dim intCount As Integer 'figure out the parameters intSourceRef = CType(parms.Split(";")(0), Integer) intDestRef = CType(parms.Split(";")(1), Integer) dtmTo = Date.Now dtmFrom = dtmTo.AddHours(-1) hs.WriteLog("Device History", "Getting updated stats for device " & intSourceRef & " from '" & dtmFrom.ToString() & "' to '" & dtmTo.ToString() & "' ...") 'Ask the plugin for the stats strDeviceStats = hs.PluginFunction("Device History", "", "GetRangeStats", {intSourceRef.ToString(), dtmFrom.ToString(), dtmTo.ToString()}) 'Parse the response into discrete variables astrStats = strDeviceStats.Split("|") If astrStats.Length() = 4 Then

dblMin = astrStats(IDX_STATS_MIN) dblMax = astrStats(IDX_STATS_MAX) dblAvg = astrStats(IDX_STATS_AVG) intCount = astrStats(IDX_STATS_COUNT) 'Do something with the output hs.WriteLog("Device History", "Device " & intSourceRef & " ranged from " & dblMin & " to " & dblMax & ", with an average value of " & dblAvg & " taken from " & intCount & " changes.") hs.WriteLog("Device History", "Updating device " & intDestRef & " with value " & dblAvg) hs.SetDeviceValueByRef(intDestRef, dblAvg, True)

Else

hs.WriteLog("Error", "Retrieval of stats for device " & intSourceRef & " failed.")

End If

End Sub

 

Korleis lagre som .vb fil?

 

 Og så må eg ha litt rettleiing på kva som er rett device-ref. 

 

Er det root-device, eller ref på funksjoner etc.

 

Edit: I tillegg ser det ut til eg også må lære å legge inn kode som skjult tekst og rett formatering, slik som de andre bruker. 

Endret av Join
Lenke til kommentar
Del på andre sider

Moskus skrev (4 timer siden):

Har du sett denne:

 

...og det ser ut som om du må formatere koden din. Den der klarer jeg ikke lese uten altfor mye innsats.

 

 

Slik? Eg skal ta meg ein tur på skulen. :)

Public Sub UpdateHourlyStats(parms As String)
Dim intSourceRef As Integer
Dim intDestRef As Integer
Dim dtmFrom As Date
Dim dtmTo As Date

Dim strDeviceStats As String
Dim astrStats() As String

Const IDX_STATS_MIN As Integer = 0
Const IDX_STATS_MAX As Integer = 1
Const IDX_STATS_AVG As Integer = 2
Const IDX_STATS_COUNT As Integer = 3

Dim dblMin As Double
Dim dblMax As Double
Dim dblAvg As Double
Dim intCount As Integer

'figure out the parameters
intSourceRef = CType(parms.Split(";")(0), Integer)
intDestRef = CType(parms.Split(";")(1), Integer)
dtmTo = Date.Now
dtmFrom = dtmTo.AddHours(-1)

hs.WriteLog("Device History", "Getting updated stats for device " & intSourceRef & " from '" & dtmFrom.ToString() & "' to '" & dtmTo.ToString() & "' ...")

'Ask the plugin for the stats
strDeviceStats = hs.PluginFunction("Device History", "", "GetRangeStats", {intSourceRef.ToString(), dtmFrom.ToString(), dtmTo.ToString()})

'Parse the response into discrete variables
astrStats = strDeviceStats.Split("|")
If astrStats.Length() = 4 Then
dblMin = astrStats(IDX_STATS_MIN)
dblMax = astrStats(IDX_STATS_MAX)
dblAvg = astrStats(IDX_STATS_AVG)
intCount = astrStats(IDX_STATS_COUNT)

'Do something with the output
hs.WriteLog("Device History", "Device " & intSourceRef & " ranged from " & dblMin & " to " & dblMax & ", with an average value of " & dblAvg & " taken from " & intCount & " changes.")
hs.WriteLog("Device History", "Updating device " & intDestRef & " with value " & dblAvg)
hs.SetDeviceValueByRef(intDestRef, dblAvg, True)
Else
hs.WriteLog("Error", "Retrieval of stats for device " & intSourceRef & " failed.")
End If
 
End Sub

 

Takk for push, fann knapp for "kode" på verktøylinja på innlegg.

Device ref, blir det det samme som Device Id. Dette virker logisk.

 

I tillegg fekk eg tips om korleis kjøre script (må prøve meg fram med eit intervall som er ofte nok, men uten å overlaste serveren): Vedlagt bilde.

 

Er dette Device ref.png

Tibberseer Power deviceref.jpg

image_106574.png

 

Sourceref blir Tibberseer Power (Deviceref 212) og Destsourceref blir det virtuelle devicet med det korte navnet "Live snittforbruk kWh sist time" (Deviceref 54)?

 

Eg må sjekke om det er riktig innstilling på devicet, men har lagt inn det skal vere 3desimaler og benevnelsen kWh på slutten, då burde det kunne få gjennomsnittsverdi frå scriptet.

 

Mvh

Endret av Join
Meir info. Ny lærdom. Bytte av teskje.
Lenke til kommentar
Del på andre sider

Hei! :)

 

Kan noken fortelle meg meininga med dette her:

---------

Save this in a .vb file in your Scripts directory then create a recurring event that runs a script using the .vb file and the UpdateHourlyStats function with the source ref and destination ref separated by ";":

-----------

Eg finn ikkje rett plass i scriptet ved å sjå på det..

Sourceref skal vere 212

Destsourceref skal vere 54

 

Korleis skal dette skrives korrekt i koden? :)

 

Mvh

Lenke til kommentar
Del på andre sider

Moskus skrev (1 time siden):

Det er de nederste feltene her:

image.png

...hvor Sub or Function skal settes til "UpdateHourlyStats" uten sitatmerker, og Parameters skal være "212;54" uten sitatmerker.

Dvs scriptet skal vere uforandret, kun lagre det som .vb fil og linkes til i "kjør script" aksjonen med parameter?

 

Blir nesten som å kjøre underprogram i iso-programmering det her då. 😀 

Endret av Join
Lenke til kommentar
Del på andre sider

4 hours ago, Join said:

Dvs scriptet skal vere uforandret, kun lagre det som .vb fil og linkes til i "kjør script" aksjonen med parameter?

Ja. Husk funksjonsnavn også.

 

4 hours ago, Join said:

Blir nesten som å kjøre underprogram i iso-programmering det her då. 😀 

If you say so. ;) 

Lenke til kommentar
Del på andre sider

Heihei. :)

 

God helg. :)

 

Eg har trøbbel med å få igang scriptet mitt..

 

Har de tips til mulig feil som kan oppstå her?

 

target device (54) har 0,000kWh som verdi.

 

Mistenker at scriptet ikkje kjører. 

 

 

Mvh

SmartSelect_20211128-100333_Chrome.jpg

SmartSelect_20211128-100512_Chrome.jpg

Lenke til kommentar
Del på andre sider

Legg ut hva som står på linje 1 i filen. Alle paranteser som "åpnes" med ( må også lukkes med en )

 

Også ser det ut som at filnavnet ditt nå er "kwh sist time.vb.txt" endelsen må være bare .vb ellers så er det per def fortsatt en txt fil.

 

Er det effekt (kw) eller mengden (kwh) du ønsker å ta ut et gjennomsnitt av? Har selv en utregning av kwh, men den gjør jeg ved å lese av tibber total consumption devicen hver hele time, og trekke fra forrige times verdi. Da får du kwh brukt den siste timen. 

 

  • Like 1
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.