Ich hab den Fehler mittlerweile gefunden. Die Sendediode hat permanent Kauderwelsch gesendet was der lesekopf irgendwie mit gelesen hat. Hab die Diode raus gelötet und jetzt läuft es problemlos.
Gruß Jascha
Ich hab den Fehler mittlerweile gefunden. Die Sendediode hat permanent Kauderwelsch gesendet was der lesekopf irgendwie mit gelesen hat. Hab die Diode raus gelötet und jetzt läuft es problemlos.
Gruß Jascha
Servus. Ich bin gerade dabei einen D1 Mini mit zwei Leseköpfen in Betrieb zu nehmen. Die Leseköpfe (Volkszähler TTL) sind an GPIO 5 und 13 angeschlossen. Ich habe Tastmota 10.1.0.1 nach der Anleitung von Matthias Kleine (Youtube) geflashed. Dazu habe ich diesen fork benutzt: https://github.com/esplesekopf/Tasmota
Angepasst habe ich sonst an der Firmware nichts mehr. Nach dem flashen habe ich noch den Module Type auf "Generic (0)" umgestellt und mein Skript eingegeben. Natürlich auch den Haken bei "Script enable" gesetzt. Hier mein Skript:
>D
>B
=>sensor53 r
>M 2
+1,5,s,16,9600,Haus
1,77070100010800FF@1000,Verbrauch,KWh,HAUS_TPWRIN,4
1,77070100020800FF@1000,Einspeisung,KWh,HAUS_TPWROUT,4
1,77070100100700FF@1,Akt. Verbrauch,W,HAUS_PWRCURR,0
+2,13,s,16,9600,Heizung
2,=h==================
2,77070100010800FF@1000,Verbrauch,KWh,WP_TPWRIN,4
2,77070100020800FF@1000,Einspeisung,KWh,WP_TPWROUT,4
2,77070100100700FF@1,Akt. Verbrauch,W,WP_PWRCURR,0
#
Alles anzeigen
Leider bleiben die Werte auf dem Webinterface alle auf 0 stehen. Wenn ich über die Konsole "sensor53 d1" oder sensor53 d2" auswerte dann kommen die Rohdaten sauber sein. Hier ein Auszug:
14:41:52.492 CMD: sensor53 d2
14:41:52.498 RSL: RESULT = {"Time":"2022-02-11T14:41:52","SML":{"CMD":"dump: 2"}}
14:41:53.043 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1b 1b 1b 1b 01 2e 00 62 00 62 00 72 63 01 01 76
14:41:53.045 : 77 07 ff ff ff ff ff 00 03 34 b7 af 07 01 00 62 0a ff ff 00 75
14:41:53.094 : 77 07 01 00 60 32 01 01 01 01 00 1d 01 00 60 01 00 ff 01 01 01 01 00 34 b7 af 01
14:41:53.145 : 77 07 01 00 01 08 00 00 01 65 04 0a e8 c9 62 1e 52 ff 69 00 01
14:41:54.043 : 77 07 01 00 02 08 00 ff 01 72 02 24 f5 69 00 00 00 00 05 84 0e 01 ff 01 01 62 1b 52 00 59 00 00 00 40 2c 00 d5 1c 76 05
14:41:54.094 : 77 07 ff ff ff ff ff ff 00 34 b7 af 07 01 00 62 0a ff ff 72 dd 1d 01 00 60 32 01 01 01 01 01 01 00 60 01 00 ff 01 01 01
14:41:54.144 : 77 07 01 00 01 08 00 ff 00 65 04 0a e8 ca 62 1e 52 ff 69 00 00
14:41:55.018 : 77 07 01 00 02 08 00 ff 01 72 62 52 ff 69 00 00 00 00 05 84 0e 8d 00 ff 01 01 62 1b 52 00 59 00 00 00 00 63 7b 09 00 76
14:41:55.123 : 77 07 ff ff ff ff ff ff 00 20 d3 db 0d 00 01 00 62 0a ff ff 72 d7 d7 50 00 60 32 01 01 01 01 01 50 00 60 01 00 ff 01 01
14:41:55.125 : 77 07 01 00 01 08 00 ff 00 65 04 0a e8 cb 62 1e 52 ff 69 00
14:41:56.024 : 77 07 01 00 02 08 00 ff 01 72 62 52 ff 69 00 00 00 00 05 84 0e 8d 00 ff 01 01 62 1b 52 00 59 00 00 00 00 63 b4 c7 00 76
14:41:56.123 : 77 07 ff ff ff ff ff ff 00 34 b7 af 07 01 00 62 0a ff ff 72 dd 1d 01 00 60 32 01 01 01 01 01 00 01 00 60 01 00 ff 01 01
14:41:57.027 : 77 07 01 00 01 08 00 ff 00 65 04 0a e8 cc 62 1e 52 ff 69 00 00 d7 50 00 02 08 00 ff 01 72 62 01 aa 69 00 00 00 00 05 84
14:41:57.128 : 77 07 ff ff ff ff ff ff 0b 00 b7 af 07 01 00 62 0a ff ff 72 62 00 07 01 00 60 32 01 01 01 01 01 01 00 00 60 01 00 ff 01
14:41:58.049 : 77 07 01 00 01 08 00 ff 65 00 10 00 08 af 4e 79 52 ff 69 00 00 00 50 00 02 08 00 ff 01 72 62 01 05 69 00 00 00 00 05 84
14:41:58.100 : 77 07 ff ff ff ff ff ff 0b 02 db 0d 00 01 00 62 0a ff ff 72 62 01 50 00 60 32 01 01 01 01 01 01 04 60 01 00 ff 01 01 01
14:41:58.199 : 77 07 01 00 01 08 00 ff 65 00 10 00 08 cf 4e 79 52 ff 69 00 00 00 50 00 02 08 00 ff 01 72 62 01 65 69 00 00 00 00 05 84
14:41:59.053 : 77 01 62 1b 52 00 59 00 00 00 00 00 d4 05 76 05 03 65 cf d6 62 00 62 15 00 f4 00 00 00 1b 1b 1b 1b 1a 02 00 00 00 00 00
14:41:59.103 : 77 07 ff ff ff ff ff ff 0b 02 db 0d 00 01 00 62 0a ff ff 72 62 01 50 00 60 32 01 01 01 01 01 01 04 60 01 00 ff 01 01 01
14:41:59.203 : 77 07 01 00 01 08 00 ff 65 00 0a e8 cf 62 1e 52 ff 69 00 00 00 01 00 02 08 00 ff 01 72 62 01 65 69 00 00 00 00 05 84 0e
14:42:00.117 : 77 01 62 1b 52 00 59 00 00 00 00 00 00 5a 02 76 05 03 65 cf d9 62 00 62 e5 a1 00 00 00 1b 1b 1b 1b 1a 02 00 00 00 00 00
14:42:00.167 : 77 07 01 00 01 08 00 ff 65 00 1c 08 0f 27 79 52 ff 69 00 00 00 00 00 02 08 00 ff 01 72 62 01 65 04 0b 00 00 00 05 84 0e
14:42:01.019 : 77 07 62 1b 52 00 59 00 00 00 00 00 00 00 76 05 03 65 cf dc 62 00 62 00 00 1b 00 00 00 1b 1b 1b 1b 1a 02 2a 00 00 00 00
14:42:01.118 : 77 07 ff ff ff ff ff ff 0b 0a 01 3b 01 00 62 0a ff ff 72 62 01 65 00 60 32 01 01 01 01 01 01 04 4c 05 00 ff 01 01 01 01
14:42:01.168 : 77 07 01 00 01 08 00 ff 65 00 1c 00 e8 d1 62 1e 52 ff 69 00 00 00 00 00 00 02 08 00 ff 01 72 62 01 65 04 00 00 00 00 00
14:42:02.168 : 77 07 00 62 1b 52 00 59 00 00 00 00 00 00 00 00 76 05 03 65 cf df 62 00 62 00 02 1d 00 00 00 1b 1b 1b 1b 1a 02 a5 06 00
14:42:03.180 : 77 07 01 6d 52 00 59 00 00 00 00 00 00 03 00 76 05 03 65 cf e2 62 00 62 00 72 02 00 00 1b 1b 1b 1b 1a 02 cc 6a 00 00 00
14:42:04.183 : 77 07 01 00 1b 52 00 59 00 00 00 00 00 00 03 01 57 10 00 65 cf e5 62 00 62 00 72 03 00 00 1b 1b 1b 1b 1a 02 b1 d1 00 00
Alles anzeigen
Kann mir da jemand auf die Sprünge helfen wieso die Werte im Webinterface und auch per MQTT nicht korrekt angezeigt werden?
Gruß Jascha
Servus. Ich habe mein Script nach der Anleitung von meierchen006 angepasst und mir so einige Werte errechnet, wie z.B. Tages-, Monats-, und Jahresverbrauch. Ist es möglich die Werte auch per MQTT an iobroker zu übertragen, falls ja, was muss ich dazu anpassen?
Gruß Jaschkopf
Servus. Hab mein Script so weit fertig und scheint auch zu funktionieren. Aber nach einem Reboot setzt er mir jedes mal den Wert für Jahresanfang auf den aktuellen Zählerstand. Habe das Skript aus der PDF Anleitung aus dem Thread übernommen und nur leicht angepasst. Vielleicht kann mal jemand drüber gucken und findet den Fehler. Ich stehe irgendwie aufem Schlauch:
>D
s1="Tagesverbrauch: {m}<b><span style="
v2=0
hr=0
md=0
yr=0
farbe1="#008000"
farbe2="#f00"
farbe3="#1fa3ec"
;Strom
p:sm=0
sd=0
p:sma=0
smn=0
p:sya=0
syn=0
sspr=0.2583
yspr=0
ysgp=156.00
y€=0
>T
v2=SML#DJ_TPWRIN
>B
->sensor53 r
tper=10
>S
;Tagesverbrauch
hr=hours
if chg[hr]>0
and hr==0
and v2>0
then
sm=v2
svars
endif
if upsecs%tper==0{
sd=v2-sm
}
;Monatsverbrauch
md=day
if chg[md]>0
and md==1
and v2>0
then
sma=v2
svars
endif
if upsecs%tper==0{
smn=v2-sma
}
;Jahresverbrauch
yr=year
if chg[yr]>0
and v2>0
then
sya=v2
svars
endif
if upsecs%tper==0{
syn=v2-sya
;Kosten
yspr=syn*sspr+ysgp
}
>W
==============
Tagesverbrauch: {m} %3sd% KWh
Monatsverbrauch: {m} %3smn% KWh
Jahresverbrauch: {m} %3syn% KWh
==============
Preis/kWh: {m} %4sspr% €
Grundpreis: {m} %2ysgp% €
--------------
Kosten lfd. Jahr:{m} %2yspr% €
==============
Zählerstände:
aktuell: {m} %3v2% KWh
0:00 Uhr: {m} %3sm% KWh
Monatsanfang: {m} %3sma% KWh
Jahresanfang: {m} %3sya% KWh
==============
>M
+1,13,s,1,9600,SML
1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,3
1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,3
1,77070100100700ff@1000,Akt. Verbrauch,W,DJ_TPWRCURR,3
#
Alles anzeigen
Servus. Ich habe endlich einen neuen Zähler bekommen und habe das Projekt wieder aufgetaut. Momentan habe ich auch die ersten Erfolge zu verzeichen. Der Volkszähler Lesekopf funktioniert an meinem ESP8266 und zeigt auch Daten auf der Weboberfläche an. Mein Script ist aktuell noch in der Minimalkonfiguration um lauffähig zu sein:
>D
>B
->sensor53 r
tper=10
>M
+1,13,s,1,9600,SML
1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,4
1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,4
1,77070100100700ff@1000,Aktueller Verbrauch,W,DJ_TPWRCURR,4
#
Ich habe vor die Daten per MQTT an ioBroker zu senden. Die Verbindung steht auch, jedoch kommen die drei Werte nicht an. Kann mir jemand sagen was ich dazu noch anpassen muss?
Gruß Jaschkopf
Perfekt. Das werde ich morgen Vormittag gleich mal ausprobieren. Aber ich hab schon von meinem Netzbetreiber erfahren, dass der Zähler den wichtigsten Wert den ich brauche (Momentanverbrauch/Einspeisung) gar nicht ausgeben kann. Also auf kurz oder lang wird es darauf hinaus laufen dass ich mir einen anderen Zähler einbauen lasse ??
Also meinst du wenn ich die neue Version von Sensor53 von Github nehme müsste es funktionieren wenn ich meinen String "2F3F210D0A" sende und muss die Parität nicht mit dem Calculator manipulieren?
Gruß Jaschkopf
Moin,
ich habe jetzt von einem Netzbetreiber ein Dokument erhalten mit allen Notwendigen Infos zum auslesen meines Zählers. Ich habe die PDF mal angehängt und hoffe das gemu2015 mehr damit anfangen kann als ich. Dort steht man soll "/?!$0D$0A" mit 300 Baud senden, was für mich Schwachsinn ist, weil ASCII und Hex Zeichen vermischt? Habe auch schon versucht das ganze komplett in Hex codiert zu senden, aber auch ohne Erfolg. Vielleicht stimmt ja was mit den Parametern noch nicht. Habe die Schnittstelle momentan auf OBIS 300 Baud mit Sendeintervall 5sek stehen. Was ich bis jetzt erfolglos probiert habe:
+1,13,o,0,300,SML,15,50,/?!$0D$0A
+1,13,o,0,300,SML,15,50,2F3F210D0A
+1,13,o,0,300,SML,15,50,2F3F21243064243061
Also ich hab das eben getestet und die IR Diode einfach mal vor dem Transistor gehalten und im Dump kam der definierte Startcode wieder. Funktioniert sauber und kam alle 2-3sek ca. Das senden und empfangen ist demnach in Ordnung. Leider bekomme ich vom Zähler keine Antwort. Habe jetzt mal eine mail an den Hersteller geschrieben. Vielleicht können die mir noch was zur Schnittstelle sagen. An sonsten hoffe ich das sich gemu2015 hier vielleicht noch einklinkt und mir weiter helfen kann.
Gruß jaschkopf
Mal ganz doof gefragt: Um meine Hardware zu prüfen kann ich doch Theoretisch die IR Diode und den Fototransistor gegenüber halten und mit "sensor 53 d1" die Empfangenen Zeichen sehen oder? Dann muss ich doch genau das in der Konsole zurück bekommen, was ich im Skript als Startsequenz eingegeben habe.
jaschkopf
Wie opferwurst schon sagte, du musst "=>sensor53 r" nutzen.
Hatte vorher immer den sensor53 drin. Hatte mir nochmal testweise ein anderes Skript aus dem Forum kopiert und nicht drauf geachtet. Ist bei Aufruf eigentlich relevant ob ich -> oder => benutze? Hat sich das vielleicht mal geändert?
Mein Skript sieht jetzt so aus:
>D
>B
=>sensor53 r
>M 1
+1,13,o,0,300,SML,15,20,2F3F210D0A
1,=h==================
1,77070100010800ff@1000,Verbrauch,KWh,Total_in,1
1,77070100020800ff@1000,Einspeisung,KWh,Total_out,1
1,=h==================
1,77070100100700ff@1,Aktueller Verbrauch,W,Power_curr,1
1,=h ----------------------------
1,77070100240700ff@1,Verbrauch P1,W,Power_p1,1
1,77070100380700ff@1,Verbrauch P2,W,Power_p2,1
1,770701004c0700ff@1,Verbrauch P3,W,Power_p3,1
1,=h=================
1,=m 10+11+12 @1,Ströme L1+L2+L3,A,Curr_summ,1
1,=h -------------------------
1,770701001f0700ff@1,Strom L1,A,Curr_p1,1
1,77070100330700ff@1,Strom L2,A,Curr_p2,1
1,77070100470700ff@1,Strom L3,A,Curr_p3,1
1,=h==================
1,=m 13+14+15/#3 @100,Spannung L1+L2+L3/3,V,Volt_avg,1
1,=h ----------------------------
1,77070100200700ff@1,Spannung L1,V,Volt_p1,1
1,77070100340700ff@1,Spannung L2,V,Volt_p2,1
1,77070100480700ff@1,Spannung L3,V,Volt_p3,1
1,=h==================
1,77070100000009ff@#,Service ID,,Meter_id,0
1,=h==================
#
Alles anzeigen
Laut Volkszähler Wiki müsste die Ausgabe in der Konsole eigentlich so aussehen:
/?! <- gesendet
/PAF5EC3gr00006
^F000 <- gesendet
^B0.0.0(715xxxxx)
0.0.1(PAF)
F.F(00)
0.2.0(1.27)
1.8.0*00(000094.17)
2.8.0*00(000266.55)
C.2.1(000000000000)( )
0.2.2(:::::G11)!
Alles anzeigen
Es gibt eine Pullsequenz die "2F3F210D0A" sein soll, und sobald der Zähler seine Modellnummer ausgibt soll nochmal eine Acksequenz gesendet werden, die dann "063030300D0A" sein soll. Aber wie bekomme ich das mit den zwei getrennten Sequenzen hin?
Gruß Jaschkopf
Mit fällt gerade noch was anderes ein. Ist es bei allen Zählern zwingend erforderlich eine Pin einzugeben? Oder muss das auch ohne Funktionieren. Habe mal versucht die Schnittstelle mit einer Taschenlampe anzuleuchten, aber darauf reagiert der Zähler ebenfalls nicht...
Alsooo....
Ich habe leider immer noch keinen Erfolg zu vermelden. Habe jetzt eine IR LED mit 200Ohm Vorwiderstand an GPIO 15 und GND angeschlossen und mein Skript angepasst. Als Empfänger verwende ich übrigens einen SFH 309 FA-4 OSO Fototransistor zwischen GPIO 3 und GND, der sollte ja funktionieren, oder? Mein Skript sieht jetzt wie folgt aus:
>D
v1=0
v2=0
v3=0
v4=0
v5=0
>T
v1=SML#Total_in
v2=SML#Total_out
v3=SML#Power_curr
v4=SML#Curr_summ
v5=SML#Volt_avg
>B
->sensor95 r
tper=10
>M 1
+1,3,s,0,9600,SML,15,20,2f3f210d0a063030300d0a
1,=h==================
1,77070100010800ff@1000,Verbrauch,KWh,Total_in,1
1,77070100020800ff@1000,Einspeisung,KWh,Total_out,1
1,=h==================
1,77070100100700ff@1,Aktueller Verbrauch,W,Power_curr,1
1,=h ----------------------------
1,77070100240700ff@1,Verbrauch P1,W,Power_p1,1
1,77070100380700ff@1,Verbrauch P2,W,Power_p2,1
1,770701004c0700ff@1,Verbrauch P3,W,Power_p3,1
1,=h=================
1,=m 10+11+12 @1,Ströme L1+L2+L3,A,Curr_summ,1
1,=h -------------------------
1,770701001f0700ff@1,Strom L1,A,Curr_p1,1
1,77070100330700ff@1,Strom L2,A,Curr_p2,1
1,77070100470700ff@1,Strom L3,A,Curr_p3,1
1,=h==================
1,=m 13+14+15/#3 @100,Spannung L1+L2+L3/3,V,Volt_avg,1
1,=h ----------------------------
1,77070100200700ff@1,Spannung L1,V,Volt_p1,1
1,77070100340700ff@1,Spannung L2,V,Volt_p2,1
1,77070100480700ff@1,Spannung L3,V,Volt_p3,1
1,=h==================
1,77070100000009ff@#,Service ID,,Meter_id,0
1,=h==================
#
Alles anzeigen
Mir ist aufgefallen, die Info die ich in einem anderen Forum gefunden habe, dass man
0x2f,0x3f,0x21,0x0d,0x0a
0x06,0x30,0x30,0x30,0x0d,0x0a
senden soll, deckt sich teilweise mit der Aussage von josy aus Post #742. Dort wurde gesagt er muss "/?!" senden, damit der Zähler antwortet. Mein String beginnt ebenfalls mit "/?!". In ASCII bedeutet mein String:
0x2f = /
0x3f = ?
0x21 = !
0x0d = 13
0x0a = 10
0x06 = 06
0x30 = 48
0x30 = 48
0x30 = 48
0x0d = 13
0x0a = 10
Was hat es damit auf sich? Ist mein Skript ansonsten korrekt? Bekomme leider immer noch keine Antwort von meinem Zähler...
Gruß Jaschkopf
Mittlerweile habe ich die letzten 10 Seiten des Themas gelesen und leider keinen Hinweis darauf gefunden wie ich die Datenübertragung meines Zählers initialisieren kann. Laut Datenblatt ist es folgende Schnittstelle:
Zitat
Optische Schnittstelle, Serielle Schnittstelle RS-485 bzw. RS-232 oder M-Bus. Konfigurierbare Übertragungsgeschwindigkeit von 300 Bd bis 9600 Bd. Protokoll-Unterstützung EN 62056-21 (IEC1107), DLMS (optional).Was ich bis jetzt gelernt habe ist EN 62056-21 der SML Standart. Aber wie muss ich jetzt mein Skript anpassen damit der Zähler die Daten preis gibt. Habe mir der Handykamera geschaut und die LED scheint nichts auszugeben. Laut einem anderen Forum soll man
Zitat0x2f,0x3f,0x21,0x0d,0x0a
0x06,0x30,0x30,0x30,0x0d,0x0a
senden damit der Zähler Daten ausgibt. Hat denn noch niemand einen EC3g Zähler erfolgreich ausgelesen? Irgendwie muss ich ja die Startsequenz in mein Skript einbauen damit der Zähler etwas ausgibt.
Außerdem wär es nochmal gut zu erfahren, wie man eine Debugging Ausgabe erhält. Über #define DUMP2Log ist das ja wohl nicht mehr möglich. Und wenn ich in der Konsole "Sensor53 d1" eingebe, bekomme ich nur
Zitat16:02:13 MQT: stat/Stromzähler/RESULT = {"Time":"2019-10-05T16:02:13","SML":{"CMD":"dump: 1"}}
zurück.
In der .ino Datei musst du soweit nichts mehr definieren.
Bzgl. Triggern: siehe Beitrag
Und eine super Zusammenfassung für alles hat meierchen006 als PDF geschrieben.
Ansonsten findest du sehr viele Infos wenn du diesen. Thread rückwärts durcharbeitest.
Den Beitrag und die PDF von meierchen006 habe ich mir bereits mehrfach durchgelesen. Mein Skript sieht momentan so aus:
;Auswahl des Treibers
>B
->sensor53 r
tper=10
;Webdisplay
>W
Verbrauch: {m} %3DJ_TPWRIN% KWh
Einspeisung: {m} %3DJ_TPWROUT% KWh
Aktueller Verbrauch: {m} %3DJ_TPWRCURR% KWh
Zählernummer:{m} %3DJ_METERNR%
;SML Zähler
>M
+1,3,s,0,9600,SML
1,=h==============
1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,4
1,=h==============
1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,4
1,=h==============
1,77070100100700ff@1,Aktueller Verbrauch,W,DJ_TPWRCURR,0
1,77070100000009ff@#, Zählernummer,,DJ_METERNR,0
#
Alles anzeigen
Bekomme es aber nicht zum laufen... was mache ich falsch?
Gruß Jaschkopf
Servus. In ganz neu hier im Forum und bin gerade dabei meinen Zähler mit eurer Hilfe in mein ioBroker zu integrieren. Dazu habe ich bereits erfolgreich die Tasmota Firmware auf meinen ESP8266 (Lolin NodeMCU v3) geflashed und die Daten (momentan noch alles 0) per MQTT und dem Sonoff Adapter an den ioBroker gesendet. Jetzt meine Frage: Wie genau muss ich meinen Stromzähler noch in der Firmware konfigurieren? Muss ich im xsns_53_sml.ino meinen Zählertyp angeben oder ist das unrelevant weil alles über das Script definiert wird? Mein Zähler ist ein Pafal (Apator) 12EC3g Zweirichtungszähler. Die Schnittstelle auf der Vorderseite ist D0 und benötigt anscheinend einen Trigger bevor sie Daten ausgibt. Aus einem anderem Forum habe ich bereits erfahren, dass man folgendes Senden soll:
0x2f,0x3f,0x21,0x0d,0x0a
0x06,0x30,0x30,0x30,0x0d,0x0a
Allerdings weiß ich nicht genau wie.
Kann mir da jemand weiterhelfen?
Gruß Jaschkopf