D0 Zähler SML auslesen mit Tasmota

  • Danke für die Antworten.

    Hier nochmal in Ruhe mein Vorgehen:

    Wemos D1 mini mit TEKT5400S (15cm Kabel ohne Pullup direkt an RX und GND)

    Ich habe jeweils nur einen Zähler im Descriptor definiert :

    Zuerst der Q3B mit Descriptor (SML) :

    an die Front Info-IR des Q3B befestigt -> Ausgabe erfolgt


    Dann zum Q3D umgezogen und den Descrptor auf (OBIS) geändert :

    an der oberen IR-Diode des Q3D (siehe Foto) -> keine Ausgabe

    (das ganze 3x wiederholt)

    Eigentlich kann es am TEKT5400S nicht liegen, da ja der Q3B auslesen wird!?

    Es sei denn die obere IR des Q3Ds hat andere Specs als die Front-IR des Q3B. ich werde mal den von URBANsUNITED empfohlenen BPW78a organisieren und am Wochenende noch einmal einen Versuch starten....

    Gruss Thomas


    PS: Der sehr hilfsbereite Herr Easymeter hatte mir folgendes geschrieben:

    Zitat


    Ein Q3D –Zähler ist ein einfacheres Zählermodell. Die D0-Schnittstelle ist permanent aktiv, alle 2 Sekunden sollten dort Datentelegramme ausgesendet werden. Das Datenformat entspricht aber nicht dem SML-Protokoll des Q3B. Der Q3D gibt die Daten quasi als Klartext mit OBIS-Kennziffern aus – 9600bd, 7 E 1 .

    + die Spezifikationen als PDF

  • Hast mal mit einer Kamera geschaut, ob du sie blinken siehst durch die Kamera? Nicht das der Port garnichts sendet.

  • Ich habe da noch zwei Fragem zu, bei den Decoderzeilen:

    1,010404ffffffffxxxx@i0:1,Voltage P1,V,Voltage_P1,2

    1> Meter, 01>ModbusZählerNr, 04>FunctionCode, 04>???

    Und bei den Countern, wieso muss 3,1-0:1.8.0*255(..... der rot markierte Bereich genau so sein?

  • gemu2015

    Haben es heute mit einem Janitza B23-312 ausprobiert und nach ein paar anfänglichen Startschwierigkeiten lief alles wunderbar.

    Vielen Dank nochmal. :thumbup::thumbup:

    Gruß

    horst

  • Hallo in die Runde. Bin ganz frisch hier und habe ein Problem bei flashen des sonoff. Beim build kommt die Fehlermeldung : sonoff-DE Failed

    Oder:. wemosd1-DE. Failed

    Benutze Atom mit plattformio

  • Hallo in die Runde. Bin ganz frisch hier und habe ein Problem bei flashen des sonoff. Beim build kommt die Fehlermeldung : sonoff-DE Failed

    Oder:. wemosd1-DE. Failed

    Benutze Atom mit plattformio

    userconfig_override-sample.ino in user_config_override.ino geändert? Wenn du ein stück hoch scrollst müsste eigentlich eine Fehlermeldung angezeigt werden.

  • Danke

    Wo finde ich die ?

    userconfig_override-sample.ino

    Finde nur was mit Endung Sample.h

    Im Projektverzeichnis findest du das Verzeichnis "sonoff"darin enthalten ist die user_config_override_sample.h (sorry, hatte vorhin die falsche Endung) diese benennst du um in user_config_override.h Und trägst dort die Sachen ein die du ändern möchtest. Beispiele stehen am Anfang dieser Datei. Bei den Dingen die du ändern möchtest, nimmst du die "//" vorne vor weg. z.b.:

    In der Platformio.ini nicht vergessen unter "upload_port" den Pfad zu deinem Wemos zu setzen.

  • Guten Abend,

    Ich glaube das ist alles zu hoch für mich. Dem Sonoff eine Software auf zu spielen war vor Monaten für einen Rentner der keine Angst vor Neuem hat,

    nicht das Problem.

    Ich habe gedacht ich spiel mal eben was auf und schwupps habe ich meinen Zweiwegezähler Smart gemacht.

    Hat sich jemand schon mal die Arbeit gemacht eine Anleitung für Einsteiger zu schreiben???

    Würde mich freuen wenn mir einer helfe könnte.

  • Bei mir bleibt der Fehler :Sonoff: failed k

    0 0:00:29.698

    Stand der Dinge: 1. habe user_config_override.h umbenannt. (Hier bin ich mir nicht sicher was ich hier noch eintrage soll. Habe einen Zweiwegezähler EHZ)

    2. in my_user_config.h meine SSID und Password eingegeben.

    3. platformio.ino : default envs= DE sonoff und den com Pfad eingetragen.

    Wo ist mein Gedankenfehler????

    Danke in vorraus

  • Stefan.R


    UPDATE 28.12.2019:

    1. Grundsätzlich sollte die neuste Version im Git von Gemu verwendet werden, weil nur diese weiterentwickelt wird. Alternativ kann auch eine aktuelle Version des Original Githubs (https://github.com/arendst/Tasmota) verwendet werden.

    2. Inzwischen heißt der Ordner nicht mehr sonoff sondern tasmota.

    3. Falls in der Platform.ini "wemosd1" nicht vorhanden ist, ist es völlig in Ordnung tasmota-DE zu verwenden. Allerdings muss darauf geachtet werden, dass:

    Code
    -DUSE_CONFIG_OVERRIDE

    durch entfernen des vorannstehenden ";" aktiviert wird damit die Einstellungen die zuvor in der user_config_override vorgenommen wurden auch tatsächlich geladen werden.

    4. Wenn "IF-ELSE" im Script benutzt werden soll muss in der user_config_override auch noch:

    Code
    #define SUPPORT_IF_STATEMENT // Add support for IF statement in rules (+4k2 code, -332 bytes mem)

    hinzugefügt werden. Weitere Möglichkeiten zur Funktionsanpassung des Scripters bitte dem TasmotaWiki entnehmen!

    5. Ich werde versuchen, bei gezeiten eine neue Version dieser Beschreibung Online zu stellen.


    Original Beitrag:

    Auf, Gemu2015Github gehen und den aktuellen Code über den Downloadbutton runterladen (aktuellste Version).

    PlatformIO herunterladen. (Ich nutze es im VSCode). Dementsprechend VSCode herunterladen, installieren und unter Extensions PlatformIO hinzufügen. Müsste auch alles beim Download des Programms im Browser angezeigt werden.

    Nach dem erfolgreichen hinzufügen von PlatformIO in VSCode, VSCode neu starten. Es sollte sich direkt die Home seite von PIO öffnen. Dort auf Open Project klicken und den Ordner öffnen, den du zuvor von Github heruntergeladen hattest.

    Im File Explorer (am linken Bildschirmrand Button ganz oben) wirst du nun die in dem Ordner enthaltenen Dateien sehen.

    Öffne den Ordner Sonoff und suche die Datei user_config_override_sample.h und benenne sie um in: "user_config_override.h"

    Hier kannst du nun alle Einstellungen vornehmen die, die my_user_config.h überschreiben sollen.

    Also Sie könnte z.b. so aussehen:


    Was drin stehen sollte (user_config_override.h) :

    Code
    #define USE_SML_M
    #ifndef USE_SCRIPT
    #define USE_SCRIPT  //# adds about 17k flash size, variable ram size
    #endif
    #ifdef USE_RULES
    #undef USE_RULES
    #endif  
    #define USE_SCRIPT_WEB_DISPLAY
    #define USE_SCRIPT_JSON_EXPORT

    Zusätzlich könntest du direkt auch deine SSID und das WlanPasswort eingeben:

    Code
    #undef  STA_SSID1
    #define STA_SSID1         "WIFISSID"             // [Ssid1] Wifi SSID
    
    #undef  STA_PASS1
    #define STA_PASS1         "WIFIPASS"     // [Password1] Wifi password

    Danach suchst du die PlatformIO.ini auf:

    Dort, sofern du ein Wemos D1 Mini hast, folgendes aktivieren:

    Code
    default_envs = wemosd1-DE

    weiter unten im Code sollte irgendwo das hier stehen:


    Als Port musst du dann den Port auswählen an dem du dein Wemos angeschlossen hast. Bei mir am Mac:

    Code
    upload_port = /dev/cu.wchusbserial147440

    Übrigens, herausfinden kannst du den Port unter "Devices" im PlatformIO Menü.

    Danach im gleichen Menü oben auf Upload gehen. Meist schlägt der erste Versuch fehl weil die Ordner noch nicht existieren. Einfach noch einmal auf Upload klicken.


    Der Port darf während des Uploads nicht schon von einer anderen Software wie z.B. der Arduino Console belegt sein.

    Auch sollten zu dem Zeitpunkt keine Teile an den RX/TX Pinnen verbunden sein.


    Wenn das alles geglückt ist, die IP Adresse des WEMOS D1 Mini heraussuchen und im Browser eingeben.

    Dort unter Einstellungen "Edit Script" den Code für seinen Zähler eingeben.

    Leider kenne ich nicht die genaue Bezeichnung deines Zählers. Aber es gibt einige Beispiele unter: Tasmota Wiki SML und die Beschreibung, was die einzelnen Dinge zu bedeuten haben unter: Scripting

    Weitere Beispiele, allerdings noch nicht für die Scripting -Version angepasst findest du in der alten Code Version: xsns_53_sml.ino ab ca. Zeile 170ff. Oder auch hier im Thread.

    Gerne hierzu auch mal die Suche oder Google benutzen.

    Der Unterschied der beiden Definitionen (Scripting und Programmcode) sollte sich beim Vergleich der beiden von selbst ergeben.

    Findest du deinen Zähler in der alten Code Version und nicht in den Scripting Beispielen, musst du die alte Version umbauen zur neuen. Das sollte mit denn oben geposteten Links kein Problem darstellen.

    Als Beispiel, meine Zähler (Strom,Wasser,Gas):

    Scripting:

    Code-Version auszug(Allerdings hier nur Strom):

    Code
    #if METER==Q3B
    #undef METERS_USED
    #define METERS_USED 1
    struct METER_DESC const meter_desc[METERS_USED]={
      [0]={3,'s',0,SML_BAUDRATE,"SML",-1,1,0}};
    const uint8_t meter[]=
    "1,77070100010700ff@1," D_TPWRCURR ",W," DJ_TPWRCURR ",0|";
    "1,77070100010800ff@1000," D_TPWRIN ",KWh," DJ_TPWRIN ",4"
    #endif

    Es ist für dich vermutlich Ratsam, erst einmal mit nur einem Zähler zu beginnen. Also:

    Code
    >D
    
    >B
    =>sensor53 r
    
    >M 1
    ;Ab hier nun deinen Zähler definieren

    Ab hier nun folgend deinen Zähler definieren.

    Im Scripting Fenster oben ein Häkchen setzen um das Script zu aktivieren und abspeichern.

    Ich hoffe ich konnte dir damit weiterhelfen.

    Grüße.

  • Ich habe noch einmal alles neu gestartet (Dank an @sunburstc für die Anleitung). Den BPW78A und den TEKT5400S (mit und ohne Pullup) eingesetzt, doch das Ergebnis ist unverändert. Am Q3B mit SML ist alles gut, am Q3D mit OBIS werden weiterhin keine Werte angezeigt.


    @URBANsUNITED

    Hast Du den BPW78A direkt auf die obere IR-Diodenabdeckung geklebt? Oder mit Abstand? Habe zwar auch damit experimentiert, aber ohne Erfolg.

    Wäre es u.U. möglich, dass Du (man) mir eine firmware baust?! Wären ja nur die WIFI Zugangsdaten, die Du von mir haben müsstest? Somit könnte ich den Fehler weiter eingrenzen.

  • Ich habe noch einmal alles neu gestartet (Dank an @sunburstc für die Anleitung). Den BPW78A und den TEKT5400S (mit und ohne Pullup) eingesetzt, doch das Ergebnis ist unverändert. Am Q3B mit SML ist alles gut, am Q3D mit OBIS werden weiterhin keine Werte angezeigt.


    @URBANsUNITED

    Hast Du den BPW78A direkt auf die obere IR-Diodenabdeckung geklebt? Oder mit Abstand? Habe zwar auch damit experimentiert, aber ohne Erfolg.

    Wäre es u.U. möglich, dass Du (man) mir eine firmware baust?! Wären ja nur die WIFI Zugangsdaten, die Du von mir haben müsstest? Somit könnte ich den Fehler weiter eingrenzen.


    Hast du mal geschaut, ob es vielleicht an einem anderen PIN funktioniert? Also Statt GPIO 3(RX) mal einen anderen zu nehmen? Zb. GPIO 14. D5.
    das musst du allerdings dann auch im Script dementsprechend von 3 auf 14 ändern. Und such hier nochmal alles probieren.
    der Hintergrund ist dieser:


  • Hast du mal geschaut, ob es vielleicht an einem anderen PIN funktioniert? Also Statt GPIO 3(RX) mal einen anderen zu nehmen? Zb. GPIO 14. D5.
    das musst du allerdings dann auch im Script dementsprechend von 3 auf 14 ändern. Und such hier nochmal alles probieren.
    der Hintergrund ist dieser:

    Danke für den Hinweis. Habe es gerade einmal mit dem Wemos und einmal mit einem NodeMCU V3 getestet, leider ohne Erfolg. Werde mich wohl um einem alternativen Zähler kümmern müssen...