NEWS
Reedkontakt, Umzug von ESP Easy nach Tasmota
-
Ich habe meinen Gaszähler die letzten zwei Jahre mit einem Reedkontakt und einem 8266 mit ESP Easy ausgelesen.
Da inzwischen ein Smart Meter dazu gekommen ist, den ich mit Tasmota erfolgreich auslese, möchte ich den Reedkontakt zusätzlich an diesen 8266 anschließen.
Mit diesen Einstellungen funktioniert der Reedkontakt bestens:
Wie kann ich diese Einstellungen in Tasmota realisieren?
-
genau dazu hab ich auch mal einen Beitrag vor paar Monaten gestartet, da sind viele Infos.
Suche gerade den Linkhttps://forum.iobroker.net/topic/71153/alte-fenstersensoren-smart-machen/
-
Sorry Leute, ich benötige doch noch eure Hilfe.
Am ESP hängen bereits ein DS18B20 Temperaturfühler und ein Smart-Meter Lesekopf.
Das Script sieht derzeit so aus:>D >B =>sensor53 r >M 1 +1,3,s,0,9600,MT631 1,77070100010800ff@1000,Gesamtverbrauch,kWh,Total_in,2 1,77070100100700ff@1,Aktueller Verbrauch,W,Power_cur,0 #
Wie muss ich es ändern bzw. ergänzen, wenn ich einen Reedkontakt an GPIO-14(D5) anschließe?
Als "Switch" einstellen?
Wie wird der "Pull-Up" aktiviert?
Und die Entprellung? -
@cephalopod Bei meinem Gaszähler reicht ein Reed-Kontakt nicht, weil das im Gaszähler rotierende Metallstück nicht magnetisch ist ...
Prinzipiell funktioniert das mit dem induktiven Schalter den ich nutze ähnlich da auch Impulse am ESP ankommen, die gezählt werden müssen ...
Ich habe die Logik aber im ioBroker gemacht, also der in Tasmota nur grob "debouncete" Impuls wird von iobroker direkt als Datenpunkt ausgewertet ...
https://forum.iobroker.net/topic/71112/indukt-näherungsschalter-und-gaszählerauswertung
-
@martinp
Es geht mir nicht darum, OB es funktioniert, ich WEISS, dass es geht, weil ich es schon seit Jahren mit einem ESP laufen habe.Das ist mein Java Script dafür:
Wegen meines neuen Stromzählers (Smart) musste ich auf dem 8266 das bisherige "ESP Easy" auf "Tasmota" umflashen.
Ich raffe einfach das Tasmota Script nicht, das ist alles.Hier mein Dashboard des Gasverbrauchs:
-
@cephalopod Steht doch alles im Link - mit Screenshots und Allem...
Ich nutze auch Tasmota.
Wieso willst Du das alles in einem Tasmota Script machen? Puls in Datenpunkt. Rest über Blockly. Keine Zeile Tasmota Script.... -
@martinp
Nein, ich will nicht unbedingt ein "Script" in Tasmota machen.
Mir reicht es völlig den Impuls in den ioBroker zu bekommen, daran hapert es lediglich.Was muss ich denn sonst machen, außer den Reedkontakt an D5 und GND anzuschließen und den GPIO14 auf "Switch" zu schalten?
Wir der Impuls dann sofort per MQTT übertragen?Wie kann ich dann im ioBroker der Pull-Up Widerstand im 8266 einschalten?
Kann ich dort dann die 10 ms Entprellung einstellen? -
Ich bin etwas weiter.
Das hat geholfen:Der Trick war nicht "Switch" zu verwenden, sondern "Counter".
Habe auch schon einen Alias dazu angelegt und werde damit das schon bestehende Java Script verwenden:
Den Pull-Up werde ich Hardwaremäßig mit einem Widerstand lösen und die Entprellung wird mit
CounterDebounce 500
direkt eingestellt.
Frage:
Bleibt dieser Wert beim reboot des 8266 eigentlich eingestellt oder muss er immer wider neu gesetzt werden? -
Bei mir ist der Impulsgeber an D4 angeschlossen - den Pull-Up habe ich nicht aktiviert ...
Dann habe ich noch in der Tasmota-Konsole
buttondebounce 50
eingegeben (ist aber eigentlich default)
Da ich den Stromzähler mit dem gleichen Modul auslese, und das Auseinanderpflücken des JSON im Sonoff Adapter entfällt, habe ich das Ding im Sonoff eingebunden ...
Der Status kommt bei mir in
sonoff.0.Stromzaehler_B5F63F.Switch1
Im Blockly wird auf einen Puls in 10 Sekunden limitiert
Was bei Dir passt, hängt von der Kesselleistung und der Liter / Puls Konfiguration des Zählers ab...
Bei mir 10 Liter Gas / Puls ( ca 0,11 kWh) und Gas - Verbraucher mit ca 20 kW thermischer Leistung.
Heißt also, maximal 20 / 0,11 = 200 Pulse pro Stunde, oder minimal 18 Sekunde Abstand zwischen den Pulsen - da sind 10 Sekunden o. k.
-
24 h sind um.
Es funktioniert mit Tasmota leider nicht, was mit ESP Easy Jahrelang funktioniert hatEs werden zu wenige Impulse gezählt.
- Der Reedkontakt wurde nicht angefasst, er sitzt immer noch an der selben Stelle
- Es wird der gleiche GPIO-14(D5) verwendet
- Es wird die gleiche Debounce Time von 10 mSec eingestellt
- Es wird auch der interne PullUp verwendet (durch Counter anstatt Counter_n)
- Es wird alle 10 Sekunden ein Datenpaket gesendet.
- Die Blockly Auswertung im ioBroker ist die selbe
Wobei letzteres keine Rolle spielt, der Counter in Tasmota zählt einfach nicht hoch.
-
Gelöscht...
-
@cephalopod said in Reedkontakt, Umzug von ESP Easy nach Tasmota:
Wobei letzteres keine Rolle spielt, der Counter in Tasmota zählt einfach nicht hoch.
Zählt er GAR NICHT, oder fehlen Impulse?
-
@martinp sagte in Reedkontakt, Umzug von ESP Easy nach Tasmota:
@cephalopod said in Reedkontakt, Umzug von ESP Easy nach Tasmota:
Wobei letzteres keine Rolle spielt, der Counter in Tasmota zählt einfach nicht hoch.
Zählt er GAR NICHT, oder fehlen Impulse?
Es fehlen jede Menge Impulse.
Wenn ich es mit einem Pinnwandmagneten simuliere klappt es, wenn das Zählwerk des Gaszählers sich bewegt werden nur sporadisch Impulse erfasst. Eine Logik dahinter konnte ich noch nicht ermitteln.Es MUSS an der Software/Firmware (Tasmota / ESP Easy) liegen, weil mit der identischen Hardware (Reedkontakt bzw. ESP 8266) lief es über ein Jahr so zuverlässig, dass ich nur alle paar Wochen die zweite Nachkommastelle gelegentlich von Hand korrigieren musste.
-
@cephalopod Dein Script ist mit Ecken und Kanten...
Egal, wie viele Pulse in der Zeit vom Tasmota Device hereinkommen, Du inkrementierst immer um 0.01 ...
Entweder berücksichtigst Du, was da vom Tasmota-Device an Zählerstand-Veränderung kommt, gehst auf einen "Button" der meldet stante pede, wenn er verändert wird - da passt dann das Inkrementieren um 0.01 , oder Du modifizierst im Tasmota-Device das Update interval (TelePeriod)...
(alternativ mit consol-Kommando, z. B. für 10 Sekunden Update:
TelePeriod 10
)
-
@martinp sagte in Reedkontakt, Umzug von ESP Easy nach Tasmota:
Egal, wie viele Pulse in der Zeit vom Tasmota Device hereinkommen, Du inkrementierst immer um 0.01 ...
Ja, so hat es auch bisher immer funktioniert.
DAS ist auch nicht das Problem, Tasmota erkennt die Impulse nicht zuverlässig!
Ist der ESP vielleicht zu beschäftigt, gleichzeitig den Lesekopf des Stromzählers seriell auszulesen?@martinp sagte in Reedkontakt, Umzug von ESP Easy nach Tasmota:
gehst auf einen "Button" der meldet stante pede, wenn er verändert wird -
Ich habe aktuell "Switch" eingestellt, da scheint es auch so zu passieren.
@martinp sagte in Reedkontakt, Umzug von ESP Easy nach Tasmota:
(alternativ mit consol-Kommando, z. B. für 10 Sekunden Update:
Steht bereits auf 10 Sekunden
-
Ich habe aktuell "Switch" eingestellt, da scheint es auch so zu passieren.
Das ist wirklich merkwürdig - solche Probleme habe ich mit meiner Hardware nicht - Node-MCU mit einem IR-Lesekopf für den Stromzähler und den Gaszähler mit dem Impulsausgang von Näherungssensor ... wenn der Reed-Kontakt nicht doch verrutscht ist, bin ich ratlos ...
-
Habe noch einmal in meine Tasmota Konfiguration geschaut - hier die verschiedenen Settings
Und das sind Console Settings (Abfrage durch Absetzen ohne Parameter, z.B. SwitchMode):
https://tasmota.github.io/docs/Buttons-and-Switches/#switchmode
SwitchMode 15 (Das könnte der Übeltäter sein!)
Send only MQTT message on switch change. This will stop the switch from controlling power outputs.
tele/tasmota/SENSOR = {"Time":"2021-01-01T00:00:00","Switch1":"OFF"}
tele/tasmota/SENSOR = {"Time":"2021-01-01T00:00:00","Switch1":"ON"}
https://tasmota.github.io/docs/Commands/#setoptions
SetOption114 off
Detach switches from relays and send MQTT messages instead
0 = disable (default)
1 = enable
Example result: {"Switch1":{"Action":"ON"}}
SetOption73 off
Detach buttons from relays and send multi-press and hold MQTT messages instead
0 = disable (default)
1 = enable
Example message: {"Button1":{"Action":"SINGLE"}}
SetOption74 off
Enable internal pullup for single DS18x20 sensor
0 = disable (default)
1 = internal pullup enabled This only affects ESP8266 ESP32 always needs external pullup -
Habe jetzt mal 24 h meinen Gaszähler mit Tasmota überwachen lassen.
Realverbrauch: 0,59 m³
also 59 Impulse hätten kommen müssen.Tasmota: 0,35 m³
also 35 ImpulseIch klemme jetzt wieder meinen alten ESP-Easy 8266 dran und lasse ihn auch mal 24 h zählen.
-
@cephalopod Hast Du in der Tasmota Console "SwitchMode 15" probiert?
-
@martinp sagte in Reedkontakt, Umzug von ESP Easy nach Tasmota:
@cephalopod Hast Du in der Tasmota Console "SwitchMode 15" probiert?
Nein, komme nur Abends zum "spielen".
Was soll das ändern?
Was mir auch nicht gefällt, dass jeder Durchlauf des Zählrades zwei "Switch"-Ereignisse Auslöst. Einmal wenn der Magnet den Reed öffnet, das zweite wenn er wieder geschlossen wird.
Ich habe daher in meinem Blockly-Script immer nur 0,005 m³ addiert.Das ist mit ESP-Easy deutlich besser gelöst: