Moskus Skrevet 28. mars 2016 Skrevet 28. mars 2016 Dette scriptet brukes f.eks. hvis du vil øke lyset gradvis fra 0% til 100% over en halv time. Da trenger du et script som trigger hvert 18. sekund, og som kjører dette scriptet: IncrementLight.vb Public Sub Main(ByVal _deviceRef As Object) '© Moskus Dim deviceRef As Integer = Integer.Parse(_deviceRef) Dim deviceValue As Integer = hs.DeviceValue(deviceRef) 'Exit if the device is already at maximum, i.e. "On" If hs.CAPIGetStatus(deviceRef).Status = "On" Then Exit Sub 'Find the correct CAPI control to execute. I really miss Linq!!! For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef) If cc.ControlValue = (deviceValue + 1) Then 'Set the correct dim level hs.CAPIControlHandler(cc) 'We're done, so let's exit! Exit Sub End If Next End Sub IncrementLightCustom.vb Ulempen med de fleste dimmere er at de ikke er lineære. De første 1-20% gir en mye større relativt forskjell enn de siste 80-99%. Det gjør det følgende scriptet med, men du trenger en "counter" som må settes til 0 før du starter. Parameter: 100#counter name ... der 100 er device ref til lampen du skal styre, og "counter name" selvfølgelig er navnet på counteren. Public Sub Main(ByVal _deviceRefAndCounter As Object) '© Moskus Dim deviceRef As Integer = Integer.Parse(_deviceRefAndCounter.ToString.Split("#")(0)) Dim countervalue As Integer = hs.CounterValue(_deviceRefAndCounter.ToString.Split("#")(1)) Dim modifier As Integer = 4 Dim dimvalue As Integer = Math.Ceiling(countervalue ^ (modifier) / 100 ^ (modifier - 1)) 'Exit if the device is already at maximum, i.e. "On" If hs.CAPIGetStatus(deviceRef).Status = "On" Then Exit Sub 'Find the correct CAPI control to execute. I really miss Linq!!! For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef) If cc.ControlValue = dimvalue Then 'Set the correct dim levelQ hs.CAPIControlHandler(cc) 'We're done, so let's exit! Exit Sub End If Next End Sub IncrementLightRGB.vb Hvis man istedenfor har en RGB-stripe eller lampe, og man først vil ha lyset rødt, så gult, og deretter hvitt, kan man bruke dette. Du må endre de fire første linjene for å passe til ditt oppsett. Public Sub Main(ByVal _nothingreally As Object) '© Moskus Dim deviceR As Integer = 990 Dim deviceG As Integer = 991 Dim deviceB As Integer = 992 Dim countervalue As Integer = hs.CounterValue("Sunshine soverom") Dim modifier As Integer = 2 Dim dimvalue As Integer = Math.Ceiling(countervalue ^ (modifier) / 100 ^ (modifier - 1)) 'Exit if the device is already at maximum, i.e. "On" 'If hs.CAPIGetStatus(deviceR).Status = "On" Then Exit Sub 'Red If countervalue <= 100 Then 'Find the correct CAPI control to execute. I really miss Linq!!! For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceR) If cc.ControlValue = dimvalue Then If hs.CAPIGetStatus(deviceR).Status <> "On" Then hs.CAPIControlHandler(cc) Exit For End If Next End If 'Green If countervalue > 100 AndAlso countervalue <= 200 Then For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceG) If cc.ControlValue = countervalue - 100 Then If hs.CAPIGetStatus(deviceG).Status <> "On" Then hs.CAPIControlHandler(cc) Exit For End If Next End If If countervalue = 150 Then Dim capi As HomeSeerAPI.CAPIControl = hs.CAPIGetSingleControl(deviceB, True, "off", False, False) hs.CAPIControlHandler(capi) End If 'Blue If countervalue > 150 Then For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceB) If cc.ControlValue = countervalue - 150 Then If hs.CAPIGetStatus(deviceB).Status <> "On" Then hs.CAPIControlHandler(cc) Exit For End If Next End If End Sub Generelt oppsett av eventer: 1 Siter
iceball Skrevet 13. desember 2016 Skrevet 13. desember 2016 (endret) Hva er enkleste måte å justere alarmtidspunkt på? En virtuell device med dropdown list blir vel ikke helt optimalt siden man da må gå via en verdi som ikke er på "klokkeformat"? Skulle gjerne hatt en klokkeapp på iPhonen som kunne sendt en IFTTT trigger. Endret 13. desember 2016 av iceball Siter
Moskus Skrevet 13. desember 2016 Forfatter Skrevet 13. desember 2016 Jeg har ikke laget et generelt script for å justere det enda, men jeg har noe liggende jeg tror kan konverteres. Siter
ZoRaC Skrevet 7. oktober 2017 Skrevet 7. oktober 2017 Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes ?): Sub Main (ByVal params as Object) ' @Author: Sven-Ove Bjerkan and Moskus ' @Version: 2 (2017-10-07) ' IMPORTANT! ' 1. Create this event as a "disabled" event and trigger it once from another event! ' 2. Set the trigger for this event to "The event will automatically trigger every..." E.g: 6 seconds will dim the light from 0 to 100 in 10 min ' @Syntax: deviceid|this_event_name|stoplevel ' deviceid: lamp deviceid ' this_event_name: The name of this exact event - very important! ' stoplevel: optional, will increment to 100 if not supplied Dim parameters() as String = params.ToString.Split("|") Dim deviceRef As Integer = parameters(0) Dim eventName As String = parameters(1) Dim stopValue As Integer = 100 If parameters.length = 3 Then stopValue = parameters(2) End If Dim deviceValue As Integer = hs.DeviceValue(deviceRef) deviceValue = deviceValue + 1 If deviceValue > 100 Then deviceValue = 100 End If If deviceValue < 1 Then deviceValue = 1 End If hs.EnableEvent(eventName) 'Exit if the device is already at maximum, i.e. "On" If hs.CAPIGetStatus(deviceRef).Status = "On" Or deviceValue > stopValue Then hs.DisableEvent(eventName) Exit Sub End If 'Find the correct CAPI control to execute. I really miss Linq!!! For Each cc As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(deviceRef) If cc.ControlValue = deviceValue Then 'Set the correct dim level hs.CAPIControlHandler(cc) 'We're done, so let's exit! Exit Sub End If Next End Sub 2 Siter
Moskus Skrevet 9. oktober 2017 Forfatter Skrevet 9. oktober 2017 På 10/7/2017 den 22.17, ZoRaC skrev: Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes ): I like it! Siter
Hillmar Skrevet 1. november 2018 Skrevet 1. november 2018 On 07/10/2017 at 22:17, ZoRaC said: Med utgangspunkt i @Moskus sitt IncrementLight.vb har jeg laget en "v2", som bare krever ett event (ellers ikke så mye annerledes ?): Jeg prøver å benytte dette scriptet for å dimme opp flere lyssoner (4) i stue/kjøkken samtidig om morgenen. Jeg har da et event som trigges av Alexa og det eventet trigger igjen et event for hver sone, som er satt opp som beskrevet over. Alle Dimme-eventene benytter samme .vb-script. Dette fungerer ikke... Selv med "Only allow a single instance to run at a time" disabled og enablet "Wait for script to finish before continuing", samt andre kombinasjoner av disse, så starter ikke dimming på alle sonene. Kun en eller to soner begynner å dimmes opp. Noen som har forslag til fiks her? Eller skal jeg kanskje bare utvide scriptet slik at et script dimmer alle 4 sonene? Det bør vel være inne rekkevidde, selv for en novise som meg, når alle sonene skal dimmes opp til samme nivå. Siter
Moskus Skrevet 1. november 2018 Forfatter Skrevet 1. november 2018 Du har ikke sagt hvilken versjon du bruker. IncrementCustom.vb har muligheten du sier. Siter
Hillmar Skrevet 1. november 2018 Skrevet 1. november 2018 Prøvde å «si det» ved å quote ZoRaC sitt innlegg ? Tar en ekstra titt på IncrementCustom.vb? 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.