Schwimmerschalter an ESP8266 (Sonoff Basic)

Begonnen von Gisbert, 07 Juli 2018, 17:36:08

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo,

ich hab vor, einen zentralen Kondensatbehälter einer Klimaanlage zu überwachen. Dazu habe ich mir einen günstigen Schwimmerschalter besorgt, den ich gerne an einen ESP8266 (Sonoff Basic) anschließen will.
Der Schwimmerschalter hat als Ausgang 2 Drähte. In der unteren Lage des Schwimmers ist der Widerstand zwischen den beiden Drähten 0 Ohm, und in der oberen Lage unendlich, d.h. nicht leitend.

Wenn ich jetzt den Schwimmerschalter mit 3.3V an einem Draht beaufschlage, dann kann ich den anderen Draht mit einen GPIO's des ESP verbinden und 3.3V registrieren, solange der Schwimmer unten ist. Ist der Schwimmer oben, dann liegt keine Spannnung am GPIO an. Damit kann ich mir dann einen Alarm zimmern und weiß es rechtzeitig, falls die Kondensatpumpe streikt, oder aus irgendeinem Grund der Behälter voll ist.

Das Problem ist - fürchte ich -, dass der GPIO die 3.3V der Spannungsversorgung des Sonoffs garnicht oder nicht lange aushält. Ich denke, dass man einen Widerstand dazuschalten muss, weiß allerdings nicht welchen. Falls das nicht stimmt, wie müsste die Hardware aussehen? Auf dem dem schon vorhandenen Sonoff Basic läuft ESPEasy, welches ich gerne weiter dort einsetzen möchte. Wie muss in ESPEasy der entsprechende GPIO definiert werden?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

Hallo Gisbert,

verpasst doch dem GPIO einen Pullup-Widerstand, falls er noch keinen hat und lass den Schwimmerschalter dann einfach den GPIO gegen Masse schalten.

Gruß

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

Gisbert

Hallo Papa Romeo,

ich befürchte, dass ich das noch nicht verstanden habe, und es liegt nicht am Weizenbier beim Grillen ;)

Wie müsste es denn Aussehen?

3.3V---Eingang Schalter---Ausgang Schalter---Widerstand---GPIO und nach dem Widerstand noch eine Verbindung auf GND?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

moskito


GND---Eingang Schalter---Ausgang Schalter---GPIO und zwischen dem Ausgang Schalter und GPIO noch eine Verbindung auf 3,3V über einen Widerstand (>= 10k Ohm)

um in der abstrakten Sprache zu bleiben :D

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean

Papa Romeo

#4
Hallo Gisbert,

genau so, wie Danny es erklärt hat...

...sorry für die schlechte Zeichnung...liegt an den vier Weizenbier während dem Fussballspiels heute Abend... ;D ;D ;D ;D :o ;D

Gruß

Uwe
...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

sbiermann

Das Ganze klingt eher nach einem analogen Input als nach einem digitalen. Ich würde das eher über den A/D Wandler des ESP laufen lassen. Im Idealfall kannst du dann auch umrechnen welche Höhe der Schwimmer hat. Sprich du kannst genau sagen zu wie viel Prozent das Gefäß gefüllt ist.
Nebeneffekt du hast schicke Grafik in fhem die den Verlauf anzeigt.

Papa Romeo

..so wie Gisbert es beschrieben hat, dass der eine Messwert unendlich ist und keinen messbaren Widerstandwert aus gibt, ist es doch eher ein Schalter und es macht dann wenig Sinn den A/D-Wandler in Anspruch zu nehmen.
Sensoren die analoge Werte ausgeben haben in den Regel 3 Anschlüsse ( z.B. Tankfüllstand Kfz)

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

RaspiLED

#7
Hi,
Nö Schwimmschalter haben normalerweise nur ,,Oben=1" und ,,Zu tief=0" als Wert. Das sind doch in der Regel Metallkugeln als Kontaktschliesser in einem mit Luft gefüllten Gehäuse das am Kabel nach oben treibt.
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Papa Romeo

... nicht ganz..... im Schwimmer ein Magnet und im Rohr ein Reed-Kontakt...
...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

RaspiLED

Okay hast mit erwischt, mit meinem Halbwissen aus dem 90ern. Damals durfte ich noch nicht googeln, sondern musste die Schwimmer aufschneiden um zu verstehen ;-)

Aber egal: Still BOOLEAN only ;-)

Danke fürs Bild!
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Gisbert

Lieben Dank an alle,

ich werde es denn so umsetzen - mir fehlt allerdings noch ein passender Widerstand.
D.h. es wird bis zur Realisierung dauern.
Ich werde dann noch berichten, wenn ich's erfolgreich umgesetzt hab.
Hat jemand noch eine Idee, welches Device ich für den GPIO, an dem der Schalter hängt, auswählen muss?
Als Auswahl gibt es neben vielen anderen Devices "Switch input".

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Gisbert

#11
Hallo Arnd und Papa Romeo,

vielen Dank für eure Unterstützung.
Gestern habe ich dann angefangen das Projekt in die Tat umszusetzen; wie immer gab es Schwierigkeiten.

Der Grund für die Verzögerung war u.a. eine Umstellung von einem Fritzbox-Netzwerk auf Unifi-Geräte, die mich erst mal beansprucht hat. Fast alle meine ESP8266-betriebenen Geräte wollten zuerst nicht mit den Unifi-Geräten kooperieren. Wie sich herausgestellt hatte, war höchst wahrscheinlich eine ältere Library für die Wlan-Versorgung bei ESPEasy dafür verantwortlich. Nachdem sich das dann herauskristallisiert hat, um nicht einen Fußballexperten zu zitieren, "hochsterilisiert" hat, habe ich dann soweit es ging ESPEasy Mega (in der Version vom 9. August 2018, um genau zu sein) eingesetzt, und dort wo es nicht ging, eigene Sketche mit neuen Libraries kompiliert und geflasht.

Jetzt war der Sonoff Basic dran, an dem ein Dallas DS18B20-Temperaturfühler für die Steuerung eines Ventilators sorgt. Wegen der räumlichen Nähe dieses Gerätes zur Kondensatpumpe wollte ich den Schwimmerschalter darüber versorgen.
Die erste Schwierigkeit war einen weiteren GPIO dafür bereitzustellen. GPIO-4 ist bei dem Sonoff Basic nicht herausgeführt. Man kann ihn durch Anlöten eines feinen Drahtes verfügbar machen, was mir aber diesmal nicht vergönnt war. In einem anderen Fall mit ähnlicher mikroskopischer Herausforderung war es mir schon mal gelungen, deshalb dieser Versuch.
Ich habe dann den RX-Pin (=GPIO-3) dafür genutzt; dazu war es aber notwendig unter Tools --> Advanced Settings --> Serial Settings --> "Enable Serial port" zu deaktivieren. Damit ist der GIPO-3 verfügbar und ich konnte ein Device "Switch input - Switch" anlegen".

Die Verdrahtung habe ich dann wie in der Skizze von Papa Romeo ausgeführt, wobei ich als Widerstand (freundlicherweise von Arnd - RaspiLED zur Verfügung gestellt) einen 1 MegaOhm-Widerstand eingesetzt habe. Das führte aber zu einem unreproduzierbaren Verhalten, d.h. mal ist der Wert von Null auf 1 gewechselt, wenn der Schwimmer oben war, mal nicht. Ich hab dann den Widerstand des Schwimmers gemessen, der mal 10 MegaOhm angezeigt hat, mal nur knapp 1 MegaOhm. Ohne es zu verstehen, habe ich messerscharf geschlossen, dass ein fast identischer Widerstandswert im Widerstand und im Schwimmer nicht so toll ist. Ich hab dann noch einen 2. 1 MegaOhm-Widerstand parallel angelötet, was den Gesamtwiderstand auf 0.5 MegaOhm bringen sollte. Mit diesem Aufbau hat es dann geklappt und die Signalerkennung (angelegte Spannung an GPIO-3 vorhanden oder nicht vorhanden) funktioniert zuverlässig.

Nochmals vielen Dank für eure tatkräftige Unterstützung
Gisbert

PS: Nach längerem Prüfen scheint es so zu sein, dass das Schalten mit 0.5 MegaOhm ebenfalls nicht reproduzierbar zu sein scheint; trotz hohem Schwimmerpegel (=1 am GPIO-3) wird gelegentlich eine Null ausgegeben, was eigentlich nicht sein darf. Ich probiere es jetzt mal mit 2 hinterereinander geschalteten 10 kOhm-Widerständen, was auf den ersten Blick ohne Wechsel zwischen 1 und Null stabil aussieht.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

bartman121

Hallo,

ich werde gerade nicht schlau.

Vorraussetzungen:
ZitatDer Schwimmerschalter hat als Ausgang 2 Drähte. In der unteren Lage des Schwimmers ist der Widerstand zwischen den beiden Drähten 0 Ohm, und in der oberen Lage unendlich, d.h. nicht leitend.

Zitat... nicht ganz..... im Schwimmer ein Magnet und im Rohr ein Reed-Kontakt...

-----------
Zitat
PS: Nach längerem Prüfen scheint es so zu sein, dass das Schalten mit 0.5 MegaOhm ebenfalls nicht reproduzierbar zu sein scheint; trotz hohem Schwimmerpegel (=1 am GPIO-3) wird gelegentlich eine Null ausgegeben, was eigentlich nicht sein darf. Ich probiere es jetzt mal mit 2 hinterereinander geschalteten 10 kOhm-Widerständen, was auf den ersten Blick ohne Wechsel zwischen 1 und Null stabil aussieht.

Unter den o.g. Vorraussetzungen ist dieses Verhalten kaum nachvollziehbar.

Die Pull-Up-Widerstände im MOhm-Bereich halte ich für sehr gewagt, 10k sind ein deutlich besserer Wert.

mögliche Probleme könnten sein:
starkes Magnetfeld löst den reed-Kontakt kurzzeitig aus? Elektrische Geräte in der Nähe?
die 3,3V-Spannungsversorgung bricht kurzzeitig zusammen.

In der Vergangenheit hatten viele Leute Probleme mit der Verwendung der Serial-Pins, da du auch noch das Logging selbst abschalten musst, gehe ich von einer alten Tasmota-Version aus. Könntest du mal updaten: https://github.com/arendst/Sonoff-Tasmota/wiki/Upgrade
Vorsicht,beim OTA Update, bitte Hinweise beachten:
Zitat
No migration from Sonoff-MQTT-OTA to Sonoff-MQTT-OTA-Arduino or Sonoff-Tasmota.
The settings flash lay-out and OTA image locations are different from the Arduino versions
Easy migration from Sonoff-MQTT-OTA-Arduino 1.0.11 to Sonoff-Tasmota 3.9.x.
After installing Sonoff-Tasmota for the first time some settings need to be adjusted via web configuration or MQTT commands.
Easy migration from Sonoff-MQTT-OTA-Arduino 3.1.0 to Sonoff-Tasmota 4.x.
After installing Sonoff-Tasmota for the first time some settings need to be adjusted via web configuration or MQTT commands.
Easy migration from Sonoff-Tasmota 4.x to Sonoff-Tasmota 5.14.
As a safeguard perform a Backup Configuration before installing the new version. If settings are lost after the upgrade perform a Restore Configuration.
Easy migration from Sonoff-Tasmota 5.2 to Sonoff-Tasmota 6.x.
As a safeguard perform a Backup Configuration before installing the new version. If settings are lost after the upgrade perform a Restore Configuration.
So to migrate from Sonoff-MQTT-OTA-Arduino versions before 3.1.0 to Sonoff-Tasmota 6.x you will need to take four steps:

Migrate to Sonoff-Tasmota 3.9.x
Migrate to Sonoff-Tasmota 4.x
Migrate to Sonoff-Tasmota 5.14
Migrate to Sonoff-Tasmota 6.x

Gisbert

ZitatIn der Vergangenheit hatten viele Leute Probleme mit der Verwendung der Serial-Pins, da du auch noch das Logging selbst abschalten musst, gehe ich von einer alten Tasmota-Version aus. Könntest du mal updaten: https://github.com/arendst/Sonoff-Tasmota/wiki/Upgrade

Hallo bartman121,

ich nutze eine ziemlich aktuelle Version von ESPEasy Mega, die aus meiner Sicht super läuft, d.h. hier sehe ich keine Veranlassung etwas zu ändern.

Mit 20 kOhm lief das ganze auch sehr stabil, bei hohem Schwimmerstand wurde über Stunden durchgängig eine 1 als Wert ausgegeben.

Ggf. fahre ich mal einen längeren Test, bzw. wiederhole ihn, um sicherzustellen, dass ich nichts übersehen habe. Wäre ja zu blöd, dass bei zu hohem Füllstand = Überlauf mir der Holzboden wegfault, und ich nichts davon mitbekomme.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

bartman121

Hallo Gisbert,

das mit ESPEasy hatte ich dann auch gelesen, sorry.

Grundsätzlich nochmal zum Pull-UP.
(https://de.wikipedia.org/wiki/Open_circuit#Pull-up)
Dein 20kOhm Widerstand ist weiterhin nicht perfekt, auch wenn er im aktuellen Anwendungsfall funktioniert.

Zitat
Wäre ja zu blöd, dass bei zu hohem Füllstand = Überlauf mir der Holzboden wegfault, und ich nichts davon mitbekomme.

Das ist auch im aktuellen Fall so, nämlich bei Kabelbruch/Kontaktfehler. Dann bleibt nämlich auch das High bestehen, wenn der Schwimmer "oben" ist. Aber ein gewisses Risiko bleibt bei solchen Sachen eh immer bestehen. Das Könnte man ins unendliche steigern.

Ggfs. solltest du darüber nachdenken, das ganze nochmal umzubauen.

3,3V - Schwimmerschalter - GPIO - Pull-Down - GND

In der unteren Lage erhälst du dann eine "1" am GPIO, sobald der Schwimmer die untere Lage verlässt gibt es eine "0".
Vorteil:
Kabelbruch löst auch den Fehlerfall (Behälter voll) aus

Nachteil:
Schwimmerschalter muss genau justiert werden, falls immer etwas Wasser im Behälter sein darf.
Permanenter Stromfluss über Pull-Down-Widerstand.

Umsetzung in der Steuerung, wahlweise den "inversed Logic" oder halt deine Auswertung umprogrammieren.


Zum Thema Widerstand noch kurz:
R=U/I ... I = U/R

Bei 10.000Ohm und 3,3V fließen 0,33mA das ist Kindergarten für den Festspannungsregler des Sonoff.

Grüße

Andreas