D0 Zähler SML auslesen mit Tasmota

  • Hallo sunburstc,


    bei mir ist die Pollzeit auf 10 eingestellt und der Sensor sitz auf dem Glas des Wasserzählers auf.

    Funktioniert wie es soll.

    Ich habe mich falsch ausgedrückt.. ich wollte damit andeuten das ich von -50 bis 50 verschiedene Werte probiert habe :).

    Trotzdem Danke!

    Kannst du mir vielleicht zeigen wie genau du den Näherungssensor platziert hast? Meiner liegt auch direkt auf dem Glas leicht exzentrisch.



    Mit der aktuellen Einstellung „20“ hab ich in den letzten 10h mehr als 20L „verpasst“.

    Werde nochmal Richtung irq gehen.

    Ansonsten überlege ich umzusteigen auf eine Reflektionslösung.


    Meine Frage an gemu2015 : Hattest du zufällig irgendetwas in der Uni7 bzgl. Der Counter verändert gehabt? Wenn nicht, muss es an meiner Hardware liegen.

  • sunburstc

    nein hab seit den negativen IRQs nichts mehr an der counter Logik geändert.

    geht denn dein Gaszähler fehlerfrei?

    die Logik ist ja die gleiche.

    wenn es schon mal ging kann ich mir schwer vorstellen dass sich in der Hardware was geändert hat.


    wichtig ist natürlich auch dass die Pins die du definiert hast NICHT in den Tasmota GPIO Einstellungen verwendet werden dürfen (dort muss "None" stehen)

  • sunburstc


    Resettet sich dein Esp vielleicht und du hast dadurch die Abweichungen? So ist es bei mir. Was für ein Netzteil hast du dran?

    Hab meins jetzt mal gegen ein stabiles 2,4A getauscht. Bin noch am prüfen...


    Gas wirste wohl nicht merken als Gegenprüfung, weil

    1. der Gasverbrauch aktuell sehr niedrig bis 0 ist

    2. alle Werte ab jetzt um 2400h gesichert werden in der Tasmota


    Polzeit sollte auf 10 eingestellt bleiben. Half meierchen006 auch ;)


    Bye


    URBANsUNITED

  • URBANsUNITED

    könnte sein das das direkt geht mit deinem Bussystem.

    der neue Decoder kann beliebige Muster in einem binären Strom erkennen und daraus Werte extrahieren.

    dazu müsstest du dir einen Adapter besorgen um den EMS Bus an einen seriellen Pin anzuschliessen

    dann gibst du als Datentyp 'r' für raw an und definierst die Einträge nach der neuen Syntax für den EBUS.

    dazu musst du dir die Definitionen der einzelnen EMS Telegramme besorgen und etwas herum probieren.


    die EBUS Syntax für den Suchstring geht so:


    der Suchstring besteht wie bei SML aus HEX Bytes wobei folgendes gilt:


    xx = byte ignorieren

    HH = hex byte vergleichen

    ss = signed byte variable extrahieren

    uu = unsigned byte variable extrahieren

    uuuu = unsigned word variable extrahieren


    Beispiel:

    1,xxxx0503xxxxxxxxxxxxxxxxss@1,Außentemperatur,C,Outsidetemp,1


    im Suchstring muss an Position 3 eine 05 und Position 4 eine 03 vorkommen, dann wird aus Position 12 die signed byte Variable extrahiert

    alle anderen Bytes sind egal.


    Grüße

    Gerhard


    PS ich würde dazu unbedingt auf den scripter modus wechseln damit du ohne Neukompilieren testen kannst.

  • Es ist ein graus. Das eine mal hab ich zuviel auf dem Tacho dann wieder zu wenig. Meine Planung war, einmal alle Treiber außer den sml Treiber auszukommentieren. Damit das Ding auch wirklich nur das Macht was es soll. Neustarts konnte ich in dem Informationstab keine entdecken. Laut denen läuft er seit Tagen durch. Als Netzteil dient aktuell noch ein 1A iPhone Ladegerät.

    Allerdings habe ich wohl bemerkt, dass ich das Webinterface via iPhone nicht aufrufen kann. Passiert sporadisch, bekomme dann keine Rückmeldung. warte ich eine Zeit funktioniert es dann wieder. Aber wie gesagt, keine Reboots. Muss mich damit heute nacht oder morgen mal auseinandersetzen. Es ist so seltsam, weil es alles schon mal perfekt lief.



    gemu2015 Finde es Klasse das nun auch die Heizungen hinzu gekommen sind. Unsere ist zwar auch zu alt, allerdings gibt es sicherlich genug Leute die damit was anfangen können.

    Eine Frage noch. Beim Counter kann ich ja 0/1 für Pullup auswählen. Was genau bedeutet das. Bedeutet es, dass der Pin auf InputPullup gelegt wird oder bedeutet "1" das der Pin extern via Widerstand hoch gezogen wurde? Und die Änderung der Werte findet ja immer noch wie folgt in der Konsole statt oder?

    Code
    1. 22:06:28 CMD: sensor95 c1 432838
    2. 22:06:28 MQT: stat/ESP-SWG/RESULT = {"Time":"2019-08-26T22:06:28","Epoch":1566853588,"SML":{"CMD":"counter1: 432838"}}


    meierchen006

    Danke für dein Feedback, bei mir sieht es ja eigentlich ähnlich aus. Habe ihn an 5V und dann mithilfe von Spannungsteiler an Gpio12 angeschlossen. Daran hat sich auch nichts geändert.


    Ich werde Berichten was meine Tests ergeben haben ;)!

  • sunburstc


    wenn du einen reed Kontakt verwendest brauchst du einen Pullup, am besten einen externen von ca 4,7k.

    wenn du den sparen willst kannst du einen "software pullup" einschalten, nennt sich week pullup weil etwa 40k, damit kann man sich aber leichter Störungen einfangen.


    dein induktiver Sensor hat einen offenen Kollektor Ausgang da brauchst du natürlich auch einen Pullup, wie gesagt ca 4,7k hat sich da bewährt.

  • neue info


    der sml Treiber ist jetzt in Tasmota integriert => xsns_53_sml.ino

    aber dort sind alle deutschen Kommentare entfernt.


    deshalb lasse ich den bisherigen xsns_95 noch in meiner repo drin


    in Tasmota wird es ein englisches Wiki geben wo alles noch mal genau erklärt wird.


    das kann dann ein fleissiger Mensch vielleicht für die User hier in Deutsch übersetzen?

  • Das mit dem Open collector war ein super Tipp. Kein Plan warum mir das nicht aufgefallen ist. Ist jedenfalls nun an GPIO 12 mit pullup über 4,7k an 3,3v angeschlossen. pollzeit 10ms.


    Es läuft trotzdem nicht. Innerhalb von 26h hab ich ca. 700l Zuviel gehabt.


    Verstehe es nicht.


    Übrigens, war die ursprüngliche Frage, was die 1 vor der pollzeit im Script macht. Ob sie den internen Pullup von WEMOS an/aus Schaltet oder ob sie einfach nur bestimmt ob rising/ Falling Edge gezählt wird.


    Falls jemanden noch etwas auffällt.

    Funktioniert soweit alles. Nur der Sensor fürs Wasser macht zicken.



    Grüße!

  • sunburstc

    Hast Du es mal anstatt einem Näherungsschalter mit einem Standard mini Reed Kontakt mit pull up Widerstand probiert?

    Meine Gas und Wasserzähler habe ich so realisiert keine fehl Messungen läuft überraschen sehr zuverlässig bzw genau.


    Nein, habe keinen so kleinen Reedkontakt. Ich weiß auch nicht ob die Metallscheibe überhaupt magnetisch ist bei dem Wasserzähler. Ich vermute nicht.

    Mein Zähler: #541

    Ich hatte schon überlegt auf die Lichtschranken Lösung umzuswitchen. Hätte das Material dafür da, möchte mich allerdings noch nicht geschlagen geben, denn es lief ja schon einmal ganz zu Anfang fehlerfrei.


    Aktuell benutze ich die Tasmota Version von arendst:

    Code
    1. Tasmota Version 6.6.0.9(sonoff)
    2. Build-Datum & -Uhrzeit 2019.08.31 18:25:25
    3. Core-/SDK-Version STAGE/2.2.2-dev(38a443e)

    Habe alle Sensoren in der my_config.ino deaktiviert und auf Script gestellt.

    Als Script nutze ich zur Zeit folgende Einstellungen und habe bisher pro Tag nur 3-4L abweichung:



    Wolfi Das Problem ist wirklich nur der Wasserzähler. Die Gasuhr mit ihrem Reedkontakt aus nem alten Fahrradtacho funktioniert einwandfrei. Keine Fehlmessung seit ich es vor zwei Wochen montiert habe.

    Bei dem Wasserzähler habe ich allerdings alles erlebt inzw. von mehrere 100L Wasser mehr innerhalb von 10h, als auch 20-30L weniger. Woran es genau liegt ist mir immer noch schleierhaft. Habe alle möglichen Pollzeiten bisher probiert. Ich bin leider noch nicht dazu gekommen einen Kondensator dazwischen zu löten. Eine weitere Alternative wäre noch die Kabel auch fest ans WEMOS zu löten. Aktuell läuft es noch auf der Wemos Seite mit Patchkabeln. Das andere Ende ist verlötet (Sensorseite).


    gemu2015 Wenn ich mich recht erinnere, hatte ich ja schon darüber berichtet, dass ich ab und zu Probleme habe auf die Website des Wemos zu kommen.Das sie manchmal einfach unerreichbar ist und dann 2 Minuten später wieder aufrufbar. Dieses Problem besteht mit der akt. Dev Version von arendst nicht. Kein Plan wo genau da der unterschied ist.

  • sunburstc


    Halte zur Zeit meinen Fork up to date mit Arends.


    Der Unterschied ist aber der default core. Bei mir steht der auf 2.42 bei Arends auf 2.6


    2.6 soll keine Abbrüche mehr erzeugen. Allerdings habe ich damit fast keine Probleme mit 2.42 Hängt wohl auch stark vom Router und MQTT Server ab.


    Das Problem ist dass bei einem Abbruch MQTT versucht eine Verbindung abzusetzen und dann hängen bleibt.


    Währenddessen wird kein Counter Poll ausgeführt. Deshalb besser Counter IRQ nehmen.


    Ansonsten baue ich gerade noch eine Modbus Decodierung in den Treiber ein.


    In Scripter gibt es auch interessante Neuigkeiten. Du kannst jetzt Web Anzeigen in Scripter erzeugen und damit z.B. Tages und Wochenverbräuche berechnen und auf der Hauptseite anzeigen.


  • Bzgl. Core: Gut zu wissen das es daran liegt!


    Stark! Wirklich!

    Gibt es denn schon irgendeine Beschreibung oder ein Beispiel zu den Neuerungen?


    Ich habe übrigens beobachtet, dass wenn der Näherungsensor geschlossen bleibt, also das Metallplättchen unter dem Näherungssensor stehen bleibt, der Counter langsam über die Zeit immer weiter hoch Zählt.