bitte Leerzeichen entfernen IP=192.168.56.106
D0 Zähler SML auslesen mit Tasmota
-
Thomas -
18. Oktober 2018 um 18:50 -
Erledigt
-
-
-
Hallo gemu2015
Ok, Leerzeichen entfernt hat danach funktioniert.
Blöde ist aber das dann auch alle Kommentare entfernt werden, klar spart Zeichen, doch dann Fehlen mir meine Erklärungen!
Steht aber auch son in der PDF des Scripter!
Könnte man im Scripter-Editor eine Option einbauen die Kommentare überleben zu lassen ?
-
Hallo gemu2015
-
Die Kommentare werden alle entfernt bevor das script gesendet wird. Aber sie bleiben doch im Original enthalten. Im Editor selbst wird doch gar nichts verändert! Warum sollte man denn die Kommentare an Tasmota schicken ?
Mit dem Scripteditor brauchst du nie wieder in Tasmota in den GUI Editor gehen.
Diese Preferences sind irrelevant (sind nur in der Mac Version aktiv)
Es gibt auch keine wirklichen Preferences. Er merkt sich einige Einstellungen aus den Menus.
-
-
Ich habe letzte Woche einen neuen Stromzähler bekommen. Ein Easymeter Q3AA.
Trotz der aktualität dieses Zählers, gibt er bei mir nur eingeschränkte Daten via optischer Schnittstelle (SML 9600Baud) ab.
Nach der Eingabe des Pins, den man bei seinem Energieversorger erfragen kann, liefert der Zähler einen erweiterten Datensatz.
Die Pineingabe erfolgt via Taschenlampe.
Das Problem ist jedoch, dass dieser Datensatz nur ca. 2-3 Minuten geliefert wird. Danach springt der Zähler wieder in den Standarddatensatz zurück und eine erneute Eingabe des Pins ist erforderlich.
Um diese Umschaltung zu umgehen, habe ich mir eine kleine Platine mit SMD LEDs und einem Mosfet gelötet. Diese Platine wird von dem Tasmota Script gesteuert und macht nichts anderes, als alle 20 Sekunden für eine Sekunde blinken.
Dadurch wird der Zähler im erweiterten Modus gehalten.
Ich habe den Schaltplan angefügt.
Verwendet habe ich weiße SMD LEDs 3V 20mA.
Sollte man die 3,3V als Hauptspannung für die LEDs verwenden, muss der Vorwiderstand R1 dementsprechend angepasst werden. (auf ca.5 Ohm)
Ich habe mich allerdings absichtlich für die 5V entschieden, weil viele hier im Forum ein Wemos D1 Mini verwenden. Bei vielen Klonen dieses Boards ist ein unzureichender Spannungswandler verbaut. Wenn man diesen also zusätzlich noch mit weiteren 40mA belastet, hat das sicherlich keine positive Wirkung.
Anbei das Script für die LEDs und zusätzlich noch für einen Button, um den Pincode auch trotz aufgeklebter LEDs eingeben zu können.
Descriptor des Easymeters Q3AA:
Code
Alles anzeigen>M 1 +1,16,s,16,9600,Strom 1,77078181c78203ff@#,Service ID,,Meter_id,0 1,=h============== 1,77070100200700ff@1,Voltage P1,V,Volt_P1,1 1,77070100340700ff@1,Voltage P2,V,Volt_P2,1 1,77070100480700ff@1,Voltage P3,V,Volt_P3,1 1,=h============== 1,77070100240700ff@1,Leistung P1,W,Power_P1,1 1,77070100380700ff@1,Leistung P2,W,Power_P2,1 1,770701004c0700ff@1,Leistung P3,W,Power_P3,1 1,=h============== 1,77070100100700ff@1,Ges.Leistung,W,Power_curr,1 1,=h============== 1,77070100010800ff@1000,GesBezugTariflos,KWh,Total_in,4 1,77070100020800ff@1000,GesEinspeisungTarifL,KWh,Total_out_TL,4 1,77070100010801ff@1000,Bezug T1,KWh,Total_in_T1,4 1,77070100010802ff@1000,Bezug T2,KWh,Total_in_T2,4 1,=h============== #
Auszüge aus dem Code für den Blinker. Es werden nur die Variablen und Zeilen aufgeführt, die für den Blinker verantwortlich sind.
Code
Alles anzeigen>D cnt=0 bt=0 >B ;GPIO14 als Output definieren: spinm(14 1) >S ;Blinken if cnt<=25{ switch cnt case 1 ;GPIO14 spin(14 0) case 20 spin(14 1) cnt=0 ends } ; cnt Reset um in den Normalen Blinkmodus zurückzukehren if cnt>=50{ cnt=0 } cnt+=1 >F ;Abfrage ob Button in WebGUI Gedrückt wurde ;Mit Sicherheit,dass falls versehentlich gedrückt wurde, ;die LED nicht anbleiben sondern wieder in den ;normalen blinkmodus zurückgekehrt wird. if bt==1{ spin(14 1) cnt=30 } if bt2==0 and cnt>25{ spin(14 0) } >W ;Button für die WebGUI bu(bt "Blink" "PinLicht")
-
Hallo sunburstc
sehr interessant was man alles über Scripter machen kann, hast du mal beim Hersteller/Energieversorger nachgehakt,
warum der alle 2-3 Minuten die PIN neu haben will/muss. -
Hallo sunburstc
sehr interessant was man alles über Scripter machen kann, hast du mal beim Hersteller/Energieversorger nachgehakt,
warum der alle 2-3 Minuten die PIN neu haben will/muss.Nein, habe dort nicht mehr nachgehakt. Die waren schon überfordert mit dem Pin. Denen war das angeblich garnicht bekannt, dass es sowas gibt.
Finde es amüsant, dass einem vorgeschrieben wird einen APZ Raum im Hauptkasten vorzuhalten für evtl. digitale Auslesung durch den Versorger, der Versorger aber selbst garkeine Ahnung davon hat. Zumindest unser nicht.
Das ist genauso wie die Ansage des Versorgers, sie wollen in Zukunft alles Smart machen und verbauen bei mir am Anfang diesen Jahres eine Wasseruhr die absolut keine Möglichkeit vorsieht, ausgelesen zu werden. Selbst die vorherige Wasseruhr, hatte wenigstens ein Metallplättchen. Aber gut...
-
Hallo Leute,
ich habe mich jetzt extra angemeldet um DANKE zu sagen.
Mit Hilfe dieser Seite (und zugegeben, hier und da, Anderen) hab ich es geschafft meinen ED300 Zähler auszulesen.
Bin noch am perfektionieren. Aber die "Basis" ist geschaffen.
SMA Sunny Home Manager 2.0
SMA Sunny TriPower 10
Wechselrichter wird zyklisch ausgelesen über Ethernet - SBFSpot auf dem Raspberry
ED300L Stromzähler wird via SFH 309 FA am ESP mit Tasmota ausgelesen und per MQTT an den Pi gesendet.
Alle Daten werden in einer Node Red Instanz gesammelt und im Dashboad angezeigt.
Ich war bisher auch immer unzufrieden mit der SEMP Steuerung des myPV AC ELWA-E Heizstabs.
Dies kann ich nun dynamisch direkt aus Node-Red heraus, regeln.
HEUTE ist der erste Tag, an dem der Heizstab seine Solltemperatur erreicht hat.
Dies ist alles nur möglich mit Hilfe dieses Forums.
Danke!
-
Bzgl. deiner Frage:
Die Zähler könnten auch in Mehrfamilienhäusern hängen und aus Datenschutzgründen würde es den PIN geben, bzw. nur eine erweiterte Ausgabe nach der Eingabe des Pins.
-
Hallo Community,
zwei Fragen sind für mich noch offen ...
1..
Ich habe per tper im Skript die Zeit auf 2 Sekunden ... SML Daten werden auch alle 2 Sekunden im Tasmota Hauptmenü aktualisiert.
Jedoch per MQTT wird der aktuelle Wert nur alle 10 Sekunden übertragen. Wie kann ich MQTT senden alle 2 Sekuden? Finde dazu keine Option.
2..
Gibt es eine Möglichkeit einen funktionierenden, vorhandenen ESP mit Tasmota auszulesen, und diese Konfiguration auf einen anderen zu flashen?
Danke und Gruß
Michael
-
Hallo Community,
zwei Fragen sind für mich noch offen ...
1..
Ich habe per tper im Skript die Zeit auf 2 Sekunden ... SML Daten werden auch alle 2 Sekunden im Tasmota Hauptmenü aktualisiert.
Jedoch per MQTT wird der aktuelle Wert nur alle 10 Sekunden übertragen. Wie kann ich MQTT senden alle 2 Sekuden? Finde dazu keine Option.
2..
Gibt es eine Möglichkeit einen funktionierenden, vorhandenen ESP mit Tasmota auszulesen, und diese Konfiguration auf einen anderen zu flashen?
Danke und Gruß
Michael
1. Die kleinste Zeit der Teleperiode ist von Tasmota auf 10Sek Minimum begrenzt. Vermutlich um den Traffic zu reduzieren.
Ich meine mich daran zu erinnern, dass es eine Möglichkeit gab, SML direkt bei einer Wertänderung zu senden. Ich glaube man musste die Dezimalstellenangabe mit 16 addieren. Bin mir allerdings nicht mehr sicher. Evtl findest du etwas in der offiziellen Docu.
Ansonsten gäbe es noch die Möglichkeit in einer >S Sektion über "+>publish tele/%topic&/SENSOR {DEINE JSON DATEN}
zu senden.
2. Auf der Hauptseite der Einstellungen in Tasmota gibt es doch die Möglichkeit die Einstellungen zu sichern und wiederherzustellen.
Meinst du das damit?
-
1. Die kleinste Zeit der Teleperiode ist von Tasmota auf 10Sek Minimum begrenzt. Vermutlich um den Traffic zu reduzieren.
Ich meine mich daran zu erinnern, dass es eine Möglichkeit gab, SML direkt bei einer Wertänderung zu senden. Ich glaube man musste die Dezimalstellenangabe mit 16 addieren. Bin mir allerdings nicht mehr sicher. Evtl findest du etwas in der offiziellen Docu.
Ansonsten gäbe es noch die Möglichkeit in einer >S Sektion über "+>publish tele/%topic&/SENSOR {DEINE JSON DATEN}
zu senden.
2. Auf der Hauptseite der Einstellungen in Tasmota gibt es doch die Möglichkeit die Einstellungen zu sichern und wiederherzustellen.
Meinst du das damit?
Zu 1 .. werde ich mal nachforschen und berichten.
Die >S Sektion direkt ins Script, ok. Was gilt in dem Fall als Variable (JSON Daten) ? Wenn ich in diesem Fall nur den aktuellen Verbrauch via MQTT schicken will.
Beispiel
>S
+>publish tele/SMART/SENSOR {TPW_CURR}
Wald und Bäume
Zu 2 ... nein ich meine den kompletten Wemos 1 zu 1 zu kopieren. (Also inklusive der Einstellungen die ich in den Config Dateien gesetzt habe vor dem Flash Vorgang
-
Hallo Inxession
zu deinem Punkt 1:
so sieht es bei mir aus jede Minute einmal senden
kannst auch den Beitrag ansehen dort steht mein komplettes Script!Codes1=" SmartHome/Energie" >S min=int(time/1) if chg[min]>0 then =>Publish %s1%/%topic%/tele/Sensor-Gas %3v1%
zu deinem Punkt 2:
man könnte sich eine Sicherung des kompletten wemos machen, würde z.B. mit Tasmotizer funktionieren.
Inwiefern das dann am ende funktioniert kann ich nicht sagen, da ich es selbst noch gemacht habe.
-
Hallo Inxession
zu deinem Punkt 1:
so sieht es bei mir aus jede Minute einmal senden
kannst auch den Beitrag ansehen dort steht mein komplettes Script!Codes1=" SmartHome/Energie" >S min=int(time/1) if chg[min]>0 then =>Publish %s1%/%topic%/tele/Sensor-Gas %3v1%
zu deinem Punkt 2:
man könnte sich eine Sicherung des kompletten wemos machen, würde z.B. mit Tasmotizer funktionieren.
Inwiefern das dann am ende funktioniert kann ich nicht sagen, da ich es selbst noch gemacht habe.
Danke dir.
Jetzt stellt sich mir nur noch die Frage wo du die %3v1% her hast.
Bzw welche Variable das bei mir wäre.
ich hab jetzt einiges versucht, aber nicht die richtige Variable gefunden.
Wie erwähnt will ich eigentlich nur die TPWR_CURR sekündlich schicken.
In der Konsole wird angezeigt MQT tele/SMART/SENSOR {Time....Power...Einspeisung...Bezug}
usw ...
und genau letzteres... also den String mit den Parametern, der müsste ja innerhalb der Config irgendwo als Variable immer wieder aktualisiert und gesendet werden.
Entschuldigt die doofen Fragen, sind bestimmt totale Anfänger Fragen. Aber bei
>S
+>publish tele/SMART/SENSOR {TPW_CURR}
Erscheint MQT tele/SMART/SENSOR = {TPW_CURR}
sekündlich in der Konsole
bei
+>publish tele/SMART/SENSOR SML
Erscheint MQT tele/SMART/SENSOR = SML
sekündlich in der Konsole
Also ist ja die von sunburstc erwähnte "jsondata" falsch.
Da in der Konsole auch nur der String und nicht die Variable angezeigt wird, hab ich aktuell keine Ahnung was hinter /SENSOR ... stehen sollte.
-
Danke dir.
Jetzt stellt sich mir nur noch die Frage wo du die %3v1% her hast.
Bzw welche Variable das bei mir wäre.
ich hab jetzt einiges versucht, aber nicht die richtige Variable gefunden.
Wie erwähnt will ich eigentlich nur die TPWR_CURR sekündlich schicken.
In der Konsole wird angezeigt MQT tele/SMART/SENSOR {Time....Power...Einspeisung...Bezug}
usw ...
und genau letzteres... also den String mit den Parametern, der müsste ja innerhalb der Config irgendwo als Variable immer wieder aktualisiert und gesendet werden.
Entschuldigt die doofen Fragen, sind bestimmt totale Anfänger Fragen. Aber bei
>S
+>publish tele/SMART/SENSOR {TPW_CURR}
Erscheint MQT tele/SMART/SENSOR = {TPW_CURR}
sekündlich in der Konsole
bei
+>publish tele/SMART/SENSOR SML
Erscheint MQT tele/SMART/SENSOR = SML
sekündlich in der Konsole
Also ist ja die von sunburstc erwähnte "jsondata" falsch.
Da in der Konsole auch nur der String und nicht die Variable angezeigt wird, hab ich aktuell keine Ahnung was hinter /SENSOR ... stehen sollte.
Garnicht falsch!
Wenn du dir die via Tele gesendeten Daten anschaust, dann sehen die vermutlich so in etwa aus:
16:26:46 MQT: tele/ESP32SWG/SENSOR = "Strom":{"Meter_id":"123456","Volt_P1":230.8,"Volt_P2":230.6,"Volt_P3":228.5,"VPower_avg":229.97,"Power_P1":-104.2,"Power_P2":119.3,"Power_P3":140.0,"Power_curr":155.2,"Total_in":36.3869,"Total_out_TL":4.1810,"Total_in_T1":36.0383,"Total_in_T2":0.3485}
Nichts anderes würdest du bei dir auch machen.
du kannst %topic% ruhig stehen lassen in dem String. Das wird automatisch ersetzt durch das MQTT Topic das du vergeben hast.
Also wäre so ein Beispiel, falls du deinen Zähler in der SML Sektion "RUDELBUMS" benannt hast:
Code+>publish tele/%topic%/SENSOR "RUDELBUMS":{"Meter_id":"%var1%","Volt_P1":%1var2%,"Volt_P2":%1var3%}
var1 var2 var3 etc... musst du natürlich vorher mit einem Wert laden.
Das könntest du tun indem du in >S Sektion jede Sekunde die Werte mit den Daten aus der SML Sektion befüllst.
Code
Alles anzeigen; Nicht vergessen die Variablen zu definieren. >D var1=0 var2=0 var3=0 >S var1=sml[1] var2=sml[2] var3=sml[3]
Übrigens, kannst du in der Console nachschauen, was in den Variablen steht indem du:
Die Zahl nach dem % und vor dem Namen var1 der Variable gibt die Anzahl der Dezimalstellen an. Hier also 3.
Mit sml[x] wobei das x für eine beliebige Zeile deines Descriptors aus der >M Sektion steht. (Textzeilen mit Trennzeichen zählen nicht mit.)
Übrigens, ist der Platz für die Namen der Variablen begrenzt. Daher empfiehlt es sich recht kurze Namen wie z.B. v1 v2 v3 etc... zu verwenden.
Deine Aufgabe ist nun also, herauszufinden, in welcher Zeile deines Descriptors TPW_CURR steht.
Eine variable mit dem Wert aus der entsprechenden SML zeile füllen:
Ansonsten... Das was ich bereits erwähnte:
https://tasmota.github.io/docs/Smart-Met…/#meter-metrics
Eine Zeile unter:
-
<precision>
- number of decimal placesgut nachlesen ;)!
-
Vielen Dank sunburstc
Eigentlch reicht der Abschnitt nach "Ansonsten.."
Wenn man weiß wie man es anwenden muss.
Auf jeden Fall wird nun bei Werteänderung eine MQTT Nachricht gesendet und mein AC ELWA Heizstab wird via HTTP dynamisch vom PV Überschuss gespeist.
Bedeutend effizienter als SEMP.
Genial.
Vielen Dank!
PS ... das mit den Variablen hab ich allerdings nicht hinbekommen. Jetzt aber auch nicht mehr wichtig
-
Vielen Dank sunburstc
Eigentlch reicht der Abschnitt nach "Ansonsten.."
Wenn man weiß wie man es anwenden muss.
Auf jeden Fall wird nun bei Werteänderung eine MQTT Nachricht gesendet und mein AC ELWA Heizstab wird via HTTP dynamisch vom PV Überschuss gespeist.
Bedeutend effizienter als SEMP.
Genial.
Vielen Dank!
PS ... das mit den Variablen hab ich allerdings nicht hinbekommen. Jetzt aber auch nicht mehr wichtig
Stimmt! Ich hatte vergessen zu erwähnen, das beim kompilieren
hinzugefügt werden muss, damit der Befehl sml[X] funktioniert.
-
Hallo Zusammen,
ich glaube ich habe wieder ein Brett vorm Kopf.
Wollte grad einen Regenmengenmesser im script programmieren, nehme erst mal 1:1 den vom Gas
auf einem ESP01-s
fazit. zählt nicht
GPIO geändert alles nichts. und warum drei ???Code
Alles anzeigen; ---- Deklarieren ----------- >D v1=0.00 ; ---- bei Teleperiode ----------- >T v1=GAS#Total_In ; ---- beim booten ----------- >B ->sensor53 r tper=5 ; ---- Webdisplay ---------- >W ================ ---------------------------- GAS Zählerstand aktuell: {m} %2v1% m³ ---------------------------- ============== ; ---- Meter---------- >M +1,2,c,1,50,GAS 1,=h============== 1,1-0:1.8.0*255(@100,Zählerstand,m³,Total_In,2 #
aber der reedkontekt geht, wenn ich kippe leuchte die blaue LED
und bei aktiviertem Counter zählte der Standard TasmotaCounter -
Hallo AingTii
ich denke hier ist schon ein Fehler:
>D
v1=0.00
richtig:
>D
v1=0
>B
->sensor53 r
tper=5
richtig:
>B
->sensor53 r
tper=10
bei Teleperiod geht nur "10" und größer glaube bis "300"
meierchen006
-