Beiträge von sunburstc

    Meinst du den von meierchen006 ?


    Der ist mir für den Anfang zu Komplex!

    https://forum.creationx.de/index.php?attachment/4786-2019-10-11-0925-uhr-doku-sml-treiber-wgs-zähler-pdf/

    Ja genau. Was genau meinst du denn dann als script?


    Wie das in der Meterdefinition aussieht?

    Das wäre ein Beispiel mit nem Easymeter Stromzähler, Wasser,Gas und Regen Zähler.

    Nicht über die GPIO Definition wundern, das Script ist von einem ESP32 deshalb gibt es dort auch den GPIO27.



    meierchen006

    Ja! Im Prinzip ist der nicht mehr nötig.

    Habe es allerdings bisher nicht probiert, die Speicherkapazität von #define FAT_SCRIPT_SIZE 4096 noch weiter zu erhöhen.

    SDCard_dir und USE_SCRIPT_FATFS_EXT sind natürlich nicht zwingend erforderlich sondern nur nette Gimmicks.

    Das eine ermöglicht dir den Zugriff aus der Webconsole auf den Speicher zum hoch und runterladen von Dateien. z.B. selbsterstellte logfiles.

    FATFS_EXT ermöglicht es dir im Script Datesystembefehle auszuführen. Also dementsprechend Dateien auf dem Flashspeicher zu lesen und abzulegen.

    Für das reine Skript also nicht nötig.

    Allerdings, wenn alles bei dir korrekt läuft, sag ich nur: Never touch a running System ;)!

    Wolfi

    Ja aktuell gibt es ein Problem mit der EEPROM definition.

    Wenn du einen Wemos d1 Mini oder nodeMCU mit 4mb hast, verwende statt:


    Code
    #define USE_EEPROM
    #define LITTLEFS_SCRIPT_SIZE 4000

    lieber:

    Code
    #define USE_SCRIPT_FATFS -1
    #define FAT_SCRIPT_SIZE 4096
    #define USE_SCRIPT_FATFS_EXT
    #define SDCARD_DIR


    in der Platformio_override.h fügst du in der Common Sektion:


    Code
    board_build.ldscript = eagle.flash.4m2m.ld

    hinzu.


    Viel Erfolg

    Ist inzw. nicht mehr nötig. Wenn ich Zeit habe, werde ich das mal ergänzen. Die Zeile würdest du in der PlatformIO.ini im Bereich common finden.

    Code
    board_build.ldscript = eagle.flash.1m.ld

    Ungetestet, kannst du probieren die 1 durch eine 4 zu ersetzen. Aber:


    Wenn du mehr Speicher für dein Skript benötigst, kannst du in deiner config_override.h auch einfach folgendes hinzufügen:

    Code
    #define USE_EEPROM
    #define EEP_SCRIPT_SIZE 4000

    Details zu den Defines findest du in der off. Tasmota Doc unter de Rubrik Scripting

    Danke! Habe es damals geschrieben, damit man nicht das halbe Forum durchsuchen muss, um zu verstehen wie es funktioniert.


    1. Wieso? Was heißt denn dauerhaft? Normalerweise ist das Script nach einem Neustart oder PowerOn weiterhin da wo es hingehört und aktiv.


    2. Leider gibt es bisher nur die Doku und Beispiele, die auf der tasmota Docs Seite zu finden sind. Allerdings bist du herzlich dazu eingeladen, die Doku zu übersetzen und zu erweitern. =)

    Dane

    Top! Viel Spaß damit!


    063030300D0A

    ist ein ACKnowledge. > Hex -> ASCII

    Die letzten 2 paare also 0d 0a ist ein LF CR.

    Also Zeilenumbruch.

    Kommt alles aus der Modem Kommunikation.

    Mit dem ersten HEX String weckst du deinen Zähler auf und sagst: Hey, gib mir deine Daten. Der Zähler antwortet: Ok, ich bin bereit, und du?, Und du antwortest wieder: Ja ich auch. Und dann sendet der Zähler seine Daten.

    :D

    Also das ist jetzt mal ganz vereinfacht dargestellt.

    Es gibt Zähler, die zusammen mit dem ACK noch eine Änderung der Baudrate zulassen. Dann findet die Kommunikation genauso statt, nur das du als Antwort sagst: "Ja, bin bereit, schick mir die Nachricht aber mit 9600Baud".

    Und der Zähler schickt sie dann statt mit 300 mit 9600.

    Die Anfrage vorher findet allerdings noch mit 300 Baud statt.



    Ein Beispiel hierfür ist dieser Zähler (siehe >F Sektion):

    https://tasmota.github.io/docs…yr-zmr120ares2r2sfcs-obis

    Dane Hm. Die Baudrate ist natürlich sehr langsam bei dem Zähler. Hast du bereits mit der TX Interval Zeit gespielt> Länger oder kürzer??

    Manche Zähler erwarten das ACK innerhalb von einer bestimmten Zeit. Ist diese zu lang senden sie nicht mehr. Ansonsten kann ich mir nur äußere Umstände vorstellen. Evtl. Streulicht oder Linse nicht direkt auf Empfang/Sende Einheit? Evtl. verdreht um 180°? Kabelbruch?


    Keine Ahnung ob das funktioniert aber man könnte es mal ausprobieren. Allerdings müsstest du:

    Code
    #define USE_SML_SCRIPT_CMD

    noch zusätzlich beim kompilieren hinzufügen.



    Mehr Informationen hierzu findest du unter: https://tasmota.github.io/docs/Smart-Meter-Interface/

    eric1905 Ach okay. Ich glaube ich habe das falsch verstanden. Ich dachte du hättest bereits mit einem anderen Gerät die Daten auslesen können.

    Nun. Wenn der Zähler nicht mehr hergibt, dann ist das wohl so. Kannst ja noch einmal in der Bedienungsanleitung schauen, ob dort aufgeführt ist, was alles gesendet wird.

    Da wird es auch nicht mitgeliefert. Habe 2 Sensoren angeschlossen, einer Wärmepumpe, einer Strom, beide liefern keine Infos zu L1,L2,L3 mit


    Nutzt du die aktuellste Verison von Tasmota:

    https://github.com/arendst/Tasmota DEV Branch?

    Ansonsten ist es etwas seltsam, dass du keine weiteren Daten bekommst.

    Ist es beabsichtigt, dass du für ein ESP32 kompilierst?

    Mit dem Flag 16 hast du ja schon ein Mittelwert eingestellt. Wenn es dennoch zu so Fehlern kommt, dann scheinen diese über einen längeren Zeitraum zu exisitieren.

    Würde also raten, noch einmal nachzuschauen ob dein Transistor gut sitzt, evtl. auch vor Streulicht geschützt ist. Wenn all das nicht hilft nochmal ein wenig mit dem Widerstandwert variiren.

    AingTii

    Mir persönlich ist nichts bekannt. Aber seit der Uni2 ist ja auch schon verdammt viel Zeit und Entwicklung vergangen.

    Vielleicht wäre ein Ansatz, dass du mal dein Script postest welches du für die aktuelle Tasmotaversion verwendest und auch wie deine Hardwarekonfiguration aussieht =)!


    Viele Grüße.

    vielen Dank für die schnelle Anpassung. Jetzt scheint beides zusammen zu laufen. Allerdings scheint der Gaszählern nun nicht ganz zu passen. Dieser zählte gerade munter obwohl gar nichts verbraucht wurde. Nach kurzer Zeit ist er dann stehen geblieben und hat aufgehört zu zählen. Ich muss jetzt mal schauen wie ich den aktuellen Zählerstand setzen kann und dann beobachte ich mal wie genau der Gasverbrauch ist. Sorry für die doofe Frage, aber wo genau stelle ich denn die cbm menge je Impuls ein? Und noch mal VIELEN DANK!


    PS: seltsamerweise zählt der Gaszählern nun relativ willkürlich obwohl gar kein Gas verbraucht wird. Kann das sein oder ist bei meinem Aufbau nun etwas faul?

    Falls du immer noch das Skript vom vorherigen Post verwendest:

    Und dabei keinen externen PullupWiderstand an deinem Reedkontakt hast, dann funktioniert das so nicht.

    Also wenn du kein Pullup hast, dann schalte einfach den internen Pullup von dem NodeMCU ein. indem du die Definition vom Gaszähler auf:


    Code
    +2,14,c,1,50,GAS

    änderst.

    So brauchst du nur den einen Draht des Reedkontaktes an GPIO14 anschließen und den anderen an GND. Fertig.

    fanavity

    Habe zwar keinen OBIS Zähler aber ich denke ich habe das Problem gefunden. Kann es reproduzieren.


    gemu2015

    Die Zeit ist das Problem.

    Wie von fanavity beschrieben, funktioniert sein Skript solange er nur >M 1 benutzt. Bei >M 2 sendet er keinen Triggerstring mehr.


    Konnte folgendes reproduzieren:

    Code
    >M 2
    +1,3,o,0,300,STROM,1,9,2F3F210D0A,063030300D0A

    funktioniert. Sobald die Trigger Zeit größer 9 ist, und >M 2 funktioniert er nicht mehr.

    Also es muss entweder die Zeit auf <=9 gesetzt werden oder nur ein Meter definiert sein.

    Die Baudrate hat anscheinend keinen Einfluss darauf. Auch eine Baudrate von 9600 bei 10*100ms Triggerzeit läuft nicht unter >M 2.

    Scheint also ein Bug zu sein gemu2015 ?


    Grüße.

    Ich habe nun einen neuen NodeMCU v3 von AZDelivery. Leider nach wie vor das selbe Verhalten. Sobald ich M2 eintrage werden keine Werte mehr ermittelt. Wenn ich dann Debug für den Stromzähler aktiviere erhalte ich auch keine Ausgaben mehr.

    Ok. Mal einen Rundumschlag damit man mal alles auf einem Blick hat.

    Schreib doch mal alles auf was nun Stand der Dinge ist.

    D.h.: Dein Skript posten, deine Verkabelung, wie du kompiliert hast>also mit welchen Defines in welcher Datei.

    Wie versorgst du das Gerät überhaupt mit Strom?

    Evtl. Logs falls wichtig oder nötig.

    Vielleicht auf die Weblog ausgabe bei einmal mit >M 1 und >M 2.

    Ausserdem sollte vorher die Logausgabe auf "weblog 4" also Debug gestellt werden.