NEWS
Lösung für eine Prüfung gesucht
-
@paul53
Das mit dem Duty Cycle sparen macht sinn.
"Die Variable licht wird nur wahr, wenn Bewegung UND Nacht (dunkel)."
Damit hast Du bestimmt recht. Nur logisch liest es sich für mich im Blockly nicht.
Denn man ließt ja eiegntlich falls nicht manuell ein dann setze variable licht auf wert von Bewegungsmelder UND Zeit (dunkel) .
Logisch lesen würde ich es wenn dort nicht stünde UND Zeit dunkel sondern FALLS Zeit (dunkel).Denn der gesamt "setze licht auf" Block steht ja im "mache" des vorangestellten Falls blocks und damit erkenne ich optisch garkeine falls Zeit dunkel prüfung. Aber das ist bestimmt so in Blockly.
Ist für mich als Anfänger nur nicht leicht nachzuvollziehen.
Danke Dir -
Hallo zusammen,
ich habe mir jetzt diese Version mit Eurer Hilfe gebastelt.
Ich werde Sie jetzt mal testen und dann mit dem Ergebnis melden. Danke an alle. -
@schonwiederich
Hi alle,
Ich hatte das Programm wie oben zu sehen getestet. Erst lief es augenscheinlich gut.
Aber seit ein paar Tagen nicht mehr.
Was genau geht nicht....
Man drückt den Taster geht ins Bad und bewegt sich 3 minuten nicht dann geht das Licht aus.
Das dürfte es ja nicht da das Programm ja garnichts laufen darf da man zuvor den Taster gedrückt hat.
Wie kann ich feststellen ob die variable die ich im Programm setze auch richtig gesetzt wird? Bzw habt ihr noch eine Idee? -
@schonwiederich
Hast du beachtet, dass ein Taster beim Drücken auf false und beim Loslassen auf true (oder umgekehrt je nach Programmierung) geht?Deine Variable könnte also zweimal umschalten.
-
@schonwiederich sagte: Wie kann ich feststellen ob die variable die ich im Programm setze auch richtig gesetzt wird?
Debug-Block einbauen.
-
Hallo zusammen,
Ich war ausgefallen daher schreibe ich erst jetzt. Ich werte nicht den Taster aus sondern den Aktor der vom Taster geschaltet wird.
Das debug zeigt sauber an das die variable auf Treue und falls gesetzt wird wenn man den Taster bzw den Aktor schaltet. Dennoch geht das Licht nach 3 Minuten aus. Ich finde den Fehler nicht.
Habt ihr noch eine Idee? -
@schonwiederich sagte: Man drückt den Taster geht ins Bad und bewegt sich 3 minuten nicht dann geht das Licht aus.
Schaltet der Taster direkt das Licht oder über ein Skript?
-
@paul53
Eine homematic direktverknüpfung -
@schonwiederich sagte: Eine homematic direktverknüpfung
Dann muss es funktionieren. Die Variable manuell_ein wird korrekt gesetzt? Zwischen "BM_Bad presence" und den Licht-Aktoren gibt es keine Direktverknüpfung?
-
@paul53 nein der bm ist von Ikea und wird nur über iobroker angesprochen.
-
@paul53 Sooooo, ich glaube und hoffe ich habe nun den fehlerteufel.
Drückt man den Taster der dann den Aktor schaltet, welcher dann die variable auf True setzt, geht aber sehr schnell dabei ins Bad, so dass die bewegungserkennung das bewegungsprogramm triggert bevor die variable gesetzt werden kann, steht die variable weiter auf false. So auch zu sehen in dem Screenshot in Orange eingefärbt.
Ich denke das ist das Problem.
In kurz... Bewegung triggert, bevor die variable auf True gesetzt werden kann.Habe ich eine chance das technisch abzufangen oder geht das nur durch einweisen der Familie =
Knopf drücken, 1 Sekunde warten, rein gehen?Danke vielmals vorab.
-
-
@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.