Hallo zusammen,
ich finde endlich so langsam die Zeit meine plugins aus dem Wiregate auf den TWS zu übertragen. Mit den einfachen Dingen wie "sind noch Fenster auf?" oder "Ist irgendwo das Licht an?" bin ich auch schon durch. Jetzt hänge ich aber an der Logik für mein Garagentor.
Mein altes Plugin hatte 3 Trigger:
1. Fahrbefehl Garagentor
2. Endlage oben erreicht
3. Endlage unten erreicht.
Zusätzlich wurde nach dem Durchlauf ein trigger gestartet, der das Plugin nach 30s wieder aufgerufen hat um festzustellen, ob die Endlage erreicht wurde oder das Tor angehalten hat.
Abhängig von den 3 Parametern kann am Ausgang folgendes rauskommen:
0: oben
1: unten
2: fährt
3: steht
Der Ablauf war folgender:
Wenn "Endlage oben erreicht == 1" und "Endlage unten erreicht == 0" dann 0 (oben)
Wenn "Endlage oben erreicht == 0" und "Endlage unten erreicht == 1" dann 1 (unten)
Wenn "Endlage oben erreicht == 0" und "Endlage unten erreicht == 0" und "letzter fahrbefehlt nicht älter als 30s" dann 2 (fährt)
Wenn "Endlage oben erreicht == 0" und "Endlage unten erreicht == 0" und "letzter fahrbefehlt älter als 30s" dann 3 (steht)
Ich vermute mal, dass sich das nur mit einer Custom Logik lösen lässt. Aber ich lass mich auch gerne eines besseren belehren.
Leider stehe ich vollkommen auf dem Schlauch, wie ich das hinbekommen.
Vielleicht hat von euch jemand eine Idee.
Gruß
Michael
NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2
Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074
Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2
Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074
Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117
NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs
[Beantwortet] [V4.0 IP3] Position des Garagentors zeitabhängig
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
- Reactions:
- Beiträge: 6
- Registriert: Sa Apr 09, 2022 10:23 pm
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 2 Mal
[V4.0 IP3] Position des Garagentors zeitabhängig
Zuletzt geändert von Parsley am Fr Okt 27, 2023 12:47 pm, insgesamt 2-mal geändert.
TWS 2500 ID:605 VPN und Reboot nach Vereinbarung
-
- Reactions:
- Beiträge: 2337
- Registriert: Sa Sep 15, 2018 10:26 am
- Wohnort: Kerpen
- Hat sich bedankt: 902 Mal
- Danksagung erhalten: 704 Mal
Hallo Michael,
herzlich wilkommen im Forum und Glückwunsch zum ersten Post.
Bitte passe doch noch den Titel deines Threads und deine Signatur entsprechend der Forenreglen (siehe blauer Kasten oben) an.
Ich würde das mit einer Custom-Logik lösen, bin aber selbst immer wieder überrascht, was unsere Logik-Spezis hier so zu zaubern wissen.
Ggf. ist es ja sinnvoll den Quellcode des Plugins hier zu posten…?
Beste Grüße
Jens
herzlich wilkommen im Forum und Glückwunsch zum ersten Post.
Bitte passe doch noch den Titel deines Threads und deine Signatur entsprechend der Forenreglen (siehe blauer Kasten oben) an.
Ich würde das mit einer Custom-Logik lösen, bin aber selbst immer wieder überrascht, was unsere Logik-Spezis hier so zu zaubern wissen.
Ggf. ist es ja sinnvoll den Quellcode des Plugins hier zu posten…?
Beste Grüße
Jens
Zuletzt geändert von blaubaerli am Do Okt 26, 2023 10:52 pm, insgesamt 1-mal geändert.
-
- Reactions:
- Beiträge: 1884
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 639 Mal
- Danksagung erhalten: 775 Mal
Moin Michael,
Deine Frage scheint zumindest im momentanen Stand der Diskussion sehr unabhängig von der Version aber da sich der Funktionsumfang des TWS ja auch entwickelt, ist es einfach auch sinnvoll festzuhalten für welche Version die Antwort gegeben wird und die Forenregel gibt vor, dass dies bitte im Betreff zu stehen hat.
Ich gehe davon aus, dass Du nachlieferst und antworte daher schon einmal.
Ich bin recht fit in custom Logiken arbeite aber selber nur mit diesen, wenn die Aufgabe nicht durch zwei oder drei Standardlogiken gelöst werden kann (oder sie häufigiger eingesetzt werden). Beim Erstellen einer Customlogik nutzt man letzten Endes auch nur Module, die nahezu deckend mit den Standard Modulen sind und somit ist der Gedankenprozess auch sehr nah beieinander.
In deinem Fall würde ich mir als erstes eine Timerlogik wählen, um den Status zu Ermitteln ob das Tor fährt oder steht.
Hierfur (also um den richtigen Timer zu ermitteln) musst du wissen, ob Du auf eine steigende oder fallende Flanke reagierst oder ob einfach jedes True eine Fahrt auslöst, egal ob bereits eine negative Flanke stattgefunden hat.
In einer zweiten Logik ermittelt Du dann bereits den gewünschten Statuswert.
Ich würde es wahrscheinlich mit einer "Freien Formel" lösen (wenn-dann-Formel).
X1>0?3:X2+2*X3
X1 : fährt = 0, steht = 1
X2 : Position oben
X3 : Position unten
Deine Frage scheint zumindest im momentanen Stand der Diskussion sehr unabhängig von der Version aber da sich der Funktionsumfang des TWS ja auch entwickelt, ist es einfach auch sinnvoll festzuhalten für welche Version die Antwort gegeben wird und die Forenregel gibt vor, dass dies bitte im Betreff zu stehen hat.
Ich gehe davon aus, dass Du nachlieferst und antworte daher schon einmal.
Ich bin recht fit in custom Logiken arbeite aber selber nur mit diesen, wenn die Aufgabe nicht durch zwei oder drei Standardlogiken gelöst werden kann (oder sie häufigiger eingesetzt werden). Beim Erstellen einer Customlogik nutzt man letzten Endes auch nur Module, die nahezu deckend mit den Standard Modulen sind und somit ist der Gedankenprozess auch sehr nah beieinander.
In deinem Fall würde ich mir als erstes eine Timerlogik wählen, um den Status zu Ermitteln ob das Tor fährt oder steht.
Hierfur (also um den richtigen Timer zu ermitteln) musst du wissen, ob Du auf eine steigende oder fallende Flanke reagierst oder ob einfach jedes True eine Fahrt auslöst, egal ob bereits eine negative Flanke stattgefunden hat.
In einer zweiten Logik ermittelt Du dann bereits den gewünschten Statuswert.
Ich würde es wahrscheinlich mit einer "Freien Formel" lösen (wenn-dann-Formel).
X1>0?3:X2+2*X3
X1 : fährt = 0, steht = 1
X2 : Position oben
X3 : Position unten
Zuletzt geändert von Robosoc am Fr Okt 27, 2023 6:37 am, insgesamt 2-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 6
- Registriert: Sa Apr 09, 2022 10:23 pm
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 2 Mal
Ist erledigt.blaubaerli hat geschrieben: ↑Do Okt 26, 2023 10:52 pm Bitte passe doch noch den Titel deines Threads und deine Signatur entsprechend der Forenreglen (siehe blauer Kasten oben) an.
Hier mal der Teil meiner Logik, der den Status berechnet hat:blaubaerli hat geschrieben: ↑Do Okt 26, 2023 10:52 pm Ggf. ist es ja sinnvoll den Quellcode des Plugins hier zu posten…?
Code: Alles auswählen
sub calc_logik {
my $val_pos_oben = knx_read($ga_pos_oben,300,"1.001");
my $val_pos_unten = knx_read($ga_pos_unten,300,"1.001");
my $val_logik = 4;
if ( $val_pos_oben == 1 && $val_pos_unten == 0 ) {
$val_logik = 0;
}
elsif ( $val_pos_oben == 0 && $val_pos_unten == 1 ) {
$val_logik = 1;
}
elsif ( $val_pos_oben == 0 && $val_pos_unten == 0 ) {
# check if cycle run
if ( $plugin_info{$plugname.'_checkRunFinished'} == 1 ) {
# not finished run within time limit
$val_logik = 3;
}
else {
$val_logik = 2;
}
}
return $val_logik;
}
Da es nu eine GA für den Fahrbfehl gibt und der entweder 0 oder 1 sein kann, wäre es Timer7 oder Timer8.Robosoc hat geschrieben: ↑Fr Okt 27, 2023 6:30 am In deinem Fall würde ich mir als erstes eine Timerlogik wählen, um den Status zu Ermitteln ob das Tor fährt oder steht.
Hierfur (also um den richtigen Timer zu ermitteln) musst du wissen, ob Du auf eine steigende oder fallende Flanke reagierst oder ob einfach jedes True eine Fahrt auslöst, egal ob bereits eine negative Flanke stattgefunden hat.
Du würdest das aber beides in einer Custom Logik unterbringen?
TWS 2500 ID:605 VPN und Reboot nach Vereinbarung
-
- Reactions:
- Beiträge: 1884
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 639 Mal
- Danksagung erhalten: 775 Mal
Nein, ich würde auf keinen Fall eine Custom Logik daraus machen, sondern zwei einzelne Standardlogiken, die ich sinnvoll benennen und mit Tags versehen würde. Z. B. Tag: Garagentor.coolrunnings hat geschrieben: ↑Fr Okt 27, 2023 11:34 am Du würdest das aber beides in einer Custom Logik unterbringen?
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 6
- Registriert: Sa Apr 09, 2022 10:23 pm
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 2 Mal
Gestern hatte ich dann endlich Zeit deine Tipps in die Tat umzusetzen. Es sind insgesamt 4 Logiken nötig gewesen (zumindest brauche ich 4 )
Da die Position oben/unten ein boolean ist, musste ich die beiden erstmal in einen Integer umwandeln. Dafür habe ich den Binärmultiplexer genommen.
Der Timer startet mit dem Fahrbefehlt (true oder false). Das ist momentan auch noch die einzige "unschöne" Sache. Ich kann das Tor anhalten, indem ich beim hochfahren, einmal auf runterfahren tippe (true). Wenn das Tor dann nach 30s nicht in der Endlage angekommen ist, wird auch richtigerweise "steht" ausgegeben.
Wenn ich dann aber wieder runterfahren tippe (true), startet der Timer natürlich nicht erneut, weil der Eingang ja immer noch auf true steht. Es wird also keine Fahrt angezeigt. Erst wenn das Tor dann in der Endlage unten angekommen ist, ist der Status wieder korrekt.
Für die Logik habe ich die freie Formel verwendet, allerdings in etwas abgewandelter Form:
X1>0?2:(X2==1?0:(X3==1?1:3))
Danke für eure Hilfe. Damit läuft die Logik schon mal wieder. Jetzt begebe ich mich mal an die KWL Steuerung
TWS 2500 ID:605 VPN und Reboot nach Vereinbarung