”Master dimmer” på Home Center 2

Master dimmerHelt plötsligt behöver du dimma ett flertal dimmers i huset till samma nivå! Helgalet! Men hur gör du!?

Enkelt! Du skapar en virtuell enhet! Till denna behöver du endast ett slider-element, och följande kod klistras in i Lua-fönstret för denna:

Kort sagt, myList är en lista som innehåller device ID för de enheter du vill ska styras av den allsmäktiga mästardimmern. Vi kör en loop över listan (kom ihåg, i Lua är första elementet 1 och inte 0 som i många andra språk!), och loopen körs lika många gånger som det finns element i myList (därav #myList som returnerar längden på listan).

I loopen kollar vi så att enheten inte är död (det är ju ingen idé att skicka kommandon till en enhet som inte lyssnar), och är den aktiv skickar vi ett kommando till den där vi vänligt men bestämt beordrar den att sätta sitt dimmer-värde till mästerdimmrardimmerns nuvarande slider-värde.

Men det blir bättre! Stoppa pressarna! Tänk dig det absolut extremaste dimmerfantastscenariot: du vill dimma ALLA lampor i hela huset med samma enhet. Det är nästan lika enkelt:

Här anropar vi HC2ans eget API och hämtar in en lista av alla ”multilevelSwitch” (flerlägesbrytare, eller dimmer). Observera att login-informationen kan behöva ändras då admin/admin är standarduppgifterna.

Efter inhämtningen är förfarandet ungefär det samma. Loopa över listan, kolla om noden lever och dimma den om den är det. Klart som korvspad! 😀

Dimma allt med allt!?

För dig som är hardcore-dimmare förstår vi såklart att detta inte räcker. Man nöjer sig inte med det näst bästa, och det finns inga genvägar till det perfekta ljuset. Men misströsta icke! Med en enkel scen kan du få alla dimmers att dimma varandra, genom att anropa mästardimmern! Beskåda:

Under %%properties behöver du ange de enheter som ska trigga scenen, samt vilket attribut. I detta fall ”value”, som för en multilevelSwitch är dimmervärdet. OBS! En enhet per rad!

Om du har etthundratjugotre dimmers kan det därmed ta en stund att förbereda scenen, men vad gör man inte?

Scenen kollar att den anropats från en dimmer och inte manuellt, vi vill ju inte att någon klåfingrig person ska dimma lamporna åt oss, och sen sätter den vår mästerdimmer till den aktuella dimmers värde, varpå mästerdimmern skickar ut dimmervärdet till alla berörda enheter.

Klart slut! 😀

4 svar till ”Master dimmer” på Home Center 2

  • Hallå. Kanske inte passar helt 100 till detta inlägg . Men det jag vill göra är att använda en slider in en virtuell enhet och skicka olika udp kommandon . Behöver jag övertsätta varje värde på slidern eller kan den själv beräkna ett 0-100 % värde på en rad i mitt udp kommando som ska vara mellan 2-27 .

    Svårt o förklara men det är ett par downlights jag styr med milights wifi modul genom fibaro hc2 i en virtuell enhet och den styr jag genom udp kommandon har fått till allt med knappar men att dimma med slidern får jag inte till . Mvh

    • Enklast borde vara att multiplicera 27 med (x/100), där ‘x’ representerar slidervärdet, och sen trunkera resultatet (kasta bort decimalen). Exempel för några tal:

      27 * (100/100) = 27
      27 * (50/100) = 13,5
      27 * (1/100) =0,27

      Om värdet kan vara decimaltal behöver man inte trunkera. Då kan man hoppa över raden som innehåller ”math.floor(val)” nedan.

      Kod som ‘typ’ löser problemet (skicka ‘val’ som värde över UDP):
      min = 2
      max = 27
      val = ( _sliderValue_ / 100 ) * max
      val = math.floor(val)
      if (val < min) then val = min end

      Noterar också nu att steg från 2-27 blir 25 steg, så det går att lösa enklare:

      val = ( _sliderValue_ / 4 ) + 2

      är sliderValue 0 blir val 2, är sliderValue 100 blir parantesen 25 och sen lägger man på 2.

  • Kommentera