Boas!
Vinha pedir ajuda aos mais entendidos.
Tenho uns erros no log devido às formulas usadas no cálculo do custo:
2019-07-11 15:34:27 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.casa_today_cost fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 220, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 375, in async_device_update
await self.async_update()
File "/usr/src/homeassistant/homeassistant/components/template/sensor.py", line 191, in async_update
self._state = self._template.async_render()
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 191, in async_render
return self._compiled.render(kwargs).strip()
File "/usr/local/lib/python3.7/site-packages/jinja2/asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.7/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
TypeError: can't multiply sequence by non-int of type 'float'
2019-07-11 15:34:27 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.casa_yesterday_cost fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 220, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 375, in async_device_update
await self.async_update()
File "/usr/src/homeassistant/homeassistant/components/template/sensor.py", line 191, in async_update
self._state = self._template.async_render()
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 191, in async_render
return self._compiled.render(kwargs).strip()
File "/usr/local/lib/python3.7/site-packages/jinja2/asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.7/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
TypeError: can't multiply sequence by non-int of type 'float'
2019-07-11 15:34:27 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.casa_anual_cost fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 220, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 375, in async_device_update
await self.async_update()
File "/usr/src/homeassistant/homeassistant/components/template/sensor.py", line 191, in async_update
self._state = self._template.async_render()
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 191, in async_render
return self._compiled.render(kwargs).strip()
File "/usr/local/lib/python3.7/site-packages/jinja2/asyncsupport.py", line 76, in render
return original_render(self, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 1008, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.7/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "<template>", line 1, in top-level template code
TypeError: can't multiply sequence by non-int of type 'float'
O código é o seguinte:
- platform: template
sensors:
casa_today_cost:
friendly_name: Custo de hoje
entity_id: sensor.casa_energy_today
unit_of_measurement: "€"
value_template: "{{ float((float(states.sensor.casa_energy_today.state) * 0.1513 + 0.3715 + 0.094) * 1.23 ) | round(2) }}"
casa_yesterday_cost:
friendly_name: Custo de ontem
entity_id: sensor.casa_energy_yesterday
unit_of_measurement: "€"
value_template: "{{ float((float(states.sensor.casa_energy_yesterday.state) * 0.1513 + 0.3715 + 0.094) * 1.23 ) | round(2) }}"
casa_mensal_cost:
friendly_name: Custo mensal
entity_id: sensor.energia_casa_mensal
unit_of_measurement: "€"
value_template: "{{ ((float(states.sensor.energia_casa_mensal.state) * 0.1513 + now().day * 0.3715 + 2.85) * 1.23 ) | round(2) }}"
casa_anual_cost:
friendly_name: Custo anual
entity_id: sensor.energia_casa_anual
unit_of_measurement: "€"
value_template: "{{ (float(states.sensor.energia_casa_anual.state) * 0.1513 + float(states.sensor.dias_apos_inicio_2019.state) * 0.3715 * 1.23 + float(states.sensor.dias_apos_inicio_2019.state) * 0.0937 * 1.06) | round(2) }}"
Antes que perguntem por que não juntar os valores todos em vez de os ter em separado, serve apenas para caso haja alguma alteração seja mais fácil fazê-lo pois como até pode ser daqui a uma ano, posso já nem me lembrar disto…
Sei que tem a ver com o tipo de dados (float vs int) mas como ainda pesco pouco disto não tenho tido muita sorte a resolver isto…
sensor.dias_apos_inicio_2019.state:
- platform: template
sensors:
dias_apos_inicio_2019:
value_template: '{{ ((as_timestamp(now()) - (states.input_datetime.inicio_ano_2019.attributes.timestamp)) | int /60/1440) | round(0) }}'
unit_of_measurement: 'Days'
entity_id: input_datetime.inicio_ano_2019,sensor.time
Desde já obrigado…