Moskus Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 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: ... 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: 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: 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: Da er hele evnetnavnet mitt: "Test Et timer-event", og det setter vi inn her: ... 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... ... vil eventet også endres: 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: ... gir dette: ... og selvfølgelig dette: 2 4 Siter
bjornepappa Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 Supert! Er det sjans for å lage tilsvarande for å velge ein dato? Siter
Moskus Skrevet 15. oktober 2019 Forfatter Skrevet 15. oktober 2019 45 minutter siden, bjornepappa skrev: Er det sjans for å lage tilsvarande for å velge ein dato? Hvordan tenker du at det skal fungere? Hva skal løses? Siter
bjornepappa Skrevet 15. oktober 2019 Skrevet 15. oktober 2019 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. Siter
Moskus Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 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. Vi var på hyttetur (kun en overnatting) forrige helg: 2 Siter
bjornepappa Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 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. Vi var på hyttetur (kun en overnatting) forrige helg: Takk! Eg har jo nettopp lagt inn GCalSeer for å få HS til å holde styr på turnusarbeidet mitt, så det bør jo funke fint. Siter
ZoRaC Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 3 timer siden, Moskus skrev: Vi var på hyttetur (kun en overnatting) forrige helg: Jeg legger bare inn selve ferien jeg. Siter
bjornepappa Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 @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. Siter
Moskus Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 ... 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? Siter
bjornepappa Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 (endret) 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 16. oktober 2019 av bjornepappa Siter
Moskus Skrevet 16. oktober 2019 Forfatter Skrevet 16. oktober 2019 Oi, pokker. Denne linja: Public Sub CreateDevice() skal være: Public Sub CreateDevice(byval input as Object) Oppdaterer førstepost. Siter
bjornepappa Skrevet 16. oktober 2019 Skrevet 16. oktober 2019 3 minutter siden, Moskus skrev: Oi, pokker. Denne linja: Public Sub CreateDevice() skal være: Public Sub CreateDevice(byval input as Object) Oppdaterer førstepost. Det gjorde susen ?? 1 Siter
HSv Skrevet 7. oktober 2020 Skrevet 7. oktober 2020 (endret) 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 7. oktober 2020 av HSv 2 Siter
Erling Skrevet 7. oktober 2020 Skrevet 7. oktober 2020 Takk @Moskus denne var artig, takk @HSv som dro opp tråden. 1 Siter
Moskus Skrevet 7. oktober 2020 Forfatter Skrevet 7. oktober 2020 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! Siter
prk Skrevet 20. november 2020 Skrevet 20. november 2020 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 Siter
Moskus Skrevet 20. november 2020 Forfatter Skrevet 20. november 2020 Jeg trodde jeg hadde tenkt og testet dette. Mulig jeg ikke har... Får sjekke igjen. Siter
Im_IB Skrevet 1. september 2022 Skrevet 1. september 2022 (endret) 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! Endret 1. september 2022 av Im_IB Siter
Moskus Skrevet 1. september 2022 Forfatter Skrevet 1. september 2022 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. Siter
Im_IB Skrevet 3. september 2022 Skrevet 3. september 2022 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. Siter
Moskus Skrevet 5. september 2022 Forfatter Skrevet 5. september 2022 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. Siter
Im_IB Skrevet 16. november 2023 Skrevet 16. november 2023 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 🙈 Siter
Moskus Skrevet 16. november 2023 Forfatter Skrevet 16. november 2023 Eh... jeg innrømmer at jeg ikke har tenkt så mye på det. Men vanskelig burde det ikke være. 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.