Forum: Mikrocontroller und Digitale Elektronik mit ESP8266 als Webserver dimmen


von Guest (Gast)


Lesenswert?

Guten Tag zusammen,

Folgende Situation:

Ich möchte meine Lampen, nebst Tastdimmer, mit dem ESP8266 An- und 
Ausschalten sowie dimmen, indem ich einfach ein Relais parrallel zum 
Taster für die Ansteuerung des Dimmers setze.
Das ganze kommt in den Schaltschrank, die zusätzlichen adern liegen 
bereits in der Unterputzdose.
Das An/Aus an sich ist jetzt kein Thema, allerdings macht mir meine 
nicht sehr weitreichende Erfahrung Schwierigkeiten was das Dimmen 
angeht.
An und Ausschalten funktioniert, indem ich eine Adresse (meinetwegen 
IP/gpio/1) aufrufe(wie in der Arduino IDE das Webserver Beispiel für den 
ESP). Beim dimmen aber brauche ich ja theoretisch eine durchgehend 
vorhandene Verbindung, bei der der ESP erkennt, wie lange ich jetzt 
diesen Button gedrückt halte um damit genau die Helligkeit bestimmen zu 
können.
Nochmal kurz: Solange ich den Button für das Licht betätige, soll ein 
Relais vom ESP8266 angesteuert werden, welches mir das Licht dimmt, bzw. 
bei kurzer Ansteuerung das Licht an und ausschaltet.

Hat jemand vielleicht eine Idee, einen Rat/Vorschlag, wie UND OB das 
ganze soweit überhaupt möglich ist?

Ich bedanke mich Voraus!

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

Im Browser hast du ja für den Button entsprechende Ereignisse für 
Drücken und Loslassen das sollte kein Problem sein. Wenn du jetzt damit 
einen entaprechenden Aufruf an deinen ESP sendest wird die Verzögerung 
für diesen Zweck allerdings zu groß sein um sinnvoll einen Dimmer zu 
steuern.
Für den Zweck einer möglichst verzögerungsfreien Weiterleitung der 
Aktion auf Weboberfläche und dem Server kommt eigentlich nur eine 
Websocket-Verbindung in Frage. Dort bleibt die TCP-Verbindung dauerhaft 
geöffnet und Client und Server können beliebig Daten hin- und hersenden. 
Darüber habe ich z.B. einen Steuerung für RGB-LEDs per Schieberegler 
realisiert. Ob du auf dem ESP einen entsperchenden Websocketserver zum 
laufen bringst weiß ich jedoch nicht.

Sascha

von Guest (Gast)


Lesenswert?

Hab mich mal über websockets schlau gemacht und einige erlärungen 
gefunden. Das könnte mein Problem.tatsächlich lösen! Jetzt muss ich aber 
leider doch noch etwas nachhaken:
Ich habe jetzt eine dauerhafte verbindung zwischen client und server, 
ich weiß jetzt, dass der ESP websocket kann. Jetzt fehlt mir nur ein 
wenig die Erfahrung, wie ich dem esp sagen kann er soll einen ausgang 
solange schalten, wie ich den button gedrückt halte... er soll ja genau 
dann reagieren sobald ich den button drücke, wie kann ich ihm sagen, 
dass er den status dauerhaft überwachen soll, ohne zwischendurch den 
ausgang wieder wegzuschalten?

von Reiner O. (elux)


Lesenswert?

Guest schrieb:
> Jetzt fehlt mir nur ein
> wenig die Erfahrung, wie ich dem esp sagen kann er soll einen ausgang
> solange schalten, wie ich den button gedrückt halte...

Da brauchst Du eigentlich garnichts erfinden oder selbst programmieren,

lies mal unter OpenHAB und ESP8266 + MQTT nach.

http://www.openhab.org/

https://github.com/tuanpmt/esp_mqtt

und wenn Du ein bi0chen suchst, findet Du fertige Images für den ESP...

Das OpenHAB stellt Dir die Webseite(n) für alle gesteuerten, 
geschalteten oder sonstwie angebundenen Devices. Im OpenHAB legst Du 
auch fest, wie das Device auf Knopfdruck reagieren soll (bpw: kurz -> 
ON, bzw. 255, lang -> 0...254)
die Daten werden per MQTT an den ESP (oder per Mosquitto an den ESP) 
übertragen...


Just my 2 cents

Elux

von Sascha W. (sascha-w)


Lesenswert?

Guest schrieb:
> Hab mich mal über websockets schlau gemacht und einige erlärungen
> gefunden. Das könnte mein Problem.tatsächlich lösen! Jetzt muss ich aber
> leider doch noch etwas nachhaken:
> Ich habe jetzt eine dauerhafte verbindung zwischen client und server,
> ich weiß jetzt, dass der ESP websocket kann. Jetzt fehlt mir nur ein
> wenig die Erfahrung, wie ich dem esp sagen kann er soll einen ausgang
> solange schalten, wie ich den button gedrückt halte... er soll ja genau
> dann reagieren sobald ich den button drücke, wie kann ich ihm sagen,
> dass er den status dauerhaft überwachen soll, ohne zwischendurch den
> ausgang wieder wegzuschalten?

Du definierst auf der Website für deinen Button die zwei Ereignisse für 
Gedrückt und Losgelassen. Mit dem einen Ereigniss sendest du z.B "a" und 
mit anderen "b". Wenn der ESP jetzt ein "a" erkennt dann schaltet er 
deinen Ausgang ein. Erkennt er ein "b" schaltet er ihn wieder aus. Wird 
die Verbindung getrennt oder es dauert ewig dann sollte er den Ausgang 
natürlich auch wieder abschalten.

Sascha

von Guest (Gast)


Lesenswert?

@Reiner: vielen Dank, werde ich mir gleich mal durchlesen!

@Sascha: So in etwa hatte ich mir das auch gedacht. Nur wie genau ich 
das ganze umsetzen kann, was dafür zun tun ist, da haperts noch^^
Aber ich glaube ich lese mich erst mal weiter schlau was websockets 
angeht oder schaue mir auch den Einwurd von Reiner an.

Vielen Dank erstmal für die Hilfe!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.