GĂ„ til innhold
  • Bli medlem
StĂžtt hjemmeautomasjon.no!

SCRIPT: TimeDevice.vb - Endre triggertid av et event med en device!


Moskus

Anbefalte innlegg

NÄ kan du endelig fÄ endre trigger-tiden til dine eventer med noen enkle tastetrykk! Det fungerer fint pÄ websiden, HStouch og HS Mobile. :) 

 

Vi har alle eventer som gÄr av pÄ et visst tidspunkt. F.eks. vekkerklokker. Av og til vil man enkelt kunne endre tiden pÄ vekkerklokken uten Ä mÄtte navigere til Event-siden og finne selve eventet. Kanskje vil man at ungene skal kunne gjÞre det, etc.

 

Med dette scriptet fÄr du en device som dette:image.png

... som lar deg endre klokkeslettet pÄ et event.

 

Her er scriptet (vÊr nÞye med filnavnet, det mÄ vÊre riktig):

TimeDevice.vb

    Public Sub Main(ByVal input As Object)
        'Moskus 2019
        '-----------------------------
        'The Main sub will update 
        'DeviceRef,NewTime
        'Example: 3245,13:00 -> will set device 3245 to 13:00 and the event to trigger at 13:00
        '-----------------------------

        Dim deviceRef As Integer = input.ToString.Split(",")(0)
        Dim timeString As String = input.ToString.Split(",")(1)
        Dim _time As TimeSpan = TimeSpan.Parse(timeString)

        UpdateDeviceAndEvent(deviceRef, _time)
    End Sub

    Public Sub CreateDevice(byval input as Object)
        Dim deviceRef As Integer = hs.NewDeviceRef("Klokkekontroll")
        Dim dev As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(deviceRef)
        dev.Location(hs) = "Klokke"
        dev.Location2(hs) = "Klokke"
        dev.Device_Type_String(hs) = "Ditt event her"

        hs.SaveEventsDevices()

        AddDeviceButtons(deviceRef)

        Dim _time As New TimeSpan
        hs.SetDeviceString(deviceRef, _time.ToString("hh\:mm"), False)
        hs.SetDeviceValueByRef(deviceRef, _time.TotalMinutes, True)
    End Sub

    Public Sub ButtonPress(ByVal input As Object)
        Dim deviceRef As Integer = input(0)
        Dim parameter As String = input(1)
        Dim deviceValue As Integer = hs.DeviceValue(deviceRef)
        Dim minutesToAdd As Integer = Integer.Parse(parameter)

        Dim newValue As Integer = deviceValue + minutesToAdd
        If newValue < 0 Then newValue = 24 * 60 + minutesToAdd
        If newValue > 24 * 60 Then newValue = minutesToAdd

        Dim _time As TimeSpan = New TimeSpan(0, newValue, 0)
        UpdateDeviceAndEvent(deviceRef, _time)
    End Sub

    Public Sub UpdateDeviceAndEvent(ByVal deviceRef As Integer, ByVal _time As TimeSpan)
        hs.SetDeviceString(deviceRef, _time.ToString("hh\:mm"), False)
        hs.SetDeviceValueByRef(deviceRef, _time.TotalMinutes, True)


        Dim eventName As String = DirectCast(hs.GetDeviceByRef(deviceRef), Scheduler.Classes.DeviceClass).Device_Type_String(hs)
        Dim eventRef As String = hs.GetEventRefByName(eventName)
        hs.EventSetTimeTrigger(eventRef, New Date(1, 1, 1).Add(_time))
        hs.SaveEventsDevices()
    End Sub

    Public Sub AddDeviceButtons(ByVal device_ref As String)
        Dim devID As Integer = CInt(device_ref)
        hs.DeviceScriptButton_DeleteAll(devID)
        hs.DeviceProperty_dvMISC(device_ref, HomeSeerAPI.Enums.eDeviceProperty.MISC_Set, HomeSeerAPI.Enums.dvMISC.SHOW_VALUES)

        Try
            hs.WriteLog("TimeDevice.vb", "Added button 1: " & hs.DeviceScriptButton_AddButton(devID, "+5 min", 5, "TimeDevice.vb", "ButtonPress", "+5", 1, 1, 1))
            hs.WriteLog("TimeDevice.vb", "Added button 2: " & hs.DeviceScriptButton_AddButton(devID, "-5 min", -5, "TimeDevice.vb", "ButtonPress", "-5", 1, 2, 1))
            hs.WriteLog("TimeDevice.vb", "Added button 3: " & hs.DeviceScriptButton_AddButton(devID, "+15 min", 15, "TimeDevice.vb", "ButtonPress", "+15", 1, 3, 1))
            hs.WriteLog("TimeDevice.vb", "Added button 4: " & hs.DeviceScriptButton_AddButton(devID, "-15 min", -15, "TimeDevice.vb", "ButtonPress", "-15", 1, 4, 1))
            hs.WriteLog("TimeDevice.vb", "Added button 5: " & hs.DeviceScriptButton_AddButton(devID, "+1 time", 60, "TimeDevice.vb", "ButtonPress", "+60", 2, 1, 1))
            hs.WriteLog("TimeDevice.vb", "Added button 6: " & hs.DeviceScriptButton_AddButton(devID, "-1 time", -60, "TimeDevice.vb", "ButtonPress", "-60", 2, 2, 1))
        Catch ex As Exception
            hs.WriteLog("TimeDevice.vb", "Error adding buttons: " & ex.Message)
        End Try
    End Sub

 

Du trenger fĂžrst Ă„ lage et event som trigger scriptet med rutinen "CreateDevice", slik:

image.png

 

GÄ nÄ til Device Manager-siden. Velg at "Klokke" skal vises, bÄde for "Floor" og "Room". MEN: Du mÄ ogsÄ huske pÄ Ä velge ALLE device typer:

image.png

 

Da fÄr du opp den nye devicen. Denne kan du navngi og gi plassering akkurat som det passer deg. :)

 

SĂ„ skal vi bestemme hvilket event som skal trigges. Navnet sette vi som en "Device Type String" under Advanced-taben. Merk at hele navnet skal brukes, og at det er "Gruppe" + mellomrom + "Event navn". La oss si at jeg vil trigge et test-event som jeg har navngitt "Et timer-event", som her:

image.png

 

Da er hele evnetnavnet mitt: "Test Et timer-event", og det setter vi inn her:

image.png

... og trykker "Done".

NB! NÄr vi nÄ gÄr tilbake til Device Manager, mÄ vi huske pÄ Ä vise alle Device Types igjen, fordi den har vi nettopp endret til noe nytt som ikke var valgt fÞr.

 

SÄ er det bare Ä stille klokka. :) 

Endrer vi tiden pÄ devicen til dette...

image.png

... vil eventet ogsÄ endres:

image.png

 

Det gjÞr ingenting om eventet ditt har andre conditions, de vil ikke bli pÄvirket av dette. :) 

 

 

 

Scriptet har ogsÄ en rutine for Ä endre klokkeslettet med eventer, f.eks. hvis man skal stille tilbake flere  vekkerklokker etter en ferie. 

Da kaller man bare rutinen/metoden "Main" (eller lar vĂŠre Ă„ spesifisere rutine), og bruker deviceRef og klokkeslett som parameter.

Dette:

image.png

 

... gir dette:

image.png

... og selvfĂžlgelig dette:

image.png

 

  • Like 2
  • Thanks 4
Lenke til kommentar
Del pÄ andre sider

33 minutter siden, Moskus skrev:

Hvordan tenker du at det skal fungere? Hva skal lĂžses?

NÄr vi er pÄ ferie pleier eg Ä stille inn event for nÄr varme skal settast til "heime auto" igjen, slik at hus og vatn er tilbake pÄ normal temperatur til vi er heime. Dette har eg pleid Ä aktivere frÄ midnatt den dagen vi forventar Ä komme heim, og det ville blitt langt enklare Ä endre ein device samanlikna med Ä endre eventet. 

Lenke til kommentar
Del pÄ andre sider

11 timer siden, bjornepappa skrev:

NÄr vi er pÄ ferie pleier eg Ä stille inn event for nÄr varme skal settast til "heime auto" igjen, slik at hus og vatn er tilbake pÄ normal temperatur til vi er heime. Dette har eg pleid Ä aktivere frÄ midnatt den dagen vi forventar Ä komme heim, og det ville blitt langt enklare Ä endre ein device samanlikna med Ä endre eventet. 

Ja, men det sier ikke sÄ mye likevel. Skal du ha noe tilsvarende som setter selve dagen det gjÞres pÄ? Jeg tror ikke det er sÄ lett Ä scripte de nÞdvendige endringene i det eventet...

 

Men det finnes andre geniale lÞsninger for sÄnne problemer. Legg det i kalenderen, og installer GCalSeer. :)

image.png

 

Vi var pÄ hyttetur (kun en overnatting) forrige helg:

image.png

 

  • Like 2
Lenke til kommentar
Del pÄ andre sider

1 time siden, Moskus skrev:

Ja, men det sier ikke sÄ mye likevel. Skal du ha noe tilsvarende som setter selve dagen det gjÞres pÄ? Jeg tror ikke det er sÄ lett Ä scripte de nÞdvendige endringene i det eventet...

 

Men det finnes andre geniale lÞsninger for sÄnne problemer. Legg det i kalenderen, og installer GCalSeer. :)

image.png

 

Vi var pÄ hyttetur (kun en overnatting) forrige helg:

image.png

 

 

Takk! Eg har jo nettopp lagt inn GCalSeer for Ä fÄ HS til Ä holde styr pÄ turnusarbeidet mitt, sÄ det bÞr jo funke fint.

Lenke til kommentar
Del pÄ andre sider

@Moskus, beklagar om det er noko eg totalt har oversett. Men innbiller meg at eg har fulgt oppskrifta for Ă„ lage devicen, men det dukkar ikkje opp nokon device - etasje og rom "Klokke" blir ikkje generert...

Ganske sikker pÄ at script-eventet er satt opp korrekt og eg har prÞvd mange ganger Ä trigge det manuelt.

 

image.png.ffc9b71d791253d6216a52bd72d93127.png

Lenke til kommentar
Del pÄ andre sider

... og du har sett hva loggen har Ä si? :) 

 

43 minutter siden, bjornepappa skrev:

Men innbiller meg at eg har fulgt oppskrifta for Ă„ lage devicen, men det dukkar ikkje opp nokon device - etasje og rom "Klokke" blir ikkje generert...

... og du har husket Ă„ vise alle device types?

Lenke til kommentar
Del pÄ andre sider

Hmmm. Burde eg ha oppretta ein ny device og lagt inn device ref i Parameters-boksen? 

Sitat
Oct-16 20:03:57   Error 3 Running script C:\Program Files (x86)\HomeSeer HS3\scripts\TimeDevice.vb :Antall parametere stemmer ikke overens.->Does entry point CreateDevice exist in script? ved System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ved System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ved Scheduler.clsRunVBNetScript.ExecuteScript()
Oct-16 20:03:49   Event Running script in background: C:/Program Files (x86)/HomeSeer HS3/scripts/TimeDevice.vb("CreateDevice")

 

Endret av bjornepappa
Lenke til kommentar
Del pÄ andre sider

  • 11 mĂ„neder senere...

Flott script - har lenge tenkt pĂ„ Ă„ lage noe tilsvarende, men nĂ„ slipper jeg jo det 🙂

Men...
Jeg bruker dette pÄ HS4, og alt ser ut til Ä fungere fint. Men etter en restart av HS sÄ er fremdeles devicen det men alle kontrollene er borte, og det er jo litt kjipt.
Oppdaterte akkurat HS til 4.1.8.0, men jeg sÄ det ogsÄ pÄ 4.1.6.0

 

 

EDIT:
Men jeg fant en workaround

- jeg ser nÄ at jeg kan kjÞre  et nytt event for Ä legge de til igjen, og jeg kommer til Ä legge til dette i Startup.vb (iallefall inntil videre)

 
IF
This event is MANUALLY triggered
THEN
Run the script: TimeDevice.vb
                calling method AddDeviceButtons with parameter(s) 3946
                     and only allow one instance of the script to run at a time.
Endret av HSv
  • Like 2
Lenke til kommentar
Del pÄ andre sider

4 timer siden, HSv skrev:

Jeg bruker dette pÄ HS4, og alt ser ut til Ä fungere fint. Men etter en restart av HS sÄ er fremdeles devicen det men alle kontrollene er borte, og det er jo litt kjipt.

F*en! Jeg hadde hÄpet dette var fikset. Det har jo vÊrt et problem med HS4 ganske lenge.

 

Men snedig workaround! Kudos! :)

 

Lenke til kommentar
Del pÄ andre sider

  • 1 mĂ„ned senere...

Dette er mulig jeg har oversett en grunn til at det gjĂžres slik, men:

 

Dim newValue As Integer = deviceValue + minutesToAdd
If newValue < 0 Then newValue = 24 * 60 + minutesToAdd
If newValue > 24 * 60 Then newValue = minutesToAdd

 

Hvis deviceValue nÄ fra fÞr er 23:45, og man trykker +1 time, sÄ vil ny tid bli 01:00. Eller hvis den er 23:50 og man trykker +15 min, sÄ blir ny tid 00:15. Tilsvarende hvis den er 00:15 og man trykker -1 time, sÄ blir ny tid 23:00. Og om den er 00:10 og man trykker -15 min, sÄ blir ny tid 23:45.

 

Kan kanskje dette heller skrives slik?

 

Dim newValue As Integer = deviceValue + minutesToAdd
If newValue < 0 Then newValue = 24 * 60 + newValue
If newValue > 24 * 60 Then newValue = newValue - 24 * 60

 

Evt. slik om man vil forkorte (pÄ bekostning av noe lesbarhet).

 

Dim newValue As Integer = deviceValue + minutesToAdd
If newValue < 0 Then newValue += 24 * 60
If newValue > 24 * 60 Then newValue -= 24 * 60

 

Lenke til kommentar
Del pÄ andre sider

  • 1 Ă„r senere...

Super veiledning og script @Moskus 😁 Tusen takk, det var akkurat det jeg trengte.

Oppstod dog et lite problem. Jeg har fortsatt ikke kommet meg over pÄ HS Touch, sÄ jeg bruker fortsatt HS Mobile en del. Klokke-devicen funker som den skal i device-oversikten, men med en gang jeg prÞver Ä legge den til pÄ et dashbord forsvinner alle knappene. Har sjekket alle innstillinger jeg kan tenke meg, prÞvd Ä opprette flere klokker, men problemet er det samme. Om noen har et tips til hva som kan forÄrsake dette tar jeg gjerne i mot tips!

 

Screenshot_20220901_170318_com.homeseer.mobile.android.thumb.jpg.1d2cf70223dedb99d441b3c774c76485.jpgScreenshot_20220901_170519_com.homeseer.mobile.android.thumb.jpg.0628c211ba1bbf4e1c06d470d7f4a91a.jpg

Endret av Im_IB
Lenke til kommentar
Del pÄ andre sider

Im_IB skrev (49 minutter siden):

Klokke-devicen funker som den skal i device-oversikten, men med en gang jeg prÞver Ä legge den til pÄ et dashbord forsvinner alle knappene.

Det er ikke deg. Det er en bug i HomeSeer Mobile, men hvis du venter til neste refesh, sÄ skal de dukke opp igjen. :)

 

Lenke til kommentar
Del pÄ andre sider

Moskus skrev (PĂ„ 1.9.2022 den 18.12):

Det er ikke deg. Det er en bug i HomeSeer Mobile, men hvis du venter til neste refesh, sÄ skal de dukke opp igjen. :)

 

Hva mener du med neste refresh? Knappene har aldri vĂŠrt synlig i Dashboards-fanen, men er synlig hele tiden i Device-fanen.

En annen ting som det kanskje er greit Ă„ advare om, er at det noen ganger blir generert en ny and if statement i eventen som begrenser trigger til en bestemt dato (i det herrens Ă„r 0001 for sikkerhets skyld) hvis man tar "snarveien" og blar forbi midnatt.

Lenke til kommentar
Del pÄ andre sider

Im_IB skrev (PĂ„ 3.9.2022 den 7.35):

Knappene har aldri vĂŠrt synlig i Dashboards-fanen

Det har jeg ikke testet, de burde ikke vĂŠre usynlige der heller, men i Dashboard har man stĂžrre kontroll over hva som skal vĂŠre synlig eller ei. Det er mulig dette ikke inkluderer knapper som er laget fra scripts.

 

Im_IB skrev (PĂ„ 3.9.2022 den 7.35):

En annen ting som det kanskje er greit Ă„ advare om, er at det noen ganger blir generert en ny and if statement i eventen som begrenser trigger til en bestemt dato (i det herrens Ă„r 0001 for sikkerhets skyld) hvis man tar "snarveien" og blar forbi midnatt.

Ja, da gÄr man over til et nytt dÞgn. Jeg mÄ tydeligvis nullstille telleren.

Lenke til kommentar
Del pÄ andre sider

  • 1 Ă„r senere...

  

Moskus skrev (PĂ„ 5.9.2022 den 13.50):

Ja, da gÄr man over til et nytt dÞgn. Jeg mÄ tydeligvis nullstille telleren.


Har du funnet noen smart fix pÄ dette? Eller har du noen forslag til fix?

Jeg hadde nok en uheldig hendelse her om dagen, med en elbillader som ikke hadde startet, og ende med Ă„ komme for seint pĂ„ jobben 🙈

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.