NEWS
Tasmota script Counter wird nicht gespeichert
-
Hallo,
um einen Gaszähler mitzulesen, habe ich mir eine Tasmota Version mit
#define USE_SCRIPT, #define USE_SML_M, #undef USE_RULES, #define USE_SCRIPT_WEB_DISPLAY
erzeugt und in einen D1 Mini Pro geflashed.
Der Reed-Kontakt ist an D5 und GND mit einem 4K7 Widerstand gegen 3V3.
Ein Script aus dem Internet habe ich mir angepasst, läuft auch soweit. (Platine mit dem Reed Kontakt liegt z.Z. noch bei mir auf dem Tisch).
Wenn ich den Reed Kontakt mit einem Magnet betätige, wird gezählt und die KW berechnet.
Ganz oben auf dem Tasmota Web Interface wird "Zähler1..........173" angezeigt, darunter meine Ausgaben.
Counter 1 hat bisher 173 Impulse gezählt.
Zähle ich jetzt 5 Impulse weiter, wird "Zähler1..........178" angezeigt (OK)
Klicke ich auf "Neustart", steht nach kurzer Zeit oben wieder "Zähler1..........178".
Tasmota hat sich die Impulse gemerkt.
Wenn ich wieder 3 Impulse weiterzähle und den D1 Mini stromlos mache, fehlen anschließend die 3 Impulse und der alte Wert erscheint.- Versuch war mit "SaveData 60", so sollen die Daten alle 60 Sekunden gespeichert werden, ohne Erfolg.
- Versuch mit "svars". Ich habe mein Script so abgespeckt, dass alle 30 Sekunden "svars" aufgerufen wird. Aber der Counter wird nicht gespeichert. (Ich habe natürlich die Zeit abgewartet, bevor ich den Strom getrennt habe)
Meine Test-Script:
>D p:c1=0 t=0 >B >S t=t+1 if t>30 then t=0 svars endif >T ;c1=Counter#C1 c1=pc[1] >W c1=%0c1% | t=%0t% #
Was muss ich ändern, damit der Counter-Wert mit "svars" gespeichert wird und so die stromlose Zeit übersteht?
Oder was kann ich sonst machen? -
@martinsu Ich habe die Zählung nicht im Tasmota Device gemacht, sondern zähle in einem Iobroker Blockly. Tasmota liefert nur die Rohzustände des Reed Kontaktes. Zählerwert in einem Userdata Datenpunkt.
Trotzdem ich viel Aufwand bzgl Entpellung usw getrieben habe, gab es immer wieder überzählige Impulse. Die Korrekturrechnungen gingen mir leichter in Blockly von der Hand... 0...4 überzählige Pulse pro Tag in der Heizperiode -
@martinp
...im ioBroker/Blockly wäre natürlich eine Möglichkeit.
Aber eigentlich funktioniert das Script sehr gut, nur die Speicherung bei Stromausfall nicht.
Etwas habe ich noch herausgefunden:
Wenn man in der Konsole Status0 eingibt, kommt eine Menge an Informationen, darin enthalten ist auch Savecount.
Wenn der Reed-Kontakt nun zählt und meine Routine am Befehl svars vorbeikommt, ist anschließend Savecount um 1 höher. Also muss er etwas speichern, nur leider nicht den Counter.Wegen den "überzähligen Pulsen pro Tag", benutzt Du einen Reed-Kontakt? Der kann natürlich prellen.
Hast Du schon mal einen "KY-024 Hall Sensor Modul" getestet? -
@martinsu Meine "Drehscheibe" im Zähler ist nicht magnetisch.
Ich messe mit einem induktiven Näherungsschalterhttps://forum.iobroker.net/topic/71112/indukt-näherungsschalter-und-gaszählerauswertung/51
-
Und ich lese meinen Gaszähler mit dem Wasserzähler-Projekt aus ... https://forum.iobroker.net/topic/36622/wasserzähler-version-2-all-in-device
Und schon gibt es nichts zu zählen und zu berechnen ...
Eigentlich wollte ich einen Screenshot einstellen, stelle aber fest das wohl gestern jemand die Kamera verschoben hat ... Meine Frau hat eine Jacke daran aufgehängt ...
-
@bananajoe sagte in Tasmota script Counter wird nicht gespeichert:
Eigentlich wollte ich einen Screenshot einstellen, stelle aber fest das wohl gestern jemand die Kamera verschoben hat ... Meine Frau hat eine Jacke daran aufgehängt ...
War der Meinung, dass ich mit dem Näherungssensor günstiger zu einer Lösung komme ... Die ESP32 CAMs sind aber inzwischen so billig, dass sie deutlich günstiger, als der induktive Näherungsschalter sind ...
Die Gaszähler-Impulse nimmt aber der Node-MCU mit auf, der auch den Stromzähler über IR-Kopf einliest ...
Für die Fehlimpulse stelle ich mich alle paar Tage mit dem Smartphone vor den Gaszähler und tippe den aktuellen Zählerstand in einen Vis-View, und danach passt es wieder ...
-
@bananajoe
das Projekt mit der "Wasser"-Kamera und Erkennung habe ich auch schon gesehen.
Vorteil ganz klar, man bekäme Absolutwerte, keine Probleme mit Verzählen!
Ich habe mir das bisher nur oberflächlich angesehen, vielleicht der bessere Weg?
Mein Problem ist, dass ich vor dem Gaszähler etwa nur 12mm Platz habe.
Hat schon mal jemand mit Spiegeln gearbeitet? -
@martinp sagte in Tasmota script Counter wird nicht gespeichert:
Für die Fehlimpulse stelle ich mich alle paar Tage mit dem Smartphone vor den Gaszähler und tippe den aktuellen Zählerstand in einen Vis-View, und danach passt es wieder ...
und das brauche ich eben nicht. Das die Kamera verschoben wurde ist das erste Fehlverhalten seit 2 Jahren, normalerweise kommt da keiner ran und ich lasse mir jeden Abend um Mitternacht einen Status mit Bild per Telegramm senden.
Auf den von gestern hatte ich noch nicht draufgeschautWobei: man kann ja beides machen
-
@bananajoe Den einzigen Vorteil bei meiner Lösung, den ich sehe ist, dass ich sowohl den Gas- als auch den Stromzähler mit einem einzigen Node-MCU Modul auswerten kann...
Kann man ggfs die GPIO-Pins der ESP32 Cam auch nutzen, z. B. für einen IR-Lesekopf?
Habe nur beiläufig im Thread mitgelesen "All-In" klingt ja erstmal sehr Vollmundig -
@martinp Also. zum einen der erwähnte Screenshoot:
Zu der Frage "beides": Warum? In Spitzenzeiten hatte ich 3 von den Kameras im Einsatz, für Strom, Gas und Wasser je eine.
Da werden Bilder analysiert, die ESP32 haben genug damit zu tun. Ich würde (und habe und tue das auch immer noch) für jeden Einsatzzweck einen getrennten ESP einsetzen.
Strom wird jetzt nach Zählertausch per "Hichi-Lesekopf", also per Tasmota IR ausgelesen,
Beim Wasserzähler habe ich noch keine Lösung (hat kontrastarmes LCD-Display, Verschlüssungsschlüssel für Auslesen über Funk werden aus Datenschutzgründen nicht herausgerückt)Die Version der Software von Gaszähler ist schon älter, aber ist ausnahmsweise ein "Never Change if it is running" Fall, wenn es sauber und zuverlässig ausließt kann jede Änderung es nur verschlechtern.
-
Thema Fehlimpulse:
Ich hatte mir einen Regenmengenmesser gebastelt, der über eine Wippe und Reed-Kontakt die Impulse zählt, die bei Regen durch die Wippe erzeugt werden.
Die Impulse werden über einen Counter (Sonoff/MQTT/WEMOS D1 Mini) via ioBroker gezählt.
Anhand der Impulse und der Fläche des Regenmesser-Trichters kann dann die Regenmenge ermittelt werden.Soweit zum Prinzip, allerdings traten dann in unregelmäßigen, nicht nachvollziehbaren Abständen, Störimpulse auf.
Diese führten dann natürlich zu einer ehöhten Regenmenge.
Es lag kein mechanisches Problem (Prellen) vor, sondern wie ich nach Internetrecherche feststellen konnte, ein elektrisches.
Durch einfaches Parallelschalten eines Tiefpasses (Widerstand 1k, Kondensator uF) zum Reed-Kontakt, konnte ich die Fehlimpulse erfolgreich eliminieren. Seitdem hatte ich keinen einzigen Störimpuls mehr.
Anbei der Schaltplan meines Regenmengen-Messers.Evtl. ist dieser Tipp ja hilfreich für andere, die ebenfalls Impulse zählen und Störimpulse (keine mechanischen) auftreten?
-
@bananajoe
So kleine LCDs sind meistens für einen bestimmten Blickwinkel gebaut.
Es typ. 3, 6, 9 und 12 Uhr. 3 und 9 gibt es eigentlich nicht.
Weniger oft ist 12 Uhr. Die meisten sind für den Blickwinkel 6 Uhr gemacht.
Was ist, wenn Du die Kamera nicht von oben auf die Wasseruhr schauen läßt, sondern von vorne 6 Uhr. Wann siehst Du die Ziffern am deutlichsten?
Oder hast Du ein Problem, dass die Ziffern eventuell gemultiplexed sind? -
@martinsu muss ich noch mal schauen, ich hatte dann irgendwann aufgegeben. Ich hatte zunächst LED Lampen mit verbaut um die Helligkeit und den Kontrast zu erhöhen. Die LED flimmern aber, auch wenn wir Menschen das nicht sehen. Irgendein Sensor mochte das nicht und der Zähler war nach 2 Wochen Tod. (Oder die 14 Jahre Batterie doch schon leer).
Ich wollte mal einen Hichi dranhalten um zu sehen was per IR kommt, RFID habe ich eine App zum auslesen, per Tasmota RFID konnte ich da aber nicht finden
-
@joergeli sagte in Tasmota script Counter wird nicht gespeichert:
Durch einfaches Parallelschalten eines Tiefpasses (Widerstand 1k, Kondensator uF) zum Reed-Kontakt, konnte ich die Fehlimpulse erfolgreich eliminieren. Seitdem hatte ich keinen einzigen Störimpuls mehr.
Ich habe einen Tiefpass "per Blockly" gemacht... Nur, wenn 10 Sekunden seit der letzten Auslösung vergangen sind, wird ein Impuls akzeptiert:
Der Sensor, den ich aktuell montiert habe, ist recht groß. Davon passt nur einer vor den Drehkreis des Metallsegments.
Hatte zwei kleinere Sensoren besorgt, die sind aber weniger sensibel, und lösen auf die Entfernung zur Metallplatte gar nicht aus ...
Ansonsten hätte ich Sensor 1 nach Auslösung so lange gesperrt, bis Sensor 2 auf der gegenüberliegenden Seite des Drehkreises ausgelöst hätte ...dann das Spiel mit umgekehrten Rollen usw.Rechnung für den Timeout:
10 Liter pro Impuls, ca 11 kWh/ m³ Gas
=>0,11 kWh pro Impuls.
bei einer Brennerleistung von 18 kW also maximal 18/0,11 = 164 Impulse pro Stunde. => Maximal ein Impuls alle 22 Sekunden ... -
@martinp Die Empfindlichkeit von Reed-Kontakten muss man im Datenblatt nachlesen (und hat fast nichts mit der Baugröße zu tun),
Im Datenblatt gibt es typischerweise einen Wert "AT" = ampere-turn, je niedriger desto empfindlicher. (kurze Erklärung bei Wikipedia unter "Amperewindung") -
@martinsu Bei mir ist kein Reed-Kontakt im Einsatz, sondern so etwas:
https://www.ebay.de/itm/234142256430
Messverfahren basiert auf der Störung eines magnetischen Wechselfeldes durch Annäherung von Metall ..
Das Metall muss selber kein Permanentmagnet sein (wie beim Reed - Kontakt)Mein Gaszähler hat eine nichtmagnetische Metallscheibe, daher ist ein Reed-Kontakt ungeeignet