GELÖST Notify: Schalten mittels zweier Schalter

Begonnen von Ajuba, 16 April 2017, 22:04:33

Vorheriges Thema - Nächstes Thema

Ajuba

Ich mache gerade meine ersten Gehversuche mit notify und versuche einen Dummy (später eine Funksteckdose) über 2 Wege zu schalten:
FS20 Fernbedienung (im toggle mode) und Dummy Schalter.

define ntest2 notify FS20_473405:.*|S_FreeTec:.* \
{\
if (Value("FS20_473405")eq "toggle"||Value("S_FreeTec") eq "on") \
{fhem ("set dum1 on")} \
elsif\
(Value("FS20_473405")eq "dimupdown"||Value("S_FreeTec") eq "off") \
{fhem ("set dum1 off")} }


Jeder Schaltzyklus EIN/AUS einzeln für sich (also immer vom selben Gerät) funktioniert auch ohne Probleme.
Wenn ich aber mische kommt vom zweiten Gerät statt des AUS Befehls auch der EIN Befehl
2017-04-16 21:46:47 dummy dum1 on
2017-04-16 21:46:47 FS20 FS20_473405 toggle
2017-04-16 21:46:52 dummy dum1 off
2017-04-16 21:46:52 FS20 FS20_473405 dimupdown
2017-04-16 21:46:58 dummy dum1 on
2017-04-16 21:46:58 dummy S_FreeTec on
2017-04-16 21:47:02 dummy dum1 off
2017-04-16 21:47:02 dummy S_FreeTec off
2017-04-16 21:47:08 dummy dum1 on
2017-04-16 21:47:08 FS20 FS20_473405 toggle
2017-04-16 21:47:13 dummy dum1 on
2017-04-16 21:47:13 dummy S_FreeTec off


Wo kann da der Fehler liegen?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

rabehd

Da steht, dass toggle immer on schaltet und dimupdown immer off.

ZitatWenn ich aber mische kommt vom zweiten Gerät statt des AUS Befehls auch der EIN Befehl
Wenn du mit Gerät die Fernbedienung und den Dummyschalter meinst, dann kommen von dort nur Zustände, die Befehle an den Steckdosendummy gibt dein notify.
Auch funktionierende Lösungen kann man hinterfragen.

Ajuba

Ja, mit Gerät sind das echte Gerät FS20 Fernbedienung und das virtuelle DummyGerät S_FreeTec gemeint.
Ja, mit der Fernbedienung schalte ich mit kurzem Tastendruck (toggle) ein und mit langem Tastendruck (dimupdown) aus. Sobald ich aber mit S_FreeTec ON eingeschaltet hatte schaltet FS20 dimupdown interessanterweise nicht mehr OFF sondern ON. Ich muss dann erst wieder mit S_FreeTec OFF schalten, dann kann ich mit FS20 korrekt ON und OFF schalten.

Es ist als ob das notify den Status von dum1 überprüfen würde und dadurch beeinflusst wird.
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Otto123

#3
Hi Ajuba,

ich übersetze mal den if Zweig:
Wenn FS20_473405 gleich "toggle" oder S_FreeTec gleich "on" ist, also wenn ein Vergleich von beiden stimmt dann wird dum1 auf on geschaltet. Der elseif Zweig wird dann nicht durchlaufen.

Wenn FS20_473405 nicht "toggle" und S_FreeTec nicht "on" ist, dann wird der elseif Zweig durchlaufen.

Ich verstehe nicht was Du eigentlich willst, deswegen kann ich Dir die richtige Logik auch nicht sagen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

automatisierer

So rein von der Logik her, solltest du deine if-Prüfungen nicht auf die Fernbedienungen sondern auf das Device ausrichten.
Also:
if (Value("dum1")eq "on" {fhem ("set dum1 off")}

Ajuba

Ich glaube ich habe das Problem selbst erkannt aber die Lösung fehlt mir noch.

Was ich will:
Am Tablet das Licht (z.Zt. den Dummy) einschalten und mit der Fernbedienung ausschalten bzw. umgekehrt. Also im Prinzip sowas wie einen Stromstoßtaster um in der konventionellen Hauselektrik zu bleiben.

Das wahrscheinliche Problem:
Ich habe es hier nicht mit Tast-Impulsen sondern mit Schalter Zuständen zu tun.
Somit bleibt z.B. der Tastendruck "Toggle" auf der FS20 Fernbedienung solange aktiv bis ich etwas anderes drücke oder ihm ein set "reset" sende. Dann geht nämlich dum1 auch auf off.

Jetzt könnte ich theoretisch wohl das notify so erweitern, dass es den "Sender" zusätzlich zum setzen das Aktors zurücksetzt. Ich muss dann aber eigentlich die "steigende Flanke" des Tasters auswerten um nicht gleich wieder den soeben geschaltenen Zustand selbst rückgängig zu machen. Ich hoffe, das war einigermaßen verständlich ausgedrückt.

Aber nochmal einfach gesagt, ich brauche eine Stromstoßschalter Konfiguration um von mehreren Stellen eine Lampe zu schalten.
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

alanblack

Ich denke, dass dein Problem daher kommt, dass Du das mit einem notify lösen willst.
Du bekommt so ein Event von einem der beiden Geräte, fragst aber die Zustände beider Geräte ab.
Ist also der Zustand von dem S_Freetec "on", kannst du mit FS20_473405 toggeln bis Du schwarz wirst, der dum1 bleibt "on".

Du brauchst eher

define ntest2 notify FS20_473405:.* \
{\
if (Value("FS20_473405")eq "toggle" && Value("dum1") eq "off") \
{fhem ("set dum1 on")} \
elsif\
(Value("FS20_473405")eq "dimupdown" && Value("dum1") eq "on") \
{fhem ("set dum1 off")} }

define ntest3 notify S_FreeTec:.* \
{\
if (Value("S_FreeTec")eq "on" && Value("dum1") eq "off") \
{fhem ("set dum1 on")} \
elsif\
(Value("S_FreeTec")eq "off && Value("dum1") eq "on") \
{fhem ("set dum1 off")} }

(ungetestet)

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

automatisierer

Zitat von: Ajuba am 16 April 2017, 23:48:21
Ich glaube ich habe das Problem selbst erkannt aber die Lösung fehlt mir noch.

Was ich will:
Am Tablet das Licht (z.Zt. den Dummy) einschalten und mit der Fernbedienung ausschalten bzw. umgekehrt. Also im Prinzip sowas wie einen Stromstoßtaster um in der konventionellen Hauselektrik zu bleiben.

Ja eben, daher ist doch der Zustand der Fernbedienungen völlig wurst. Dein Notify muss halt auf die Events die von der Fernbedienung ausgelöst werden reagieren. Das kann ja auch jedes mal das selbe Event sein und muss nicht 'toggle' und 'dimupdown' im wechsel sein (das erste sollte ja der kurze Tastendruck und das Zweite wahrscheinlich ein langer Tastendruck des FS20-Device sein) Wenn du das Device 'dum1' immer zwischen 'on' und 'off' hin und her schalten willst, dann musst du in deinem Notify den Zustand von 'dum1' prüfen und nicht den der Fernbedienungen.

Ajuba

Danke mal für die Tipps. Ich kann erst am Abend wieder testen und melde mich dann wieder.

Gesendet von meinem SM-G920F mit Tapatalk

FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Ajuba

Danke, das Aufteilen in 2 notify hat geholfen. Im Nachhinein betrachtet eh klar, dass das nicht gehen konnte.
Ich wollte eigentlich die Anzahl der notifies klein halten aber das ist anscheinend nicht möglich. Auch gut.

Danke nochmals
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight