Jak pisałem wyżej, w moim konkretnym przypadku udało się pokonać wroga ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)
Zajęło mi to 5 dni przekopywania netu po forach oraz testowania różnych kombinacji zlepków informacji i wytycznych.
Nie twierdzę że rozwiązanie jest full poprawne względem np. założeń twórców oraz czy przetestowałem wszelkie możliwe kombinacje, ale załapało, działa to nie ruszam ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)
Tak na marginesie, chyba brakuje trochę takiego pełnego, jasnego, klarownego zebranego w jednym miejscu opisu całej funkcjonalności panelu Energia, założeń, wytycznych itp. (albo może ja mało rozumny jestem).
No więc u mnie zagrało to tak (powtórzę trochę opis z pierwszego posta, ale niech będzie pełna instrukcja, może komuś się przyda):
Koniecznie chciałem i użyłem opisanej w pierwszym poście encji “Produkcja dzisiaj” (zerowana codziennie). Na potrzeby przykładu nazwijmy ją “encja_zrodlowa”.
Na jej podstawie poprzez template
utworzyłem nową encję “PV - produkcja”. W przykładzie - “encja_wynikowa”. Zmieniłem jej wartość ze stringa na liczbę, nadałem jednostkę miary kWh
oraz dokonałem odpowiednich przeliczeń dla nowej jednostki miary (z Wh na kWh).
Kod gotowiec:
- platform: template
sensors:
encja_wynikowa:
friendly_name_template: "jakas_nazwa"
unique_id: jakies_id
value_template: "{{ ((states('encja_zrodlowa') | float) /1000) | round(2) }}"
unit_of_measurement: "kWh"
Dodatkowo w pliku customize.yaml
nadałem encji atrybuty: device_class: energy
oraz
state_class: total_increasing
.
Ważne, aby najpierw dodać encję poprzez template
i potem przerestartować HA żeby stworzyła się encja. Dopiero potem dodać wpisy w customize
. Inaczej debuger yaml bedzie krzyczał.
I w sumie to tyle*. Teraz encja oprócz tego że będzie możliwa do dodania do panelu Energia to pomimo zerowania o północy HA nie będzie pokazywał bzdur.
Z moich testów wychodzi, że kluczowy jest atrybut state_class
.
Dla wartości measurement
za każdym razem gdy encja przybierze wartość “0” dzieje się tak jak w problemie opisanym wyżej w tym temacie.
Dla wartości total_increasing
HA “z jakiś powodów” wie, że encja ta może być resetowana (?). To dla mnie jest kompletnie nie jasne i wg mnie nie wynika to z żadnych opisów. Doszedłem do tego na zasadzie prób i błędów i chyba to mnie najbardziej wkurzyło.
*) Jak dotarliście z czytaniem dotąd - gratuluje. Bo teraz zaczyna się jazda ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)
Otóż cały powyższy opis załatwia temat…ale połowicznie ![:sweat: :sweat:](https://forum.arturhome.pl/images/emoji/google/sweat.png?v=10)
O ile state_class: total_increasing
załatwia problem zerowania encji o północy to niestety nie załatwia problemu gdy encja dostanie wartość “0” z innych powodów/o innej porze doby (?).
Np. gdy enca_zrodlowa z jakiś powodów będzie niedostępna (np. u mnie gdy dodatek w HA do mikroinwertera nie wstał poprawnie) encja_wynikowa będzie miała wartość 0. Wystarczy że przegapimy ten moment i odczyt panelu Energia złapie to - mamy ponownie całą dotychczasową produkcję ze znakiem “minus”. Za ch…olerę nie wiem czemu tak, ale tak jest (sprawdzone na własnej wkurzonej skórze
).
Remedum (może nie idealne, ale jednak) : opcja availability_template
. Dzięki niej możemy określic, że “jeżeli encja_zrodlowa jest niedostępna to encja_wynikowa zwróci wartoś “unavailable” zamiast 0”
Efekt - w opisanym kilka linijek wyżej przykładzie, będziemy mieli przerwę w danych, a nie 0 i w efekcie produkcję na minusie.
Aby zastosować, dodajemy 3 linijki kodu. W pełnej formie kod będzie taki:
- platform: template
sensors:
encja_wynikowa:
friendly_name_template: "jakas_nazwa"
unique_id: jakies_id
availability_template: >-
{%- if not is_state("encja_zrodlowa", "unavailable") %}
true
{%- endif %}
value_template: "{{ ((states('encja_zrodlowa') | float) /1000) | round(2) }}"
unit_of_measurement: "kWh"
I teraz wreszcie ma to ręce i nogi i działa jak należy. Przynajmniej u mnie ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)
Teraz jeszcze po kilku dniach działania, myślę że warto dodać jeszcze do tego małą automatyzację żeby gdy encja_wynikowa ma stan “unavailable” dłużej niż np. 10 min żeby HA dał o tym powiadomienie adminowi, aby zminimalizować czas bez danych (ja przez to mam wyrwę w danych przez cały 1 dzień).
Przepraszam za tak koszmarnie długi wywód. Jak sobie przypomnę ile zajęło mi dotarcie do tych informacji, zlepienie ich w całość i przetestowanie…yyhhh.
Jeśli dobrnęliście z czytaniem aż tutaj - gratuluję i dziękuję ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)
Jeśli komukolwiek choć trochę to pomoże, będzie mi bardzo miło ![:slight_smile: :slight_smile:](https://forum.arturhome.pl/images/emoji/google/slight_smile.png?v=10)