NEWS
Rollladenfahrt ankündigen - wie Daten im Blockly auswerten?
-
Hallo zusammen,
Ich hab da wieder mal eine Frage. Ich habe eine Jalousie vor der Tür zur Terrasse und außen vor der Tür auch eine Fliegengittertür, welche nach innen UND NACH AUSSEN öffnet. Wenn die das Fliegengitter offen ist, dann darf die Jalousie natürlich nicht automatisch runterfahren (infolge Verschattung oder Helligkeit etc.), denn dann ist sie im Eimer. Mit dem Shuttercontrol-Adapter kein Problem, einfach einen Türsensor mit einbinden und schon geht schließt die Jalousie nicht, wenn das Fliegengitter auf ist.
Aber.
Zweimal ist es mir schon passiert, dass ich das Fliegengitter nach außen in exakt dem Moment geöffnet habe, also die Jalousie gerade im Begriff war herunterzufahren. Einmal hab ich das Fliegengitter gerade so noch zu bekommen, das andere mal hat es die Jalousie im Kasten verheddert. Grund - bis der Türsensor das Tür-offen Signal gesendet, ioB dieses verarbeitet und dann das Signal zum Hochfahren an den Aktor zur Jalousiesteuerung zurückgesendet hat vergehen teilweise schon mal 5 Sekunden. Genügend Zeit, um die Jalousie zu zerstören. Also hab ich mir gedacht, ich täusche das Schließen der Jalousie erst mal an. Sprich wenn sie herunter fahren soll, dann wackelt sie erst drei mal und fährt dann erst herunter. Damit lässt man dann schnell die Finger vom Fliegengitter...
Das Blockly dazu sieht so aus:
Wie ihr seht, speichere ich den ursprünglich anzufahrenden Wert zwischen, lasse die die Jalousie wackeln, und fahre sie dann auf den ursprünglichen Wert.
Wenn aber das Fliegengitter geöffnet wurde, dann bekommt der Shuttercontrol Adapter ja während der ganzen Aktion die Anforderung, die Jalousie wieder komplett hochzufahren. Das verhindere ich mit meiner Jalousienwackelei ja nun, weil ich die vorher anzufahrende Position zwischenspeichere und die Jalousie dann auf diesen Wert fahre.Lange Rede kurzer Sinn - was soll passieren:
- Niemand öffnet im Moment des Wackelns das Fliegengitter - so wie es läuft ist es OK.
- Es öffnet jemand in dem Moment des Wackelns das Fliegengitter. Dann soll nicht der vorherige Wert angefahren werden, sondern die Jalousie geöffnet.
Mit anderen Worten müsste ich innerhalb des bestehenden Triggers "Jalousie herunterfahren" (und nur darin) prüfen, ob ein neuer Trigger "Fliegengitter geöffnet" ausgelöst wurde. Geht das und was muss man dabei beachten?
-
@guitardoc bitte den Titel sinvoll anpassen !
Hat nix mit Trigger in Trigger zu tun ! -
@djmarc75 Hast du dir den Text durchgelesen? Ich frage doch nach Trigger in Trigger.
-
@guitardoc sagte in Trigger innerhalb eines Triggers:
@djmarc75 Hast du dir den Text durchgelesen? Ich frage doch nach Trigger in Trigger.
jetzt aber langsam!
2as willst du mit Trigger in Trigger retten, wenn das Senden der Änderung zu lange dauert?
-
@homoran Es hat doch mit dem Senden der Änderung gar nichts mehr zu tun. Dass das so lange dauert, daran kann man nichts ändern. Wie ich es lösen will hab ich schon beschrieben, aber das ist nur Nebensache (war vielleicht zu ausführlich)
Es soll nur irgendwie innerhalb des einen Triggers (Jalousie fährt runter) und seiner Abarbeitung (die dauert ja einige Sekunden infolge der notwendigen Pausen für das Fahren der Jalousien) geprüft werden, ob ein anderer Objektzustand geändert wurde. Ich hoffe, ich konnte es verständlich beschreiben? Vielleicht ist es auch kein Trigger im Trigger sondern irgendwas anderes - ich wusste aber nicht wie ich es besser nennen sollte.
Ein Trigger wurde ausgelöst, das Script wird abgearbeitet, und ich möchte irgendwie wissen, ob sich zwischenzeitlich während der Abarbeitung ein ganz anderer Objektzustand geändert hat. Vielleicht beschreibt es das genauer?
Ich könnte zu Anfang der Abarbeitung des Triggers mir den Objrktzustand merken und dann zum Schluss noch mal abfragen und vergleichen, aber ich hatte gehofft, dass es da eine elegantere Variante gibt?
-
@guitardoc Du musst das Fahren des Rolladenmotors unterbrechen, sobald der Datenpunkt des Fliegengitters offen meldet..
Javascript ist aber kein Multitasking... die Trigger-Ausführung erfolgt immer fein säuberlich der Reihe nach...
Ich vermute aber, zumindest in den "Pause" Blöcken werden auch andere Datenpunkte aktualisiert ... Da muss man dann ausreichend engmaschig den Datenpunkt des Fliegengitters abfragen und entsprechend in der Schleife reagieren ...Ich finde das Script nur schwer nachvollziehbar. Sollwert und Stellwert scheinen Eins zu sein ....
-
@martinp sagte in Trigger innerhalb eines Triggers:
Da muss man dann ausreichend engmaschig den Datenpunkt des Fliegengitters abfragen und entsprechend in der Schleife reagieren ...
oder ein zweites Skript das auf das Fliegengitter triggert hinzunehmen.
Das müsste dann allerdings sofort die Fahrt der Jalousie umkehren.Das geht irgendwie, aber frag mich nicht wie. (löschen wenn aktiv???)
-
@martinp sagte in Trigger innerhalb eines Triggers:
Du musst das Fahren des Rolladenmotors unterbrechen, sobald der Datenpunkt des Fliegengitters offen meldet..
Na das ist doch das Problem, dass der Sensor nicht schnell genug meldet.
Alles was er will (hat zwar mit Trigger in Trigger) nichts zu tun, ist dass sich der Rollladen bevor er runterfährt bemerkbar macht.
Also muss man halt 1% runterfahren, 1 % hochfahren und das 3 mal bevor es auf die Zielposition geht. Das kann man doch alles sequentiell abarbeiten. Nur ich werde das sicher nicht im Blockly machen. Das könnt ihr besser.
-
@homoran sagte in Trigger innerhalb eines Triggers:
@martinp sagte in Trigger innerhalb eines Triggers:
Da muss man dann ausreichend engmaschig den Datenpunkt des Fliegengitters abfragen und entsprechend in der Schleife reagieren ...
oder ein zweites Skript das auf das Fliegengitter triggert hinzunehmen.
Das müsste dann allerdings sofort die Fahrt der Jalousie umkehren.Das geht irgendwie, aber frag mich nicht wie. (löschen wenn aktiv???)
Er will ja nicht unterbrechen - er will dass der Rollladen sich ankündigt, damit er die Fliegengittertür nicht öffnet, wenn die Jalousie herunterfahren möchte. Bzw. das nach dem Wackeln einfach nach einer Zeitspanne von 5s nochmals der Status des Fliegengittertürkontaktsensors überprüft wird. (was für ein Wort )
-
@mickym Korrekt, so ist es. Das funktioniert auch. Wenn niemand am Fliegenschutz fummelt dann wackelt die Jalousie dreimal hin und her und fährt dann runter. Wenn aber jemand dran rumfummelt, dann fährt die Jalousie nach dem Wackeln auch runter und ich würde gern, dass sie dann hochfährt. Dazu müsste ich prüfen, ob jemand in der Zeit den Fliegenschutz geöffnet hat.
Normalerweise würde man das dann ja über einen trigger abfragen (dachte ich mir) - deswegen Trigger in Trigger. -
@guitardoc sagte in Trigger innerhalb eines Triggers:
@mickym Korrekt, so ist es. Das funktioniert auch. Wenn niemand am Fliegenschutz fummelt dann wackelt die Jalousie dreimal hin und her und fährt dann runter. Wenn aber jemand dran rumfummelt, dann fährt die Jalousie nach dem Wackeln auch runter und ich würde gern, dass sie dann hochfährt. Dazu müsste ich prüfen, ob jemand in der Zeit den Fliegenschutz geöffnet hat.
Normalerweise würde man das dann ja über einen trigger abfragen (dachte ich mir) - deswegen Trigger in Trigger.Nein Du prüfst innerhalb des Triggers einfach nochmal den Wert des Sensors.
Nach dem 3maligen Wackeln oder nach der Zeitspanne X.
Der Trigger des Kontaktsensors der Tür ist in diesem Fall irrelevant, es ist nur wichtig, wenn die Jalousie getriggert hat, dass nach einer Zeit X inkl. Wackeln der Status des Kontaktsensors nochmal geprüft wird.
Egal wie du es logisch machst - müssen halt Deine Hausbewohner wenn es wackelt den Status des Kontaktsensor nicht mehr ändern - die Schwachstelle ist ja die Differenz bis dieser meldet.
-
@mickym said in Trigger innerhalb eines Triggers:
Also muss man halt 1% runterfahren, 1 % hochfahren und das 3 mal bevor es auf die Zielposition geht.
Das "Einleitungs-Zappeln" soll dann wohl der Alarmierung der potentiellen Bediener des Fliegengitters dienen?
Bin mir nicht sicher, ob das Herangehen gut für die Getriebe und Motoren des Rolladen-Antriebs ist ...
Eine LED-Zeile, die aus dem Rolladenkasten herunterblinkt wäre auch eine effektvolle Lösung des Problems ...
Oder ein Fangriegel, der das Öffnen des Fliegengitters verhindert, wenn das Fahren des Rolladen eingeleitet wurde....
-
@guitardoc sagte: prüfen, ob ein neuer Trigger "Fliegengitter geöffnet" ausgelöst wurde.
Verwende anstelle der Schleife und der Pausen besser einen Timeout und stoppe ihn durch das Fliegengitter.
-
@guitardoc said in Trigger innerhalb eines Triggers:
Wenn aber jemand dran rumfummelt, dann fährt die Jalousie nach dem Wackeln auch runter und ich würde gern, dass sie dann hochfährt.
Man verschiebt nur den Zeitpunkt der Verwundbarkeit ... Wer das Zappeln der Rollade ignoriert, schafft es auch danach womöglich treffsicher den Zeitpunkt zu erwischen, wo das endgültige Verfahren ausgelöst wird ...
Mein "Verriegel die Gittertür vor dem Fahren" Ansatz gefällt mir aber auch nicht besonders... die Türen sind meist recht filigran ...Vielleicht Türgriffe der Tür unter Spannung setzen (Weidezaungerät?)
-
@martinp Das Weidezaungerät gefällt mir am Besten! Da hab ich gleich viele Ideen, wo ich da noch alles Spannung drauflegen könnte, wenn meine bessere Hälfte wieder mal irgendwo dran rumfummelt wo sie nicht soll...
@paul53 Das Blockly muss ich mir in Ruhe anschauen. Die Idee dahinter klingt aber erst mal gut!