Od czasu utworzenia encji utility_meter
Ok w takim razie wszystko jasne bo się bałem że źle liczy
Mam prośbę żeby ktoś podpowiedział jak zaokrąglić miejsca po przecinku na karcie bo wyświetla mi teraz w ten sposób:
W kodzie dodałem parametr round(2) niestety nie pomogło ;/
salon_ogrzewanie_kwh:
friendly_name: “salon ogrzewanie kWh”
unit_of_measurement: ‘kWh’
value_template: “{{ states(‘sensor.ogrzewanie_salon’) | float * 3.67 | round(2)}}”
- platform: history_stats
name: ogrzewanie salon
entity_id: switch.sonoff_1000e5ab8b
state: ‘on’
type: time
start: ‘{{ now().replace(hour=0, minute=0, second=0) }}’
end: ‘{{ now() }}’
utility_meter:
daily_energy:
source: sensor.salon_ogrzewanie_kwh
cycle: daily
monthly_energy:
source: sensor.salon_ogrzewanie_kwh
cycle: monthly
yearly_energy:
source: sensor.salon_ogrzewanie_kwh
cycle: yearly
Spróbuj tak:
value_template: “{{ (states(‘sensor.ogrzewanie_salon’) | float * 3.67) | round(2) }}”
albo
value_template: “{{ (states(‘sensor.ogrzewanie_salon’) | int * 3.67) | round(2) }}”
Edit: teraz powinno byc dobrze.
Jeżeli wklejasz test z konfiguracji umieść go między dwoma liniami zaczynającymi się od ```
Wtedy nie ma problemie przy kopiowaniu.
i przy jednym i drugim błąd pokazuje taki:
Invalid config for [sensor.template]: invalid template (TemplateSyntaxError: unexpected char '‘' at 12) for dictionary value @ data['sensors']['salon_ogrzewanie_kwh']['value_template']. Got '“{{ (states(‘sensor.ogrzewanie_salon’) | int * 3.67 ) | round(2)}}”'. (See ?, line ?).
Coś pochrzaniłem bo nawet jak wrócę do mojego kodu to dalej błąd ;/
Edit2: kurcze znalazłem błąd, dlaczego jak kopiuje to wkleja mi inne “cudzysłowy” ?? i apostrofy?
Sprawdziłem dwa rozwiązania, które podałeś, i niestety żadne z nich nie zmieniło miejsc po przecinku ;(
Edit:
zmieniło ale tylko w salon ogrzewanie kWh.
A jak zmienić w utility_meter: ??
Nie da się, tutaj masz opis swojego przypadku: [BUG] utility_meter shows to much decimals · Issue #41234 · home-assistant/core · GitHub
a to dokladnie Twój problem:
Proszę pokaż konfigurację encji sensor.ogrzewanie_salon
.
Zrobiłem od nowa wedle filmu z tego linku:
i mam coś takiego:
Jak widać miejsc po przecinku jest tyle co ma być. Mam natomiast pytanie jak zrobić aby liczyło poprawnie taryfę G12W
Czyli taryfa tania w dni powszednie godziny 22:00 do 6:00 i 13:00 do 15:00 i do tego i weekendy (piątek od 22:00 do poniedziałek 6:00)
Wiem jak dodać kolejne encję które będą wyświetlane jako następne taryfy, ale jest to mało wygodne i estetyczne bo zamiast taryfy taniej i drogiej robi mi się taryfa nocna + okienko w dzień + weekend. Jak to ogarnąć?
Kolejną dziwną sprawą, jest dziwny sposób zliczania kWh, nie rozumiem dlaczego roczne jest mniejsze od dziennego czy miesięcznego?
sensor_cop:
friendly_name: "Delta Chwilowy"
device_class: 'temperature'
value_template: >-
{{states('sensor.wyjscie_z_wymiennika')|float(0) |round(2) - states('sensor.powrot_do_bufora')|float(0) |round(2) }}
unit_of_measurement: "C"
moc_chwilowy:
friendly_name: "Moc PC"
device_class: 'power'
value_template: >-
{{states('sensor.sensor_cop')|float(0) |round(2) * 1180|float(0) * 1.17|float(0) |round (2) }}
unit_of_measurement: "W"
cop_chwilowy:
friendly_name: "cop PC"
device_class: 'power'
value_template: >-
{{states('sensor.moc_chwilowy')|round(2) / states('sensor.pobor_chwilowy_pc')| round(2) }}"
unit_of_measurement: "Cop"
wpisz lub wklej tutaj kod
czemu nie zaokragla do dwóch miejsc po przecinku ,co jest nie tak
Zaokrąglasz do 2 miejsc po przecinku jedną wartość float i dzielisz przed drugą wartość float zaokrągloną do 2 miejsc po przecinku, ale wyniku nie zaokrąglasz, więc taki przykład:
11,23/7,85=~1,430573248407643
sensor_cop:
friendly_name: "Delta Chwilowy"
device_class: 'temperature'
value_template: >-
{{states('sensor.wyjscie_z_wymiennika')|float(0) - states('sensor.powrot_do_bufora')|float(0) |round(2) }}
unit_of_measurement: "C"
moc_chwilowy:
friendly_name: "Moc PC"
device_class: 'power'
value_template: >-
{{states('sensor.sensor_cop')|float(0) * 1180|float(0) * 1.17|float(0) |round (2) }}
unit_of_measurement: "W"
cop_chwilowy:
friendly_name: "cop PC"
device_class: 'power'
value_template: >-
{{states('sensor.moc_chwilowy')|float(0) / states('sensor.pobor_chwilowy_pc')|float(0) |round(2) }}"
unit_of_measurement: "Cop"
Teraz mam tak i dalej kilka miejsc po przecinku.
Nawiasów za mało na moje oko.
Ale ja tam się w sumie nie znam - nie czuję tego i zawsze sobie dorabiam takie rzeczy eksperymentalnie.
Szukaj tak
https://forum.arturhome.pl/tag/template
ok dzięki faktycznie mało Na początku i końcu.
Już miałem coś tak kombinować z funkcja format.
Jeszcze zmieniłem żeby przy ujemnych cop liczył zero i powyzej 6.5 tez zero chyba bedzie ok.
cop_chwilowy:
friendly_name: "cop PC"
device_class: 'power'
value_template: >-
{% set cop = (states('sensor.moc_chwilowy')|float(0) / states('sensor.pobor_chwilowy_pc')|float(0)) %}
{% if cop < 0 or cop > 6.5 %}
0
{% else %}
{{ cop | round(2) }}
{% endif %}
unit_of_measurement: "Cop"