Hallo zusammen,
ich möchte hier meine Lösung präsentieren, wie ich die per IR Lesekopf am Stromzähler ausgelesenen Leistungsdaten (aktueller Verbrauch/Bezug) jede Sekunde in Home Assistant zur Verfügung stelle, um eine Nulleispeisung zu verwirklichen.
Das Problem
Nachdem ich den SMR von bitshake am freigeschalteten Zähler montiert und in Home Assistant eingebunden hatte, stellt ich fest, dass die Daten nur alle 5 Minuten an Home Assistant übergeben wurden, obwohl im Web-Interface des Lesekopfs etwa alle 500ms neue Daten angezeigt wurden.
Das Ziel
Die Nulleinspeisung. Für eine Nulleinspeisung brauche ich die Informationen über den aktuellen Stromfluss möglichst in Echtzeit, also bestenfalls immer dann, wenn der Lesekopf einen neuen (geänderten) Wert erkennt.
Der Weg zur Lösung
Nach einiger Zeit bei der Websuche fand ich die Möglichkeit, die teleperiod zu reduzieren. Der minimale Wert ist jedoch auf 10 Sekunden begrenzt. Das ist schonmal besser, aber noch nicht optimal, denn wenn Heißluftfriteuse, Herd, Backofen oder ähnliches im Intervall heizen, verschwende ich Energie oder kaufe unnötigerweise zu viel Strom ein.
Dann soll es noch die Möglichkeit von Rules geben, mit denen man auf Trigger-Basis Befehle ausführen kann. Nur leider bekomme ich immer die Rückmeldung, dass Rule
ein unbekannter Befehl sei. Also geht das auch nicht.
Die Lösung
Letztendlich habe ich eine Lösung, den Status des Sensors als Command per MQTT anzufragen. In der tasmota Dokumentation sind unter Management die verschiedenen Statuswerte zu finden. Hier wird Status 10 = show connected sensor information benötigt. Über das Terminal der Weboberfäche des SMR führt also der command cmnd/tasmota_UniqueID/Status 10
zu einer MQTT Nachricht, die den aktuellen Status des Lesekopfs ausgibt.
In Home Assistant kann dieser Command per mqtt.publish
nun an den Lesekopf gesendet werden. Dabei wird als Topic cmnd/tasmota_UniqueID/Status
angegeben und 10
als Payload.
Hier meine Automatisierung:
- Trigger: Jede Sekunde
- Bedingung: Aktuelle Leistung darf nicht “nicht verfügbar” sein
- Aktion: MQTT-Nachricht veröffentlichen
alias: SMR - Stromfluss pollen
description: ""
triggers:
- trigger: time_pattern
seconds: /1
conditions:
- condition: not
conditions:
- condition: state
entity_id: sensor.bitshake_smartmeterreader_emh_power
state: unavailable
actions:
- action: mqtt.publish
data:
qos: 0
retain: false
topic: cmnd/tasmota_UniqueID/Status
payload: "10"
mode: single
UniqueID
bzw. tasmota_UniqueID
muss natürlich durch eure eigene eindeutige ID bzw. durch euer jeweiliges Topic ersetzt werden.
Falls ihr eine bessere Lösung habt, die nicht auf polling basiert, klärt mich gerne auf