Hallo,
ich bin als Anfänger unterwegs und habe schon diverse Foren und Beschreibungen durchforstet,
leider noch nicht für meine Thematik zielführend.
Meine Aufgabe ist von Prinzip simpel.
Ich nutze den Eingang von einem Shelly1 um einen externen Fremdkontakt aufzuschalten.
Beim Schließen des Kontaktes am Shelly1 soll für eine maximale Zeit von 3 Sek.
der Schaltausgang des Schelly, unabhängig davon, ob der Eingang noch gesetzt ist,
geschaltet werden.
Mein Lösungsansatz:
define Shelly_SW1_On notify Shelly_SW0_On_Off:1 set Shelly_SW_On_Off on
define Shelly_SW1_Off notify Shelly_SW0_On_Off:1 define spaeter_aus at +00:00:03 set Shelly_SW_On_Off off
Der Schaltausgang wird korrekt gesetzt, und auch nach 3 Sek. wieder zurückgesetzt, jedoch wird beim weiteren
Anstehen des Eingangs der Ausgang erneut wieder geschaltet. Das wiederhalte Einhalten des Schaltausgang
bei dauerhaft gesetztem Eingang darf nicht sein.
Wer kann helfen?
Ich muss zugeben ich habe das Problem noch nicht verstanden, liegt eventuell auch daran, das ich den Shelly nicht kenne.
Eventuell aber auch an deiner Formulierung wie "Fremdkontakt aufschalten" oder "Anstehen des Eingangs".
Was soll z.B, "Anstehen des Eingangs" genau bedeuten?
Ich verstehe also nicht, was
ZitatBeim Schließen des Kontaktes am Shelly1 soll für eine maximale Zeit von 3 Sek.
der Schaltausgang des Schelly, unabhängig davon, ob der Eingang noch gesetzt ist,
geschaltet werden.
bedeutet.
Oder
Zitat"Das wiederhalte Einhalten des Schaltausgang
bei dauerhaft gesetztem Eingang darf nicht sein.
Äh was? Vielleicht ist das alles sinnvoll , wenn man die Shellys kennt, ich werd da aber nicht schlau draus.
Kannst du versuchen, das nochmal anders zu formulieren?
Zitatdefine Shelly_SW1_On notify Shelly_SW0_On_Off:1 set Shelly_SW_On_Off on
define Shelly_SW1_Off notify Shelly_SW0_On_Off:1 define spaeter_aus at +00:00:03 set Shelly_SW_On_Off off
ginge auch so:
define Shelly_SW1_On notify Shelly_SW0_On_Off:1 set Shelly_SW_On_Off on ;; define spaeter_aus at +00:00:03 set Shelly_SW_On_Off off
Oder so:
define Shelly_SW1_On notify Shelly_SW0_On_Off:1 set Shelly_SW_On_Off on ;; sleep 3 ;; set Shelly_SW_On_Off off
Shellys kennen also die SChaltzustände 1 und ... 0? nicht
on und
off oder so?
Oder was bedeutet das Event Shelly_SW0_On_Off:1 genau?
Ist Shelly_SW0_On_Off ein Aktor, oder ein anderes Define, das eine eigene Logik hat? Die Namensgebung lässt mich das vermuten, falls das so ist, könnte das Problem auch in der Logik dieses Defines liegen?
Falls das alles total doofe Fragen sind die ich nur stelle weil ich von Shellys keine Ahnung habe bitte ich um Entschuldigung.
Hallo Zrrronggg!,
danke für Deine schnelle Antwort.
Ich habe zuerst die vorgeschlagen codes getestet.
Das Verhalten ist Deiner Codes ist genauso wie bei meinen Codes.
Noch einmal die Aufgabemstellung.
Es gibt einen Eingang (Shelly_SW0_On_Off) der nimmt die Zustände 1 / 0 an.
Es gibt einen Ausgang (Shelly_SW_On_Off) der ist on / Off.
Der Eingang wechselt von 0 auf 1 für die Dauer von 60 Sekunden, jedoch
darf der Ausgang nur 3 Sekunden auf On wechseln, und muss nach den
3 Sekunden zurück auf Off schalten, egal wie lange der Eingang noch
den Zustand 1 hat.
Ja, mein Code sollte das selbe verhalten haben, ist aber performanter. Bei kleinen Installationen erstmal egal.
Ich glaube ich habe das Problem jetzt verstanden.
Eigentlich dürfte deine Schaltung nur ein 2tes Mal auslösen, wenn Shelly_SW0_On_Off auch ohne Änderung des Zustandes Readings sendet. Die meisten Sender senden Reafings bezüglich Schaltzuständen nur, wenn sich der Zustand eines Readings auch wirklich ändert.
Das von dir geschilderte Verhalten lässt mich vermuten, dass der Shelly ggf alls paar Sekunden meldet, dass sein Zustand immer noch 1 ist.
Dann würde dein Konstrukt in der Tat jedesmal auslösen.
Falls das der Fall ist, kannst du das mit dem Attr Event-on-change-reading lösen:
https://wiki.fhem.de/wiki/Event-on-change-reading
Ich geh jetzt erstmal was essen, später mehr...
Ich habe versucht das Attribut bei dem Notify (Shelly_SW1_On) zu setzten.
attr Shelly_SW1_On event-on-change-reading .*
Nachfolgend die Rückmeldung von FHEM:
Unknown command Shelly_SW1_On, try help.
Ich muss leider auch jetzt weg. Melde mich morgen früh wieder. Guten Rutsch.
Zitat von: LuggiXY am 31 Dezember 2020, 18:28:39
Der Eingang wechselt von 0 auf 1 für die Dauer von 60 Sekunden, jedoch
darf der Ausgang nur 3 Sekunden auf On wechseln, und muss nach den
3 Sekunden zurück auf Off schalten, egal wie lange der Eingang noch
den Zustand 1 hat.
notify für die 0 / 1 Erkennung wie jetzt und dann statt einem simplen on ein
on-for-timer 3 und das at kann komplett entfallen
Edit : klar weil Shelly_SW0_On_Off ungleich Shelly_SW0_On ist .....
Zitat von: LuggiXY am 31 Dezember 2020, 18:45:23
Ich habe versucht das Attribut bei dem Notify (Shelly_SW1_On) zu setzten.
attr Shelly_SW1_On event-on-change-reading .*
Nachfolgend die Rückmeldung von FHEM:
Unknown command Shelly_SW1_On, try help.
Das ist Geräte-Attribut und verhindert, dass die Gerätemeldungen ("readings") verarbeitet werden, wenn die Werte sich nicht geändert haben.
Das Attribut muss auf das echte Device gesetzt werden, also die Definition deines Shelly, also vermutlich
Shelly_SW0_On_OffZitat von: Wzut am 31 Dezember 2020, 18:45:47
notify für die 0 / 1 Erkennung wie jetzt und dann statt einem simplen on ein on-for-timer 3 und das at kann komplett entfallen
Stimmt, aber wenn ich recht habe mit der Ursache seines Problems wird das nichts ändern am unerwünschten Verhalten. Ich weiss nicht, ob Shelly on-for-timer nativ können. Falls nicht, ist on-for-timer. nix anderes als ein verdecktes "at", soweit ich weiss. Ich persönlich habe mir angewöhnt, on-for-timer nur zu verwenden, wenn das Gerät das nativ unterstützt, weil ein "irgendwas at ..." leichter nachträglich manipulierbar ist (defmod) sollte das mal erforderlich sein. Zugegeben, eher nicht bei 3 Sekunden. Ist auch sicher ne Geschmacksfrage.
Zitat
Edit : klar weil Shelly_SW0_On_Off ungleich Shelly_SW0_On ist .....
Genau.
Hallo Zrrronggg!,
danke für den letzten Tip,
Aufgabe gelöst.