Żarówki IKEA Trdfri integracja przez zigbee2mqtt cc2531

Witam. Po ograniu dongla cc2531 pojechałem od razu do IKEA i kupiłem żarówkę RGB+ściemianie z pilotem E1524 / E1810, oraz żarówkę białą z pilotem E1743. Ku mojemu zdziwieniu po sparowaniu żarówki z HA nie można już sparować pilota bezpośrednio z żarówką, czyli można sterować tylko z HA. Po sparowaniu pilota bezpośrednio z żarówką, żarówka nie jest już widoczna w HA. Wychodzi na to, że sterujemy wygodnie tylko z pilotów, lub mniej wygodnie tylko z HA. Słabe :frowning: Można też z cc2531 sparować piloty, ale zrobienie do nich automatyzacji to już wyższa szkoła jazdy. Np. prosty pilot E1743 przy przytrzymaniu przycisku włączenia (rozjaśnianie żarówki) na MQTT wysyła “click”: “brightness_up”, czyli każdy taki komunikat powinien rozjaśnić żarówkę, ale jak to zrobić w automatyzacji. Po długich poszukiwaniach znalazłem https://xaviml.github.io/controllerx/ i wg instrukcji zainstalowałem przez HACS APPDAEMON image
stworzył mi się nowy folder
image
stworzyłem plik konfiguracyjny apps.yaml w lokalizacji
/data/data/pl.sviete.dom/files/home/AIS/appdaemon/apps

dodałem wpis
image

ale pilot dalej nie działa. Czy ma ktoś może z tym doświadczenie? Dobrze ja to zrobiłem? Może ktoś pomoże? :slight_smile:

Pełna konfiguracja pilota IKEA czyli funkcjonalność taka sama jak przy sparowaniu z żarówką: image
To rozwiązanie działa na pewno bo mam u siebie.

Dodanie wpisu do configuration.yaml

python_script:

wgranie poniższego skryptu do python_scripts
/data/data/pl.sviete.dom/files/home/AIS/python_scripts/change_attribute_light_smoothly.py

input_boolean = data.get("input_boolean")
light_id = data.get("light_id")
delta = data.get("delta")
attribute_id = data.get("light_attribute", "brightness")
delay = data.get("delay", 350)

attribute_mapping = {
    "brightness": {"min": 1, "max": 255},
    "color_temp": {"min": 153, "max": 500},
}

exit_service = False
while True:
    switch_input = hass.states.get(input_boolean).state
    if switch_input == "off":
        break
    light = hass.states.get(light_id)

    attr_value = light.attributes[attribute_id]
    attr_value = attr_value + delta
    if attr_value < attribute_mapping[attribute_id]["min"]:
        attr_value = attribute_mapping[attribute_id]["min"]
        exit_service = True
    elif attr_value > attribute_mapping[attribute_id]["max"]:
        attr_value = attribute_mapping[attribute_id]["max"]
        exit_service = True

    service_data = {"entity_id": light_id, attribute_id: attr_value}
    logger.warning(f"Service data: {service_data}")
    hass.services.call("light", "turn_on", service_data)
    if exit_service:
        break
    time.sleep(delay / 1000)

Automatyzacja rozjaśnianie i ściemnianie

   - id: '1582141424335'
      alias: Zigbee Pilot Brightness Up
      description: ''
      trigger:
      - entity_id: sensor.pilot_ikea01_action
        platform: state
        to: brightness_up_click
      condition: []
      action:
      - data_template:
          brightness: '{{ state_attr("light.0xccccccfffe6cdc2c_light", "brightness")
            + 50 | int }}'
        entity_id: light.0xccccccfffe6cdc2c_light
        service: light.turn_on
    - id: '1582141544141'
      alias: Zigbee Pilot Brightness Down
      description: ''
      trigger:
      - entity_id: sensor.pilot_ikea01_action
        platform: state
        to: brightness_down_click
      condition: []
      action:
      - data_template:
          brightness: '{{ [state_attr("light.0xccccccfffe6cdc2c_light", "brightness")
            - 50, 1] | max }}'
        entity_id: light.0xccccccfffe6cdc2c_light
        service: light.turn_on

A tutaj zmiana barwy światła:

- id: ikea_controller_warm_up
  alias: Ikea controller warm up
  trigger:
    platform: state
    entity_id: sensor.pilot_ikea01_action
    to: arrow_right_click
  action:
    data_template:
      entity_id: light.0xccccccfffe6cdc2c_light
      color_temp: "{{ state_attr('light.0xccccccfffe6cdc2c_light', 'color_temp') + 75 }}"
    service: light.turn_on

- id: ikea_controller_warm_down
  alias: Ikea controller warm down
  trigger:
    platform: state
    entity_id: sensor.pilot_ikea01_action
    to: arrow_left_click
  action:
    data_template:
      entity_id: light.0xccccccfffe6cdc2c_light
      color_temp: "{{ state_attr('light.0xccccccfffe6cdc2c_light', 'color_temp') - 75 }}"
    service: light.turn_on

Kolejne automatyzacje przy przytrzymaniu przycisków rozjaśniania/ściemniania i zmiany barwy

- id: ikea_controller_brighten_on
  alias: Ikea Controller - Brighten on
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: brightness_up_hold
  condition:
    - condition: state
      entity_id: light.0xccccccfffe6cdc2c_light
      state: "on"
  action:
    - service: input_boolean.turn_on
      entity_id: input_boolean.light_brightness
    - service: python_script.change_attribute_light_smoothly
      data:
        light_id: light.0xccccccfffe6cdc2c_light
        input_boolean: input_boolean.light_brightness
        delta: 20
- id: ikea_controller_brighten_off
  alias: Ikea Controller - Brighten off
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: brightness_down_hold
  condition:
    - condition: state
      entity_id: light.0xccccccfffe6cdc2c_light
      state: "on"
  action:
    - service: input_boolean.turn_on
      entity_id: input_boolean.light_brightness
    - service: python_script.change_attribute_light_smoothly
      data:
        light_id: light.0xccccccfffe6cdc2c_light
        input_boolean: input_boolean.light_brightness
        delta: -20
- id: ikea_controller_brighten_dim_off
  alias: Ikea Controller - Brighten/Dim off
  initial_state: "on"
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: brightness_up_release
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: brightness_down_release
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_boolean.light_brightness
        state: "on"
      - condition: state
        entity_id: light.0xccccccfffe6cdc2c_light
        state: "on"
  action:
    - service: input_boolean.turn_off
      entity_id: input_boolean.light_brightness

- id: ikea_controller_warm_on
  alias: Ikea Controller - Warm on
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: arrow_right_hold
  condition:
    - condition: state
      entity_id: light.0xccccccfffe6cdc2c_light
      state: "on"
  action:
    - service: input_boolean.turn_on
      entity_id: input_boolean.light_color_temp
    - service: python_script.change_attribute_light_smoothly
      data:
        input_boolean: input_boolean.light_color_temp
        light_id: light.0xccccccfffe6cdc2c_light
        light_attribute: color_temp
        delta: 40
- id: ikea_controller_col_on
  alias: Ikea Controller - Cold on
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: arrow_left_hold
  condition:
    - condition: state
      entity_id: light.0xccccccfffe6cdc2c_light
      state: "on"
  action:
    - service: input_boolean.turn_on
      entity_id: input_boolean.light_color_temp
    - service: python_script.change_attribute_light_smoothly
      data:
        light_id: light.0xccccccfffe6cdc2c_light
        input_boolean: input_boolean.light_color_temp
        light_attribute: color_temp
        delta: -40
- id: ikea_controller_warm_cold_off
  alias: Ikea Controller - Warm/Cold off
  initial_state: "on"
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: arrow_left_release
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: arrow_right_release
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_boolean.light_color_temp
        state: "on"
      - condition: state
        entity_id: light.0xccccccfffe6cdc2c_light
        state: "on"
  action:
    - service: input_boolean.turn_off
      entity_id: input_boolean.light_color_temp
1 polubienie

Dziękować - jutro przetestuję.

@Iron coś ni ten skrypt nie działa. Fakt automatyzacja po małej modyfikacji śmiga, ale żeby rozjaśnić muszę przytrzymać, puścić, znowu przytrzymać i puścić, czyli żeby stan z jakiegoś zmienił się na brightness_up. Jak trzymam wciśnięty to cały czas jest brightness_up, czyli stan się nie zmienia.
Przy ściemnianiu dopiero zadziałało jak linię
brightness: ‘{{ [state_attr(“light.0xccccccfffe6cdc2c_light”, “brightness”) - 50, 1] | max }}’
zmieniłem na
brightness: ‘{{ state_attr(“light.0x086bd7fffe04f0c5_light”, “brightness”) - 50 | int }}’

wygląda, że skrypt nie działa.
W pliku configuration.yaml mam taki wpis
image

Co to jest packages: !include_dir_named packages ?
nie mam takiego pliku. Dodać gdzieś?

Sorki packages: !include_dir_named packages to chyba akurat nie jest tutaj potrzebne.

Hm skopiowałem ze swojego działającego automation.yaml więc powinno działać.

Odpal pm2 logs jak testujesz może coś tam będzie :slight_smile: U mnie tak zdebugowałem bo na początku też mi nie działał skrypt.

w configuration.yaml ma być python_script: a katalog
a w ścieżce masz python_scripts
/data/data/pl.sviete.dom/files/home/AIS/python_scripts/change_attribute_light_smoothly.py

to jest prawidłowo?

W logach nic nie widzę.

Tak

/data/data/pl.sviete.dom/files/home/AIS/python_scripts/change_attribute_light_smoothly.py

a ten skrypt to jakiś gotowiec z neta? Bo ja mam innego pilota https://www.ikea.com/pl/pl/p/tradfri-przyciemniacz-bezprzewodowy-bialy-00468432/
może dla niego powinien być inny skrypt?

aaaaaaaaaaaaaaaaa … :wink:

Z tego co wiem to on ma 4 stany włącz/wyłącz ściemnij/rozjaśnij.
Ten który ja mam ma 10. Więc trochę trzeba przerobić skrypt i automatyzacje.
Mój ma włącz/wyłącz na jednym przycisku i działa to jako switch toggle.
MQTT publish: topic 'zigbee2mqtt/pilot_ikea01', payload '{"linkquality":107,"action":"toggle"}'

za to rozjaśnianie i ściemnianie

MQTT publish: topic ‘zigbee2mqtt/pilot_ikea01’, payload ‘{“linkquality”:110,“action”:“brightness_up_click”}’

MQTT publish: topic ‘zigbee2mqtt/pilot_ikea01’, payload ‘{“linkquality”:110,“action”:“brightness_down_click”}’

natomiast przytrzymanie przycisku rozjaśniania:
MQTT publish: topic 'zigbee2mqtt/pilot_ikea01', payload '{"linkquality":107,"action":"brightness_up_hold"}'
puszczenie przycisku rozjaąniania:
MQTT publish: topic 'zigbee2mqtt/pilot_ikea01', payload '{"linkquality":110,"action":"brightness_up_release"}'

przytrzymanie przycisku ściemiania:
MQTT publish: topic 'zigbee2mqtt/pilot_ikea01', payload '{"linkquality":105,"action":"brightness_down_hold"}'
puszczenie przycisku ściemiania:
MQTT publish: topic 'zigbee2mqtt/pilot_ikea01', payload '{"linkquality":110,"action":"brightness_down_release"}'

Odpal pm2 logs i zobacz jakie stany generuje Ci zigbe2mqtt jako “action”

Ja mam tak:
krótkie naciśnięcie włącznika
“on”
przytrzymanie przycisku włącznika
“brightness_up” podczas puszczenia brightness_stop
krótkie naciśnięcie wyłącznika
“off”
przytrzymanie przycisku włącznika
“brightness_down” podczas puszczenia brightness_stop

Niby poustawiałem pod swoje, ale nie tak chodzi. Np przy przytrzymaniu przycisku rozjaśnia aż do max lub przyciemnia do min.

Tak masz ? Podmień tylko na swoje sensory albo sprawdź
- platform: state
** entity_id: sensor.pilot_ikea01_action**
** to: brightness_stop**

- id: ikea_controller_brighten_on
  alias: Ikea Controller - Brighten on
  trigger:
    - platform: state
      entity_id: sensor.pilot_ikea01_action
      to: brightness_up
  condition:
    - condition: state
      entity_id: light.0xccccccfffe6cdc2c_light
      state: "on"
  action:
- service: input_boolean.turn_on
  entity_id: input_boolean.light_brightness
- service: python_script.change_attribute_light_smoothly
  data:
    light_id: light.0xccccccfffe6cdc2c_light
    input_boolean: input_boolean.light_brightness
    delta: 20

- id: ikea_controller_brighten_dim_off
  alias: Ikea Controller - Brighten/Dim off
  initial_state: "on"
  trigger:
- platform: state
  entity_id: sensor.pilot_ikea01_action
  to: brightness_stop
  condition:
condition: and
conditions:
  - condition: state
entity_id: input_boolean.light_brightness
state: "on"
  - condition: state
entity_id: light.0xccccccfffe6cdc2c_light
state: "on"
  action:
- service: input_boolean.turn_off
  entity_id: input_boolean.light_brightness

Coś z tym pilotem jednak nie trybi. Próbuję przez dodatek controllerX, ale nie wiem jak zainstalować APPDAEMON.

Dobra uruchomiłem to w końcu.
Brakowało wpisu:
image
Dopiero po tym wpisie pojawiły mi się encje input_boolean.light_brightness itd.

Dla przycisku E1743 wygląda to tak:
automation:

  • id: Ikea_Sypialnia_przełącznik
    alias: Ikea Sypialnia przełącznik
    trigger:
    • platform: state
      entity_id: sensor.0xec1bbdfffe9f5cc0_click
      to: “off”
    • platform: state
      entity_id: sensor.0xec1bbdfffe9f5cc0_click
      to: “on”
      condition:
      action:
    • service: light.toggle
      data:
      entity_id: light.0x086bd7fffe04f0c5_light
  • id: IKEA_sypialnia_brighten_on
    alias: IKEA sypialnia- Brighten on
    trigger:
    • platform: state
      entity_id: sensor.0xec1bbdfffe9f5cc0_click
      to: brightness_up
      condition:
    • condition: state
      entity_id: light.0x086bd7fffe04f0c5_light
      state: “on”
      action:
    • service: input_boolean.turn_on
      entity_id: input_boolean.light_E1743_brightness
    • service: python_script.change_attribute_light_smoothly
      data:
      light_id: light.0x086bd7fffe04f0c5_light
      input_boolean: input_boolean.light_E1743_brightness
      delta: 20
  • id: IKEA_sypialnia_dim_on
    alias: IKEA sypialnia- Dim on
    trigger:
    • platform: state
      entity_id: sensor.0xec1bbdfffe9f5cc0_click
      to: brightness_down
      condition:
    • condition: state
      entity_id: light.0x086bd7fffe04f0c5_light
      state: “on”
      action:
    • service: input_boolean.turn_on
      entity_id: input_boolean.light_E1743_brightness
    • service: python_script.change_attribute_light_smoothly
      data:
      light_id: light.0x086bd7fffe04f0c5_light
      input_boolean: input_boolean.light_E1743_brightness
      delta: -20
  • id: IKEA_sypialnia_brighten_dim_off
    alias: IKEA Sypialnia- Brighten/Dim off
    initial_state: “on”
    trigger:
    • platform: state
      entity_id: sensor.0xec1bbdfffe9f5cc0_click
      to: brightness_stop
      condition:
      condition: and
      conditions:
      • condition: state
        entity_id: input_boolean.light_E1743_brightness
        state: “on”
      • condition: state
        entity_id: light.0x086bd7fffe04f0c5_light
        state: “on”
        action:
    • service: input_boolean.turn_off
      entity_id: input_boolean.light_E1743_brightness

input_boolean:
light_e1743_brightness:
name: Light e1743 brigthness
initial: off

Ja to mam w pliku: input_boolean.yaml

#Zarówka IKEA up/down smoothly
light_brightness:
name: Light brigthness
initial: off
light_color_temp:
name: Light color temperature
initial: off

A widzisz. Kolejni już będą wiedzieli :slight_smile:

@Iron dodałem dziś pilota takiego jak twój + żarówkę RGBW ale na brokerMQTT nie idzie color w jednej wartości tylko w 2 i zmiana koloru z pilota nie działa. U Ciebie color też ma wartość - “color”:{“x”:0.xx,“y”:0.xx}. czy inaczej?
image

gdzie wpisałeś
input_boolean:
light_brightness:
name: Light brigthness
initial: off
light_color_temp:
name: Light color temperature
initial: off
i ja chyba coś źle wpisuje. bo robiłem to w configuration.yaml
image
próbowałem w configuration dodac
input_boolean: !include input_boolean.yaml
i zapisać plik inputoolean ale coś nie idzie

Kupiłem kilka żarówek zigbee Ikea białych w celu rozszerzenia sieci a ponieważ mają możliwość ściemniania, chciałbym to wykorzystać aby
głosowo ściemniać lub rozjaśniać co 30% czyli w trzech poziomach. Jaką postać ma mieć skrypt aby wykonywać te funkcje za pomocą automatyzacji korzystając z wbudowanej usługi zmniejsz/zwiększ jasność. Dodam, że skrypt bez parametrów wykonuje komendę w 10 krokach co jest uciążliwe. Ewentualnie jakiś pomysł na inne sterowanie
głosowe zadaną jasnością.

Czytam wątek i potrzebuje mieć zupełna jasność. Czy to co osiągacie ostatecznie oznacza że można sterować żarówkami ikeowymi bez bramki i moglbym się jej pozbyć ?

Pytasz o bramkę Ikeową? Tak możesz ją “wyrzucić” jeśli przepniesz się na Zigbee2Mqtt.