D0 Zähler SML auslesen mit Tasmota

  • Der Hat ja nicht so viele Anschlussmöglichkeiten. An GPIO 14???

    Mehr wie ein zusätzlich freier GPIO ist nicht nötig,

    GPIO14 ist dafür gut geeignet.


    LG

  • Danke! Jetzt hab ich verstanden und auch gesehen!


    Baudrate:

    Kann man irgendwo die Baudrate einstellen? Ich brauche 9600 7E1 für meinen Stromzähler.



    @meierchen006

    Kannst mir mal deine xsns 95 zeigen? Wie hast du deinen Gaszähler ingebunden als zweites Gerät? Welche Kennzahlen braucht man?

    Oder ist das wirklich alles?

    "2,1-0:1.8.0*255(@100," D_GasIN ",cbm," DJ_COUNTER ",2|"

    1.8.0 für den Gesamtverbrauch getant als Obis und der Counter zum addieren?

    Würde mir dann den METER==COMBO3b zu einen 2'er einkürzen


    Danke

  • Hallo URBANsUNITED,


    anbei die gekürzte xsns_95_sml.ino

    Wie geschrieben das ist nicht die komplette xsns_95_sml.ino sondern gekürzt, das wesentliche ist ersichtlich.

  • Danke meierchen006!

    Das hatte ich mir auch so vorgestellt. Funktioniert auch theoretisch.


    Ich habe nur ein neues Problem.

    Meine Daten für den D0 kamen nicht sauber rein, musste also die Position des Phototransistors korrigieren und seitdem kommen keine Daten mehr rein. Egal was ich versuche.

    Leuchte hingegen mit meinem iPhone auf die Position wo der Transistor sitzt, kommen die Daten (durch das sehr helle Licht der Taschenlampe).

    Es geht auch nur ohne Widerstand. Baue ich den dazwischen, kommen überhaupt keine Daten.


    Wer hat einen Q3D Stromzähler und kann mir ein Bild des Aufbaus bitte zeigen?


    Vielen Dank


    URBANsUNITED

  • Danke, aber das meinte ich nicht. Mich interessiert der verwendete Phototransistor und wie der montiert wurde.

    Kann ich den direkt auf das Auge beim Zähler montieren oder muss ein Abstand da sein.

    Habe aktuell den BPW 40, der scheint aber richtig zickig zu sein. Habe jetzt den BPW 78a bestellt, da es den TEKT5400S nur sehr schwer und teuer zu bekommen ist. Wurde aber auch so in der Readme erwähnt. Hatte mich an diesen Beitrag ursprünglich orientiert, es ging ja auch schon mal. Die Daten sind geflossen, jedoch mittels Raspberry Pi...

  • Du glaubst gar nicht, was ich schon alles nach dem Versetzen alles probiert habe :cursing:

    Er lieferte nachher wieder Werte, aber nur, wenn ich mit der iPhone Lampe voll drauf gehalten hatte:/ Schon Merkwürdig. Ging ja mal...
    Ich warte jetzt auf neue Transistoren, Schaltung und Software steht. Wenn ich es 100% getestet habe, stelle ich meine 2'er Combo (D0 & Gas), auch rein.

  • Du glaubst gar nicht, was ich schon alles nach dem Versetzen alles probiert habe :cursing:

    Er lieferte nachher wieder Werte, aber nur, wenn ich mit der iPhone Lampe voll drauf gehalten hatte:/ Schon Merkwürdig. Ging ja mal...
    Ich warte jetzt auf neue Transistoren, Schaltung und Software steht. Wenn ich es 100% getestet habe, stelle ich meine 2'er Combo (D0 & Gas), auch rein.

    URBANsUNITED hast du es mal so probiert?


    D0 Zähler SML auslesen mit Tasmota

  • Was mache ich falsch?


    Ich bekomme meinen Zähler nicht zum Laufen.

    Die Schaltung ist korrekt.

    Habe einen BPW78A – Fototransistor an RX und GND angeschlossen. Zusätzlich habe ich einen 1K Widerstand von 3,3V an RX verbunden.


    Resultat:


    07:08:05 CMD: Sensor95 D1

    07:08:05 MQT: stat/meinsonoff/RESULT = {"Command":"Error"}


    Es kommen keine Werte


    Nehme ich diese Schaltung 1:1 zu meinem Raspberry Pi 3b, klappt es auf anhieb!

    Bedeutet, Schaltung ist ok, Transistor in Ordnung.


    Ich habe einen easymeter Q3D und möchte anstatt RPI einen Sonoff Basic nutzen.


    Was habe ich bisher unternommen (so einiges):

    Gemu2015’s Tasmota fork genommen, UNI2 & 3 jeweils kompiliert

    Änderungen an:


    platformio.ini

    env_default sonoff-DE

    ;env_default = wemosd1-DE


    -DUSE_CONFIG_OVERRIDE


    Sonoff/my_user_config.h

    Unter

    // -- Serial sensors ------------------------------

    Das hinzugefügt:

    #define USE_SML_M

    #define SML_BSIZ 32


    Unter Sonoff/user_config_override.h

    Habe ich meine Wlan settings etc. hinzugefügt


    Unter

    sonoff/xsns_95_sml.ino

    habe ich

    #define METER EHZ161_0

    Als Zähler gesetzt, da der auch die OBIS Zahlen nutzt oder meinen eigenen Q3D Zähler, den ich vorher per


    #define Q3D 14 hinzugefügt hatte.


    Zusätzlich

    Da mein Zähler mit der Baudrate 9600 7E1 sendet, habe ich auch das schon probiert.

    Dazu habe ich unter

    lib/TasmotaSerial-2.3.1/src/TasmotaSerial.cpp


    alt:

    Serial.begin(speed, SERIAL_8N2);

    } else {

    Serial.begin(speed, SERIAL_8N1);


    Neu

    Serial.begin(speed, SERIAL_7E1);

    } else {

    Serial.begin(speed, SERIAL_7E1);


    Und


    sonoff/sonoff.ino


    Alt:

    // Global variables

    SerialConfig serial_config = SERIAL_8N1;


    Neu:

    // Global variables

    SerialConfig serial_config = SERIAL_7E1;


    Hilft alles nichts! Beim Raspberry ist die Baudrate 9600 7E1 notwending, sonst kommt nichts.


    Ich habe alles Probiert, Mit Widerstand (1k, 4,7k und 10k), ohne Widerstand, Baudrate original und angepasst und und und


    Es kommt nichts an:cursing:


    Seht ihr einen Fehler?

    Bin echt am verzweifeln!!!


    Danke


    URBANsUNITED

    3 Mal editiert, zuletzt von URBANsUNITED () aus folgendem Grund: Bilder aktualisiert und Widerstände hinzugefügt

  • Hallo URBANsUNITED


    Nix verändern an Tasmota Serial und so. 7E1 wird automatisch decodiert wenn du OBIS einstellst.


    zuallererst musst du in der Konsole was sehen, also mit sensor95 d1 in der Konsole. (d1 kleingeschrieben)


    dort sollten die Daten direkt als Text lesbar sein.


    erst wenn das geht weitere Fehlersuche.


    Gruß gemu2015

  • Danke! gemu2015


    das mit der Serialadaption hatte ich mir schon fast gedacht. Weil ich ja Daten schon mal bekommen hatte. Nur jetzt nicht mehr. Egal was ich versuche


    Hab ich denn irgendwo eine Logiklücke? Oder einen Fehler eingebaut was das kompilieren angeht?

    Mache es per macOS und Atom


    Danke


    URBANsUNITED

  • Moin!


    Ich hab den Fehler gefunden... Meine Lötverbindung im Sonoff haben sich gelöst, die Stifte waren locker. Wahrscheinlich, weil ich so oft umgesteckt hatte.

    Beim Nachlöten sind mir zwei Kontaktpads abgerissen. Könnte <X

    Naja, werde jetzt einen anderen nehmen, der im generell besseren zustand ist. Der Basic war schon so sch*** gelötet. Keine Ahnung was ich mir dabei gedacht hatte.


    Melde mich dann wieder zurück.

    Danke für eure Geduld!


    Cheers


    URBANsUNITED

  • Hallo,


    ich habe das Auslesen von SML an meinem Q3C Zähler jetzt am Laufen. Vielen Dank an das Forum für die zahlreichen Tipps.

    Die Werte werden auf der Übersichtsseite dargestellt und auch regelmäßig aktualisiert.


    Ein Problem besteht aber noch: Wie bekomme ich die Daten jetzt zu meinem Domoticz Server. In der Konsole sehe ich dass die WErte regelmäßig gesendet werden, allerdings nicht für Domoticz. Hierfür müßte ich noch ein IDX vergeben. Es gibt aber atkutell keine Möglichkeit in der Öberfläche diese zu vergeben ??!!



    Gruß

    Dom

  • Hallo,


    nachdem ich meinen Sonoff Basic gekillt hatte, ist jetzt ein NodeMCU Lolin V3 im Einsatz. Komisch... funktionierte auf anhieb;(


    Ich habe jetzt den Gaszähler auch mit eingebunden, aber anscheinend wird noch nicht richtig gezählt.

    Die Beiträge zum Gaszähler beziehen sich auch Branch "Universal 2", geflasht habe ich jetzt aber "Universal 3", da dort die Entwicklung vorangetrieben wird und alle Mods enthalten sind wie es aussieht.


    ABER bei Uni3 kann ich nicht direkt an den Counter Werten "spielen" wie bei Uni2:

    Code
    1. UNI2 xsns_01_counter.ino
    2. // if defined shows gas meter count for counter 1
    3. // parameter is debouncing in us for switch open in gas counters
    4. // set as low as possible
    5. //#define GAS_COUNTER_MODE 5000
    6. // gas poll mode every 100 ms (no irqs) GAS_COUNTER_MODE must be >0 but value is ignored
    7. #define GAS_POLL_MODE
    8. #define GAS_DECIMALS 2


    Wie definiere ich denn jetzt den Gaszähler? Wie trage ich diese Daten bei Uni3 ein?

    #define GAS_COUNTER_MODE 5000

    #define GAS_POLL_MODE



    Btw. Counter1 ist doch noch korrekt oder?


    Danke euch


    Schönen Tag


    URBANsUNITED

  • Hallo URBANsUnited,


    schön das es weiter geht bei dir.


    Ich bin noch bei Universal2 dort läuft es bei mir bisher Fehlerlos.


    Erste Tests mit Universal3 habe ich auch schon gemacht, kann aber nicht kompilieren, dazu bin ich in Kontakt zu gemu2015


    Bei meinem Zähler WGS Beispiel ist der Gaszähler Counter 2 (Sensor95 C2) , habe ich extra dabei geschrieben damit ich es auch selbst nicht vergesse.


    Zitat
    1. //======================WGS_COMBO============================================================
    2. #if METER==WGS_COMBO
    3. #define METERS_USED 3
    4. struct METER_DESC const meter_desc[METERS_USED]={
    5. [0]={5,'c',0,10,"H20"}, // GPIO5 (D1) Wasser Zähler
    6. [1]={4,'c',0,50,"GAS"}, // GPIO4 (D2) Gas Zähler
    7. [2]={3,'s',0,SML_BAUDRATE,"SML"}}; // SML Hardware serial RX pin
    8. // 3 Zähler definiert
    9. const uint8_t meter[]=
    10. //----------------------------Wasserzähler--sensor95 c1------------------------------------
    11. "1,=h==================|" // Zeilen
    12. "1,1-0:1.8.0*255(@10000," D_H20IN ",cbm," DJ_H20IN ",4|" // 1
    13. //----------------------------Gaszähler-----sensor95 c2------------------------------------
    14. // bei gaszählern (countern) muss der Vergleichsstring so aussehen wie hier
    15. "2,=h==================|"
    16. "2,1-0:1.8.0*255(@100," D_GASIN ",cbm," DJ_GASIN ",3|" // 2
  • Danke meierchen006 werde dann UNI2 nochmals kompilieren.

    Aber vielleicht kann gemu2015 etwas dazu sagen?


    Btw. Mein Code für Gas und Stromzähler (Q3D - Obis) sieht so aus:

  • erstmal zur Info:


    die Universal 2 wird in Kürze gelöscht weil durch Universal 3 ersetzt. Ist jetzt Tasmota 6.5.0.9


    Der Gaszähler ist nicht mehr im xsns_01_counter.ino sondern in der xsns_95 integriert.


    Deshalb ist in der Universal 3 wieder der original xsns_01_counter.ino enthalten.


    Man braucht dazu in den Tasmota settings keine Einstellungen für counter vornehmen, sondern definiert wie bei SML und OBIS die gpio pins in der xsns_95


    Der counter wird im Gegensatz zur original Counter software von Tasmota nicht per IRQ sondern per polling abgetastet. nur damit kann man das besondere Verhalten der Reedkontakte beim Gaszähler berücksichtigen der beim anziehen und abfallen prellen kann und auf jedem Pegel beliebige Zeit stehen bleiben kann. (gilt nur für nicht hardware entprellte Kontakte)


    Die Pollzeit kann dabei den Signaleigenschaften angepasst werden und sollte deutlich schneller sein als die kürzeste Impulsbreite des Signals.


    Bei Gaszählern ist die Impulszeit in der Regel sehr langsam, da dürften 100 ms reichen, bei Wasserzählern kann diese Zeit deutlich kürzer sein und erfordert eine kürzere Pollzeit. Bei normierten Impulsen mit Hardwareentprellung (z.B. Cyble Sensor) ist es eventuell besser den Original Tasmota counter mit IRQ zu verwenden.

  • Danke gemu2015 für die Klarstellung! Sollte einiges einfacher machen, da kein weiterer Configbedarf.


    Ich hänge aber trotzdem mit meinem Gaszähler fest. Neueste UNI3 Version compiliert, mein NodeMCU zählt alles, nur nicht was er soll. sehr merkwürdiges Verhalten.

    Mal zählt er zu schnell, dann Sprünge, dann gar nichts.


    Ich habe einen BK-G4 MT Gaszähler, ein Impuls entspricht 0,01m³, mein Reed Kontakt ist der MK04-1A66B-500W, der ist dem von meierchen006 sehr sehr ähnlich von den Specs.

    Kabellänge ca. 100cm, Reed Kontakt mit der Schrift nach oben, ganz rechts montiert wie in diesem Thread https://www.photovoltaikforum.…ostID=1536028#post1536028 oder hier, da sitzt der Kontakt nur um 90° verdreht

    https://www.solvimus.de/blog/s…ceasy-und-der-gaszaehler/


    Meine "Gas" Settings:

    [1]={4,'c',0,50,"Gas"}}; // Gas counter GPIO4 software serial


    "2,1-0:1.8.0*255(@100," D_GasIN ",cbm," DJ_COUNTER ",3";


    In der Web Config steht GPIO 4 auf Counter1 (42)


    Ist ein Widerstand zum Reed Kontakt notwendig? Habe mit 10K und ohne probiert.


    Ich habe da meine Verständnislücken:


    Gaszähler Impuls = 0,01m³, es sind aber 3 Nachkommastellen vorhanden.

    Ist @100 überhaupt korrekt und sind dann ",3"; richtig oder beißen sich diese Angaben?

    Beim Volkszähler muss man beim BK G4 die Auflösung im Sensor auf 100000 stellen. Betrifft das mich/uns auch hier?


    Es wurde ja bereits viel geschrieben, aber immer ist alles unvollständig. Ich habe bestimmt schon 3x den kompletten Thread gelesen und auch die anderen 2 zum Gaszähler. Vorallem wenn wichtige Änderungen gemacht werden, kann man das nirgends nachlesen und dann auch umsetzen.


    Ich danke euch!


    Gruß


    URBANsUNITED