ich habe ein Problem, an dem ich schon länger knabbere und keine Lösung finde.
Zur Messung des Ölverbrauchs bilde ich 2 Sensoren, Oelverbrauch_heute und Oelverbrauch_gesamter_Tag.
Der erste wird tagsüber mit der Brennerlaufzeit hochgezählt, der zweite um 23:59 aus dem ersten gebildet. Funktioniert auch soweit so gut.
Problem ist, dass bei beide Werte nicht in die InfluxDB geschrieben werden. Die Entitäten werden zwar angelegt, aber eben keine Werte geschrieben. (Die Stromzähler werden geschrieben, Zugriff von HA auf die DB funktioniert also.
Hat jemand einen Tip für mich?
Danke schonmal
Michael
influxdb:
username: XXXXXX
password: YYYYYY
tags:
source: HA
tags_attributes:
- friedly_name
default_measurement: state
exclude:
entities:
- zone.home
domains:
- persistent_notification
- person
include:
domains:
- sensor
- binary_sensor
- sun
- light
- cover
entities:
- weather.home
template:
- trigger:
- platform: time_pattern
minutes: "/1" # Die Sensoren in diesem Bereich jede Minute aktualisieren
sensor:
# Stromzaehler Keller Verbrauch
- name: "Stromzaehler 1. OG rechts Verbrauch"
unit_of_measurement: 'kWh'
device_class: "energy"
state_class: "total_increasing"
state: >-
{{ float(states('sensor.bitshake_smartmeterreader_sml_verbrauch_summe')) | round(3)}}
# Stromzaehler Keller aktuelle Leistung
- name: "Stromzaehler 1. OG rechts Leistung"
unit_of_measurement: 'kW'
device_class: "power"
state: >-
{{ float(states('sensor.bitshake_smartmeterreader_sml_watt_summe')) | round(1)}}
# Stromzaehler Keller Einspeiung
- name: "Stromzaehler 1. OG rechts Einspeisung"
unit_of_measurement: 'kWh'
device_class: "power"
state_class: "total_increasing"
state: >-
{{ float(states('sensor.bitshake_smartmeterreader_sml_einspeisung_summe')) | round(1)}}
- name: Oelverbrauch heute
unique_id: Oelverbrauch_heute
unit_of_measurement: "l"
device_class: "volume"
state_class: "total_increasing"
state: >-
{{ (float(states('sensor.heizung_brenner_laufzeit_heute'))) * 2.46 | round(1) }}
# availability: "{{ has_value('sensor.Oelverbrauch_heute') }}"
- trigger:
platform: time
at: "23:59:00" # Die Aktualisierung erfolgt 23:59 aus der Ölverbrauch heute -> Änderung zu Vortag wir automatisch in Datenbank geschrieben
sensor:
- name: Oelverbrauch_gesamter_Tag
unique_id: Oelverbrauch_gesamter_Tag
unit_of_measurement: "l"
device_class: "volume"
# state_class: "total_increasing"
state_class: "measurement"
state: "{{ states('sensor.Oelverbrauch_heute') }}" # Ersetzen Sie DIES durch die entity_id Ihres Original-Sensors
# availability: "{{ has_value('sensor.Oelverbrauch_gesamter_Tag') }}"
sensor:
- platform: history_stats
name: Heizung Brenner Laufzeit heute
entity_id: binary_sensor.heizung_brenner_laeuft_input
state: "on"
type: time
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
Mit Influxdb hat man den Vorteil das man die Datenbank evtl. besser auswerten kann mit Influxdb selbst oder mit Grafana (schickere Auswertungen als mit Home Assistant selbst)
Was steht im Log? Wenn Zahlen je nach Einstellung mit Komma statt Punkt oder umgekehrt geliefert wird bleibt die DB leer dafür müsste ein Fehler im Log auftauchen. Du hast in der Defintion ein round(1) drin. Teste mal mit round(0) dann wäre es ohne Dezimalstelle.
@mostie: welches Log meinst Du? Das von InfluxDB? Da finde ich leider gar nix … was nicht heissen muß, dass da nix drinsteht … liegt vll auch einfach an mir.
Den Tip mit round(0) habe ich ausprobiert, da ändert sich leider nichts
Nein, Home Assistant. Stell das debug und schau ob da irgend ein Fehler geworfen wird. Die anderen Daten werden deiner Angabe nach ja geschrieben. Liegt dann vermutlich an den Daten, Zahlenformat, … da sollte dann ein Fehler ausgegeben weden.
Mach mal zum Test die selbe Definition mit exclude und include im Homeassistant DB recorder. Siehst du da die WErte?
da liegst Du scheinbar ganz richtig mit Deiner Vermutung:
Eintrag im Log von HA:
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/sensor/init.py”, line 689, in state
numerical_value = float(value) # type:ignore[arg-type]
ValueError: could not convert string to float: ‘unavailable’
… was ich jetzt auch nicht ganz verstehe. Die Zeile mit dem float Befehl lautet:
Das war vermutlich nur einmal als der Sensor erstellt wurde, oder der liefernde Sensor nicht verfügbar war. Wenn es in HA an sich angezeigt wird ist es nicht dauerhaft “unavailable”
Werden die Werte im HA Recoder aufgezeichnet?
Edit:
ich habe jetzt mal 2 Template Sensoren wie deine angelegt. Nur als Eingang eine Steckdose von mir mit KWh als Zahl, aber das ist egal.
- trigger:
- platform: time_pattern
minutes: "/1" # Die Sensoren in diesem Bereich jede Minute aktualisieren
sensor:
- name: test_Oelverbrauch heute
unique_id: test_Oelverbrauch_heute
unit_of_measurement: "l"
device_class: "volume"
state_class: "total_increasing"
state: >-
{{ (float(states('sensor.zigbeemplugtur_power'))) * 2.46 | round(1) }}
# availability: "{{ has_value('sensor.Oelverbrauch_heute') }}"
- name: test_Oelverbrauch_gesamter_Tag
unique_id: test_Oelverbrauch_gesamter_Tag
unit_of_measurement: "l"
device_class: "volume"
# state_class: "total_increasing"
state_class: "measurement"
state: "{{ states('sensor.test_Oelverbrauch_heute_2') }}" # Ersetzen Sie DIES durch die entity_id Ihres Original-Sensors
# availability: "{{ has_value('sensor.Oelverbrauch_gesamter_Tag') }}"