Gaszähler mit WemosD1, GY-271 QMC5883 Magnetfeldmesser und Tasmota Mqtt

Begonnen von Klaus_R, 04 April 2022, 11:37:37

Vorheriges Thema - Nächstes Thema

Klaus_R

Hallo zusammen, mein erstes Mal hier deshalb kurze Vorstellung. Name: Klaus, Alter: bald 70, Linux: 2J, Raspis: 1J, FHEM 6M, Wissenstand: gering :(
FHEM finde ich Klasse aber Perl und drumrum..... schwierig bis (für mich) völlig unverständlich. Trotzdem laufen bereits diverse Sensoren :D

Mein neuestes Projekt ist der Gaszähler. Ok. dazu gibt es bereits viele Beiträge und ich möchte auch das Rad nicht neu erfinden aber mit meinen Komponenten habe ich nichts gefunden. 2 verschiedene Reedkontakte haben an meinem Gaszähler nicht angesprochen deshalb das Kompassmodul. Wemos D1 und Tasmota soll es sein da damit andere Sensoren bereits laufen.
Hier mal meine bisherigen Ergebnisse zur Diskussion und evtl. auch als Vorlage (sofern sich keine Fehler finden)
Die professionelle Anbringung :) und Platzierung des Sensors s. Bild
Ebenso Tasmota Ausgabe und Tasmota Konfig

Zu der Tasmota Telemetrieangabe die erste Frage. Verstehe ich das richtig dass bei meiner Einstellung 10 alle 10 sek. der Wert gesendet wird? Der Gaszähler benötigt im Volllauf ca. 15 Sek. für eine Umdrehung. Würde ich Telemetrie auf einen zu hohen Wert setzen gehen dann Daten verloren?

Zunächst sahen die Daten so aus:
2022-03-29_22:32:54 Gaszaehler HMC5883L_M_Heading: 172
2022-03-29_22:32:54 Gaszaehler HMC5883L_MZ_Axis: 6
2022-03-29_22:33:04 Gaszaehler HMC5883L_M_Heading: 169
2022-03-29_22:33:04 Gaszaehler HMC5883L_MZ_Axis: 16
2022-03-29_22:33:04 Gaszaehler HMC5883L_MX_Axis: 4294967092
2022-03-29_22:33:04 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-29_22:33:14 Gaszaehler HMC5883L_MZ_Axis: 21
2022-03-29_22:33:14 Gaszaehler HMC5883L_M_Heading: 168
2022-03-29_22:33:14 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-29_22:33:14 Gaszaehler HMC5883L_MX_Axis: 4294967092
2022-03-29_22:33:24 Gaszaehler HMC5883L_MX_Axis: 4294967092
2022-03-29_22:33:24 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-29_22:33:24 Gaszaehler HMC5883L_M_Heading: 166
2022-03-29_22:33:24 Gaszaehler HMC5883L_MZ_Axis: 27
2022-03-29_22:33:34 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-29_22:33:34 Gaszaehler HMC5883L_MX_Axis: 4294967092
2022-03-29_22:33:34 Gaszaehler HMC5883L_MZ_Axis: 34
2022-03-29_22:33:34 Gaszaehler HMC5883L_M_Heading: 164
2022-03-29_22:33:44 Gaszaehler HMC5883L_MX_Axis: 4294967092
2022-03-29_22:33:44 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-29_22:33:44 Gaszaehler HMC5883L_M_Heading: 162
2022-03-29_22:33:44 Gaszaehler HMC5883L_MZ_Axis: 40

Der stärkste Ausschlag war bei der Y Achse deshalb als nächstes nur Y Werte
2022-03-30_09:52:14 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:52:24 Gaszaehler HMC5883L_MY_Axis: 192
2022-03-30_09:52:34 Gaszaehler HMC5883L_MY_Axis: 4294967228
2022-03-30_09:52:44 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:52:54 Gaszaehler HMC5883L_MY_Axis: 4294967215
2022-03-30_09:53:04 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:53:14 Gaszaehler HMC5883L_MY_Axis: 4294967197
2022-03-30_09:53:24 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:53:34 Gaszaehler HMC5883L_MY_Axis: 4294967182
2022-03-30_09:53:44 Gaszaehler HMC5883L_MY_Axis: 195
2022-03-30_09:53:54 Gaszaehler HMC5883L_MY_Axis: 4294967174
2022-03-30_09:54:04 Gaszaehler HMC5883L_MY_Axis: 185
2022-03-30_09:54:14 Gaszaehler HMC5883L_MY_Axis: 4294967167
2022-03-30_09:54:24 Gaszaehler HMC5883L_MY_Axis: 181
2022-03-30_09:54:34 Gaszaehler HMC5883L_MY_Axis: 4294967157
2022-03-30_09:54:44 Gaszaehler HMC5883L_MY_Axis: 159
2022-03-30_09:54:54 Gaszaehler HMC5883L_MY_Axis: 4294967127
2022-03-30_09:55:04 Gaszaehler HMC5883L_MY_Axis: 139
2022-03-30_09:55:14 Gaszaehler HMC5883L_MY_Axis: 4294967118
2022-03-30_09:55:24 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:55:34 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-03-30_09:55:44 Gaszaehler HMC5883L_MY_Axis: 4294966887


und durch
event-on-change-reading HMC5883L_MY_Axis:10000000
wurde daraus
2022-04-04_10:17:22 Gaszaehler HMC5883L_MY_Axis: 4294967259
2022-04-04_10:19:22 Gaszaehler HMC5883L_MY_Axis: 4
2022-04-04_10:19:32 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-04-04_10:19:42 Gaszaehler HMC5883L_MY_Axis: 10
2022-04-04_10:20:32 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-04-04_10:26:52 Gaszaehler HMC5883L_MY_Axis: 23
2022-04-04_10:27:42 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-04-04_10:37:12 Gaszaehler HMC5883L_MY_Axis: 196
2022-04-04_10:47:22 Gaszaehler HMC5883L_MY_Axis: 4294966887
2022-04-04_10:47:32 Gaszaehler HMC5883L_MY_Axis: 94
2022-04-04_10:47:42 Gaszaehler HMC5883L_MY_Axis: 4294966887


Meiner Meinung nach wird jetzt jede Umdrehung sehr zuverlässig erkannt.
Gibt es an meinem Vorgehen etwas auszusetzen oder zu verbessern?

Und vor allem wie gehe ich jetzt weiter vor um die Daten weiter zu verarbeiten und auszuwerten. Jeder Tipp ist willkommen!
Gruss Klaus


Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

Thomas41587

Das ist ja mal ein interessantes Projekt! Sehr viel dazu beitragen kann ich leider nicht, aber bei dieser Frage kann ich denke ich helfen:
Zitat von: Klaus_R am 04 April 2022, 11:37:37
Und vor allem wie gehe ich jetzt weiter vor um die Daten weiter zu verarbeiten und auszuwerten. Jeder Tipp ist willkommen!
Gruss Klaus

Ich würde hier ein Notify anlegen, das auf genau diese Events reagiert und hoch zählt.
defmod notify_zaehler notify Gaszaehler:HMC5883L_MY_Axis.* {\
    my $zaehlerstandAktuell= ReadingsVal('dummy_zaehler','zaehlerstand','');;\
    my $zaehlerstandNeu= $zaehlerstandAktuell+1;;\
    fhem("setreading dummy_zaehler $zaehlerstandNeu");;\
  }\
}

Beta-User

Na ja, vermutlich kann man das hier (unter den bereits abgeschichteten Vorbedingungen (!) ) auch als userReadings-Eintrag lösen:
attr Gaszaehler userReadings count_ticks:HMC5883L_MY_Axis:.* { return if ReadingsNum($name,'HMC5883L_MY_Axis',0) <100000;; ReadingsNum($name,'count_ticks',0)+1 }


(Kein Event-Handler nötig, eine Event-Loop, kein "dummy-Geschubse"... Initialwert kann per setreading gesetzt werden.)

PS: Ich habe am Gaszähler eine TCRT5000-basierte Lösung ähnlich https://www.mysensors.org/build/pulse_water. Der Sensor zeigt auf die erste Stelle hinter dem Komma, die "6" hat einen reflektierenden Punkt. Sollte auch mit einem ESP gehen, wenn man unbedingt WLAN haben will...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Klaus_R

Zitat von: Thomas41587 am 04 April 2022, 14:19:44
Das ist ja mal ein interessantes Projekt! Sehr viel dazu beitragen kann ich leider nicht, aber bei dieser Frage kann ich denke ich helfen:
Ich würde hier ein Notify anlegen, das auf genau diese Events reagiert und hoch zählt.


Vielen Dank, versuch ich hinzubekommen und melde dann Vollzug.
Gruss Klaus
Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

Klaus_R

Zitat von: Beta-User am 04 April 2022, 14:47:06
Na ja, vermutlich kann man das hier (unter den bereits abgeschichteten Vorbedingungen (!) ) auch als userReadings-Eintrag lösen:
attr Gaszaehler userReadings count_ticks:HMC5883L_MY_Axis:.* { return if ReadingsNum($name,'HMC5883L_MY_Axis',0) <100000;; ReadingsNum($name,'count_ticks',0)+1 }

Danke! Muss ich mal versuchen. Dauert sicher etwas da zunächst mal viel Wald und ich erkenne die Bäume nicht gleich :-\


Zitat von: Beta-User am 04 April 2022, 14:47:06
PS: Ich habe am Gaszähler eine TCRT5000-basierte Lösung ähnlich https://www.mysensors.org/build/pulse_water. Der Sensor zeigt auf die erste Stelle hinter dem Komma, die "6" hat einen reflektierenden Punkt.
Ja sicher auch gut! Der Punkt ist wohl der Magnet. Ist bei mir auch auf der 6. und wenn die vorbeiläuft tut sich was ;) . Die magnetische Wirkung war für 2 verschiedene Reedkontakt zu schwach obwohl andere das über Reed lösen.
Gruss Klaus
Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

Klaus_R

Zitat von: Damian am 04 April 2022, 15:55:39
siehe: https://forum.fhem.de/index.php/topic,97959.msg1214276.html#msg1214276

In meinem Beitrag ist auch ein Link, wie man solche Zähler auswerten kann.

Super und auch mit Tasmota gelöst. Werd ich mich reinknien!
Gruss Klaus
Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

Damian

Vielleicht kannst du deinen Sensor in Tasmota als Counter definieren, der wird immer hochgezählt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Klaus_R

Zitat von: Damian am 04 April 2022, 18:13:38
Vielleicht kannst du deinen Sensor in Tasmota als Counter definieren, der wird immer hochgezählt.
Danke für die Anregung!
Kann ich mir gut vorstellen allerdings muss ich dann den Weg finden aus allen Werten mit Tasmotamitteln zuerst den y zu isolieren und auf jeden Fall dann nur den Wechsel von den kleinen zu den großen Werten zu Zählen (entprellen?) .

2022-03-29_14:45:35 Gaszaehler HMC5883L_M_Heading: 246
2022-03-29_14:45:35 Gaszaehler HMC5883L_MZ_Axis: 4294967168
2022-03-29_14:45:35 Gaszaehler HMC5883L_MX_Axis: 4294967256
2022-03-29_14:45:35 Gaszaehler HMC5883L_MY_Axis: 75
2022-03-29_14:45:45 Gaszaehler HMC5883L_MY_Axis: 71
2022-03-29_14:45:45 Gaszaehler HMC5883L_MX_Axis: 4294967256
2022-03-29_14:45:45 Gaszaehler HMC5883L_MZ_Axis: 4294967165
2022-03-29_14:45:45 Gaszaehler HMC5883L_M_Heading: 247
2022-03-29_14:45:55 Gaszaehler HMC5883L_M_Heading: 246
2022-03-29_14:45:55 Gaszaehler HMC5883L_MZ_Axis: 4294967163
2022-03-29_14:45:55 Gaszaehler HMC5883L_MX_Axis: 4294967255
2022-03-29_14:45:55 Gaszaehler HMC5883L_MY_Axis: 67
2022-03-29_14:46:05 Gaszaehler HMC5883L_MZ_Axis: 4294967162
2022-03-29_14:46:05 Gaszaehler HMC5883L_M_Heading: 246
2022-03-29_14:46:05 Gaszaehler HMC5883L_MY_Axis: 65
2022-03-29_14:46:05 Gaszaehler HMC5883L_MX_Axis: 4294967255
2022-03-29_14:46:15 Gaszaehler HMC5883L_MX_Axis: 4294967254


Beides müsste ich zuerst rausfinden. Beides habe ich mit FEHM bereits gelöst. Werde deshalb wohl zuerst den anderen Weg versuchen.
Gruss Klaus
Linux Mint, Raspi-OSMC, Raspi-fhem, WemosD1, Shelly, CUL

DetlefR

Noch einen von mir.
Wasserzähler. Das Teil darauf nennt sich sn05-n2 und ist ein Näherungssensor der auf Metall reagiert. In Tasmota ist das ganze als Schalter definiert.
Vorteil. Es wird nur ein Ereigniss ausgelöst wenn etwas passiert.
Die Schaltvorgänge werden dann in FHEM gezählt. Tasmota hat zwar einen Counter, aber der wird nicht gespeichert und wurde bei mir des öfteren zurückgesetzt.

Damian

ja, es hat alles seine Vor- und Nachteile.

Der Vorteil eines Counters auf der Senderseite ist, dass FHEM zwischendurch heruntergefahren sein kann, nach dem Hochfahren hat man immer noch den korrekten Verbrauch.

Bei reinem Impulsgeber fehlt diese Information.

Selbst wenn der Counter durch Stromausfall zurückgesetzt wird, kann man es auf der FHEM-Seite erkennen und entsprechend korrigieren. Das mache ich z. B.  hier:  https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Papa Romeo

Zitat von: Damian am 05 April 2022, 11:19:20
Der Vorteil eines Counters auf der Senderseite ist, dass FHEM zwischendurch heruntergefahren sein kann, nach dem Hochfahren hat man immer noch den korrekten Verbrauch.

Bei reinem Impulsgeber fehlt diese Information.

... deswegen hab ich mir damals für meinen Gaszähler dieses Modul https://forum.fhem.de/index.php/topic,114471.msg1087373.html#msg1087373 gemacht.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Damian

Zitat von: Papa Romeo am 05 April 2022, 12:07:03
... deswegen hab ich mir damals für meinen Gaszähler dieses Modul https://forum.fhem.de/index.php/topic,114471.msg1087373.html#msg1087373 gemacht.

LG
Papa Romeo

Für die technikaffinen ist das sicherlich die bessere Lösung. Auf der anderen Seite würde eine Powerbank für 10 Euro als ESP-USV schon reichen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

Zählen mit PCF8583 ist sicher eine elegante Lösung.
Das hier eingesetzte TCRT5000-Modul hängt an einer MySensors-Node, die dann noch diverse Temperaturen mißt und per RS485-Bauteil (konkret eigentlich: ein CAN-Transceiver-Modul) mit dem entsprechenden Gateway kommuniziert. Versorgt wird das ganze (neben ein paar weiteren MySensors-Nodes) von einem 12V-Netzteil (+step-down modul an jeder Node).
Die Bauteile für die Node+das GW düften insgesamt auch kaum über 10 Euro gekostet haben...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF