Baza wiedzy Sinum

Oprogramowanie pierwszych elementów

W kolejnym kroku uzupełnimy kod urządzenia niestandardowego o fragmenty, które będą odpowiedzialne za zmianę trybu pracy wszystkich termostatów po naciśnięciu przycisku.

  1. Aby przejść do edycji kodu, kliknij ikonę trzech kropek w prawym górnym rogu kafelka urządzenia, a następnie wybierz Edycja.

  2. W dokumentacji (dostępnej w górnym pasku edytora kodu) w sekcji dotyczącej termostatów znajduje się opis funkcji umożliwiającej zmianę trybu termostatu. W naszym przypadku wykorzystamy funkcję call("set_mode"), do której należy przekazać nazwę trybu (np. "heating", "cooling").

  3. Dodamy funkcję pomocniczą, która przejdzie przez wszystkie urządzenia wirtualne w systemie, sprawdzi, które z nich są termostatami, a następnie ustawi im zadany tryb pracy. Funkcję tę należy wkleić na początek kodu.

    -- funkcja ustawia tryb podany w argumencie 'mode' dla każdego termostatu
    function CustomDevice:setMode(mode)
    
    
       -- iterujemy wszystkie urządzenia wirtualne
       for _, dev in pairs(virtual) do
    
    
           -- sprawdzamy czy urządzenie jest termostatem
           if dev:getValue("type") == "thermostat" then
    
    
               -- urządzenie jest termostatem, ustawiamy żądany tryb
               dev:call("set_mode", mode)
    
    
           end
    
    
       end
    
    
    end
    
  4. Następnie uzupełniamy funkcje przypisane do wcześniej utworzonych przycisków, tak aby każdy z nich wywoływał funkcję ustawiającą odpowiedni tryb:

    -- callback dla przycisku Grzanie
    function CustomDevice:onHeating (element)
       self:setMode("heating")
    end
    
    
    -- callback dla przycisku Chłodzenie
    function CustomDevice:onCooling (element)
       self:setMode("cooling")
    end
    
    
    -- callback dla przycisku Wyłączenie
    function CustomDevice:onThermostatsOff (element)
       self:setMode("off")
    end
    
    • Przycisk Grzanie: ustawia tryb "heating",

    • Przycisk Chłodzenie: ustawia tryb "cooling",

    • Przycisk Wyłączenie: ustawia tryb "off".

  5. Każdy z callbacków (funkcji przypisanych do przycisków) przekazuje do funkcji pomocniczej odpowiedni argument. Dzięki temu unikamy powielania kodu i zyskujemy bardziej przejrzystą strukturę. Zmiana lub poprawa logiki działania wymaga teraz edycji tylko jednej funkcji.

  6. Po wprowadzeniu zmian kliknij Zapisz konfigurację.

  7. Urządzenie jest gotowe do testów. Po kliknięciu przycisku na widżecie odpowiedni tryb pracy powinien zostać automatycznie ustawiony na wszystkich termostatach przypisanych do centrali.