Converting Shelly RGBW2 Color/White mode into a "CCT mode"

Okay. So I’ve made the code already using “light template” that converts two channels for Shelly RGBW2 and converts them into a CCT LED with a temperature slider.

In case this helps to anyone:

info:
I am using two channels for one light. One channel is light.cw1 and the second channel is light.ww1.

steps to perform:

  1. you need to create a two number “helper” objects called:
  • helper_brightness_level_1 (this one should have values from 0 to 255)
  • helper_temperature_ratio_1 (this one should have values from 0 to 100)
  1. edit configuration.yaml to include “light template”

light.yaml follows:

- platform: template
  lights:
    four_white_to_cct_1:
      friendly_name: "light-edge-1"
      value_template: >
        {% if is_state('light.cw1', 'on' ) or is_state('light.ww1', 'on' ) %}
          on
        {% else %}
          off
        {% endif %}
      turn_on:
        service: light.turn_on
        target:
          entity_id:
          - light.cw1
          - light.ww1
      turn_off:
        service: light.turn_off
        target:
          entity_id:
          - light.cw1
          - light.ww1
      min_mireds_template: "{{ (1000000/6500)|round }}"
      max_mireds_template: "{{ (1000000/2700)|round }}"
      level_template: >
        {{ states('input_number.helper_brightness_level_1') }}
      temperature_template: >
        {{ states('input_number.helper_temperature_ratio_1')|int }}
      set_level:
        - service: input_number.set_value
          data:
            value: "{{ brightness }}"
            entity_id: input_number.helper_brightness_level_1
        - service: light.turn_on
          data:
            brightness: >
              {% set helper_temp_slider = states('input_number.helper_temperature_ratio_1') %}
              {% set cold = helper_temp_slider|int %}
              {% set brightness_ratio = (brightness/255)|round(2) %}
              {% set cold_light_brightness_level = (cold * brightness_ratio * 2.55)|int %}
              {{ cold_light_brightness_level }}
            entity_id: light.cw1
        - service: light.turn_on
          data:
            brightness: >
              {% set helper_temp_slider = states('input_number.helper_temperature_ratio_1') %}
              {% set warm = (helper_temp_slider|int) - 100 %}
              {% set brightness_ratio = (brightness/255)|round(2) %}
              {% set warm_light_brightness_level = (warm * brightness_ratio * 2.55)|int %}
              {{ warm_light_brightness_level|abs }}
            entity_id: light.ww1
      set_temperature:
        - service: input_number.set_value
          data:
            value: >
              {% set kelvin_temp = (1000000/color_temp)|int %}
              {% set helper_temp_slider = ((kelvin_temp - 2700) * 0.0263)|int %}
              {{ helper_temp_slider }}
            entity_id: input_number.helper_temperature_ratio_1
        - service: light.turn_on
          data:
            brightness: >
              {% set brightness = states('input_number.helper_brightness_level_1')|int %}
              {% set kelvin_temp = (1000000/color_temp)|int %}
              {% set helper_temp_slider = ((kelvin_temp - 2700) * 0.0263)|int %}
              {% set brightness_ratio = (brightness/255)|round(2) %}
              {% set cold_light_brightness_level = (helper_temp_slider * brightness_ratio * 2.55)|int %}
              {{ cold_light_brightness_level }}
            entity_id: light.cw1
        - service: light.turn_on
          data:
            brightness: >
              {% set brightness = states('input_number.helper_brightness_level_1')|int %}
              {% set kelvin_temp = (1000000/color_temp)|int %}
              {% set helper_temp_slider = (((kelvin_temp - 2700) * 0.0263)|int) -100 %}
              {% set brightness_ratio = (brightness/255)|round(2) %}
              {% set warm_light_brightness_level = (helper_temp_slider * brightness_ratio * 2.55)|int %}
              {{ warm_light_brightness_level | abs }}
            entity_id: light.ww1
2 Likes