Zrobiłem sobie odczyt prędkości, używając licznika przejechanych kilometrów w helperze pochodnej. A czy dałoby się zrobić podobne helpery po innej zmiennej? Np spalanie na 100km, używając stanu baku i licznika kilometrów? Albo gromadzić dane spalania w zależności od prędkości?
W jaki sposób napływają dane do HA przez integrację Torque ?
Przez add-on FiatChamp.
W pomocniku Template
“Spalanie na 100 km”
>-
{% if states('sensor.licznik_kilometrow')|float > 0 and states('sensor.stan_baku')|float > 0 %}
{% set przejechane_km = states('sensor.licznik_kilometrow')|float %}
{% set zuzyte_paliwo = states('sensor.stan_baku')|float %}
{% set poprzednie_przejechane_km = state_attr('sensor.licznik_kilometrow', 'last_valid_state')|float %}
{% set poprzedni_stan_baku = state_attr('sensor.stan_baku', 'last_valid_state')|float %}
{% if poprzednie_przejechane_km is defined and poprzedni_stan_baku is defined %}
{% set przejechane_od_poprzedniego_tankowania = przejechane_km - poprzednie_przejechane_km %}
{% set zuzyte_paliwo_od_poprzedniego_tankowania = poprzedni_stan_baku - zuzyte_paliwo %}
{% if przejechane_od_poprzedniego_tankowania > 0 %}
{{ (zuzyte_paliwo_od_poprzedniego_tankowania / przejechane_od_poprzedniego_tankowania) * 100 }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %}
Musisz sprawdzić jakie atrybuty ma sensor “licznik kilometrów”
Powinien mieć atrybut last_valid_state
, jeśli go nie ma to musisz zmienić na np. w
customize.yaml
sensor.licznik_kilometrow
state_class: collecting
Obliczane są zmienne związane z zużytym paliwem oraz przejechanymi kilometrami od poprzedniego odczytu. Następnie, jeśli odległość od poprzedniego tankowania jest większa niż “0”, obliczane jest spalanie na 100 km .
Ten kod jest tylko jako przykład (może działać)
Oczywiście nazwa sensorów jest zmyślona (do podmiany)
/
Nie mam takich danych (encji) do sprawdzenia poprawności działania, więc jak się uporasz z kodem to daj znać czy działa.
Atrybut last_valid_state
nie istnieje, pewnie trzebabyłoby sięgać po prostu do poprzedniego data pointu, o ile to możliwe.
{% if states('sensor.car_car_vehicleinfo_odometer_odometer_value')|float > 0 and states('sensor.car_car_vehicleinfo_fuel_fuelamountlevel')|float > 0 %}
{% set przejechane_km = states('sensor.car_car_vehicleinfo_odometer_odometer_value')|float %}
{% set zuzyte_paliwo = states('sensor.car_car_vehicleinfo_fuel_fuelamountlevel')|float %}
{% set poprzednie_przejechane_km = state_attr('sensor.car_car_vehicleinfo_odometer_odometer_value', 'last_valid_state')|float %}
{% set poprzedni_stan_baku = state_attr('sensor.car_car_vehicleinfo_fuel_fuelamountlevel', 'last_valid_state')|float %}
{% if poprzednie_przejechane_km is defined and poprzedni_stan_baku is defined %}
{% set przejechane_od_poprzedniego_tankowania = przejechane_km - poprzednie_przejechane_km %}
{% set zuzyte_paliwo_od_poprzedniego_tankowania = poprzedni_stan_baku - zuzyte_paliwo %}
{% if przejechane_od_poprzedniego_tankowania > 0 %}
{{ (zuzyte_paliwo_od_poprzedniego_tankowania / przejechane_od_poprzedniego_tankowania) * 100 }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %}
Edit w customize.yaml dałem:
sensor.car_car_vehicleinfo_odometer_odometer_value
state_class: collecting
Ale:
Configuration errors
Error loading /config/configuration.yaml: mapping values are not allowed here
in “/config/customize.yaml”, line 2, column 14
state_class: collecting
Czyli, jeśli przypiszesz:
sensor.car_car_vehicleinfo_odometer_odometer_value:
state_class: collecting
To po przeładowaniu HA i po otrzymaniu nowych odczytów, powinna pojawić się “poprzedni stan”
Przynajmniej ja tak to pojmuję
/
Zapomniałem dodać
sensor.car_car_vehicleinfo_odometer_odometer_value:
# Dwukropek
No, wpadłem na ten dwukropek, dzięki. Gdzie można poczytać więcej o tych stanach do cutomize?
Póki co wygląda to tak:
unit_of_measurement: km
device_class: distance
friendly_name: Car car_vehicleInfo_odometer_odometer_value
state_class: collecting
Tutaj:
nie piszą, że jest taki stan jak collecting…
Rzeczywiście z atrybutami i z customize
wyszła kicha - Przepraszam
Kurcze nie mam jak to sprawdzić, jedynie co teraz przychodzi do głowy to:
{% set przejechane_km = states('sensor.car_car_vehicleinfo_odometer_odometer_value')|float %}
{% set zuzyte_paliwo = states('sensor.car_car_vehicleinfo_fuel_fuelamountlevel')|float %}
{% if przejechane_km > 0 and zuzyte_paliwo > 0 %}
{% set poprzednie_przejechane_km = states('sensor.car_car_vehicleinfo_odometer_odometer_value')|float %}
{% set poprzedni_stan_baku = states('sensor.car_car_vehicleinfo_fuel_fuelamountlevel')|float %}
{% set przejechane_od_poprzedniego_tankowania = przejechane_km - poprzednie_przejechane_km %}
{% set zuzyte_paliwo_od_poprzedniego_tankowania = poprzedni_stan_baku - zuzyte_paliwo %}
{% if przejechane_od_poprzedniego_tankowania > 0 %}
{{ (zuzyte_paliwo_od_poprzedniego_tankowania / przejechane_od_poprzedniego_tankowania) * 100 }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %}
Nie ma za co. Zmieniłem na powyższy kod, zobaczymy co z tego wyjdzie.