Hallo zusammen,
ich würde gern mein Garagentor ein wenig automatisieren.
Folgende Sensoren sind vorhanden und im FHEM eingebunden:
- Lidar --> erkennt ob Fzg. in der Garage
- Lichtschranke --> erkennt ob sich ein Hindernis unter dem Garagentor befindet
- Garagentor Anschlag unten und oben (Erkennung von geschlossen, offen und zwischenstellung)
Wie könnte ich es anstellen dass sobald das Tor geöffnet wird und das Fahrzeug sich raus bewegt (also Lidar erkennt Fahrzeug ist in der Garage, dann Lidar erkennt Fahrzeug weg und Lichtschranke unterbrochen), dann wenn die Lichtschranke freigegeben wird nach 5s das Garagentor automatisch schließt.
Eine solche verschachtelte Funktion habe ich bisher noch nie in FHEM gesehen bzw. umgesetzt, daher bräuchte ich einen Hinweis wie man es am elegantesten lösen könnte.
Danke und Gruß
Alex
Zitat von: Nighthawk am 21 Dezember 2019, 07:54:23
Hallo zusammen,
ich würde gern mein Garagentor ein wenig automatisieren.
Folgende Sensoren sind vorhanden und im FHEM eingebunden:
- Lidar --> erkennt ob Fzg. in der Garage
- Lichtschranke --> erkennt ob sich ein Hindernis unter dem Garagentor befindet
- Garagentor Anschlag unten und oben (Erkennung von geschlossen, offen und zwischenstellung)
Wie könnte ich es anstellen dass sobald das Tor geöffnet wird und das Fahrzeug sich raus bewegt (also Lidar erkennt Fahrzeug ist in der Garage, dann Lidar erkennt Fahrzeug weg und Lichtschranke unterbrochen), dann wenn die Lichtschranke freigegeben wird nach 5s das Garagentor automatisch schließt.
Eine solche verschachtelte Funktion habe ich bisher noch nie in FHEM gesehen bzw. umgesetzt, daher bräuchte ich einen Hinweis wie man es am elegantesten lösen könnte.
Danke und Gruß
Alex
moin,
ich würde das wohl etwas anders angehen. Umschaltung Lidar von Auto da/Auto weg würde ich als routinestartendes Event nehmen. (In diesem Fall kann man ja wohl voraussetzen das das Tor offen war )
Nach X sekunden kontrollieren ob das Auto immer noch weg ist ( zur vermeidung von kurzen Störungen - wodurch auch immer bedingt )
wenn das Auto dann noch immer weg ist - tor schliessen ( ggf. nur falls offen ) , wenn Lichtschranke frei meldet.
Und das ganze würde ich auch nur dann riskieren , wenn das Tor eine eigenständige Hindernisskontrolle hat , die autark von Fhem läuft um hier unfälle zu vermeiden !!!
Umsetzbar vermutlich mit Notify/Perl(My_Utils) , DOIF und MSwitch.
Da ich mit Notify und DOIF nichts am Hut habe könnte ich nur bei einrichtung eines MSwitches helfen. Da MSwitch zwar recht einfach einzurichten ist , aber eine Darstellung als Code hier nicht möglich ist und das Vorhaben schon etwas komplexer ist ist das aber nur über Telefon/ Teamviewer machbar.
Wenn du keine andere Lösung ( Notify/Perl/DOIF etc.) findest kannst du mich gerne anschreiben
gruss Byte09
edit: eine sequenzefunktion ist im MSwitch integriert, d.H du sparst dir weitere Eventhandler etc.
Moin,
ich würde so etwas mit DOIF umsetzen. Schau mal, hier haben wir ein DOIF für eine Steckdose mit Power-Messfunktion an der eine Waschmaschine hängt:
https://forum.fhem.de/index.php/topic,48877.msg944373.html#msg944373
Da habe ich mich das erste Mal mit DOIF beschäftigt. Bin auch kein Programmierer. Hab's einigermaßen verstanden und verwende es nun für alle möglichen Sachen.
Hier die Wiki-Seite: https://wiki.fhem.de/wiki/DOIF
Gruß Hoppel
Eine weitere Alternative ist sequence (https://fhem.de/commandref_modular.html#sequence): generiert selbst ein Event, falls in einer bestimmten Reihenfolge und Zeitabstand die angegebenen Events eintreffen. Das 5 Sekunden Warten zum Schluss koennte man mit triggerPartial abbilden.
uff! Viele wege...
Vielen Dank für eure Rückmeldungen, werde mir all die Varianten anschauen und die für mich eleganteste aussuchen.
DOIF habe ich häufig im Einsatz, eine solche Verschachtlung habe ich aber bisher nicht ausprobiert und ich denke für diese Aufgabe ist DOIF nicht die beste Wahl.
Danke und Gruß
Alex
Ok, wenn ich ehrlich bin, kenne ich nur DOIF. :)
Ich hätte dein Vorhaben aber jetzt noch nicht als zu verschachtelt bewertet.
Wenn du einen eleganteren Weg gefunden hast, teile uns das hier bitte gern mit. Vielleicht finde ich daran auch gefallen. ;)
Viele Grüße Hoppel
Mit der Perl-Variante von DOIF habe ich im Bereich meiner Heizungssteuerung etwas ähnliches gelöst: Ein äußeres DOIF stellt den Bedarf fest, ein inneres DOIF schaltet die Heizung an und stellt sie auf höheren Vorlauf und ein innerstes DOIF schaltet dann sobald die Vorlauftemperatur über der Boilertemperatur ist, die Warm-Wasserpumpe an und beendet die ganze Sequenz schließlich.
Christian
@cwagner
koenntest Du bitte Deine Lösung hier einstellen?
Bei DOIF und ähnlichen fehlt mir das Verständnis wie ich den Übergang trigere von Fahrzeug da und dann nicht mehr und auch bei der Lichtschranke --> blockiert - - > frrigeworden.
Der Ablauf müsste wie folgt sein :
Distance > 1500 == Fahrzeug in der Garage
Distance < 1500 == Fahrzeug nicht in der Garage
Lichtschranke = on == blockiert
Lichtschranke = off == frei
(([06:00-08:00] &&, !$we) && ([Distance] lt 1500) && (?[Garagentor] eq "offen" ) ) {
(([Lichtschranke] eq "on") && (?[Distance] gt 1500) && (? [Garagentor] eq "offen" )) {
(([Lichtschranke] eq "off") && (?[Distance] gt 1500) && (?[Garagentor] eq "offen" )){
(Wait 5s && set Garagentor_Zu on)
}
}
}
Wird hier nicht beim herausfahren des Fahrzeugs ("Distance" wechselt von < 1500 auf >1500) nicht die erste Schleife "false", sodass die Schleife dann abbricht oder wuerde die Verschachtellung so nacheinander abgearbeitet?
Ich bin momentan nicht daheim, daher kann ich es leider noch nicht ausprobieren.
Danke und Gruß
Alex