NEWS
Lösung für eine Prüfung gesucht
-
-
@schonwiederich sagte: Bewegung triggert, bevor die variable auf True gesetzt werden kann.
Dauert die Reaktion der Direktverknüpfung so lange?
Dann muss man die Bewegungserkennung verzögern. -
@paul53 es ist ja knopf drücke - Direktverbindung schaltet - Aktor meldet Status Änderung an ccu - statusanderung wird von ccu an iob übertragen bzw dort registriert - Programm erkennt diese Änderung und setzt die variable.
Wenn man also quasi in einer Bewegung den Knopf drückt und ins Bad hineingeht ist der bewegungsmelder ggf schneller als die variablenänderung
Ich werde den timeout mal testen.
An könnte auch auf... Wenn Taster aktualisiert.... Reagieren. Das wäre dann evtl schneller als den Aktor auszuwerten.
Danke -
@schonwiederich sagte: Wenn Taster aktualisiert.... Reagieren. Das wäre dann evtl schneller als den Aktor auszuwerten.
Zum Taster existiert ein Datenpunkt (PRESS_SHORT) in ioBroker?
-
@paul53
jepp, der mit diesem "Tasersymbol" was aussieht wie so eine Hotelempfangsklingel.
Ich habe den Zustand mal im History geloggt. Der Taster steht immer auf True.
Wenn man ihn betätigt wird er mit Abstand von ca 0,2 Sekunden 2 mal auf True aktualisiert. -
-
@schonwiederich
Letztendlich hast du in deinem Skript schon alles was du brauchst. Nur die Reihenfolge der Abfragen muss geändert werden:Aktuell machst du:
falls nicht manuell ein:
falls wenig licht und BWM aktiv dann mach was
sonst falls bwm und nacht dann mach was anderes
sonst falls BWM falsch mach licht aus.was Du willst ist:
falls wenig licht und BWM aktiv mach was
sonst falls BWM aktiv und nacht dann mach was anderes
sonst falls BWM inaktiv und nicht manuell ein mach licht aus.Was passieren kann :
- Es wird der Knopf gedrückt und man wartet mit dem rein gehen - dann bekommt man das Verhalten des automatischen Licht an.
- Es wird der Knopf gedrückt und man geht direkt rein - dann sollte erst die BWM steuerung zuschlagen und danach das Licht wie vom Knopf gesteuert an gehen.
In beiden Fällen geht das licht nur dann automatisch aus wenn es nicht manuell eingeschaltet wurde.
A.
Nachtrag: Mir ist noch eine Sache aufgefallen: Wenn du die Lampe über den Taster direkt toggelst dann kann es dazu kommen das die Lampe abgeschaltet wird wenn das Tastersignal erst nach dem Auslösen der BWM erkannt wird.
In diesem Fall würde ich bei dem Skript welches die Lampe einschaltet (sofern es eines gibt) noch den BWM abfragen - ist der BWM aktiv dann sollte der Taster die Lampe nie ausschalten.A.
-
@asgothian
Hi danke für dein Feedback.
ich bin nicht sicher ob wir uns richtig verstehendas was du bei "was du willst" schreibst ist nicht ganz richtig.
was ich will ist, das wenn man das licht per hand eingeschlatet hat, das programm für den bwm garnicht reagiert, weder mit ein- noch mit ausschalten. = es bleibt so lange an bis man es von hand wieder ausschaltet.
wenn man das licht nicht zuvor eingeschlatet hat , dann soll das programm des bewegungsmelders durchlaufen und entsprechend an und aus schalten.Demnach denke ich die reihenfolge die ich jetzt habe ist schon die richitige...
Nachtrag: Der Taster togeelt die Lampe nicht. Kanel 1 schaltet per HM direktverknüpfung an und Kanal 2 aus, unabhängig vom IOB.
VG und danke
-
@schonwiederich sagte in Lösung für eine Prüfung gesucht:
@asgothian
Hi danke für dein Feedback.
ich bin nicht sicher ob wir uns richtig verstehendas was du bei "was du willst" schreibst ist nicht ganz richtig.
was ich will ist, das wenn man das licht per hand eingeschlatet hat, das programm für den bwm garnicht reagiert, weder mit ein- noch mit ausschalten. = es bleibt so lange an bis man es von hand wieder ausschaltet.
wenn man das licht nicht zuvor eingeschlatet hat , dann soll das programm des bewegungsmelders durchlaufen und entsprechend an und aus schalten.Demnach denke ich die reihenfolge die ich jetzt habe ist schon die richitige...
Nachtrag: Der Taster togeelt die Lampe nicht. Kanel 1 schaltet per HM direktverknüpfung an und Kanal 2 aus, unabhängig vom IOB.
VG und danke
So hatte ich dich durchaus verstanden. Entscheidend ist folgendes:
Solange der Status des Schalters verzögert weiter gegeben wird kannst du nur wie @paul53 geschrieben hat das Auslösen des BWM um diese Zeit verzögern - mit dem Effekt das die Lampe ggf. erst einige Zeit nach betreten des Raumes an geht.
Alternativ kannst du zulassen das der BWM die Lampe auch einschaltet - was wenn sie schon eingeschaltet ist erst einmal kein Problem darstellen sollte - und dann das ausschalten der Lampe über den BWM verhindern. Genau das würde mein Ansatz oben realisieren.
Eine dritte Möglichkeit sehe ich ehrlich gesagt nicht.
A.
-
@asgothian
Nochmal danke,
Ich denke es gibt 3 Ansätze:- Den von @paul53 (Verzögerung)
- Den von Dir (Wobei ich dann schauen müsste, ob der zu anderen "ungewünschten" effekten führt.
3, Das was ich noch vorgeschlagen hatte. (Nicht auf "Aktor wurde geändert" reagieren um die Variable zu setzen sondern auf "Taster wurde aktualsisert" Ich kann mir vorstellen dass das "schneller" ankommt als die Aktoränderung.
Wenn ich deinen Fall ausprobiere nehme ich das "Falls - nicht - manuell ein" am Anfang raus und setze es ausschließlich als zweite Bedingung zum AUS Befehl hinzu?!
VG
-
@schonwiederich sagte: Der Taster togeelt die Lampe nicht. Kanel 1 schaltet per HM direktverknüpfung an und Kanal 2 aus
Dann versuche mal, ob so schneller auf den Kanal-1-Taster reagiert wird:
-
@paul53
Danke.
Sollte ich den oberen Falls Block dann nicht rausnehmen? Nicht das die beiden Blöche sich "gegenseitig stören" wenn Sie beide die Variable schrieben wollen?!Verständnissfrrage:
Press short ist immer "wahr" kann ich dennoch "ist wahr" nehmen oder muss ich "bei aktualisierung" nehmen?Muss ich dann nicht noch ebenso einen Falls Block für Press short Kanal 2 und setzte manuell_ein auf "falsch" mit reinnehmen? Sonst bleibt doch die Variable für immer auf "wahr" stehen, oder?
-
@schonwiederich sagte: Sollte ich den oberen Falls Block dann nicht rausnehmen?
Nein, denn der stellt sicher, dass auch bei Einschalten über Vis oder Tab "Objekte" die Variable gesetzt wird und dass beim Ausschalten - egal wodurch - die Variable zurück gesetzt wird.
-
@paul53
Es ist wie ich vermutet hatte. Der Trigger über den Aktor dauert zu lange.
Ich habe den Debug Block in beide Falls Blöcke (Aktor UND Taster) gepackt.
Wie man sehen kann wird die Variable auf True gesetzt , fast unmittelbar nach Tastendruck, das zweite True kommt vom Aktor und kommt sage und schreibe 2,8 bis 2,9 Sekunden nach dem True des Tasters.Ich werde also heute Abend testen und dann wieder berichten.
-
@schonwiederich
Log-Ausgaben bitte in Code tags posten!
Man kann nicht unterscheiden, welcher Debug-Baustein ausgibt. Deshalb bitte um einen Text ergänzen. -
15:41:26.118 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:28.930 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Aktortrue 15:41:39.499 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Aktorfalse 15:41:41.800 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:44.952 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Aktortrue 15:41:46.239 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:47.877 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:48.870 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:49.861 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Tastertrue 15:41:55.036 info javascript.0 (485) script.js.common.Xiaomi_Schalter.Bewegungsmelder_Bad2: Aktorfalse
Jetzt nochmal zur besseren Nachvollziehbarkeit
Vielen Dank !Nachtrag: Die mehrfachen Tastertrue einträge sind klicks nacheinander, wenn der Zustand bereits "AN" war.
-
Kurzer Zwischenstand: Bisher kein unerwünschtes Verhalten mehr.
Teste weiter...... -