Beiträge von PPP

    Und? Wie macht er sich bisher?

    Ganz ok - aber nicht perfekt.

    An den kalten Tagen, an denen wir einen starken Durchlauf hatten, da wurden ca. 0,5 m³/Tag zu viel erfasst. An den normalen Tagen funktioniert es allerdings ganz gut. Es ist auf jeden Fall wesentlich besser als der einfache Zähler vorher.

    Also der Gaszähler kostet mich Lebenszeit und min. 3 neue graue Haare!
    Mit dem neuen Ansatz lief es zuerst schlechter als je zuvor. Das lag daran, dass der Hall-Sensor am anlogen Eingang sehr wohl prellt (und wie!).

    Nach mehreren weiteren Tests habe ich nun eine Variante gefunden, die seit gestern zum ersten Mal richtig zählt.

    Ich nutze jetzt einen Median in >F. Falls irgendwer auch einmal einen Hall-Sensor analog mit Tasmota nutzen möchte, hänge ich mein aktuelles Script an.
    Wenn das in den kommenden Tagen doch wieder auseinanderlaufen sollte, dann gebe ich auf und werde doch ein weiteren "ai on edge" nutzen.

    Und falls noch jemand auf die (nur mittelprächtige) Idee kommen sollte einen ESP32-S2 mini nutzen zu wollen:
    Das Ding ist ein ESP8266/ESP32 Zwitter. Bei diesem Modell funktioniert adc() nur an GPIO1 (ADC1_0). Die anderen Anlog-Pins kann man zwar nutzen, aber ich habe keinen Weg gefunden, sie per Script auszulesen.

    Ich habe nun weiter experimentiert und bin auf 2 verschiedene Lösungsansätze gekommen:

    per adc(1 36) kann ich den GPIO36 auf meinem Test ESP32 unter >F auslesen. Das ist im Prinzip genau das, was ich möchte. Das klappt leider auf dem ESP32-S2 (der ist im Keller) leider gar nicht. Da erhalte ich nur 0 als Wert von adc(1 9). Dort bin ich an pin9, da dieser ein Analog Pin auf dem kleinen S2-Mini ist.

    Der 2. Ansatz ist eher ein Workaround. Hier habe ich den digital-pin als switch mit relay konfiguriert und als SwitchDebounce 600ms gesetzt.
    Unter >E gehe ich dann auf den power Status ein und zähle den höher. Das scheint zu funktionieren und bisher habe ich kein prellen erzeugen können.

    Hi, erst einmal Danke für die Hilfe!

    Ich experimentiere nun noch einmal mit dem digitalen Zähler. Ich habe einen 10k Pull-up zwischen data/3,3V, data ist an GPIO23

    Der funktioniert im einfachen Fall (normaler Durchlauf) auch gut. Doch sobald der Magnet in der Nähe stehen bleibt, zählt der Counter immer weiter, so als würde gar kein debouncing stattfinden.

    In einem weiteren Test habe ich GPIO23 nun als switch mit einem SwitchDebounce von 500 angelegt. Und siehe da: On/off funktioniert genau wie gewünscht. Es bleibt dauerhaft On oder Off, auch wenn der Magnet in der Nähe stehen bleibt. Wenn ich mir den pin[23] dann in >F ausgeben lasse, dann sehe ich, dass dort kurze Schwankungen vorkommen: 0000100000010001000000 (so in etwa). Doch dank des SwitchDebounce bleibt der switch auf Off.

    Irgendetwas muss ich falsch machen!

    Mein Script habe ich nun auf das Minimum reduziert:

    Code
    >D
    >B
    =>sensor53 r
    >M 1
    +1,23,c,1,-500,Gas
    1,1-0:1.8.0*255(@10,Gesamt,m3,Gesamt,1


    Hier noch der Teil aus meiner user_config_override.h

    Ich habe das nun getestet, allerdings noch mit einem Zähler den ich hochzähle. Ansonsten habe ich ja nichts zum Rechnen.

    Doch scheinbar bleibt die Datenübernahme zu träge und schnelle Wechsel gehen teilweise verloren (nicht alle).

    Das Problem bei >F ist, dass dort der Wert von ANALOG#A1 nicht bekannt ist: "var not found: ANALOG#A1

    Ich hatte den Teil zwischenzeitlich auch einmal in >F , dann ganz ohne Rechnung und ohne Ausgaben (bis auf >W).
    Doch mein Gefühl war, dass die Prüfung zwar wesentlich schneller ist, die Daten in >T aber nicht schneller aktualisiert werden.

    Ich hatte auch den kompletten Logik-Teil einmal in >F, das hat aber dazu geführt, dass der esp nach einer Weile (10-30 Minuten) nicht mehr erreichbar war,

    Hi, ich habe nun doch noch ein paar Fragen.

    Ich versuche unseren Gaszähler mit einem Hall-Sensor (49e) zu erfassen. Das funktioniert schon deutlich besser als mit meinem reed-Kontakt (der blieb nach einer Weile immer hängen), doch ich habe das Problem, dass immer wieder ein paar Durchläufe nicht erfasst werden - immer wenn hier im Haus ordentlich gefeuert wird, dann ist eine Änderung max. 3s lang.

    Ich habe nun viel experimentiert und mein Script einige Mal geändert.

    Doch egal was ich mache, mein Problem ist, dass die Übernahme des Analog-Wertes in der teleperiod recht träge ist. Ich habe mir testweise den Wert in die console printen lassen und teilweise dauert es >5s bis der Wert dem entspricht, der auf der Startseite für analog1 ausgegeben wird. Laut der Doku wird der >T Bereich min. alle 100ms durchlaufen, doch das sehe ich einfach nicht.

    Ich bin mit der Logik nun in den >S Teil gegangen und habe das Gefühl, dass es etwas besser läuft. Trotzdem rutscht immer wieder ein Messpunkt durch.

    Wie kann ich das Script optimieren, dass die Änderungen zügiger erfasst werden?

    Hier ist mein komplettes Script. Den Zähler für Gas nutze ich im Prinzip nur virtuell. Ich erhöhe ihn, wenn eine analoge Änderung wahrgenommen wurde. Der ist auf einen ungenutzten GPIO konfiguriert.
    Als Board ist ein esp32-s2 mini im Einsatz.

    Ich kann es leider nicht mehr testen, da der digital pin verrückt spielt, seit der analog pin auch angeschlossen ist (er zählt kontinuierlich hoch)

    Das verstehe ich nicht wirklich, habe aber gerade wenig Lust, es noch einmal zu ändern. Daher bleibe ich nun erst einmal bei meiner analogen Lösung und hoffe, dass sie nun stabiler läuft (bisher sieht es gut aus).

    Das sieht derzeit so aus (nur der relevante Teil in >T):

    Hallo meierchen006,

    das mit der Klammer werde ich direkt einmal versuchen. Die Reihenfolge ist bei mir im Script richtig und hier durch einen wilden Kampf mit der Quellcode-Funktion verrutscht.

    Ich habe gestern noch einen Ansatz gebaut, der den Analog Pin nutzt, doch so ist es evt. einfacher.

    Momentan sieht der Teil bei mir so aus:

    Code
    >M 2
    +1,4,s,0,9600,SML
    1,77070100010800ff@1000,Verbraucht,KWh,Total_in,4
    1,77070100020800ff@1000,Eingespeist,KWh,Total_out,4
    1,77070100100700ff@1,Power,W,Power_curr,1
    2,=h====================
    +2,39,c,1,-25,Gas
    2,1-0:1.8.0*255(@10,Gesamt,m3,Gesamt,1)

    Hi, ich habe mich nun durch viele Seiten geklickt und nach "Gas" gesucht, doch so richtig werde ich nicht schlau draus.

    Folgendes: Ich versuche per hall-sensor (49e) unseren Gaszähler auszulesen. Zuerst hatte ich einen reed-Kontakt genutzt, doch der blieb nach einer Weile immer hängen, daher habe ich auf den hall-sensor umgerüstet. Hierbei gehe ich an der Digital-Pin des Hall-Sensors und nutze ihn im Prinzip wie den reed-Kontakt vorher (zwischen VCC und dem pin habe ich den 4,7k Ohm Pullup gelassen). Der hall-sensor löst jetzt sehr zuverlässig aus, doch nun prellt es teilweise ziemlich stark. Ich habe inzwischen gelernt, dass das daran liegt, wenn der Zähler in ungünstigen Lagen stehen bleibt und das per debounce zu lösen ist.

    Dann habe ich den Fork von gemu2015 kompiliert und nach und nach das debouncing von -500ms bis nun -6000ms erhöht. Das führt auch zu weniger "prellen", doch alle paar Stunden wird wieder zu viel gezählt.

    Code
    2,1-0:1.8.0*255(@10,Gesamt,m3,Gesamt,1)
    +2,14,c,0,-6000,Gas

    Ich habe nun viel gegoogelt und unter anderem die Lösung (von Simon42) gefunden, bei der mit esp-home der analog-pin ausgelesen wird. Diesen habe ich auf pin9 (Esp32-S2) angeschlossen und erhalte hier Werte von 2083-1850. Doch wie kann ich das in "Tasmota Scripting Language" umsetzten? Also dass der counter nur bei < 1860 einen hochzählt? Oder gibt es eine andere Lösung, von der ich noch nichts weiß?