ØysteinHJ Skrevet 11. april 2020 Skrevet 11. april 2020 Sønnen min ønsker diskolys i taklampa si, som har 3 stk Ikea TRÅDFRI RGB-pærer i seg som er lagt til og gruppert i Phoscon. Bruker JowiHue som plugin. Planen min er å bruke et skript til å generere en tilfeldig farge, og deretter sette gruppen med pærer til den fargen. Jeg ønsker å bruke en timer som kjører skriptet hvert sekund, og som sønnen min kan aktivere og deaktivere ved å trykke Previous/Next-knappene på en Ikea TRÅDFRI fjernkontroll (On/Off, Dimmer Up og Dimmer Down er knyttet fra før i Phoscon). Skriptet for å sette tilfeldig farge fungerer fint. Men jeg har problemer med event-logikken. Så langt tenker jeg at jeg trenger fire eventer: 1. En som trigger på timer-verdi X, kaller fargeendringsskriptet, og setter timeren til verdi X-1 (slik at det trigger på ny om ett sekund). 2. En som trigger på Previous/Next-knappene hvis timeren IKKE går (mao. at fargesykling ikke er aktiv), og deretter starter timeren. 3. En som trigger på Previous/Next-knappene hvis timeren GÅR (mao. at fargesykling er aktiv), stopper timeren, rydder opp (setter varmhvitt lys og nuller timeren). 4. En som trigger på On/Off-knappene hvis timeren GÅR, stopper timeren og rydder opp). Den første fungerer tilsynelatende fint. Timerverdi 0 indikerer at timeren ikke går, og så trigges det på timerverdi 2 som setter timeren til verdi 1. Tenker på å kanskje endre logikken her, siden timeren ved oppstart i starten trenger to sekunder før den trigger og endrer. Det er den andre og tredje som lager problemer. Siden jeg ikke kan finne en måte å sjekke om en timer kjører eller ei inni en event, bruker jeg timer-verdien. Det som skjedde var at HomeSeer hang og CPU-bruken gikk rett i taket. Lurer på om det kanskje kan ha noe med den "equal to 0"-tiggeren, siden timeren vil forbli 0 et helt sekund, som kanskje leder til at eventen trigger igjen og igjen. Er logikken min helt på jordet her? Takker for innspill. Siter
ZoRaC Skrevet 11. april 2020 Skrevet 11. april 2020 (endret) Har du EasyTrigger? I så fall, et event som er «recurring» hvert sekund. En virtuell device for «kjører»=ja/nei. Så bruker du ET til enable/disable event når knappen trykkes (kan også gjøres med enlinjers script, om du ikke har ET). EDIT: Du bør bruke «set to», ikke «changes». Endret 11. april 2020 av ZoRaC 1 Siter
ØysteinHJ Skrevet 12. april 2020 Forfatter Skrevet 12. april 2020 Takk for tips. Dette skal jeg teste. Siter
ØysteinHJ Skrevet 12. april 2020 Forfatter Skrevet 12. april 2020 13 timer siden, ZoRaC skrev: Du bør bruke «set to», ikke «changes». Den er grei. Men hvorfor, av ren nysgjerrighet? Språklig er jo "is set to" og "changes and becomes" helt likt. Eventuelt så er forskjellen at den første er endret av noe annet mens den andre endres på egenhånd. Er dette forskjellen? Siter
ZoRaC Skrevet 12. april 2020 Skrevet 12. april 2020 1 minutt siden, ØysteinHJ skrev: Den er grei. Men hvorfor, av ren nysgjerrighet? Språklig er jo "is set to" og "changes and becomes" helt likt. Eventuelt så er forskjellen at den første er endret av noe annet mens den andre endres på egenhånd. Er dette forskjellen? Med «changes and becomes» så vil den ikke trigge om du trykker 2 ganger på «next» etter hverandre, uten å trykke på en annen knapp i mellomtiden. «Set to» trigger selv om samme knapp trykkes etter hverandre. «Etter hverandre» kan være dagesvis mellom - så «next» vil ikke virke i dag, hvis siste knapp du trykket på i forrige uke også var «next». Siter
ZoRaC Skrevet 12. april 2020 Skrevet 12. april 2020 Kunne du forresten delt scriptet ditt? Jeg vurderer å gjøre noe tilsvarende. Siter
ØysteinHJ Skrevet 12. april 2020 Forfatter Skrevet 12. april 2020 Javisst. Det er ikke lagt inn noen dynamisk styring via parametre, men det står på TODO-lista. Så enn så lenge så har jeg hardkodet inn navnet på Phoscon-gruppa som skal styres. Sub Main(ByVal json As String) Dim rnd as New Random() Dim color(2) As Integer For i As Integer = 0 To color.Length - 1 color(i) = rnd.Next(0, 255) Next Dim colorString = color(0).ToString("X2") & color(1).ToString("X2") & color(2).ToString("X2") Dim rgbString as String = color(0) & "," & color(1) & "," & color(2) hs.PluginFunction("JowiHue", "", "SetLightsRGB", {True, "hugo-ceiling-lamp", Nothing, rgbString, 5}) End Sub (@Moskus, er det mye styr å få lagt inn VB.NET som språk i codesnippet i forumet? Hadde vært greit mtp syntaksmarkering) Siter
ZoRaC Skrevet 12. april 2020 Skrevet 12. april 2020 17 minutter siden, ØysteinHJ skrev: Javisst I påvente av svar så laget jeg et script selv. En kombinasjon av scriptet til @Moskus (https://www.hjemmeautomasjon.no/forums/topic/30-script-randomvaluevb-sett-en-tilfeldig-verdi-på-en-eller-flere-devicer/) og @Gjelsvik (https://www.hjemmeautomasjon.no/forums/topic/3492-script-styre-farger-på-jowiehue-trådfri/). Siden jeg kjører på Linux så slet jeg med at jeg fikk feilmelding i loggen: Sitat Apr-12 18:21:41 Error Compiling script /usr/local/HomeSeer/scripts/ikea-random-rgb.vb: http://mono-project.com/Bugs) Apr-12 18:21:41 Error Compiling script /usr/local/HomeSeer/scripts/ikea-random-rgb.vb: The import 'System.Core' could not be found. Det skyldes hs.PluginFunction (har opplevd det samme før). Dette er visstnok "feil", men virker likevel på Windows: hs.PluginFunction("JowiHue", "", "SetLightsRGB", {True, "hugo-ceiling-lamp", Nothing, rgbString, 5}) Riktig syntax er: hs.PluginFunction("JowiHue", "", "SetLightsRGB", New Object(){True, "hugo-ceiling-lamp", Nothing, rgbstring,5}) Mitt script ble da slik: Public Sub Main(ByVal param As String) Dim generator As New System.Random Dim r,g,b as Integer Dim rgbstring as String r = generator.Next(0, 255) g = generator.Next(0, 255) b = generator.Next(0, 255) rgbstring = r & "," & g & "," & b hs.writelog("rndcolor", "Lys ["& param &"] skiftet farge til " & rgbstring) hs.PluginFunction("JowiHue", "", "SetLightsRGB", New Object(){False, param, Nothing, rgbstring,5}) End Sub Siter
Moskus Skrevet 12. april 2020 Skrevet 12. april 2020 30 minutter siden, ZoRaC skrev: Riktig syntax er: hs.PluginFunction("JowiHue", "", "SetLightsRGB", New Object(){True, "hugo-ceiling-lamp", Nothing, rgbstring,5}) ... har ikke det alltid vært riktig syntax? 47 minutter siden, ØysteinHJ skrev: (@Moskus, er det mye styr å få lagt inn VB.NET som språk i codesnippet i forumet? Hadde vært greit mtp syntaksmarkering) Pass, men vi pinger @iblis! Siter
ZoRaC Skrevet 12. april 2020 Skrevet 12. april 2020 3 minutter siden, Moskus skrev: har ikke det alltid vært riktig syntax? Jo, men de fleste har ikke med «New Object()» i eksemplene i sine manualer - det gjelder både JowiHue og (tidligere) DeviceHistory (ble rettet når jeg fant ut av det). Dette er eksemplet i JowiHue-manualen: Sitat Syntax: Dim test As Boolean = hs.PluginFunction("JowiHue", "", "SetLightsRGB", {True, "All Lights", Nothing, “255,255,0”, 20}) ...som altså er feil. Siter
Moskus Skrevet 12. april 2020 Skrevet 12. april 2020 Ah, OK. Jeg har faktisk aldri sett at kun {} fungerer alene, men så har jeg ikke prøvd uten New Object() på mange år heller... 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.