GĂ„ til innhold
  • Bli medlem

Anbefalte innlegg

Skrevet

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

Skrevet (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 av ZoRaC
  • Like 1
Skrevet
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?

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

Skrevet

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)

Skrevet
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

 

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

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

Skrevet

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

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.