ok, genau dieses mini script funktioniert bei mir (auf einem WEMOS d1 und auf einen ESP32)
Beiträge von gemu2015
-
-
dein script hat Fehler. du öffnest den port 3 mal!
fang doch mal ganz einfach an.
>D
>B
so(3 1 115200)
>S
if upsecs%10==0
then
sw("hallo welt")
print write
endif
-
du musst einfach die GPIO Nummer (nicht die D Nummer von WEMOS) angeben.
das hast du doch oben schon richtig eingestellt
so(3 1 115200)
am besten erst mal was senden und am PC am Terminal überwachen.
die Steuerung deines Saugers sollte machbar sein.
-
Es wird nur eine serielle Schnittstelle zugleich unterstützt.
Wenn du die in >B öffnest gibst du ja die Pins an, die verwendet werden sollen.
Wenn du nur Senden willst kann du aber auch 2 verschiedene Pins Sets benutzen weil du bei close die Pins ja wieder freigibst.
Vielleicht solltest du mal erklären was genau du bezwecken willst.
-
Hallo,
du darfst in Tasmota PIN setup nichts definieren, nur im Script.
wenn du was empfangen willst must du den seriellen port in >B öffnen und offen lassen.
wenn du nur senden willst kannst du immer öffnen und danach wieder schliessen
Gruß Gerhard
-
es gibt eine Lösung um so kurze Impulse abzufragen.
du definierst einen Counter auf GPIO16. der wird immer per interrupt abgefragt und wird um eins hochgezählt wenn ein Impuls ankommt.
du musst dann nur periodisch prüfen ob sich der counter verändert hat und dann fragst du die i2c Schnittstelle ab.
Das geht ganz einfach im script und sicher auch in Berry.
-
Hallo irhexin
Anbei scripter Version mit einer Hex to float Konvertierung
res=hf("5C8FA23F")
oder bei reverse byte order
res=hf("3FA28F5C" r)
die pow Function ist eine sehr ungenaue Schätzung da die genaue power Funktion extrem viel Code und Rechenzeit verbrauchen würde.
Gruß Gerhard
-
ja klar ist es ja auch. die Protokolle laufen dann über seriellen MODBUS. du brauchst einen Adapter der automatisch Receive und Transmit umschaltet,
und du must dann für deinen Controller die MODBUS Registercodes anpassen
-
der MODBUS wird sehr wohl unterstützt. sieh dir in den Tasmota Docs die Doku zu Smart Meter Interface an. Dort gibt es auch einige Beispiele.
-
Nutzt du auch Tasmota 9.5?
Meine user_config_override.h sieht folgendermaßen aus:
Code
Alles anzeigen#ifndef _USER_CONFIG_OVERRIDE_H_ #define _USER_CONFIG_OVERRIDE_H_ #define APP_TIMEZONE 99 #define MY_LANGUAGE de_DE #ifndef USE_SCRIPT #define USE_SCRIPT //# adds about 17k flash size, variable ram size #endif #ifdef USE_RULES #undef USE_RULES #endif #define USE_SML_M #define USE_SML_SCRIPT_CMD #define USE_SCRIPT_SUB_COMMAND #define USE_SCRIPT_JSON_EXPORT #endif // _USER_CONFIG_OVERRIDE_H_
Vielleicht hilft es ja.
nur zur Info:
unbedingt neueste dev Version verwenden. Nach 9.5 gab es auch in SML wichtige Fehlerkorrekturen.
-
Hallo!
Nee das habe ich nicht in meiner user_config.
Probiere ich dann.
gemu2015 Danke!
Ist das "#define ..." für jeden Zählertyp in der user_config notwendig? Eine Auswahl vom Zähler ist ja in der xsns_53_sml.ino auch nicht mehr nötig.
Hab ich da wieder was überlesen?
Grüße!
VC45
du brauchst normalerweise keine Zähler mehr zu definieren mit #define aber der ED300L benötigt ja einen Workaround wegen des Firmwarefehlers. der darf für andere Zähler nicht aktiv sein
-
Hallo zusammen!
Ich habe meinen funktionierenden Wemos D1mini zum auslesen meines Stromzähler EDL300L mit der DEV-Version von heute neu kompiliert. (9.5.0.8)
Das hat soweit auch geklappt, aber mit der neuen Tasmota-Version werden von meinem EDL300L keine negativen Leistungswerte mehr angezeigt, also auch bei Einspeisung ins EVU-Netz
werden positive Werte angezeigt.
Das Problem hatte ich schon einmal und meinen Aufbau/Script/ausgelesene Rohdaten ausfühlich beschrieben ab
An der Hardware habe ich nix verändert und zum kontrollieren aller Einstellungen hat die
super Anleitung von sunburstc sehr geholfen! Danke dafür!
Du hattest damals eine Korrektur für die Sonderbehandlung meiner EDL300L-Version vorgenommen. Kann es sein das die wieder
rausgeflogen ist beim überarbeiten?
Grüße
VC45
hast du im user config
#define ED300L drin ?
das wird gebraucht um den Fehler zu reparieren
-
HI Chris_ROL
alle Events die zu tele period Intervallen regelmäßig gesendet werden kommen in >T an
Die anderen kommen in >E an. die Wiegand Events werden ja nur einmal beim Erkennen einer Karte gesendet.
-
Hi Woolli
Die Variablen wday, hours, mins enthalten die Zeit oder auch die Variable time (Minuten seit Mitternacht)
einfach vergleichen z.B.
if hours>=10
and hours<11
then
....
-
-
-
dazu must du dich erst mal in scripting einarbeiten. in den Docs dazu auf Tasmota gibt's auch Beispiele für email. gab hier im Forum auch schon einige Diskussionen zu mail Versand.
-
eigentlich solltest du jedem Zähler eine eigene MQTT Kennung geben:
Statt:
+1,3,o,0,9600,OBIS
+2,15,o,0,9600,OBIS
z.B.
+1,3,o,0,9600,O_HT
+2,15,o,0,9600,O_WP
dann kannst du in den einzelnen Meter Beschreibungen jeweils denselben Namen vergeben, also bei beiden z.B. Total_in
-
Ausgaben aufs Display gehen mit Displaytext im script kann man das abkürzen mit dt
z.B. deine beiden Variablen ausgeben:
>D
g:CO2_eCO2
g:CO2_TVOC
>B
; display löschen
dt [z]
>S
; auf Zeile 1 Spalte 1 Text ausgeben
dt [l1c1]eCO2: %CO2_eCO2%
; auf Zeile 2 Spalte 1 Text ausgeben
dt [l2c1]TVOC: %CO2_TVOC%
mehr Infos in den Display Docs von Tasmota
-
Der Backslash darf dort definitiv nicht stehen. Der Text muss genau so aussehen wie im Dump.
Dann hast du 4 Strings (@#) definiert. Du kannst aber pro Meter nur einen ausgeben.
und in deinen MQTT IDs musst du natürlich auch noch HT, NT unterscheiden.
so sollte es eigentlich gehen:
Code
Alles anzeigen>D >B ->sensor53 r >M 1 +1,3,o,0,9600,OBIS 1,1-0:96.1.0*255(@#), Geraete-ID, Meter_number,0 1,1-0:1.8.0*255(@1,HT Verbrauch,KWh,HT_Total_in,0 1,1-0:1.8.1*255(@1,HT Einspeisung,KWh,HT_Total_out,0 1,1-0:1.8.2*255(@1,NT Verbrauch,KWh,NT_Total_in,0 1,1-0:2.8.0*255(@1,NT Einspeisung,KWh,NT_Total_out,0 #