"Geisterimpulse" vom Pluviometer mit ESP32 und ESPEasy

Begonnen von TheTrumpeter, 02 Dezember 2020, 16:29:48

Vorheriges Thema - Nächstes Thema

TheTrumpeter

Ich poste das mal hier und nicht an der vermeintlich richtigen Stelle, weil ich für die richtige Stelle keinen Accout habe und das Thema dort schon uralt ist...

Also, ich habe ein Pluviometer an einem ESP32 angeschlossen, sieht genauso aus wie hier: https://www.letscontrolit.com/forum/viewtopic.php?t=4799
Ein Draht hängt auf Masse, der 2. Draht geht auf einen GPIO, der zusätzlich noch einen 5k5-Pullup gegen 3V3 hat.

Auf den ersten Blick scheint alles richtig zu funktionieren, wenn ich die Wippe bewege zählt der Impuls 1x hoch.
Nach einigem Herumpspielen habe ich es dann stehen gelassen und mich anderen Dingen gewidmet, in den Plots habe ich dann aber "Geisterimpulse" festgestellt, die ich einfach nicht wegbekomme. Ich habe schon unterschiedliche GPIOs ausprobiert und auch versucht nicht gegen Masse sondern gegen 3V3 zu schalten (also 1 Draht auf 3V3, der 2. zum GPIO und 5k5-Pulldown), aber die "Geisterimpulse" gehen nicht weg.

Ein paar Tage lang habe ich gedacht eine gewisse Systematik zu erkennen, aber irgendwie komme ich nicht dahinter.
Irgendwelche Ideen?

An dem ESP32 (DevKitC) hängen zusätzlich noch 2 Port-Expander über I2C, 2 DHT22 sowie 2 Analogsensoren an 2 ADCs. Versorgt wird der ESP32 über die Pinleiste und nicht über den USB-Anschluss, die 5V kommen von einem Handyladegerät.
Ich habe das Problem aber auch an einem ESP8266 gesehen, wo 1 Analogsensor und 1 SR-04 sowie 2 Relais angeschlossen waren, Versorgung über USB-Anschluss.

Was ich ausschließen kann:
zeitlicher Zusammenhang mit Reboots
Zusammenhang mit Schaltvorgängen an anderen GPIOs
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

...was ist in dem Pluviometer....Reed-Kontakt ?

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

TheTrumpeter

FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

...gibt das Ding nur einen Impuls ab (Wischerschalter) oder bleibt der Kontakt solange geschlossen, bis die andere Wipp-Lage wieder eingenommen wurde?
...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

TheTrumpeter

Wischer.

Ich habe gerade mal mit einem Magneten die Pegel gemessen...

Wenn ich gegen Masse schalte, liegen am GPIO (Pullup auf 3V3) 3V3 an, wenn ich den Reed-Kontakt mittels Magnet permanent auslöse sind's stabil 0V.
Wenn ich gegen 3V3 schalte, liegen am GPIO (Pulldown auf Masse) 0V4 an, wenn ich den Reed-Kontakt mittels Magnet permanent auslöse sind's stabil 3V3.

Ich habe den Impulszähler auf "Rising" konfiguriert, beim Bewegen der Wippe zählt er stabil hoch.
Wenn ich gegen Masse schalte und auf "Low" konfiguriere, würde ich erwarten, dass er auch zählt, was er aber nicht tut. Möglicherweise ist der Kontakt zu kurz geschlossen, um wirklich 0V zu erreichen?

Ich hatte eine vage Vermutung, dass die "Geisterimpulse" in Zusammenhang mit irgendeinem anderen Gerät (Lampe, Monitor), was dann ein- oder ausgeschaltet wird, stehen. Vorhin gab's aber einen Impuls wo zu 100% nichts anderes ein- oder ausgeschaltet wurde und auch die Wippe nicht bewegt wurde.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

wenn die beiden Leitungen des Reed´s sauber getrennt sind und keinen "Schluss" machen können, bleibt nur der Reed. Vielleicht sind die Kontakte zu eng beieinander und er reagiert zu empfindlich gegen z.B. Erschütterungen.

Dass er bei "Schalten gegen Low" nicht zählt ist aber schon etwas seltsam. So kurz kann ein Impuls gar nicht sein, dass ein GPIO davon nicht´s mitbekommt.
Hast du zufällig ein Oszi ... kannst das kontrollieren ?

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

TheTrumpeter

Zitat von: Papa Romeo am 02 Dezember 2020, 21:47:52
wenn die beiden Leitungen des Reed´s sauber getrennt sind und keinen "Schluss" machen können, bleibt nur der Reed. Vielleicht sind die Kontakte zu eng beieinander und er reagiert zu empfindlich gegen z.B. Erschütterungen.
Die Teile sind prototypisch auf meinem Schreibtisch zusammengeschlossen, teilweise mit Jumperkabeln und teilweise mit Wago-Klemmen. Ohne Berührung sind "Schlüsse" oder "Wackler" ausgeschlossen. Die Wippe selbst steht nochmal auf einer leeren Schachtel, die gegen Erschütterungen im Umfeld dämpfend wirken würde.
Aber wie gesagt, vorhin hatte ich nachweislich eine Aufzeichnung in FHEM, wo die Kinder schlafend im Bett am anderen Ende des Hauses und meine Frau und ich in der Küche am anderen Ende des EGs waren, keiner hat sich merklich bewegt oder irgendwelche Geräte ein- oder ausgeschaltet.

Zitat von: Papa Romeo am 02 Dezember 2020, 21:47:52
Dass er bei "Schalten gegen Low" nicht zählt ist aber schon etwas seltsam. So kurz kann ein Impuls gar nicht sein, dass ein GPIO davon nicht´s mitbekommt.
Hast du zufällig ein Oszi ... kannst das kontrollieren ?
Leider nicht... würde der ADC (oder ein externer ADS1015) rasch genug reagieren und auch rasch genug an FHEM senden? Dann könnt' ich den Impuls zusätzlich analog erfassen. Vermutlich nicht, weil das Intervall nicht kleiner als 1s eingestellt werden kann :-(

Ich habe jetzt nochmal auf "LOW" umgestellt und mit dem Magneten mehrere Sekunden geschaltet, habe sogar das Klicken in der Schaltung gehört. Da tut sich gar nix, der Zähler ist festgenagelt. "Rising" oder "Falling" funktioniert zuverlässig.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

...kommst du da irgendwie ran...könnte man einen zweiten Reed oder nen Hallsensor dazuhängen ?
...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

TheTrumpeter

Die Frage ist warum funktioniert es nicht. Liegt es an der Schaltung im Pluviometer? Hat das einfach einen Schaden? Dann tausche ich das Teil einfach aus, ist ein Billigprodukt vom Chinesen, bevor ich da jetzt zusätzliche Bauteile besorgen und umbauen muss...

Ich habe gerade wieder einen "Geisterimpuls" gesehen, den ich nicht erklären kann. Und wieder scheint es zeitlich verdächtig mit dem Schalten eines Stromverbrauchers zusammenzuhängen:
Habe mein PC-System mittels Schalter an der Steckdosenleiste eingeschaltet und kurze Zeit später beim Aktualisieren vom Plot sehe ich den Peak. Das konnte ich nun 1x vermeintlich reproduzieren, beim 2. Versuch ging's nicht.
Auch das simple Aus- und Einschalten vom Monitor, der ca. 15cm vom Reedkontakt entfernt ist, konnte es nicht reproduzieren, ebenso wenig wie das Einschalten der Schreibtischlampe, die doch schon recht weit vom Reedkontakt entfernt wäre.

Ich habe jetzt einfach mal das Jumperkabel vom Pluviometer am GPIO abgezogen, jetzt ist der GPIO einfach nur mit dem Pullup auf 3V3 gezogen.

Wenn in den nächsten 24 Stunden keine "Geisterimpulse" zu sehen sind, liegt's wohl nicht am ESP32, sondern am Pluviometer. Kann das Teil so sensibel sein, dass durch das Schalten eines Stromverbrauchers ein elektromagnetisches Feld den Kontakt auslöst? Klingt irgendwie nicht sehr plausibel. (Das Anschlusskabel ist ca. 3m und derzeit mittels Kabelbinder zusammengerollt, aber das kann doch auch nicht wie eine Spule wirken.
Abgesehen davon erklärt es nicht, warum der Impuls nicht bei "LOW" gezählt wird.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

Nachtrag:

Das Pluviometer is wohl nicht Schuld, es gab schon wieder einen "Geisterimpuls".

Ich habe jetzt mehrfach an der Leitung gewackelt, in die ich den PullUp prototypisch eingesetzt habe. (Einfach zwischen 2 Jumperkabeln gesteckt, die Verbindung scheint auch fest zu sein.) Tatsächlich konnte ich dabei 1x einen weiteren Impuls auslösen.

Bleibt also zu hoffen, dass das nur ein Problem des prototypischen Aufbaus war und sich dann löst, wenn ich alles verlöte.

Auch wenn es den fehlenden "LOW"-Impuls immer noch nicht erklärt...
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

...wird nur nicht gezählt wenn der Sensor auf "LOW" geht oder auch nicht wenn du den GPIO von "Hand" auf "LOW" legst?

Sollte nur das Erstere zutreffen, kannst du den Impuls durch einen parallelen C zu deinem Sensor etwas verlängern.

Stichwort:  Integrier-Glied: tau = R * C  -->>  tau =  Pullup * C


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

Papa Romeo

...was mir gerade noch einfällt. Hast du mal die Endzustände des Reed´s gemessen. Hat er 0 Ohm bei "geschlossen" und unendlich bei "geöffnet".
Es gibt Reed´s die haben einen Reihenwiderstand verbaut. (Kurzschlußsicherung)

Da ist es dann durchaus möglich, dass wenn der Pullup zu klein gewählt wird, der "LOW-Pegel" nicht erreicht wird.


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

TheTrumpeter

Ich habe nur ein einfaches Multimeter zur Hand, aber ich habe damit folgendes gemessen:
Offen: >2000 kOhm
geschlossen und über die ca. 3m Kabel plus Wago-Klemmen ergibt am Ende der Jumperkabeln: 3,5 Ohm

Ich habe jetzt noch von "Hand" auf Masse gezogen, auch da wird nicht geschaltet.

Im Endeffekt brauche ich die "LOW"-Auslösung ja nicht, wenn es mit "RISING" oder "FALLING" robust funktioniert. Ich hätte nur erwartet, dass ich Fehlauslösungen durch etwaige kleinere Spannungseinbrüche damit wegfiltern kann.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Papa Romeo

Zitat von: TheTrumpeter am 03 Dezember 2020, 12:54:05
Ich habe jetzt noch von "Hand" auf Masse gezogen, auch da wird nicht geschaltet.

ok....dann liegt´s nicht am Sensor sondern an der Software, dass Diese dies nicht auswertet.

Aber ist schon so, dass "High-aktiv" störanfälliger gegen Sörspannungen ist, egal jetzt welcher Art, wie "Low-aktiv", da dem Pin nicht wirklich ein fester
Ruhespannungpegel z.B. über einen Pulldown zugewiesen wird.


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

TheTrumpeter

Zitat von: Papa Romeo am 03 Dezember 2020, 13:36:21
Aber ist schon so, dass "High-aktiv" störanfälliger gegen Sörspannungen ist, egal jetzt welcher Art, wie "Low-aktiv", da dem Pin nicht wirklich ein fester
Ruhespannungpegel z.B. über einen Pulldown zugewiesen wird.
Dann habe ich mit Schaltung gegen Masse und Pullup des GPIO auf 3V3 ja eh die robustere Variante gewählt.
Wenn das Schalten bei LOW in der SW auch noch funktionieren würde, wär's maximal robust. Mit der aktuellen SW-Einstellung (steigende oder fallende Flanke) ist offen bei welchen Pegelschwankungen das schon auslöst und daher etwaige Störpegel fehlerhaft als Impuls gewertet werden.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110