Moskus Skrevet 28. mars 2016 Skrevet 28. mars 2016 DeviceState.vb Lar deg lagre og laste inn innstillinger for et utvalgt av enheter. Synes du at lyset er perfekt akkurat nå? Lagre det! Og hent det tilbake senere. Sub Main(ByVal not_used As Object) 'By Moskus, August 2015 'Set up a new config. 'Specify devices between the brackets below (comma separated): Dim devices() As Integer = {342, 872, 873} 'Specify a configuration name. This is used when calling "Save" and "Load" later. Dim config_name As String = "Bedroom" 'Creating initial ini file and store it in a list Dim lst As New System.Collections.Generic.List(Of DeviceState) For Each d As Integer In devices Dim dS As New DeviceState dS.deviceRef = d dS.deviceValue = hs.DeviceValueEx(d) lst.Add(dS) Next 'Write the list to file SaveToFile(config_name, lst) End Sub Sub Save(ByVal config_name As String) 'Get the device list Dim lst As System.Collections.Generic.List(Of DeviceState) = LoadFromFile(config_name) 'Get the current device values for each device For Each d As DeviceState In lst d.deviceValue = hs.DeviceValueEx(d.deviceRef) Next 'Store the list SaveToFile(config_name, lst) End Sub Sub Load(ByVal config_name As String) 'Get the device list Dim lst As System.Collections.Generic.List(Of DeviceState) = LoadFromFile(config_name) For Each d As DeviceState In lst 'Find the correct CAPI based on device value... Dim CAPIcontrol As HomeSeerAPI.CAPIControl = Nothing For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(d.deviceRef) If d.deviceValue = cc.ControlValue Then CAPIcontrol = cc Exit For End If Next '... And execute it hs.CAPIControlHandler(CAPIcontrol) Next End Sub Function LoadFromFile(ByVal config_name As String) As System.Collections.Generic.List(Of DeviceState) Dim lst As New System.Collections.Generic.List(Of DeviceState) Dim filename As String = "DeviceState_" & config_name & ".ini" Dim lines() As String = hs.GetINISectionEx("Devices", filename) For Each line As String In lines Dim deviceRef As Integer = line.Split("=")(0).Trim Dim deviceValue As Double = line.Split("=")(1).Trim lst.Add(New DeviceState(deviceRef, deviceValue)) Next Return lst End Function Sub SaveToFile(ByVal config_name As String, ByVal stateList As System.Collections.Generic.List(Of DeviceState)) Dim filename As String = "DeviceState_" & config_name & ".ini" For Each d As DeviceState In stateList hs.SaveINISetting("Devices", d.deviceRef, d.deviceValue, filename) Next End Sub <Serializable> Public Class DeviceState Public Property deviceRef As Integer Public Property deviceValue As Double Public Sub New() End Sub Public Sub New(ByVal _deviceRef As Integer, ByVal _deviceValue As Double) Me.deviceRef = _deviceRef Me.deviceValue = _deviceValue End Sub End Class Oppsett: Det er to måter å lage et oppsett på. 1. Redigere Main()-sub'en med å liste opp device'referansene i krølleparantesene i denne linjen: Dim devices() As Integer = {342, 872, 873} og navnet i denne linjen: Dim config_name As String = "Bedroom" ... og så kjøre scriptet med å kalle Main-sub'en. 2. Lag en INI-fil i \Config-mappen på dette formatet: [Devices] devRef1=devValue1 devRef2=devValue2 devRef3=devValue3 Navngi den "DeviceState_DittVariabelNavn.ini" der du bytter ut DittVariabelNavn med noe mer beskrivende. Det er dette du skal kalle senere. Mitt testeksempel ser slik ut for DeviceState_Bedroom.ini: [Devices] 342=53 872=25 873=39 Når det er gjort er det bare å lage to eventer. Et for lagring og et for tilbakestilling. Lagring av lys gjøres med å kjøre scriptet "DeviceStates.vb" med funksjon "Save" og parameter satt til DittVariabelNavn, slik: Tilbakestilling er helt likt, men da bytter du ut "Save" med "Load". Det er da mulig å lage veldig enkle "scenes" med å kopiere en ini-fil og gi den et nytt navn, som f.eks. "Bedroom-Morning", "Bedroom-Sexytime", "Bedroom-Night", "Bedroom-Off", og så videre. Bare redigere ini-filene med passende verdier, og restore som det passer deg. Så lenge teknologien som styrer lyset lagrer devicevalue og bruker CAPI til kontroll (og det gjør vel alle skulle jeg mene), så vil dette fungere. Jeg tror til og med det fungerer med andre enheter (som f.eks. Squeezebox Play/Pause, og så videre). 2 2 Siter
TB_HA Skrevet 30. desember 2016 Skrevet 30. desember 2016 Den 3/28/2016 klokken 20.04, Moskus skrev: DeviceState.vb Lar deg lagre og laste inn innstillinger for et utvalgt av enheter. Synes du at lyset er perfekt akkurat nå? Lagre det! Og hent det tilbake senere. Så lenge teknologien som styrer lyset lagrer devicevalue og bruker CAPI til kontroll (og det gjør vel alle skulle jeg mene), så vil dette fungere. Jeg tror til og med det fungerer med andre enheter (som f.eks. Squeezebox Play/Pause, og så videre). Vet du om dette fungerer med JowiHue / Hue-pærer? Siter
Moskus Skrevet 30. desember 2016 Forfatter Skrevet 30. desember 2016 3 timer siden, TB_HA skrev: Vet du om dette fungerer med JowiHue / Hue-pærer? Jeg kan ikke se noen grunner til at det ikke skal fungere. Regner egentlig med at det er problemfritt. Siter
bjwanvik Skrevet 19. januar 2017 Skrevet 19. januar 2017 Har lagt merke til at en og annen gang funker ikke automatikken helt som den skal på kjøkkenet, og gikk etter litt i loggen nå.. jan-19 01:04:59 Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\DeviceState.vb: compiler initialization failed unexpectedly: 0x80070002 jan-19 01:04:59 Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\DeviceState.vb: could not find library 'Scheduler.dll' Har du noe tips sånn på stående fot @Moskus? Noe merkelig at den plutselig ikke skulle finne en fil som den antagelig finner i de aller fleste tilfellene til vanlig.. kan det være at fila er opptatt med noe annet? Siter
Moskus Skrevet 19. januar 2017 Forfatter Skrevet 19. januar 2017 7 timer siden, bjwanvik skrev: Har du noe tips sånn på stående fot @Moskus? Stopp HomeSeer, og sett HS til å starte som Administrator. Siter
psv021 Skrevet 23. januar 2017 Skrevet 23. januar 2017 Dersom HS3 er autostartet kan den ha blitt startet fra feil sted. I f.eks Task Scheduler må path defineres. Det var nettopp en annen tråd om samme tema. Vært tema på HS-forumet også. Googler du feilmeldingen finner du mye info. Siter
ZoRaC Skrevet 18. november 2017 Skrevet 18. november 2017 Jeg får bare feil når jeg prøver kjøre "Save": Sitat Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'. Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: End of statement expected. Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: Expected 'End'. Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'. Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: End of statement expected. Nov-18 20:51:15 Error Compiling script /usr/local/HomeSeer/scripts/DeviceState.vb: Expected 'End'. Noen forslag? Har prøvd med flere forskjellige dvRef, i tilfelle det var en device den ikke "likte". Burde vel fungere på Linux også? Siter
Moskus Skrevet 20. november 2017 Forfatter Skrevet 20. november 2017 På 11/18/2017 den 20.54, ZoRaC skrev: Noen forslag? Har prøvd med flere forskjellige dvRef, i tilfelle det var en device den ikke "likte". Burde vel fungere på Linux også? Den liker tydeligvis ikke kortversjonen av deklarering av properties. Rart! Går på Zee2, trodde jeg, men det skal jeg teste. Siter
ZoRaC Skrevet 22. november 2017 Skrevet 22. november 2017 På 20.11.2017 den 8.52, Moskus skrev: Den liker tydeligvis ikke kortversjonen av deklarering av properties. Dvs at det er enkelt å fikse? Siter
Moskus Skrevet 22. november 2017 Forfatter Skrevet 22. november 2017 Ja, ikke umulig... skal kikke på det. Siter
Norseman Skrevet 12. desember 2017 Skrevet 12. desember 2017 Takk, dette fungerte utmerket! Bruker dette til å lagre lys-status før "støvsuger-modus" som er alle lys på full guffe, deretter settes det tilbake slik det var. Siter
iceball Skrevet 20. mars 2018 Skrevet 20. mars 2018 (endret) Satt opp dette også selv nå. Genialt med kutting av pristopper med TibberSeer og tilbakestilling noen timer senere. Takker @Moskus! Endret 20. mars 2018 av iceball 1 Siter
Beerpal Skrevet 27. november 2018 Skrevet 27. november 2018 Hei. jeg får ikke dette til å fungere. Håper noen kan hjelpe meg her? Siter
Moskus Skrevet 28. november 2018 Forfatter Skrevet 28. november 2018 Ja, kopier scriptet en gang til. Det finnes noen tegn der som tydeligvis ikke skal være der. Siter
bio Skrevet 21. februar 2019 Skrevet 21. februar 2019 På 18.11.2017 den 20.54, ZoRaC skrev: Jeg får bare feil når jeg prøver kjøre "Save": Noen forslag? Har prøvd med flere forskjellige dvRef, i tilfelle det var en device den ikke "likte". Burde vel fungere på Linux også? Fant du noen løsning på dette? Får samme feil som deg, HS3 på Linux. Siter
ZoRaC Skrevet 22. februar 2019 Skrevet 22. februar 2019 8 timer siden, bio skrev: Fant du noen løsning på dette? Får samme feil som deg, HS3 på Linux. Nei, jeg bare droppet det. Siter
Moskus Skrevet 22. februar 2019 Forfatter Skrevet 22. februar 2019 Ah, pokkker. Linux (dvs mono) må ha eksplisitt skrevet properties. Det burde være mulig å løse! Siter
ZoRaC Skrevet 22. februar 2019 Skrevet 22. februar 2019 4 minutter siden, Moskus skrev: Det burde være mulig å løse! Jeg hører du sier det... På 22.11.2017 den 20.31, Moskus skrev: Ja, ikke umulig... skal kikke på det. Siter
Anbefalte innlegg
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.