Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Trenger hjelp til repeterende eventer


ØysteinHJ

Anbefalte innlegg

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.

image_87929.png

image_87928.png

Lenke til kommentar
Del på andre sider

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 av ZoRaC
  • Like 1
Lenke til kommentar
Del på andre sider

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?

Lenke til kommentar
Del på andre sider

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». 

Lenke til kommentar
Del på andre sider

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)

Lenke til kommentar
Del på andre sider

17 minutter siden, ØysteinHJ skrev:

Javisst

 

I påvente av svar så laget jeg et script selv. :P 

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

 

Lenke til kommentar
Del på andre sider

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! :) 

Lenke til kommentar
Del på andre sider

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. 

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.