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