FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: cocojambo am 06 Juni 2021, 20:30:47

Titel: Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: cocojambo am 06 Juni 2021, 20:30:47
Ich habe wirklich alles im Board bearbeitet und auch probiert und alle Varianten und Vorschläge bis hin zu Wiki getestet.
Ich bekomme es nicht zum Laufen.
Die Subroutine UntoggleDirect habe ich aufgerufen. In den Internals des "Schalters" ändert sich auch nach jeden toggle Befehl der STATE in den Internals in on und off (nach betätigen von F5)
Aber ich bekomme es nicht hin, diese änderung auszuwerten um weitere Aktoren gezielt aus- und einzuschalten.

Hier der funktionierende Befehl der Subroutine:
define n_1Untoggle notify Gartenweglichtschalter_Tuer {UntoggleDirect("Gartenweglichtschalter_Tuer")}

Hier wird der "Schalter", der den toggle Befehl sendet definiert:
define Gartenweglichtschalter_Tuer FS20 f468 1431
setuuid Gartenweglichtschalter_Tuer 60bb8b29-f33f-6f9b-e392-e37635c41743d632
attr Gartenweglichtschalter_Tuer comment Schalter außen neben der Garagentür
attr Gartenweglichtschalter_Tuer model fs20sn
attr Gartenweglichtschalter_Tuer room Test
attr Gartenweglichtschalter_Tuer useSetExtensions 1
attr Gartenweglichtschalter_Tuer webCmd on:off


und hier die Auswertung, die nicht funktioniert:

define Gartenweglicht_notify notify Gartenweglichtschalter_Tuer {if (Value("Gartenweglichtschalter_Tuer") eq "off") {fhem("set Gartenwegbeleuchtung_SW_01 on")}}
setuuid Gartenweglicht_notify 60bcc7ac-f33f-6f9b-78f0-7b8b1200373c30a7
attr Gartenweglicht_notify room Test


Ich habe den Schalter vorher auf off gesetzt. Dann reagiert natürlich das notify weil ja das Reading state gesetzt wird, aber bei weiteren Betätigungen wird zwar STATE geändert aber das notify reagiert nicht.

Ich habe keine Lösung gefunden, wo mein (Denk-) Fehler liegt.

Gruß aus Köln
Norbert
Titel: Antw:Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: Otto123 am 07 Juni 2021, 15:02:02
Hallo Norbert,

das notify kann mMn nicht reagieren. Die Routine verwendet setstate -> und erzeugt somit keine Events
https://fhem.de/commandref_DE.html#setstate

Bist Du sicher, dass das nicht einfacher geht? Ich habe ehrlich gesagt nicht verstanden was passieren soll. Der Gartenwegbeleuchtung_SW_01 klingt doch so als ob der toggle beherrscht?
Du willst mehrere Aktoren synchron schalten?

Gruß Otto

Titel: Antw:Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: betateilchen am 07 Juni 2021, 17:00:07
Man sollte das Arbeiten mit Value() generell vermeiden.

Mir ist das Szenario noch unklar. Du hast einen Schalter (Gartenweglichtschalter_Tuer) und einen Aktor (Gartenwegbeleuchtung_SW_01).

Was soll nun genau passieren bzw. warum glaubst Du, das UntoggleDirect() zu brauchen?
Titel: Antw:Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: cocojambo am 07 Juni 2021, 17:32:16
Ich wollte gerne einen definierten und eindeutigen Zustand des Schalters haben, weil ich damit noch andere FS20 und auch Homematic Aktoren schalte die einen on und off erhalten sollen und das Signal auch noch mit einem FS20SIG2 auswerte der das Ein-und Ausschalten als Text rausgibt.

Ich dachte ja als ich den Wiki Artikel gelesen habe, das das ohne Probleme funktioniert und man den sich ändernden STATE auswerten kann, auch wenn kein Event ausgelöst wird z.B. mit DOIF oder mit InternalVal. Habe ich ja auch probiert, aber erfolgslos. Und das Arbeiten mit Value habe ich auch in Wiki gefunden weil man damit den Status von STATE erhalten soll ohne das sich state ändern muß.

Wenn es tatsächlich nicht möglich ist, ein on und off von STATE zu erhalten, dann muß ich tatsächlich den Switch mit toggle ansteuern und dann dessen state auswerten und verarbeiten für weitere Anwendungen.

Gruß
Nobbi
Titel: Antw:Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: Otto123 am 07 Juni 2021, 19:31:09
Ich habe es glaube ich immer noch nicht verstanden. Suchst Du sowas?
defmod n_Aktor1 notify Aktor1:on|Aktor1:off set Aktor2 $EVENT
Aktor2 kann auch eine structure sein. Oder ist Deine Fragestellung schon allein mit structure zu lösen?
Oder so was?
defmod nty_Aktor10 notify Aktor.:o[nf]+ set Aktor10:FILTER=STATE!=$EVENT $EVENT
Klar kannst Du ein on und off von STATE erhalten, aber setstate produziert keinen Event. Du müsstest - anders getriggert - nur abfragen. Value() sieht einfach aus, aber es gibt jede Menge Fallstricke. Man muss also genau wissen was man tut!
Titel: Antw:Nach "UntoggleDirect" läßt sich Internal "STATE" nicht mit Value auslesen
Beitrag von: cocojambo am 10 Juni 2021, 10:14:18
@Otto 123

Ich habe deine Vorschläge mal probeweise in die Tat umgesetzt. Du hast recht, ist nicht die beste Lösung, zumal ich dann auch noch ein Signal an die FS20 Adresse des SIG2 senden muß.
Ich bin also dazu übergegangen und habe deinen ersten Vorschlag umgesetzt und den Switch direkt mit toggle angesteuert und dann den Status mit einem "FS20 dummy" nach dem SIG2 geschickt.

define Gartenweglicht_notify notify Gartenweglichtschalter_Tuer set Gartenwegbeleuchtung_SW_01 $EVENT

und ...funktioniert. Ich werde wohl die Finger von "untoggle" lassen.

Gruß
Nobbi