verwende die neueste dev Version. der Fehler ist seit einiger Zeit behoben.
Beiträge von gemu2015
-
-
du brauchst dieses #define fürs Webdisplay
#define USE_SCRIPT_WEB_DISPLAY
-
Geht so:
>D
>B
=>sensor53 r
; setze pin 16 auf output
spinm(16 O)
>F
; setze pin 16 mit wert von pin 13
spin(16 pin[13])
>W
; Zustand im Webinterface anzeigen
Counter pin{m}%0pin[13]%
>M 1
+1,13,c,1,-100,Gas
1,1-0:1.8.0*255(@100,Gesamt,m³,Gesamt,2
#
-
Alle. Variablen müssen in >D definiert werden
-
Sehe gerade dass du vergessen hast scnt zu definieren.
Dann geht gar nichts
>D
scnt=0
-
hier gibt es mehrere Fehler.
Ein String darf nur maximal 20 Zeichen lang sein oder wenn du >D 48 angibst 48 Zeichen, eigentlich nur 1 Zeichen weniger
also >D 48 erlaubt 47 Zeichen.
also das hier eventuell auf 2 oder mehr Strings aufteilen.
res=sml(1 1 "000000000000000000000000000000000000000000000000000000000000000000000000000000002F3F210D0A")
dann soll als erstes der lange Nuller String kommen und dann erst der kurze
res=sml(1 1 "2F3F210D0A")
es sieht auch so aus als ob die Baudrate und oder Parity nicht stimmt. soll ja 7E1 sein
allerdings sollte wenn du obis einstellst das auf 7E1 voreingestellt sein.
im Zweifelsfall 7E1 erzwingen mit
+1,3,oE1,0,300,LUGCU,1
der Name darf hier nicht länger als 7 Zeichen sein.
dass du den langen Nuller String wiederholt Senden must kann ich mir schwer vorstellen aber wer weis.
Gruß Gerhard
-
Hallo Jens,
Hallo Old_Engineer,
den counter kann ich problemlos mit dem Kommando über http setzen http://192.168.188.61/cm?cmnd=sensor53%20c1%20123456
der c1 muss KLEIN geschrieben werden.
Also das mit dem Speichern von Variablen geht so vor sich:
Tasmota selbst speichert Variablen jede Sekunde (default) ins Flash ab falls sich was geändert hat
(Befehl SaveData)
Die counter Register sind im Tasmota Variablenbereich werden also jede Sekunde abgespeichert.
P (permanente) Variablen im Scripter werden bei restart oder mit dem Befehl svars in den Tasmota Variablenbereich kopiert und dann eine Sekunde später ins Flash geschrieben.
Wohlgemerkt NUR dann wenn sich etwas geändert hat.
Wenn sich also der counter dauernd ändert dann wird jede Sekunde gespeichert.
wenn man das Flash entlasten will, gibt man bei SaveData einen höheren Wert ein z.B. 10
Dann gehen Werte verloren wenn der ESP vor Ablauf dieser 10 Sekunden abstürzt.
Gruß Gerhard
-
Bisher sind nur folgende E-Paper Displays in Tasmota unterstützt:
1. 2.9 inch Waveshare und hier nur die BW Version nicht die 3 Farb Version
2. 4.2 inch Waveshare BW
3. LilyGo 4,7 Epaper ESP32 board
4. M5Stack 4,7 ESP32 Epaper mit Touch Screen. (bisher nur in meinem Fork)
Das Waveshare 2.9 ist das schnellste von allen so dass der Refresh kaum auffällt.
-
ok, genau dieses mini script funktioniert bei mir (auf einem WEMOS d1 und auf einen ESP32)
-
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