Wärmezähler Techem Ultra S3 (Baugleich: Sharky 775) über optische Schnittstelle auslesen (Tasmota)

Kurz beschrieben wie man den Ultraschall Wärmezähler Techem Ultra S3 (Baugleich: Sharky 775 und offenbar auch UltraLite PRO und Elster F96 Plus) über die optische Schnittstelle auslesen kann.

Warum über die optische Schnittstelle?

Mein Zähler hat sogar 2 Wireless-M-Bus Transceiver angeschlossen (extern – seltsamer Aufbau, vermutlich da bei mir auch neben Wärme auch Kälte abgerechnet werden muss) – jedoch rückt Techem die Entschlüsselungs-Keys nicht heraus. Ich wohne in einer größeren Wohnanlage und laut Auskunft Techem werden nur die Schlüssel aller Zähler der gesamten Hausgemeinschaft herausgegegeben und hierbei gibt es einige Dokumente auszufüllen, Liability, etc. – ich erspare es euch. Wirklich lachhaft von Techem, aber das kennt man ja nicht anders von den Abrechnungs- und Energiedienstleistern. Ich weiß nicht ob Brunata da besser ist, gehüpft wie gesprungen oder vom Regen in die Traufe denke ich mal. Bei Abrechnungen gibt es auch Fehler, was will man schon erwarten. Okay, Ende des Rants.

Falls jemand zu diesem Thema auch Erfahrungen gemacht habt, bin ich dankbar wenn ihr einen Kommentar hinterlässt. 🙂

 

Auslesen mit Tasmota

Ich nutze gerne Tasmota, um so schöner war es diesen Thread im Mikrocontroller-Forum zu finden: https://www.mikrocontroller.net/topic/438972

Habe die pre-compiled Tasmota Version von Nick verwendet (müssen ein paar Sachen mit rein kompiliert werden): https://www.mikrocontroller.net/topic/438972#7289868

Script, auch aus dem Mikrocontroller-Forum – liest immer kurz nach Mitternacht aus und errechnet den Verbrauchswert des Vortages:

>D
;start, define variables
cnt=1
timer=1
w_new=0
w_delta=0
p:w_last=40350

>B
;setup sensor
->sensor53 r

>T
w_new=WAERME#w_total

>S
timer=int(time)
if chg[timer]>0
then
switch timer
case 0
print It is midnight
print wakeup start
sml(-1 1 "2400:8N1")
for cnt 1 72 1
sml(1 1 "55555555555555555555")
next
print wakeup end
print wait for the meter
delay(350)
sml(-1 1 "2400:8E1")
print request data
sml(1 1 "105BFE5916")
case 1
print It is a minute after midnight
print calculating daily value
print w_last %0w_last%
w_delta=w_new-w_last
w_last=w_new
svars
print w_new %0w_new%
print w_delta %0w_delta%
ends
endif

>J
,"w_delta":%w_delta%

>W
===============
Vortagsverbrauch: {m} %3w_delta% KWh

>M 1
+1,3,rE1,0,2400,WAERME,1
1,0C06bcd8@1,Total Energy,kWh,w_total,0
1,0C13bcd8@1000,Total volume,m³,v_total,2
1,0C2Bbcd8@1,Current power,W,p_act,0
1,0B3Bbcd6@1000,Current flow,m³/h,F_akt,3
1,0A5Abcd4@10,Flow temp,°C,t_flow,1
1,0A5Ebcd4@10,Return temp,°C,t_return,1
#

Warum nur einmal am Tag? Letzten Endes läuft der Zähler mit einer Batterie und ich möchte nicht, dass diese vorzeitig aussteigt (afaik schaltet der Zähler dann zuerst die optische Schnittstelle aus, Zählung läuft weiter). Ich will aber möglichst bis zum Austausch des Zähler auch auslesen.

Ansicht im Web Interface

Nicht wundern, habe noch einem AM2301 Temperatur / Feuchte Sensor am ESP8266 dran – die Werte werden mittels MQTT übertragen und in einem Grafana Dashboard dargestellt.

 

 

 

Ausrichten am Zähler

Die Ausrichtung am Zähler des optischen Lesekopfes war wirklich tricky. So weit ich weiß, nutzt der Zähler eine kombinierte Diode für Send / Receive – mein Lesekopf hat 2 für je Trans- und Receive. Man braucht auch beide, da eine Aufwach-Sequenz gesendet werden muss und dann erst empfangen werden kann. Ich habe den Kopf leicht versetzt angebracht, aber habe dazu ganz schön lange rumspielen müssen. Man kann den Zähler auch nicht beliebig oft auslesen, irgendwann kommt nichts mehr, vermutlich aus Energiespargründen. Dann muss man einige Stunden (?) warten – wenn es denn funktioniert lese ich wie oben beschrieben nur einmal am Tag aus.

 

Troubleshooting

Initiale Sequenz nach Inbetriebnahme

Phill erwähnt hier https://www.mikrocontroller.net/topic/438972?page=2#7519643

Die initiale Sequenz welche den Sharky Daten entlockt wird getriggert
durch ein sml(1 1 “6804046853FE5000A116”) .
Dieses muss wohl einmalig nach der Inbetriebnahme passieren ..

Nach vielen hin-und-her und etlichen Fehlversuchen habe ich die Anregung
von Thomas probiert und ins waermezaehler.txt -Script von Carsten ein
Delay(100) eingehekelt.

..
;reset application code
sml(1 1 “6804046853FE5000A116”)
delay(100)
;set string to send to “105BFE5916” (REQ_UD2)
sml(1 1 “105BFE5916”)

 

Sendeleistung des Lesekopfes zu
reduzieren und den Empfang empfindlicher machen

https://www.mikrocontroller.net/topic/438972?page=2#7348585
https://www.mikrocontroller.net/topic/438972?page=2#7634483

Also den Serienwiderstand der Sendediode von 180 auf 680 Ohm verändert,
den Serienwiderstand des Fototransistors von 12k auf 39k.

Übersprechen verhindern

https://www.mikrocontroller.net/topic/438972?page=2#7634483

Ich verhinderte das Übersprechen erfolgreich mit schwarzen Schrumpfschlauchstummeln um Sender und Empfänger.

 

M-Tool

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *