UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[NEUHEIT] Sequenz-Synchronisation mehrerer MDT LED Controller V1.0

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
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
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

Sequenz-Synchronisation mehrerer MDT LED Controller V1.0

#1

Beitrag von Dragonos2000 »

Wenn man Sequenzen über mehrere LED-Controller (bei mir MDT, evtl. gibt es auch andere mit ähnlichen Funktionen) synchron abfahren möchte, muss man entweder die Stützpunkte der Farbwerte extern zeitlich passend setzen, oder im Controller gespeicherte Sequenzen irgendwie synchronisieren. Denn trotz zeitgleichem Start, laufen die Sequenzen sukzessive zeitlich auseinander.

Anbei ein Baustein, der auf dem Gerät gespeicherte Sequenzen synchronisiert. Der LED-Controller ist so einzustellen, dass eine Sequenz nur einmal durchlaufen wird und der Wert am Ende der Sequenz gehalten wird. Zudem ist es so gedacht, dass ein "Aus" auf dem Sequenz-Steuerobjekt, das Licht ausschaltet.

Der Sequenz-Steuereingang der LED-Controller ist mit dem Ausgang des Bausteins zu verbinden.
Das Sequenz-Statusobjekt der LED-Controller ist mit einem der "State in" Eingänge zu verbinden.
Optional können beliebig viele Szenen-Eingange zum Szenen basierten Ein- und Ausschalten ergänzt werden.

Es können beliebig viele "State in" Eingänge erzeugt und damit beliebig viele Controller synchronisiert werden. Der Baustein wartet, bis alle Controller das Ende der Sequenz gemeldet haben und startet diese dann neu.
Es können beliebig viele Szenen-Steuereingänge Erzeugt werden. Dies ist so gedacht, dass diese Szenen Eingänge mit einer Szenen-GA verbunden werden und per Input-Modifikator die Szenennummer eingestellt wird (Offset beachten, siehe Beschreibungstext zum Eingang)

Version: 1.0 (aktuell)
Changelog:
  • Szeneneingänge ergänzt
  • Code komplett überarbeitet

Code: Alles auswählen

/**##################################
Sync multiple LED controllers V1.0
##################################*/

{
	"Level": [
		["$ConstFalse","bool",false],
		["$ConstTrue","bool",true],
		["$VAR<I_SeqStatN!>","bool",false],
		["$I_Start","bool",false],
		["$VAR<I_OnScene?>","bool",false],
		["$VAR<I_OffScene?>","bool",false],
		["$Trigger","bool",false],
		["$Synced","bool",false],
		["$Selector","integer",0],
		["$StartStop","bool",false],
		["$TouchedTrigger","bool",false],
		["$TouchedOutput","bool",false],
		["$OnSceneRcvd","bool",false],
		["$OffSceneRcvd","bool",false],
		["$Send","bool",false],
		["$O_Output","bool",false],
		["$VAR<Inhibit?>","bool",false]
	],
	"Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Or" , ["$VAR<I_OnScene?>"], "$OnSceneRcvd"],
		["Or" , ["$VAR<I_OffScene?>"], "$OffSceneRcvd"],
		["BinaryMultiplexer",["$OnSceneRcvd","$OffSceneRcvd"],"$Selector"],
		["Multiplexer",["$StartStop","$ConstTrue","$ConstFalse","$StartStop"],"$StartStop","$Selector"],
		["Latch","$StartStop","$I_Start","$StartStop",3],
		["And" , ["$I_Start","-$VAR<I_SeqStatN!>"], "$Synced"],
		["Latch","$ConstTrue","$Trigger","$Synced",1],
		["Latch","$I_Start","$O_Output","$I_Start",3],
		["Triggered", "$Trigger", "$TouchedTrigger" ],
		["Triggered", "$O_Output", "$TouchedOutput" ],
		["Or" , ["$TouchedTrigger","$TouchedOutput"], "$Send"],
		["SendExplicit","$Send","$O_Output",0]
	],
	"Input": [
		["Start/Stop","Binary input to start/stop sequence.","$I_Start","a"],
		["OnScene","Scene input to start/switch on sequence;use input modificator with 'range' option to connect scene KO. Hint:Scenes start with 0. So, e.g. scene 10 equals to value 9 in input modificator.","$VAR<I_OnScene?>","a"],
		["OffScene","Scene input to stop/switch off sequence;use input modificator with 'range' option to connect scene KO. Hint:Scenes start with 0. So, e.g. scene 10 equals to value 9 in input modificator.","$VAR<I_OffScene?>","a"],
		["Sequ. state","Sequence state of LED controller","$VAR<I_SeqStatN!>","a"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
	],
	"Output": [
		["Trigger sequence","Sequence start","$O_Output","x"]
	],
	"_Meta": {
		"Icon": "",
		"Version": "1.0",
		"_description": "Sync multiple (MDT) LED controllers"
		}
}
/** 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. */
Zuletzt geändert von Dragonos2000 am Mo Aug 16, 2021 9:34 am, insgesamt 2-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#2

Beitrag von Dragonos2000 »

Der Sequenz-Steuereingang der LED-Controller ist mit dem Ausgang des Bausteins zu verbinden.
Das Sequenz-Statusobjekt der LED-Controller ist mit einem der "State in" Eingänge zu verbinden.

Es können beliebig viele "State in" Eingänge erzeugt und damit beliebig viele Controller synchronisiert werden. Der Baustein wartet, bis alle Controller das Ende der Sequenz gemeldet haben und startet diese dann neu.

Version: 0.8 (Archiv)

Code: Alles auswählen

/**##################################
Sync multiple LED controllers V0.8
##################################*/

{
	"Level": [
		["$VAR<I_SeqStatN!>","bool",false],
		["$I_Start","bool",false],
		["$Trigger","bool",false],
		["$Synced","bool",false],
		["$TouchedStart","bool",false],
		["$O_Output","bool",false],
		["$VAR<Inhibit?>","bool",false]
	],
	"Module": [
		["Break",["$VAR<Inhibit?>"]],
		["Triggered", "$I_Start", "$TouchedStart" ],
		["And" , ["$I_Start","-$TouchedStart","-$VAR<I_SeqStatN!>"], "$Synced"],
		["Multiplexer",["$Synced","$I_Start"],"$O_Output","$TouchedStart"],
		["Or" , ["$Synced","$TouchedStart"], "$Trigger"],
		["SendExplicit","$Trigger","$O_Output",0]
	],
	"Input": [
		["Start","Sequence start","$I_Start","a"],
		["State in","Sequence finished state input","$VAR<I_SeqStatN!>","a"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
	],
	"Output": [
		["Trigger sequence","Sequence start","$O_Output","x"]
	],
	"_Meta": {
		"Icon": "",
		"Version": "0.8",
		"_description": "Sync multiple (MDT) LED Controllers"
		}
}
/** 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. */
Vielleicht gibt es einfachere Wege der Implementierung. Herausforderung war allerdings, dass nicht ständig Telegramme erzeugt werden, wenn einer der "State in" Eingänge triggert und es darf auf dem Ausgang nur zum Ausschalten ein "Aus" gesendet werden. "SendExplicit" ist ein super Modul, aber auch ne Zicke :lol:
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit
Antworten

Zurück zu „Zusätzliche Logikbausteine“