Der Trigger button#state löst immer bei Button-Änderung aus. Das dann getoggelt wird bestimmt der Switchmode (steht default auf 0 = toggle). Also muss auch nur auf die Änderung des Button Zustandes abgefragt werden.
Ist der Switchmode 0 steht der Button bzw. Switch#state sowieso immer auf 2 also ist das dann auch kein Abfragekriterium sondern nur DAS der Button#state überhaupt getriggert wurde.
Ganz kapiert hab ich das zwar immer noch nicht, aber ich glaube zumindest schon mal den Ansatz einer Ahnung zu haben, wie die Idee dahinter ist. Herzlichen Dank für Deine Antwort!
Der Switchmode gibt scheinbar an, wann eine button#state Aktion ausgelöst werden soll, und in meinem Fall reicht daher button#state, weil ich ja gerne auf beiden Flanken triggern möchte, würde ich zwar gerne toggeln erkennen aber auf die high-Flanke anders reagieren als auf die low-Flanke, dann könnte ich mittels button#state==0 und button#state==1 noch den aktuellen Zustand auswerden und entsprechend behandeln. Wäre das so korrekt?
Verbindung mit 3,3V zum Gpio sollte man einen Vorwiderstand (etwa 10kohm) einsetzen.
Das kommt mir mittlerweile etwas komisch vor, bei einer normalen UART schalte ich doch für ein High-Signal auch einfach 3V3 drauf, wozu benötige ich hier einen Vorwiderstand? Das müßte beim ESP doch ein high-Z Eingang oder zumindest ein Eingang mit pullup/-down sein, 3V3 dürften hier auch ohne Strom-begrenzenden Vorwiderstand keine Probleme bereiten.
Die beiden "zerschossenen" Sofoffs habe ich mittlerweile neu geflasht, die funktionieren wieder tadellos. Vorher haben sich diese nicht mehr ins WLAN verbunded und das Schaltverhalten war wie oben beschrieben ja eher eigenartig. Der Port hat meine Manipulationen wohl überlebt, warum es mir dabei aber die Settings im Flash zerlegt hat, ist schon sehr seltsam, riecht ja eher nach Bug als nach Feature.
Die Rule funktioniert leider immer noch nicht so recht. Hab "serial log level" auf 0 gestellt, GPIO3 auf "Button" und "2", mit rule1 erhalte ich: {"Rule1":"ON","Once":"OFF","StopOnError":"OFF","Length":36,"Free":475,"Rules":"on button2#state do power1 off endon"}, sieht meiner Meinung nach gut aus.
Verhalten ist immer noch seltsam:
- keine Reaktion wenn ich 3V3 (über 10k) anlege
- Reaktion bei 0V entweder erst zeitverzögert nach mehrere Sekunden oder sofort, wenn ich die Brücke wieder öffne
Sollte "toggle" nicht bei 0V und 3V3 reagieren oder falls beim ESP ein pullup geschaltet ist dann wenn ich 0V verbinde und wenn ich die 0V wieder trenne?
Am Ausgang vom RM wo die 0-5 V bei Raucherkennung könnte auch ein Optokoppler gesetzt werden der dann den Gnd an Gpio schaltet.
Klar, wäre möglich und wenn ich den Optokoppler direkt in den Rauchmelder einbaue, wäre zumindest die Kabelstrecke auch noch drahtbruchsicher, gehen müßte aber doch schalten nach 3V3 auch, oder? Schaltet er ESP am RX-pin einen Pullup, so daß er die 3V3 nicht sieht? Würde aber dem widersprechen, daß ich bei meiner Spielerei durchaus auch schon eine Reaktion auf 3V3 gesehen habe, weiß aber nicht mehr wann genau