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.
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
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.