Encja nie jest numeryczna

Cześć,
mam zintegrowany falownik Fronius. Jest tam encja pokazująca aktualną produkcję paneli PV.
Dodałem sobie wskaźnik, który ładnie pokazuje aktualną moc w Watach. Jednak gdy słoneczko zajdzie, wartość encji zmienia się z typu numerycznego na “unknown” no i błąd “Encja nie jest numeryczna” wydaje się całkiem uzasadniony w tej sytuacji.
Czy da się gdzieś zakodować w tym wskaźniku albo w encji, że jeśli status jest unknown to zmień wartość na 0 ?

Cześć,
Wszystko czego potrzebujesz znajdziesz tutaj:

Zrobiłem dodatkowy czujnik.
Może komuś się przyda:

- platform: template
    sensors:
      photovoltaics_current_power:
        friendly_name: Fotowoltaika produkcja bieżąca
        unit_of_measurement: "W"
        value_template: >
          {% if states ('sensor.solarnet_power_photovoltaics') in ['unknown', 'unavailable', 'none']  %}
          0
          {% else %}
          {{ states ('sensor.solarnet_power_photovoltaics') }}
          {% endif %}

Zwróć uwagę, że korzystasz z nierekomendowanej wersji formatu template.
Za dokumentacją:

This format still works but is no longer recommended. Use modern configuration.

Proszę o pomoc jak dodać Phase_2 i Phase_3 do "if-ów

/config/packages/sensor_template.yaml

czy aby powinno być if states czy raczej if is_state

      - name: "energia_czynna_aktualnie_pobierana"
        device_class: energy
        unique_id: "energia_czynna_aktualnie_pobierana_watt"
        unit_of_measurement: "W"
        state: >
          {% if states('sensor.electricity_meter_power_active_phase_1') in ['unavailable', 'unknown', 'none'] %}
          {{ states('sensor.energia_czynna_aktualnie_pobierana_watt') }}
          {% else %}
          {{ (states('sensor.electricity_meter_power_active_phase_1')|float(0)  + states('sensor.electricity_meter_power_active_phase_2')|float(0) + states('sensor.electricity_meter_power_active_phase_3')|float(0)) | round(0) }}
          {% endif %}

Nie rozumiem tego “sensora” :thinking:
Wydaje mi się, że w
device_class: energy
powinno być
device_class: power # (watty)

A co do: If może na tej zasadzie:

{% if states('sensor.electricity_meter_power_active_phase_1') in ("unavailable", "unknown", "none")and states('sensor.electricity_meter_power_active_phase_2') in ("unavailable", "unknown", "none")and states('sensor.electricity_meter_power_active_phase_3') in ("unavailable", "unknown", "none") %}

/
Pomocnik dobrze zlicza sumę
/
Raczej “or”

{% if states('sensor.electricity_meter_power_active_phase_1') in ("unavailable", "unknown", "none") or states('sensor.electricity_meter_power_active_phase_2') in ("unavailable", "unknown", "none") or states('sensor.electricity_meter_power_active_phase_3') in ("unavailable", "unknown", "none") %}

Jestem amatorem, są to jedynie sugestie :grin:

i masz rację , wklejałem z telefonu przerabiając z kWh i nie zwróciłem na to uwagi, chodziło mi o te “i-fy” bo w sumie sądziłem, że to jak w Twoim z “or” ale nie wiem czy to poprawna konstrukcja stąd moje pytanie i nie rozumiem różnicy miedzy states a is_state

      - name: "energia_czynna_aktualnie_pobierana"
        device_class: power
        unique_id: "energia_czynna_aktualnie_pobierana_watt"
        unit_of_measurement: "W"
        state: >
          {% if states('sensor.electricity_meter_power_active_phase_1') in ("unavailable", "unknown", "none") or states('sensor.electricity_meter_power_active_phase_2') in ("unavailable", "unknown", "none") or states('sensor.electricity_meter_power_active_phase_3') in ("unavailable", "unknown", "none") %}
          {{ states('sensor.energia_czynna_aktualnie_pobierana_watt') }}
          {% else %}
          {{ (states('sensor.electricity_meter_power_active_phase_1')|float(0)  + states('sensor.electricity_meter_power_active_phase_2')|float(0) + states('sensor.electricity_meter_power_active_phase_3')|float(0)) | round(0) }}
          {% endif %}

PS. to z “or” i to z “and”" nie daje błędu. Ale które ?

Nie rozumiem, ponieważ sensor odwołuje się sam do siebie.
(jeśli sensor, nie będzie w stanie odczytać wartości to weź wartość "gdzie nie ma wartości " ?

{{ states('sensor.energia_czynna_aktualnie_pobierana_watt') }}

Jak by było “alla”

{{ states('sensor.energia_czynna_aktualnie_pobierana_watt_preserved ') }}
{{ states('sensor.energia_czynna_aktualnie_pobierana_watt_last value ') }}

wtedy pobrał ostatnią znaną wartość :thinking:
/

Pacząc na przykład:

{% if is_state('device_tracker.paulus', 'home') %}
  Ha, Paulus is home!
{% else %}
  Paulus is at {{ states('device_tracker.paulus') }}.
{% endif %}

#check sensor.train_departure_time state
{% if states('sensor.train_departure_time') in ("unavailable", "unknown") %}
  {{ ... }}

is_state - odwołuje się do pojedynczego stanu (np. sensor binarny)
a
states - dla wielu różnych ( w domu, w pracy, w szkole …) :thinking:
/
Taki przykład znalazłam:
Preserve last value of sensor before becoming unavailable - #4 by finity - Configuration - Home Assistant Community

1 polubienie

i o to mi w tym chodzi, że jeśli którykolwiek z warunków spełniony (czyli na pewno “OR”) to wtedy podstaw ostatnią zapamiętaną wartość ale ten : sensor.energia_czynna_aktualnie_pobierana ,nie ma atrybutu “last” dlatego wstawiłem “coś” co będzie “nic” czyli nic nie wstawi i poczeka na moment kiedy znów będzie mógł obliczyć sumę. Inaczej nigdzie nie znalazłem rozwiązania.

I wydaje się być to rozwiązaniem, dziękuję !

      - name: "energia_czynna_aktualnie_pobierana"
        device_class: power
        unique_id: "energia_czynna_aktualnie_pobierana_watt"
        unit_of_measurement: "W"
        state: >
          {% if states('sensor.electricity_meter_power_active_phase_1') not in ("unavailable", "unknown", "none") and states('sensor.electricity_meter_power_active_phase_2') not in ("unavailable", "unknown", "none") and states('sensor.electricity_meter_power_active_phase_3') not in ("unavailable", "unknown", "none") %}
          {{ (states('sensor.electricity_meter_power_active_phase_1')|float(0)  + states('sensor.electricity_meter_power_active_phase_2')|float(0) + states('sensor.electricity_meter_power_active_phase_3')|float(0)) | round(0) }}
          {% else %}
          {{ states('sensor.energia_czynna_aktualnie_pobierana_2') }}
          {% endif %}    

Jednak musiałem zmienić z “or” na “and”, żeby liczył sumę tylko po spełnieniu wszystkich warunków, a korzystał z “podstawienia” w przypadku jak choć jeden jest “false”.

1 polubienie

Potrzebuje pomocy bo ni w ząb nie znam się na tych powyższych językach.
Mam dwie encje w mojej integracji falownika sofar solar.

Sofar Moc encja sensor.sofar_output_active_power
Sofar Energia z dnia encja sensor.sofar_daily_production

ktoś na postawie jak dla tych dwóch encji podpowie mi jaki kod wstawić aby utworzyć nowe encje z ostatnio zapisanym wynikiem

image