FREIGEGEBENE HAUPTVERSION V 4.01 verfügbar!
LOGIK! VISU! IFTTT! FIXES!
Infos im Wiki: https://elabnet.atlassian.net/l/cp/TrZ03Nr7

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[V4.0.1] Rollladensteuerung Nachbauen - Position merken, Timer verwenden

Informationen und Diskussionen über Logik-Engine und Logik-Editor
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
Antworten

Ersteller
kleinklausi
Reactions:
Beiträge: 41
Registriert: Sa Dez 03, 2022 12:21 pm
Wohnort: Karlsruhe
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

[V4.0.1] Rollladensteuerung Nachbauen - Position merken, Timer verwenden

#1

Beitrag von kleinklausi »

Hallo,

Ich will eine "normale" Rollladensteuerung für ein Dachfenster nachbauen, welches nur über zwei GA (eine für Ab und eine für Auf) gesteuert werden kann. Ich will mir also die aktuelle Position merken (ja, die wird selten perfekt sein) und dann je nach Positionsbefehl die neue Position anfahren.

Hat jemand vielleicht sowas schon gemacht oder kann mir Logiken zeigen, die ähnliche Probleme lösen?

Bisher stelle ich es mir so vor:
  • PosNeu = PosAlt -> mach nichts
  • PosNeu = 0 --> Auf = 1
  • PosNeu = 1 --> Ab = 1
  • PosNeu > PosAlt --> Ab = 1; Timer(PosAlt - PosNeu x ZeitX); Ab = 1
  • PosNeu < PosAlt --> Auf = 1; Timer(PosNeu - PosAlt x ZeitX); Auf = 1
  • immer --> PosAlt = PosNeu
Danke Euch und Grüße,
Moritz
TWS 3500L ID:760, online, VPN und Reboot gerne nach Absprache; Wiregate248

gbglace
Reactions:
Beiträge: 3693
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1292 Mal
Danksagung erhalten: 1700 Mal

#2

Beitrag von gbglace »

Hallo Moritz diese Vorstellung funktioniert so nicht.

Wenn die beiden GA nur die Endlagen Repräsentieren sollen, dann gibt es nix als Information was da zwischen sein kann und irgendwie ausgewertet werden kann mit < oder >.

Und wenn es nur diese zwei GA gibt, dann reduziert sich das eigentlich auf eine Umschaltfunktion AN/AUS.

Für mehr Funktionsmöglichkeiten wie man so ein Rollo auch mal bewusst auf 50% bewegen kann und dann auswertet wohin als nächstes die Reise gehen soll, gern auch gezielt 70%, braucht es mehr Informationen was für ein Antrieb ist das und wie erfolgt da die Ansteuerung / Kopplung.

Da Du von GA's redest soll es irgendwas mit KNX zu tun haben, ob da aber ein Rolloaktor oder nur ein Schaltaktor beteiligt ist wäre essentiell für die weitere Lösungsfindung. Oder sind es zwar GA aber es sind gar keine KNX-Aktoren sondern nur irgend ein externes Datenprotokoll, dann braucht es da mehr Infos ob da wirklich nur hoch/runter/stop möglich ist, wobei das Stop von Dir nicht erwähnt wurde, es also keine Zwischenposition geben kann?!?
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
kleinklausi
Reactions:
Beiträge: 41
Registriert: Sa Dez 03, 2022 12:21 pm
Wohnort: Karlsruhe
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

#3

Beitrag von kleinklausi »

Hallo Göran,
Danke. Ich sehe, ich sollte ein wenig ausholen.

Der Rollladen am Dachfenster (Roto) wird per Impuls (Kurzschließen eines Kontaktes) gesteuert. Ein Impuls auf Ab fährt den Rollladen runter. Ein weiterer Impuls auf Ab, stoppt. Das gleiche gilt dann auch für Auf. Auf und Ab sind unterschiedliche Kontakte und sie liegen auf zwei KNX Schaltaktor-Kanälen. Ich kenne die Verfahrzeiten Offen <-> Geschlossen. Darüber kann ich ja ungefähr Positionen ansteuern. Ich weiß, das ist sehr ungenau - wäre für mich aber ausreichend. (Vorweg bitte, ich kann leider kein anderes Kabel mehr zum Rollladen ziehen.)

Ich will also, basierend auf der aktuellen und neuen Position, Auf (oder Ab) senden, einen Timer laufen lassen und bei Ende des Timers wieder Auf (oder Ab) senden.

Grüße
TWS 3500L ID:760, online, VPN und Reboot gerne nach Absprache; Wiregate248
Benutzeravatar

Parsley
Reactions:
Beiträge: 574
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 631 Mal
Danksagung erhalten: 378 Mal

#4

Beitrag von Parsley »

Hallo Moritz (und Göran)

ich habe auch Roto Dachflächenfenster (DFF) und verstehe sehr gut was du willst. Wenn du eine Lösung findest wäre ich daran auch interessiert, da ich soetwas bisher noch nicht umgesetzt habe.

In meinem Fall werden die von dir beschriebenen Impulse durch zwei Kanäle eines MDT Aktor erzeugt. KNX GA 0/8/15 "Auf" = 1 geht auch MDT Kanal A und löst dort ein kurzes Schließen des Relais aus (MDT Funktion "Impuls"). Genau so KNX GA 4/7/11 "Ab" = 1 geht auf MDT Kanal B und löst dort ein kurzes Schließen des Relais aus. "Auf" = 0 oder "Ab" = 0 hat keinen Effekt. Gestoppt wird automatisch in den Endlagen oder wenn der gleiche Fahrbefehl (Auf oder Ab) ein weiteres Mal gesendet wird.
Was bei der Logik weiterhin zu bedenken wäre: Es gibt natürlich keine Rückmeldung wo das Rollo tatsächlich gerade steht. Das ist also etwas Glücksache.

Die identische Logik würde ich auch gerne für das Öffnen und Schließen meiner Roto DFF nutzen, was im Prinzip genau so funktioniert. Hier gibt es aber die Besonderheit, dass jedes Fenster einen eigenen Regensensor hat. Bei Niederschlag fährt das Fenster immer zu, ohne, dass diese Info irgendwie ins KNX zurückkommt. Der "Glücksfaktor" ist also noch mal etwas größer. (Was aber total vernachlässigbar wäre.) Schön wäre aber die Niederschalgsinformation einer anderen Wetterstation nutzen zu können: Wenn meine Wetterstation Regen meldet ist davon auszugehen, dass auch die DFF sich geschlossen haben.
Gruß Parsley



Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)
Bitte WIKI lesen.

gbglace
Reactions:
Beiträge: 3693
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1292 Mal
Danksagung erhalten: 1700 Mal

#5

Beitrag von gbglace »

Ja da wäre jetzt eine ordentliche Materialschlacht noch gut, also einen Strommessaktor am Kabel des Antriebes, dann hätte man ähnlich wie beim MDT Rolloaktor eine Option zur automatischen Fahrtzeitmessung.

Danach braucht das dann wirklich diverse Timer und Ergebnisspeicher um das mit der Anzeige der potentiellen IST-Position rechen zu können und eine direkte Zielposition ungleich der Endlagen ansteuern zu können.

OT: Bei dem Bedien-Verhalten würde ich dann ja eher auf die sonst so verschlossenen Velux-Fenster gehen, da bekommt man wenn auch nur via Funk wenigsten Rückmeldungen z.B. via KLF200.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

ROI111
Reactions:
Beiträge: 108
Registriert: Do Dez 27, 2018 6:14 pm
Hat sich bedankt: 72 Mal
Danksagung erhalten: 70 Mal

#6

Beitrag von ROI111 »

Moin zusammen,

OT: Für zukünftige Häuslebauer:

Bevor die Roto Fenster mit Rollade hier in Verruf kommen. Ich habe mir die vor 4 Jahren extra gekauft da es die auch mit "normalen" 230V Rolladenmotor gibt. Hängt bei mir an einem Rolladenaktor und hat all die oben geforderten Möglichkeiten Out of the box. Wenn man direkt bei der Planung ein 5 adriges Kabel berücksichtigt (ich habe ein 5x1.5 NYM direkt zu meiner Hauptverteilung gelegt) ist die Lösung deutlich komfortabler als die VELUX Lösung.

Schöne Grüße

Matthias
Zuletzt geändert von ROI111 am Mo Jul 08, 2024 5:39 pm, insgesamt 2-mal geändert.
TWS 950Q ID:348, TWS 3500XL ID:1451 VPN offen, Reboot nach Absprache

Ersteller
kleinklausi
Reactions:
Beiträge: 41
Registriert: Sa Dez 03, 2022 12:21 pm
Wohnort: Karlsruhe
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

#7

Beitrag von kleinklausi »

Parsley hat geschrieben: Mo Jul 08, 2024 4:28 pm Was bei der Logik weiterhin zu bedenken wäre: Es gibt natürlich keine Rückmeldung wo das Rollo tatsächlich gerade steht. Das ist also etwas Glücksache.
Ich würde halt die Position aus der Verfahrzeit berechnen. Schon klar, dass das nicht sehr genau wird. Aber ich fahre oft komplett Auf und komplett Zu. Damit wird die Position ja jedesmal "kalibriert". Im Wesentlichen will ich die Position für die Beschattung. Und da ist es mir nicht so wichtig ob nun wirklich 75 oder dann doch 77 raus kommt.
ROI111 hat geschrieben: Mo Jul 08, 2024 5:37 pm Bevor die Roto Fenster mit Rollade hier in Verruf kommen.
Ja genau so ist es. Leider war ich in der Zeit als die DFF dann endlich eingebaut wurden nicht vor Ort und am Ende musste ich in den sauren Apfel beißen, dass ich den Rollladen nur über Impulse steuern kann.
gbglace hat geschrieben: Mo Jul 08, 2024 5:05 pm Danach braucht das dann wirklich diverse Timer und Ergebnisspeicher um das mit der Anzeige der potentiellen IST-Position rechen zu können und eine direkte Zielposition ungleich der Endlagen ansteuern zu können.
Genau. Hättest Du vielleicht eine Idee für eine Logik wo ich mal reinschauen kann um mir was abzuschauen?

Grüße
TWS 3500L ID:760, online, VPN und Reboot gerne nach Absprache; Wiregate248

Ersteller
kleinklausi
Reactions:
Beiträge: 41
Registriert: Sa Dez 03, 2022 12:21 pm
Wohnort: Karlsruhe
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

#8

Beitrag von kleinklausi »

Hallo,
ich habe mich mal dran gemacht eine Custom Logik dafür zu schreiben. Könnte das bitte mal jemand anschauen (ist meine erste). Mein Monoflop wird getriggered und $timer ist auch für entsprechende viele Sekunden True. $timer geht aber danach nicht wieder auf False. Dadurch wird dann kein Stop Telegram gesendet. Was verstehe ich hier noch nicht?

Tausend Dank für Eure Mühe! Hoffe meine Kommentare im Code erklären was ich jeweils erreichen will.

Code: Alles auswählen

/**
* Ansteuerung eines Rollladens über Positionswerte, der nur über zwei Schaltobjekte "Auf" und "Ab" verfügt. Beim Senden von wiederholtem "Auf" bzw. "Ab" stoppt der Rollladen. Häufig ist es der Fall bei Dachfenstern, wenn der Rollladen an der Fenstersteuerung direkt angeschlossen ist.
* Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
*/

{
    "Level":[
        ["$pos","integer",0],
        ["$pos_cur","integer",0],
	["$pos_diff","integer",0],
	["$duration","float",20],
	["$delay","float",0],
	["$no_change","bool",false],
	["$up","bool",false],
        ["$down","bool",false],
	["$up_stop","bool",false],
        ["$down_stop","bool",false],
	["$up_full","bool",false],
        ["$down_full","bool",false],
	["$up_or_down_full","bool",true],
        ["$timer","bool",true],
	["$f_substract","string","X1-X2"],
	["$f_partial","string","abs(X1*X2/X3)"],
	["$c_zero","integer",0],
	["$c_hundred","integer",100],
	["$c_true","bool",true],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Input":[
        ["Fahrzeit","Fahrzeit in Sekunden","$duration","u"],
        ["Position","Position - Wert zischen 0 und 100","$pos","c"],
        ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Auf","Objekt für Auffahren","$up","a"],
	["Ab","Objekt für Abfahren","$down","a"],
        ["Auf Stop","Objekt für Stop bei Auffahren","$up_stop","a"],
	["Ab Stop","Objekt für Stop bei Abfahren","$down_stop","a"]
    ],
    "Module":[
        //Sofort abbrechen, wenn Inhibit gleich true
	["Break",["$VAR<Inhibit?>"]],
        //Abbrechen, wenn neue und alte Position gleich sind
	["Limiter","$pos",0,"$no_change",["$pos_cur","$pos_cur"]],
	["Break",["$no_change"]],
	//berechne Positionsdifferenz (Vorzeichen ist wichtig)
	["CalcFormula",["$pos","$pos_cur"],"$pos_diff","$f_substract"],
	//berechne Verzögerungszeit
	["CalcFormula",["$pos_diff","$duration","$c_hundred"],"$delay","$f_partial"],
	//wenn neue Position 0 bzw 100 ist, $up_full bzw $down_full auf True setzen (könnte man auch mit 1-99 in einem Limiter erledigen)
	["Limiter","$pos",0,"$up_full",["$c_zero","$c_zero"]],
	["Limiter","$pos",0,"$down_full",["$c_hundred","$c_hundred"]],
	//wenn neue Position größer als alte ist, $down auf true
	["Comparator","$pos","$down","$pos_cur"],
	//wenn neue Position kleiner als alte ist, $up auf true
	["Comparator","$pos_cur","$up","$pos"],
	//Sende Auf oder Ab, jeweils wenn es True ist
	["SendExplicit","$up","$up",0],
	["SendExplicit","$down","$down",0],
	//Wenn neue Position nicht 0 oder 100 ist, dann wird $up_or_down_full False. Wenn es False wird, triggert das den Monoflop. Wenn es true bleibt, wird der Monoflip nicht getriggert und es wird auch kein Stop Befehl gesendet.
	["Or",["$up_full","$down_full"],"$up_or_down_full"],
	//Monoflop zum verzögerten Senden des Stop-Objekts (fallende Flanke, nicht erneut startbar)
	["Monoflop","$up_or_down_full",0,"$timer","$delay",4],
	//Ausgangswerte für Stop Befehle schreiben und senden
	["Latch","$up","$up_stop","$timer",4],
	["Latch","$down","$down_stop","$timer",4],
	["SendExplicit","$timer","$up_stop",4],
	["SendExplicit","$timer","$down_stop",4],
	//setze aktuelle auf neue Position
	["Latch","$pos","$pos_cur","$c_true",0]
    ]
}
Zuletzt geändert von kleinklausi am Mi Jul 10, 2024 11:40 am, insgesamt 2-mal geändert.
TWS 3500L ID:760, online, VPN und Reboot gerne nach Absprache; Wiregate248

Ersteller
kleinklausi
Reactions:
Beiträge: 41
Registriert: Sa Dez 03, 2022 12:21 pm
Wohnort: Karlsruhe
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

#9

Beitrag von kleinklausi »

Push, sorry!
Wäre sehr dankbar, wenn jemand mit Erfahrung mal den Code anschauen könnte und Feedback gibt.

Danke und Grüße,
Moritz
TWS 3500L ID:760, online, VPN und Reboot gerne nach Absprache; Wiregate248
Antworten

Zurück zu „Logikengine & Logik-Editor“