Toggle für Relais ESPEasy

Begonnen von MAC66666, 19 Februar 2018, 19:24:38

Vorheriges Thema - Nächstes Thema

MAC66666

Moin,
habe ein Relais:

defmod ESPEasy_SWZ1_Wandlicht ESPEasy 192.168.5.222 80 espBridge SWZ1_Wandlicht
attr ESPEasy_SWZ1_Wandlicht IODev espBridge
attr ESPEasy_SWZ1_Wandlicht Interval 300
attr ESPEasy_SWZ1_Wandlicht eventMap /gpio 14 on:off/gpio 14 off:on/
attr ESPEasy_SWZ1_Wandlicht group ESPEasy Device
attr ESPEasy_SWZ1_Wandlicht presenceCheck 1
attr ESPEasy_SWZ1_Wandlicht readingSwitchText 1
attr ESPEasy_SWZ1_Wandlicht room 01-Wohnzimmer,ESPEasy
attr ESPEasy_SWZ1_Wandlicht setState 3
attr ESPEasy_SWZ1_Wandlicht stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"Switch","")}


wie kann ich das denn per set ESPEasy-SWZ1-Wandlicht toggle" (oder ähnlich) toggeln?  Was fehlt mir da denn noch?
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

dev0


MAC66666

OK, danke schon mal für den Hinweis... Aber ich bekomme da nichts hin.

Hier gibt es wohl das gleiche Problem nur ohne ESP:

https://forum.fhem.de/index.php/topic,83402.15.html

FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

Nope, ich weiß nicht wie ich das umsetzen soll. Da reicht mir die commandref nicht  :( Hilfe!
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

oli82

Als Schubser in die Richtung hier mein notify, mit dem ich über einen Taster toggle:
EG_TasterFlur_Btn_06:Short.* {if (ReadingsVal("ESPEasy_Wasserfall","GPIO12","") eq "on") {fhem ("set ESPEasy_Wasserfall gpio 12 0")}else {fhem ("set ESPEasy_Wasserfall gpio 12 1")};;;;}

Frank_Huber

oder als Beispiel im DOIF:
defmod Licht_DG1 DOIF ([GPIO_IN_12:"^on$"] and [?SONOFF_01] eq "off") (set SONOFF_01 on)\
DOELSEIF ([GPIO_IN_12:"^on$"] and [?SONOFF_01] eq "on") (set SONOFF_01 off)


GPIO_IN_12 -> Taster
SONOFF_01 -> ESPEasy Relais

kabanett

Sorry im Falle eines falschverstehens.
Du möchtest einfach an und ausschalten?

Wenn ja sind deine Attribute bis auf :
attr ESPEasy_SWZ1_Wandlicht eventMap /gpio 14 on:off/gpio 14 off:on/
und das fehlende webCmd  soweit OK!

Bei mir funktioniert es mit:
attr ESPEasy_SWZ1_Wandlicht eventMap /gpio 14 on:on/gpio 14 off:off/status gpio 14:check/
attr ESPEasy_SWZ1_Wandlicht webCmd :

Zusätzlich hab ich als Schalticon:
attr ESPEasy_SWZ1_Wandlicht on:rc_GREEN:off off:rc_RED:on absent:rc_BLUE:off gpio:rc_YELLOW:off

Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

MAC66666

Achso nee, das passt bei mir. Geht wirklich um einen Toggle, also Umschalten des jetzigen Zustandes per set xyz toggle o. ä. bzw. das von oli und frank sollte es in meinem Notify tun ;-)
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

dev0

Meiner Meinung nach gehört der "gpio toggle" command in die ESPEasy Firmware. Es gab auch schon mal einen Pull Request dazu...

Trotz der anderen Tipps würde ich weiterhin cmdalias einsetzen, damit man diesen Workaround mit einem Klick (delete cmdalias) wieder entfernen kann ohne weitere Logiken in FHEM anpassen zu müssen. Mit einem cmadalias lassen sich dann alle Devices abdecken, wenn man die cmdalias regex entsprechend setzt.


define ESPEasy_SW_AAA 10.0.0.1 80 eb KE
...
attr ESPEasy_SW_AAA eventMap /gpio 12 on:on/gpio 12 off:off/
attr ESPEasy_SW_AAA stateFormat Relay1  # Reading für GPIO 12

define ESPEasy_SW_XYZ 10.0.0.2 80 eb KE
...
attr ESPEasy_SW_XYZ eventMap /gpio 15 on:on/gpio 15 off:off/
attr ESPEasy_SW_XYZ stateFormat Relay2  # Reading für GPIO 15

define c_espeasy_sw_toggle cmdalias set ESPEasy_SW_.+ toggle AS {fhem("set $EVTPART0 ".(InternalVal($EVTPART0,"STATE","")=~"on|1"?"off":"on"))}

set ESPEasy_SW_AAA toggle
set ESPEasy_SW_XYZ toggle

MAC66666

#9
Ach so wird das definiert. Sehr schön! Gut dass ich noch nicht angefangen habe. Werde ich testen, danke!

Edit: Ich kann mich nicht im ESPEasy Forum anmelden, sonst hätte ich auch dort schon einige Fragen gestellt...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

MAC66666

jup, geht mit cmdalias. Vielen Dank!
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

Frank_Huber

Moin Moin,

Bin gerade über den Thread gestolpert und wollte meine "Lösung" noch kund tun.

Ich toggle die ESPeasy Relais über die ESPeasy rules.
Hier die rule für pin5:
on toggle5 do
if [pin5#pinlevel] =1
   gpio,5,0
else
   gpio,5,1
endif
endon


Befehl in FHEM:
set ESPEASYDEVICE event toggle5

vbs

Klasse, beste Lösung, danke!

vbs

Hm, ich hab momentan ein Problem mit der Sache:

Ich hab eine Rule, die das Relais sofort einschaltet wenn er ESP Strom kriegt:
on System#Wake do
     gpio,12,1
endon


Der ESP im Badezimmer wird über einen Wandschalter ganz regulär an/aus (Strom dran/Strom weg) geschaltet. Wenn ich nun Strom gebe, da schaltet die Rule korrekt sofort das Licht an.
Jedoch ist der Wert des Devices innerhalb von ESPEasy (in meinen Augen fälschlicherweise) immer noch "0", also aus. Also der Device-Zustand stimmt nicht mit dem tatsächlichen Zustand überein.

Das führt dazu, dass das Toggeln dann nicht klappt, da die Toggle-Rule einschalten möchte, aber es ist ja schon eingeschaltet und so passiert dann gar nichts. :(

Hat da jemand eine Idee? Bin auf Firmware "mega-20180402".

stefanpf

Ich bin nicht sicher ob ich das Problem richtig verstanden habe, aber ich würde es wie folgt versuchen:
- unter Hardware den Pin auf Output High stellen
- die Ruhe beim Booten weg lassen
- im Device switch die Option "send boot state" aktivieren.

Danach müssten eigentlich alle beteiligten den aktuellen Status kennen.