Da mir die stetigen Spitzen in meinen Werten auf den Keks gehen, habe ich mal angefangen den ESPLesekopf von Tasmota auf ESPHome umzustellen.
Dank GitHub - mampfes/esphome_obis_d0: esphome external component to support meters with OBIS D0 interface sollte neben SML auch D0-Obis möglich sein und die Sensor-Filter um “nan” “0” und andere Fehler vorher rauszuglätten.
ESPHome Firmware lässt sich auf dem esp8285 manuell über die Tasmota Firmware flashen, insofern ist der Wechsel relativ angenehm.
Warnung vorweg: Work in Progress.
Es kompiliert, aber es gibt noch keine Werte.
Die alte Tasmota Konfiguration:
>D
>B
=>sensor53 r
;Interval fuer das Senden von Daten auf 15Sekunden / Set teleperiod to 10sec
tper=15
>M 1
; Device: eBZ DD3
; protocol is D0 OBIS ASCII
; 9600@7E1 for OP-type devices, 9600@8N1 for SM-type devices
+1,14,o,0,9600,SM,1
; Zählerstand zu +A, tariflos,
; Zählerstände Auflösung 10 µW*h (6 Vorkomma- und 8 Nachkommastellen)
1,1-0:1.8.0*255(@0.001,Energie Bezug,Wh,1_8_0,8
; Zählerstand zu +A, Tarif 1
1,1-0:1.8.1*255(@0.001,Energie Bezug T1,Wh,1_8_1,8
; Zählerstand zu +A, Tarif 2
1,1-0:1.8.2*255(@0.001,Energie Bezug T2,Wh,1_8_2,8
; Zählerstand zu -A, tariflos
1,1-0:2.8.0*255(@0.001,Energie Export,Wh,2_8_0,8
; Summe der Momentan-Leistungen in allen Phasen, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
1,1-0:16.7.0*255(@1,Leistung,W,16_7_0,18
; Momentane Leistung in Phase Lx, Auflösung 0,01W (5 Vorkomma- und 2 Nachkommastellen)
1,1-0:36.7.0*255(@1,Leistung L1,W,36_7_0,18
1,1-0:56.7.0*255(@1,Leistung L2,W,56_7_0,18
1,1-0:76.7.0*255(@1,Leistung L3,W,76_7_0,18
; Spannung in Phase Lx, Auflösung 0,1V (nur über MSB)
1,1-0:32.7.0*255(@1,Spannung L1,V,32_7_0,1
1,1-0:52.7.0*255(@1,Spannung L2,V,52_7_0,1
1,1-0:72.7.0*255(@1,Spannung L3,V,72_7_0,1
; Statuswort, 4 Byte Information über den Betriebszustand, HEX string
; tasmota can decode one string per device only!
;1,1-0:96.5.0*255(@#),Status1,,96_5_0,0
;1,1-0:96.8.0*255(@#),Status2,,96_8_0,0
; Geräte-Identifikation, Nach DIN 43863-5
1,1-0:96.1.0*255(@#),Identifikation,,96_1_0,0
;1,1-0:0.0.0*255(@#),Identifikation,,0_0_0,0
#
Die ESPHome Konfiguration:
esphome:
name: esplesekopf-strom-d0
friendly_name: ESPLesekopf-Strom-D0
esp8266:
board: esp8285
# Enable Home Assistant API
api:
encryption:
key: "yyyyyy"
ota:
password: "xxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esplesekopf-Strom-D0"
password: "ZZZZZZz"
external_components:
- source: github://mampfes/esphome_obis_d0
uart:
id: uart_bus
tx_pin: 1
rx_pin: 3
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
# Example configuration entry
logger:
level: DEBUG
obis_d0:
id: mysml
uart_id: uart_bus
optimize_size: true
# Logging if needed
on_telegram:
then:
- logger.log: "telegram received"
sensor:
- platform: obis_d0
name: "StromzEGVerbrauch"
obis_d0_id: mysml
obis_code: 1.8.0
unit_of_measurement: Wh
accuracy_decimals: 8
device_class: energy
state_class: total_increasing
value_regex: \d{6}\.\d{8}\*Wh
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzEGVerbrauch_T1"
obis_d0_id: mysml
obis_code: "1.8.1"
unit_of_measurement: Wh
accuracy_decimals: 8
device_class: energy
state_class: total_increasing
value_regex: "\\d{6}\\.\\d{8}\\*Wh"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzEGVerbrauch_T2"
obis_d0_id: mysml
obis_code: "1.8.2"
unit_of_measurement: Wh
accuracy_decimals: 8
device_class: energy
state_class: total_increasing
value_regex: "\\d{6}\\.\\d{8}\\*Wh"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzEGErzeugung"
obis_d0_id: mysml
obis_code: "2.8.0"
unit_of_measurement: Wh
accuracy_decimals: 8
device_class: energy
state_class: total_increasing
value_regex: "\\d{6}\\.\\d{8}\\*Wh"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomVerbrauchGesamt"
obis_d0_id: mysml
obis_code: "16.7.0"
unit_of_measurement: W
accuracy_decimals: 2
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{2}\\*W"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomVerbrauch_L1"
obis_d0_id: mysml
obis_code: "36.7.0"
unit_of_measurement: W
accuracy_decimals: 2
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{2}\\*W"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomVerbrauch_L2"
obis_d0_id: mysml
obis_code: "56.7.0"
unit_of_measurement: W
accuracy_decimals: 2
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{2}\\*W"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomVerbrauch_L3"
obis_d0_id: mysml
obis_code: "76.7.0"
unit_of_measurement: W
accuracy_decimals: 1
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{1}\\*W"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomSpannung_L1"
obis_d0_id: mysml
obis_code: "32.7.0"
unit_of_measurement: V
accuracy_decimals: 1
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{1}\\*V"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomSpannung_L2"
obis_d0_id: mysml
obis_code: "52.7.0"
unit_of_measurement: V
accuracy_decimals: 1
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{1}\\*V"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
- platform: obis_d0
name: "StromzMomSpannung_L3"
obis_d0_id: mysml
obis_code: "72.7.0"
unit_of_measurement: V
accuracy_decimals: 2
device_class: energy
state_class: measurement
value_regex: "\\d{5}\\.\\d{2}\\*V"
# Filter, b/c sometimes NaN is received
filters:
- filter_out: nan
text_sensor:
- platform: obis_d0
name: "Device Identification"
obis_d0_id: mysml
obis_code: "96.1.0"
entity_category: diagnostic
value_regex: "\\w{14}"
- platform: obis_d0
name: "Manufacturer ID"
obis_d0_id: mysml
obis_code: "id"
entity_category: diagnostic
value_regex: "\\w+"
Sobald ich da Werte rausbekomme dürfte Statistiken in Home Assistant korrigieren (Energie Dashboard) nicht mehr in der Häufigkeit notwendig sein.