Konwertowanie jednostki

Próbuję przeskalować wskazanie falownika tak, aby pokazywał mi energie kWh za pomocą poniższego wpisu:

  - platform: template
    sensors:
      solaredge_energy_this_year_template:
      value_template: "{{ (states('sensor.solaredge_se4k_energy_this_month') | float / 1000) | round(2) }}" 

Podczas sprawdzania konfiguracji cały czas kreci się kółko (brak komunikatu o błędzie), ale w logach mam błędy. Pomóżcie, bo już mi się pomysły skończyły.

Logger: aiohttp.server
Source: helpers/config_validation.py:737
First occurred: 12:17:23 (1 occurrences)
Last logged: 12:17:23

Error handling request
Traceback (most recent call last):
File “/usr/local/lib/python3.8/site-packages/aiohttp/web_protocol.py”, line 422, in _handle_request
resp = await self._request_handler(request)
File “/usr/local/lib/python3.8/site-packages/aiohttp/web_app.py”, line 499, in _handle
resp = await handler(request)
File “/usr/local/lib/python3.8/site-packages/aiohttp/web_middlewares.py”, line 119, in impl
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/security_filter.py”, line 60, in security_filter_middleware
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/forwarded.py”, line 76, in forwarded_middleware
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/request_context.py”, line 24, in request_context_middleware
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/ban.py”, line 78, in ban_middleware
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/auth.py”, line 144, in auth_middleware
return await handler(request)
File “/usr/src/homeassistant/homeassistant/components/http/view.py”, line 135, in handle
result = await result
File “/usr/src/homeassistant/homeassistant/components/config/core.py”, line 29, in post
errors = await async_check_ha_config_file(request.app[“hass”])
File “/usr/src/homeassistant/homeassistant/config.py”, line 904, in async_check_ha_config_file
res = await check_config.async_check_ha_config_file(hass)
File “/usr/src/homeassistant/homeassistant/helpers/check_config.py”, line 225, in async_check_ha_config_file
p_validated = platform_schema(p_validated)
File “/usr/local/lib/python3.8/site-packages/voluptuous/validators.py”, line 218, in call
return self._exec((Schema(val) for val in self.validators), v)
File “/usr/local/lib/python3.8/site-packages/voluptuous/validators.py”, line 337, in _exec
v = func(v)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 272, in call
return self._compiled([], data)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 817, in validate_callable
return schema(data)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 272, in call
return self._compiled([], data)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 594, in validate_dict
return base_validate(path, iteritems(data), out)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 386, in validate_mapping
cval = cvalue(key_path, value)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 817, in validate_callable
return schema(data)
File “/usr/src/homeassistant/homeassistant/helpers/config_validation.py”, line 486, in verify
return cast(dict, schema(value))
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 272, in call
return self._compiled([], data)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 594, in validate_dict
return base_validate(path, iteritems(data), out)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 386, in validate_mapping
cval = cvalue(key_path, value)
File “/usr/local/lib/python3.8/site-packages/voluptuous/validators.py”, line 215, in _run
return self._exec(self._compiled, value, path)
File “/usr/local/lib/python3.8/site-packages/voluptuous/validators.py”, line 339, in _exec
v = func(path, v)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 817, in validate_callable
return schema(data)
File “/usr/src/homeassistant/homeassistant/helpers/config_validation.py”, line 737, in validator
if key in config:
TypeError: argument of type ‘NoneType’ is not iterable

vcvcv

Na moje oko to powinno być coś takiego (złe wcięcie oraz kolejność dzielenia i deklaracji typu), dołożyłem jeszcze nazwę i jednostkę

  - platform: template
    sensors:
      solaredge_energy_this_year_template:
        friendly_name_template: "SolarEdge Roczny Mocy"
        value_template: "{{ (states('sensor.solaredge_se4k_energy_this_month') / 1000) | float | round(2) }}"
        unit_of_measurement: 'W'

Znowu miałeś rację :slight_smile: Sprawdzanie konfiguracji przeszło poprawnie, ale po restarcie HA encja niedostępna.

Na rysunka jest encja
image
która ani razu nie została wymieniona przez Ciebie w poprzednich postach czyli to chyba jakiś inny nowy błąd :wink:.

Nie miałem racji, bo nie działa, muszę się przyznać, że faktycznie, nie przetestowałem czy to działa - podmieniłem tylko kawałki, które na pierwszy rzut oka wydawały się błędne.
Edit: wręcz zamieniłem dobrze na źle :stuck_out_tongue:

Zrobiłem kosmetyczne zmiany:

  - platform: template
    sensors:
      solaredge_energy_this_month:
        friendly_name_template: "SolarEdge - produkcja w miesiącu"
        value_template: "{{ (states('sensor.solaredge_se4k_energy_this_month') / 1000) | float | round(2) }}"
        unit_of_measurement: 'kWh'

Teraz może będzie trochę jaśniej :slight_smile:

Ja do takich “zabaw” (bo też na wszystkim się nie znam) używam szablonów w Narzędzia deweloperskie:

Jak widać najpierw trzeba states sensora zamienić z stringa na liczbę ( | float) a potem podzielić inaczej masz błąd:

Mam nadzieję, że będzie działać u Ciebie.

1 Like

Działa, swoja drogą fajne to narzędzie :slight_smile: Zastanawiam tylko się, dlaczego to się nazywa template? :slight_smile:

Szablon? bo jednym szablonem możesz “oblecieć” dużo więcej niż pojedynczą encję, ale nie pytaj o przykłady - jestem na to za cienki :stuck_out_tongue_winking_eye:

Tym razem prawidłowo poprawione, ale jak zgaduję masz już tak samo :stuck_out_tongue:

  - platform: template
    sensors:
      solaredge_energy_this_month:
        friendly_name_template: "SolarEdge - produkcja w miesiącu"
        value_template: "{{ (states('sensor.solaredge_se4k_energy_this_month') | float) / 1000  | round(2) }}"
        unit_of_measurement: 'kWh'
1 Like

Koledzy ratujcie, gdzie to wpisać aby działało :slight_smile:

To przykład wpisu do configuration.yaml
ALE!! wątek jest stary, więc składnia powyżej jest nieaktualna, powinieneś przejrzeć dokumentację

Jakkolwiek obecnie integracje powinny dostarczać encje, których jednostki nie powinny wymagać takiej konwersji, bo odpowiednik konwersji jednostek jest dostępny w GUI

Faktycznie dla niektórych encji mogę zmienić jednostkę ale nie dla tej co chce :frowning:

Dopiero co zacząłem z home assistant i nie mogę się ogarnąć w tym. Sukcesem jest połączenie wszystkich urządzeń i sterowanie nimi. Teraz chce zrobić coś więcej :slight_smile:

Jeżeli są to konfiguracje sensorów z plików *.yaml należy dodać odpowiednią linijkę do kodu

unique_id: dzienna produkcja

Sensor jest z mqtt a od początku:
mam urzadzonko na esp32 z oprogramowaniem openDTU do rejestracji danych z mikroinwertera.
esp32 łączy się z HA poprzez Mosquitto broker. Sensory dodały się automatycznie do encji :slight_smile:
Nie wiem czy w takiej sytuacji mogę jakoś sam dodać unique_id.
Z home assistant dopiero zaczynam, ucze się ale faktycznie sa rozbieznosci miedzy “starym” a nowym, oraz ogrom informacji w necie ze się gubię. Dziękuję że tutaj odpowiadacie na moje pytanie.

Poproszę o pomoc.
Odczytuję z licznika wskazania w mA.
Jak je przeliczyć na A?
Poniższy kod- błąd encja nie jest numeryczna.

  - name: IL2
    address: 241
    unit_of_measurement: 'A'
    device_class: current
    scan_interval: 1
    precision: 0.001
    input_type: holding
sensor:
  - platform: template
    sensors:
      mojtest:
        friendly_name: "I2"
        value_template: "{{ (states('IL2') | float(0)) * 1000  | round(0) }}"
        unit_of_measurement: 'A'
  - platform: template
    sensors:
      il2_amper:
        friendly_name: "IL2 Amper"
        value_template: "{{ (states('sensor.il2') | float / 1000) | round(3) }}"
        unit_of_measurement: 'A'
        icon_template: "mdi:current-ac"