Jak zmienić encję light na switch

Czy ktoś wie jak zmienić encję light (przekaźnik beznapięciowy zigbee Sonoff) na switch ?

Ustawić właściwą domenę w integracji źródłowej, normalnie encji z domeny light nie da się zamienić w switch (a w każdym razie do niedawna się nie dało i jakoś z tym żyję).
Można to obejść tworząc inną encję używając np. template.

Natomiast chętnie się dowiem czy coś na tym tracę, bo wydaje mi się, że obojętnie czy to światło czy switch to może przyjąć tylko 2 stany on lub off.

Problem w tym że dla encji light jest błąd

  - platform: history_stats
    name: Ogrzewanie dzisiaj
    entity_id: light.sonoff_a48001c923
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Platform error light.history_stats - No module named ‘homeassistant.components.history_stats.light’

Jak to naprawić ? Bo już nie mam pomysłów.

@AndrzejJan1977 - Jaki oprogramowanie masz w tym sonoff?

Producenta, ponieważ nie ma innego dla tego sprzętu.

Może opakować encję tym odwracając logikę?

Nie działa, już próbowałem.

W folderze zigbee2mqtt otwierasz plik configuration.yaml i dodajesz wpis:

friendly_name: (twoja nazwa urządzenia w zigbee)
    homeassistant:
      switch:
        type: light
        object_id: (dowolna nazwa identyfikatora encji nowego obiektu light)
        name: (dowolna nazwa nowego obiektu light)

@angler Tak się na 100% nie da.
@Redman Chodzi o uzyskanie czegoś odwrotnego, ale być może tak by się dało?

      switch:
        type: switch

https://www.zigbee2mqtt.io/guide/usage/exposes.html#specific

spróbuj jeszcze tak:

 - platform: template
   switches:
      light:
       value_template: "{{ is_state('light.twój', 'on') }}"
        turn_on:
          service: light.turn_on
          data:
            entity_id: light.twój
        turn_off:
          service: light.turn_off
          data:
            entity_id: light.twój

light.twój = twoja encja light w ha
i oczywiście tu już w HA a nie folderze zigbee2mqtt

Niestety też nic nie daje.

Jak to zrobić abym widział ile czasu pracuje u mnie piec ?

  - platform: history_stats
    name: Ogrzewanie dzisiaj
    entity_id: light.sonoff_a48001c923
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Konfiguracja jest w ten sposób poprawna lecz nie jest tworzony sensor.

Jakieś pomysły ?

prawidłowy kod (były złe wcięcia ale pewnie je poprawiłeś)

switch:
 - platform: template
   switches:
      wylacznik:
        value_template: "{{ is_state('light.wentylator', 'on') }}"
        turn_on:
          service: light.turn_on
          data:
             entity_id: light.wentylator
        turn_off:
          service: light.turn_off
          data:
            entity_id: light.wentylator

i działa tzn. wygenerowana encja jest z domeny switch
light_to_swich_Screenshot 2021-11-04 at 20-46-32 Narzędzia deweloperskie - Home Assistant
a jeśli chodzi o sensor to pewnie też coś się da wymyślić, tylko podaj przykład jakiejś działającej encji
generalnie to coś tu nie gra bo kod jest dosłownie skopiowany z przykładu w dokumentacji i ten kod działa (i z tego co kojarzę zawsze działał)

sensor:

  - platform: history_stats
    name: Wentylator dzisiaj
    entity_id: switch.wylacznik
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

OK podejrzewam, że znam przyczynę
masz linijkę

default_config:

na początku configuration.yaml ?

Może od poczatku.

Encja z której chcę zrobić sensor na platformie history_stats to: light.sonoff_a48001c923

Standardowy kod w konfiguracji yaml nie działa - nie tworzy się sensor.

Kod jaki mam w config.yaml to:

  - platform: history_stats
    name: Ogrzewanie dzisiaj
    entity_id: light.sonoff_a48001c923
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Pytanie za 3 punkty czy jakakolwiek encja działa z tym kodem, bo problem najprawdopodobniej leży gdzieś indziej (edytowałem posta wyżej - sprawdź to).

Faktycznie nie tworzy z innych encji sensorów.

Tylko dlaczego ?

nie mogę pisać pustych postów - sprawdziłeś to?

Tak jest na samym początku:

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
shell_command: !include shell.yaml
frontend:
  javascript_version: latest
  themes: !include_dir_merge_named themes
  
# LIGHT to SWITCH
switch:
 - platform: template
   switches:
      piec:
        value_template: "{{ is_state('light.sonoff_a48001c923', 'on') }}"
        turn_on:
          service: light.turn_on
          data:
             entity_id: light.sonoff_a48001c923
        turn_off:
          service: light.turn_off
          data:
            entity_id: light.sonoff_a48001c923
 
# OGRZEWANIE
sensor:    
  - platform: history_stats
    name: ogrzewanie
    entity_id: switch.piec
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

Ja w tym kawałku konfiguracji nie widzę błędów, co do encji które możesz podstawić testowo to oczywiście muszą być jakieś, które przyjmują stany on i off
pytałem o defalt_config, bo history_stats zależy m.in. od input_datetime

oraz od recordera, ale nie umiem sobie wyobrazić czemu to nie działa (bo o ile integracja ewelink może być trefna, to template od niej “izoluje” dość skutecznie).

Wg dokumentacji zamiast data powinno być target, zrób dokładnie jak w Template Switch - Home Assistant podstawiają odpowiednie encje.

@macek
Masz rację - teraz powinno być target (zmieniono to jakoś niedawno), ale konfiguracja w starym formacie nadal działa.