Cześć.
Jestem nowy na forum, ale temat mam wcale nie taki początkujący (a może jednak?). Zacznę od początku - odkąd kupiłem kilka kolorowych żarówek (w tej roli Yeelight 1SE), zamarzyło mi się sterować nimi “fizycznie”.
Zobaczyłem system MiLight, a potem projekt ESP8266_Milight_Hub - i tak nabyłem pilota FUT089 … po czym okazało się, że nieco źle zrozumiałem istotę projektu - emulowany hub na ESP8266 emuluje tylko bramkę, a nadal wymagane są żarówki z system MiLight (hub dodawał po prostu ich widoczność i statusy w Home Assistant, jako, że całość jest ogólnie na systemie RF 2.4 GHz).
A przecież ja chciałem sterować pilotem urządzeniami, któe już posiadam. Ostatecznie udało mi się - ale z niemałymi trudnościami dla początkującego - automatyzacja działa bezpośrednio na podstawie MQTT:
alias: Pilot przycisk 1
trigger:
- platform: mqtt
topic: milight/updates/0x151E/fut089/1
condition: []
action:
- variables:
state: "{{ trigger.payload_json.state }}"
- choose:
- conditions:
- condition: template
value_template: "{{ state == 'OFF' }}"
sequence:
- service: light.turn_off
target:
area_id:
- salon
- kuchnia
data:
transition: 1
- conditions:
- condition: template
value_template: "{{ state == 'ON' }}"
sequence:
- service: light.turn_on
target:
area_id:
- salon
- kuchnia
data:
transition: 1
default:
- service: light.turn_on
data_template:
transition: 0.2
brightness: >-
{% if trigger.payload_json.brightness is defined %}
{{trigger.payload_json.brightness}} {% else %} {{
state_attr('light.yeelight_salon_1', 'brightness') }} {% endif %}
hs_color:
- >-
{% if trigger.payload_json.hue is defined
%}{{trigger.payload_json.hue}}{% else %}
{{state_attr('light.yeelight_salon_1', 'hs_color')[0]}} {% endif
%}
- >-
{% if trigger.payload_json.saturation is defined
%}{{trigger.payload_json.saturation}}{% else %}
{{state_attr('light.yeelight_salon_1', 'hs_color')[1]}} {% endif
%}
target:
area_id:
- salon
- kuchnia
mode: single
Ogólnie działa - ale nie jest to do końca to, co chcę.
Pilot działa w ten sposób, że w akcji “updates” wysyła tylko jeden konkretny parametr (np. jeśli zmienię jasność, to nie jest wysłane nic innego, tylko jasność). To rodzi pewien problem, ponieważ dla encji Light - jeśli chcę tylko włączyć i wyłączyć, to sprawa prosta…
Ale zakładając, że chcę pełną obsługę - czyli móc ustawić jasność oraz kolor (w tym wypadku hs_color), idealnie byłoby pominąć brakujący parametr.
Na razie obszedłem to, biorąc brakujący atrybut na sztywno z encji light, a nie z pilota. Ale jeśli chciałbym sterować 2 urządzeniami w grupie i np. podczas zmiany jasności chciałbym zostawić oryginalny kolor - to w obecnym rozwiązaniu kolor będzie pobierany z urządzenia “salon”. Gdybym dynamicznie pominął atrybut hs_color, problem były z głowy - każde urządzenie miałoby swój kolor (dopóki bym go nie zmienił).
W kodzie, który nie działa - widziałbym to tak:
- service: light.turn_on
data_template:
transition: 0.2
{% if trigger.payload_json.brightness is defined %}
brightness: - {{trigger.payload_json.brightness}} {% endif %}
Przy okazji drugie pytanie. Ponieważ zmiana koloru hs_color to dwa parametry (hue i saturation), a pilot jednocześnie wysyła tylko jeden z parametrów - co w przypadku sterowania grupą urządzeń? Rozumiem, że jedyna opcja to pobierać obecny kolor z pomocnika, który grupuje żarówki z obszarów, które chcę obsłuzyć?
Wiem, że problem trochę teoretyczny, bo chcąc sterować np. kolorem wszystkich świateł w salonie - to raczej oczekuję i tak tego samego koloru
Mam nadzieję, że ktoś dobrnął do końca - no ale na swoją obronę powiem, że temat obsługi tego pilota w HA praktycznei nie istnieje w necie, więc może będzie to jakaś wartość dodana.