Gaszähler (Counter) mit Tasmota Firmware

  • Hallo

    AingTii hatte hier einen Beitrag unter Hardware eröffnet.

    Doch mir scheint es eher ein Softwareproblem mit Tasmota zu sein, denn ein Hardwareproblem.

    Also nochmal:

    so ist der Gaszähler angeschlossen.

    &thumbnail=1

    Das ist bei Tasmota eingestellt:

    3466-unbenannt-jpg

    Das ist mein Ergebnis vom Test gestern

    ich habe jetzt folgendes eingestellt in der Konsole:

    11:44:42 CMD: counterType

    11:44:42 RSL: RESULT = {"CounterType1":0}

    counterType sollte "null" sein, war bei mir so eingestellt.

    11:44:54 CMD: counterDebounce 3200

    11:44:54 RSL: RESULT = {"CounterDebounce":3200}

    das ganze habe ich jetzt zum testen mit der obigen Hardware -Schaltung an meinen Gaszähler gehängt.

    Im Moment zählt er immer schön eins hoch.

    Tabelle zum vergleichen der Daten

    Datum | Uhrzeit Gaszähler esp 8266 Node MCU (Zähler) Fehler
    14.03.2019 | 13:42 9956,92 995692 =
    14.03.2019 | 13:50 9956,94 995695 +1
    14.03.2019 | 14:21 9957,18 995721 +3
    14.03.2019 | 15:00 9957,45 995755 +10

    also der Zähler läuft immer noch weg :cursing:

    ESP Zähler wieder außer Betrieb genommen, macht so keinen Sinn!

    Hat evtl. jemand eine Idee warum der Zähler falsch zählt?

    Was ist der Unterschied zwischen den Countern?:

    Counter1 (42)

    Counter1n (94)

    CounterDebounce 3200 = 3,2 sekunden

    CounterDebounce 100 = 0,1 sekunden

    14:30:12 CMD: counterDebounce 100

    14:30:12 RSL: RESULT = {"CounterDebounce":100}

    14:30:25 CMD: counterDebounce

    14:30:25 RSL: RESULT = {"CounterDebounce":100}

    werde nochmal mit diesen Daten testen.

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Ab 17.03.2019 hat gemu2015 die Firmware angepasst sodass es funktioniert.

    Dazu sind weitere Einstellungen nötig:

    19:55:58 CMD: counterdebounce

    19:55:58 RSL: RESULT = {"CounterDebounce":1000}

    19:56:05 CMD: countertype

    19:56:05 RSL: RESULT = {"CounterType1":0}

    sowie das Zitat beachten :!:

    Herzlichen Dank nochmal an gemu2015 für die Unterstützung und entwickeln des Treibers xsns01_counter.ino :thumbup:

    5 Mal editiert, zuletzt von meierchen006 (18. März 2019 um 09:34)

  • Hallo,

    Datum | Uhrzeit Counter1 Gaszähler Fehler
    16.03.2019 | 14:48:37 996764 9967,64 =
    16.03.2019 | 18:14:21 996844 9968,39 +5
    16.03.2019 | 18:54:43 996892 9968,79 +13
    16.03.2019 | 19:01:19 996898 9968,84 +14

    also auch mit dieser Einstellung läuft der Counter1 davon :cursing:

  • Hallo,

    Beim Gaszähler haben wir einen Reed Kontakt. Dieser wird von der Zählerwalze durch einen Magnet ausgelöst. Die Impulsdauer ist deshalb nicht definiert, es hängt davon ab wie viel Gas verbraucht wird. Es kann auch sein, dass die Walze stehen bleibt und dann der Kontakt für eine ganze Weile geschlossen ist.

    Das führt im Tasmota Counter mode zu Problemen, denn der Reed prellt beim Öffnen und Schließen.

    Debounce hilft uns hier nicht weiter. (kann auch ganz kurz stehen ca 10 ms)

    Da die Prellzeit von Reed Kontakten unter 100 uS ist spielt das kaum eine Rolle.

    Ich habe in Tasmota jetzt einen GAS_COUNTER_MODE für counter1 eingebaut der das berücksichtigt. (ist per default eingeschaltet)

    Bitte mal ausprobieren.

    Was ist der Unterschied zwischen den Countern?:

    Counter1 (42)

    Counter1n (94)

    n bedeutet "no internal pull up", also ohne n wird er interne Pullup eingeschaltet, sonst nicht (floatender Eingang)

    Grüße

    gemu2015

  • Hallo gemu2015,

    der Test läuft seit 11:30 Uhr.


    Datum | Uhrzeit Counter1 Gaszähler Fehler
    17.03.2019 | 11:29:12 997169 997169 =
    17.03.2019 | 11:41:30 997183 9971,81 +2

    11:29:12 CMD: Counter1

    11:29:12 RSL: RESULT = {"Counter1":997169}

    11:41:30 CMD: Counter1

    11:41:30 RSL: RESULT = {"Counter1":997183}

    Also der Zähler läuft immer noch davon, auch nach nur kurzer Zeit !

    Einmal editiert, zuletzt von meierchen006 (17. März 2019 um 11:51)

  • Hast du mal versucht zu beobachten, wann die zusätzlichen Impulse entstehen?

    'Zugleich' mit den tatsächlichen Impulsen vom Zähler (dann kann man es auf Prellen eingrenzen)

    oder falls dazwischen, dann ein Problem bei Kabel zum Reed, instabile Versorgung...

    Wenn ich mit einem Reedkontakt entsprechend CounterDebounce einstelle,

    gelingt es mir nicht eine Fehlzählung zu provozieren - egal ob beliebig Kontakt Schließen oder Öffnen

    (Gaszähler hab ich aber keinen zum Testen).

    LG

  • Hallo,

    Nein habe ich nicht werde ich mal beobachten.

    Kabel zum Reedkontakt sind nur ca. 48cm direkt auf gelöteten Schraubkontakt zur Platine des esp8266 auf dieser sind auch die Verbindungen zum Stromzähler.

    Ich habe jetzt den Counter1 mal einfach so mit Reedkontakt da hängen ohne im Betrieb zu sein mit Gaszähler.

    Zählerstand vom counter1 ist 997309 um 14:56:38 Uhr.

    Der dürfte sich jetzt nicht verändern!

    2 Mal editiert, zuletzt von meierchen006 (17. März 2019 um 15:01)

  • haben wir beim debounce evtl. einen Denkfehler?
    wenn wir den auf 3200 stellen dass es viel zu lange ist, da er dann beim lösen nach wesentlich mehr Sekunden
    dann dieses doch mitzählt?

    Vielleicht sollten wir wirklich nur ein paar Millisekunden angeben, damit wirklich das prellen eleminiert wird und

    nicht das loslassen?

  • Hallo,

    bin jetzt erst wieder zu Hause und habe nachgeschaut immer noch der gleiche Zählerstand wie heute Mittag

    14:56:38 Uhr >> 997309

    19:33:02 Uhr >> 997309 also liegt es am prellen

    gemu2015

    werde jetzt neu laden und testen

    19:55:58 CMD: counterdebounce

    19:55:58 RSL: RESULT = {"CounterDebounce":1000}

    19:56:05 CMD: countertype

    19:56:05 RSL: RESULT = {"CounterType1":0}

    19:52:46 CMD: Counter1 997523

    19:52:46 RSL: RESULT = {"Counter1":997523}

    20:06:34 CMD: Counter1

    20:06:34 RSL: RESULT = {"Counter1":997542}

    20:38:01 CMD: Counter1

    20:38:01 RSL: RESULT = {"Counter1":997565}

    21:00:56 CMD: Counter1

    21:00:56 RSL: RESULT = {"Counter1":997575}

    21:33:03 CMD: Counter1

    21:33:03 RSL: RESULT = {"Counter1":997593}

    Datum | Uhrzeit Counter 1 Gaszähler Fehler
    17.03.2019 | 19:52:16 997523 9975,23 =
    17.03.2019 | 20:06:34 997542 9975,42 =
    17.03.2019 | 20:38:01 997565 9975,65 =
    17.03.2019 | 21:00:56 997575 9975,75 =
    17.03.2019 | 21:33:03 997593 9975,93 =

    So heute läuft die Heizung nicht mehr, sieht aber sehr sehr gut aus.

    Danke gemu2015

    11 Mal editiert, zuletzt von meierchen006 (17. März 2019 um 21:42)

  • Hier noch ein paar Erläuterungen zur Software Entprellung von Gaszählern (Wasserzählern etc) :

    die Datei xsns01_counter.ino könnt ihr bei Bedarf in die neueste Tasmota release übernehmen.

    eingeschaltet wird der Mode in dem ihr in der Datei xsns01_counter.ino =>

    #define GAS_COUNTER_MODE 5000

    angebt. die 5000 ist die Wartezeit in Microsekunden auf das Prellen beim Abschalten des Kontakts.

    diese Zeit sollte so kurz wie eben möglich sein da wir uns in einer Interrrupt Routine befinden,

    insbesondere wenn der ESP noch andere Sachen im Interrupt erledigen muss. (ist von dem Reed Kontakt abhängig)

    da ich das nicht selbst ausprobieren konnte (mangels GAS Zähler) habe ich das etwas gross vorgegeben.

    Gruß

    Gemu

  • OK, teste ich sobald ich dazu komme.

    noch kurz zum verständnis, der Counter zählt nur eine Richtung sprich ansteigend oder abfallend oder?

    Ist es nicht so, dass im Grunde nur der Wechsel dazuführen kann, dass er prellt?
    Da der Gaszähler aber ja recht langsam dreht, kann die Zeit bis dass magnetfeld so stark ist, dass der Reed

    Stabil geschaltet hat recht lang sein. Im suboptimalsten Fall, bleibt der zähler genau dort stehen wo die "Grauzone"
    ist und der Reed-Kontakt "zittert" hin udn her, wenn dieser zustand dann über die entprellzeit liegt, zählt der
    Counter mehrfach....

    Oder denke ich da falsch?

    Danke

  • Hallo,

    ich habe jetzt die neue Software von heute Morgen 18.03.2019 09:04 Uhr geladen und neu kompiliert sowie installiert.

    Über den Tag werde ich nochmal eine Tabelle einstellen mit Ergebnissen.

    Gaszähler läuft ab 10:30 Uhr

    11:01:23 CMD: counter Typ

    11:01:23 RSL: RESULT = {"Counter1":0}

    11:01:53 CMD: counterdebounce

    11:01:53 RSL: RESULT = {"CounterDebounce":1000}


    Datum | Uhrzeit Counter1 Gaszähler Fehler
    18.03.2019 | 09:29:25 997759 9977,59 =
    18.03.2019 | 10:31:59 997762 9977,62 =
    18.03.2019 | 10:57:28 997819 9978,18 +1
    18.03.2019 | 11:16:51 997837 9978,35 +2
    18.03.2019 | 11:26:27 997851 997847 +4

    Berechnen der Dezimalstellen:

    Da ich ja nicht der dicke Programmierer bin habe ich versucht die Dezimalstellen des Counter1 zu erstellen.

    Dazu möchte ich den Counter1 mit 0,01 Multiplizieren damit aus 997759 >> 9977,59 wird.

    Idealerweise hätten wir dahinter noch die Einhait in "m³" da die meisten Zähler so sind.

    Das Multiplizieren habe ich mir so vorgestellt:

    Ich erstelle meine Var1 mit 0,01

    09:35:14 CMD: counter1

    09:35:14 RSL: RESULT = {"Counter1":997759}

    09:38:31 CMD: Var1 0,01

    09:38:31 RSL: RESULT = {"Var1":"0,01"}

    Danach Multipliziere ich Var1 mit Counter1

    09:39:28 CMD: Mult1 counter1

    09:39:28 RSL: RESULT = {"Mult1":"0.000"}

    Das funktioniert aber nicht wie ich es mir vorstelle, im Hauptmenü bleibt die Anzeige "Zähler1" bei 997759.

    Übrigens wäre es schön wenn man "Zähler1" mit "Gaszähler" austauschen könnte.

    AingTii

    Dein Gedankenspiel ist schlüssig, deshalb hat gemu2015 die Software angepasst. Ich werde heute den Ganzen Tag immer mal wieder den Zählerstand kontrollieren um zu sehen ob es passt.

    5 Mal editiert, zuletzt von meierchen006 (18. März 2019 um 11:31)

  • Hallo,

    nachdem wir heute Morgen ja Fehler hatten habe ich jetzt mit dem Download vom 18.03.2019 11:56 Uhr nochmal kompiliert und installiert.

    Für meinen Wunsch hat gemu2015 auch eine Lösung eingebaut

    • statt Zähler1 jetzt Gaszähler1
    • Zählerstand als Dezimalzahl
    • Einheit cbm

    umgestellt habe ich jetzt in der Software

    • #define GAS_COUNTER_MODE 6000

    mal sehen was das bei jetzt bringt.

    Laut Info von gemu2015 habe nur ich das Problem.

    Datum | Uhrzeit Counter1 Gaszähler Fehler
    18.03.2019 | 12:52:00 9979.08 9979,08 =
    18.03.2019 | 13:17:06 9979.12 9979,12 =
    18.03.2019 | 14:00:26 9979.23 9979,22 +1
    18.03.2019 | 14:28:43 9979.35 9979,34 +1

    mein Aufbau:

    5 Mal editiert, zuletzt von meierchen006 (18. März 2019 um 14:31)

  • Hallo,

    nochmal neue Software mit Debug LED.

    umgestellt habe ich jetzt in der Software

    • #define GAS_COUNTER_MODE 7000
    Datum | Uhrzeit Counter1 Gaszähler Fehler
    18.03.2019 | 14:39:11 9979.38 9979,38 =
    18.03.2019 | 15:17:15 9979.57 9979,54 +3
    18.03.2019 | 16:24:09 neu 9979.83 9979,83 =
    18.03.2019 | 16:39:30 9979.99 9979,97 +2
    18.03.2019 | 17:01:55 9980.16 9980,14 +2

    So ich habe jetzt mit der Debug LED sehen können wann die LED eingebaute Board LED leuchtet.

    ca. 6,5 Sekunden beim jetzigen Gasverbrauch.

    LED beginnt zu leuchten wenn die "9" mittig vorsteht

    LED geht aus wenn die "1" mittig vorsteht

    So ich habe mir jetzt einen zweiten Node MCU genommen und gleiche Software mit DEBUG LED

    Als Reedkontakt einfach eine Drahtbrücke mit der ich den Reedkontakt simuliere:

    Wenn ich ganz kurz hintereinander zwei Impulse gebe zählt der esp auch zwei, sieht man LED "EIN-Aus-EIN-Aus" und am PC Hauptmenü.

    Es ist doch so gedacht dass wenn zwei Impulse direkt hintereinander kommen das der zweite Ignoriert wird, wenn ich das richtig verstanden habe.

    • #define GAS_COUNTER_MODE 7000 | entspricht doch 7000µs = 7ms
    • müsste ich dann nicht geringer werden also statt Anfangs 5000 jetzt vielleicht 3000?

    2 Mal editiert, zuletzt von meierchen006 (18. März 2019 um 17:12)

  • Hallo,

    nochmal neue Software mit Debug LED.

    umgestellt habe ich jetzt in der Software

    • #define GAS_COUNTER_MODE 3000
    Datum | Uhrzeit Counter1 Gaszähler Fehler
    18.03.2019 | 17:26:06 9980.28 9980,28 =
    18.03.2019 |17:59:06 9980.81 9980,81 =
    18.03.2019 |18:32:38 9981.08 9981,08 =
    18.03.2019 |18:47:05 9981.27 9981,27 =
    18.03.2019 |19:32:40 9981.61 9981,61 =
    18.03.2019 |19:50:31 9981.75 9981,74 +1
    18.03.2019 |20:17:12 9981.89 9981,88 +1
    18.03.2019 |21:08:49 9982.25 9982,24 +1
    18.03.2019 |21:38:07 9982.35 9982,34 +1

    3 Mal editiert, zuletzt von meierchen006 (18. März 2019 um 22:16)

  • Hallo,

    nochmal neue Software mit Debug LED.

    umgestellt habe ich jetzt in der Software

    • #define GAS_COUNTER_MODE 1000
    Datum | Uhrzeit Counter1 Gaszähler Fehler
    19.03.2019 |10:30:00 9983.97 9983,97 =
    19.03.2019 |11:20:02 9984.51 9984,49 +2
    • #define GAS_COUNTER_MODE 1500
    Datum | Uhrzeit Counter1 Gaszähler Fehler
    19.03.2019 |11:20:02 9984.49 9984,49 =
    19.03.2019 |14:28:53 9985.20 9985,20 =
    19.03.2019 |15:50:01 9985.43 9985,43 =
    19.03.2019 |18:38:10 9986.42 9986,41 +1

    Habe die Tests eingestellt macht keinen Sinn!

    Ich habe ein MAX6816EUS Switch Debouncers bestellt kommt ende des Monats!

    5 Mal editiert, zuletzt von meierchen006 (19. März 2019 um 19:14)

  • Hallo,

    nochmal neue Software.

    umgestellt habe ich jetzt in der Software

    • #define GAS_COUNTER_MODE 5000
    • #define GAS_POLL_MODE
    Datum | Uhrzeit Counter1 Gaszähler Fehler
    20.03.2019 |10:45:56 9989.49 9989,49 =
    20.03.2019 |13:37:31 9990.09 9990,09 =
    20.03.2019 |
    20.03.2019 |

    3 Mal editiert, zuletzt von meierchen006 (20. März 2019 um 13:39)

  • Alter Schwede, Du hängst mich ab bei den Sachen...

    Ich habe grad mal alles angeschlossen udn teste seit ein zwei Tagen.

    Was ist denn

    #define GAS_POLL_MODE

    ?

    Was für ein Reed Contact nimmst Du denn?

    Ich habe so einen kleinen 13mm Glaskolben, aber ich weiß dass der bei einem Kumpel nicht ging, er hat einen anderen
    genommen, da der von mir nicht anzog.

    Das Bild aus #14 verstehe ich nicht, wofür ist denn der Rest rs232 zu ttl usw.?