Robert86424, ich sage mal "Jein"! Das ist nämlich sehr merkwürdig gelöst. Wenn ich im im Bearbeitungsmodus auf die Schaltfläche "Skript aktivieren" drücke, dann geht es in den abgebildeten Zustand. Drücke ich auf "Skript deaktivieren" erscheint der grüne Pfeil. Hatte mir aber schon gedacht, das das nicht richtig sein kann und deshalb tatsächlich beide Varianten ausprobiert. Aber ohne Erfolg. Mit ist nicht wirklich klar, wie die ereignisbasierte Auslösung stattfindet? Und warum das Gerät dieses extra Skript nur für eins meiner geschriebenen Skripte generiert hat?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Schneider Wiser for KNX / Merten Homelynk
Einklappen
X
-
Hallo Flubber,
es gibt ja zwei Wege welche brauchst du?
Meine RGBW-Scripte sind bei mir funktionierend als Ereignisskript im Einsatz.
Beim ersten wird das Ereignis ausgelöst, wenn auf die Adresse des 4byte RGBW Objekts ein Diagramm kommt. Es macht 4 Einzeladressen 1byte draus. Damit kann der Wiser dann was anfangen.
-- Dieses Script teilt 1 x 4byte RGBW Objekt in 4 x 1byte Einzelobjekte
-- Das Skript startet mit dem Ereignis aus dem 4byte RGBW Objekt
------------------- Configurable parameters -------------------------------
roteGruppe = 'X/X/X'
grueneGruppe = 'X/X/X'
blaueGruppe = 'X/X/X'
weisseGruppe = 'X/X/X'
---------------------------------------------------------------------------
value = event.getvalue()
R = bit.rshift(bit.band(value,0xff000000),24)
G = bit.rshift(bit.band(value,0x00ff0000),16)
B = bit.rshift(bit.band(value,0x0000ff00),8)
W = bit.band(value,0x000000ff)
grp.write(roteGruppe, R, dt.uint8)
grp.write(grueneGruppe, G, dt.uint8)
grp.write(blaueGruppe, B, dt.uint8)
grp.write(weisseGruppe, W, dt.uint8)
Das brauchst du dann, wenn dein Wiser 4 Befehle rausschickt deine LED auf das 4byte RGBW und dein (MDT) Taster z.B. auch auf Statusänderungen reagieren soll.
------------------- Konfigurierbare Parameter ------------------------------------
roteGruppe = 'X/X/X'
grueneGruppe = 'X/X/X'
blaueGruppe = 'X/X/X'
weisseGruppe = 'X/X/X'
RGBWStatusGruppe = 'X/X/X'
RGBW_Befehl = 'X/X/X'
-------------------------------------------------------------------------------
rot = grp.getvalue(roteGruppe)
gruen = grp.getvalue(grueneGruppe)
blau = grp.getvalue(blaueGruppe)
weiss = grp.getvalue(weisseGruppe)
RGBW = rot * 0x1000000 + gruen * 0x10000 + blau * 0x100 + weiss
grp.update(RGBWStatusGruppe, RGBW)
Natürlich wie oben beschrieben die Skripte auch aktivieren = grüner Pfeil.
Ich hoffe ich konnte weiterhelfen.
Kommentar
-
KNXSeb danke für deine Rückmeldung. Ich benötige tatsächlich beide Wege, die du beschrieben hast. Meine Skripte sehen ein bischen anders aus, aber ich sehe keinen funktionellen Unterschied. Habe sie von der Seite von Embedded Systems.
4x 4byte -> 4x1byte
red_group = '32/1/6'
green_group = '32/1/7'
blue_group = '32/1/8'
white_group = '32/1/9'
rgbw = event.getvalue()
red = bit.band(rgbw / 0x1000000, 0xFF)
green = bit.band(rgbw / 0x10000, 0xFF)
blue = bit.band(rgbw / 0x100, 0xFF)
white = bit.band(rgbw, 0xFF)
grp.write(red_group, red, dt.uint8)
grp.write(green_group, green, dt.uint8)
grp.write(blue_group, blue, dt.uint8)
grp.write(white_group, white, dt.uint8)
4x 1byte -> 1x4 byte
rgbw_group = '3/3/0'
red_group = '31/1/2'
green_group = '31/1/3'
blue_group = '31/1/4'
white_group = '31/1/5'
red = grp.getvalue(red_group)
green = grp.getvalue(green_group)
blue = grp.getvalue(blue_group)
white = grp.getvalue(white_group)
rgbw = red * 0x1000000 + green * 0x10000 + blue * 0x100 + white
grp.update(rgbw_group, rgbw)
Kommentar
-
Hallo Flubber ,
ich habe meine Skripte auch aus dem embedded Forum zusammengesetzt. Ich meine, dass das in irgendeinem Beitrag geschrieben stand. Der "bit.rshift(value, shift)" setzt das 4Byte aus den Einzelbytes von rechts nach links zusammen. Ob man das in der Form benötigt, kann ich nicht genauer sagen. Es funktioniert zumindest bei mir bisher zuverlässig.
Zitat von Flubber Beitrag anzeigenUnd was meinst du mit "Das Skript startet mit dem Ereignis aus dem 4byte RGBW Objekt"?
Bei dem Skript (4byte zu 4x1byte) genügt dann deine 4byte RGBW Gruppenadresse.
Wenn du nun andersherum die einzelnen zusammensetzen willst, dann muss das Skript ja loslaufen auch wenn sich z.B. nur der Weißwert ändert (ohne RGB). Damit das funktioniert musst du im Objektefenster bei deinen 4 Einzelbytes ein "identisches" TAG (freie Namenswahl) setzen. Dieses TAG musst du dann im Skriptefenster wieder auswählen.
Sobald sich nun eine der vier Adressen ändert, legt das Skript los. Man könnte auch sagen die TAGS überwachen die entsprechenden Objekte.
Habe dir zwei Screenshots mit den TAGS gemacht. Du musst das halt nur für deine virtuellen Adressen machen.
Zitat von Flubber Beitrag anzeigenHier fehlt bei mir lediglich die Gruppenadresse für den RGBW Befehl. Aber in deinem Skript scheint diese auch keine Verwendung zu haben.
Tags_2.png Tags_1.png
Ich hoffe das sind die korrekten Antworten auf deine Fragen.
Kommentar
-
Hallo Flubber,
also der DPT 251.600 ist ein 6 Byte Datentyp, wovon 4 Byte für die Farben Rot, Grün, Blau und Weiß verwendet werden.
Man kann hier das ganze auch einfacher zerlegen und zusammenfügen, ohne mit den Bit Masken zu arbeiten.
Eine Möglichkeit wäre folgende:
Skript Kombinierter Farbwert (6 Byte) -> 4x 1 Byte: RGBW1
Code:red = '33/1/2' green = '33/1/3' blue = '33/1/4' white = '33/1/5' value = event.getvalue() grp.write(red, value.red) grp.write(green, value.green) grp.write(blue, value.blue) grp.write(white, value.white)
Skript 4x 1 Byte -> Kombinierter Farbwert (6 Byte): RGBW2
Code:rgbw = '33/1/11' red = '33/1/7' green = '33/1/8' blue = '33/1/9' white = '33/1/10' grp.write(rgbw, { ["red"] = grp.getvalue(red), ["green"] = grp.getvalue(green), ["blue"] = grp.getvalue(blue), ["white"] = grp.getvalue(white) })
rgbw.png
Theoretisch könnte man das ganze noch wesentlich universeller mit nur einem Skript lösen, aber grundsätzlich funktioniert das ganze so wie beschrieben.
VG MatthiasZuletzt geändert von forsterm; 01.07.2024, 13:08.
Kommentar
-
KNXSeb und forsterm, vielen Dank für Eure Hinweise. Nach etwas ausprobieren hat es jetzt geklappt. Die Erklärung zu den Tags war seht hilfreich und auch die vereinfachten Skripte funktionieren gut. Allerdings habe ich diese noch etwas geändert, da die GAs meines Erachtens oben genau verdreht sind. Ich muss für den Wiser ja den Status von 6byte in 4x1byte und den Schaltbefehl von 4x1byte in 6byte konvertieren. Noch eine letzte Frage. Welche Auswirkung hat der Ausführungsmodus? Ich habe beide Skripte auf "normal" und es funktioniert. Oben im Screenshot ist das RGBW2 auf "nur in letzter Instanz" gesetzt.
Kommentar
-
Der Ausführungsmodus lässt sich wie folgend erklären:
Normal
Hier wird bei jedem Eingang eines neuen Telegrams (entweder auf der einzelnen Gruppenadresse des Event-Scripts, oder auf einem der Objekte, welches mit dem Tag versehen ist), das Event-Skript ausgeführt, sprich es können und werden mehrere Skripte parallel ausgeführt (jeweils als eigene Prozess des Betriebssystem).
Nur in der ersten Instanz
Hier wird nach Eingang eines neuen Telegrams das entsprechende Event-Skript ausgeführt, sollte jetzt innerhalb der Zeit wo dieses Skript noch ausgeführt wird, erneut ein Telegramm empfangen werden, dann wird das Skript nicht nochmal ausgeführt, sondern erst wenn die erste Instanz des Skriptes beendet ist.
Nur in der letzten Instanz
Hier wird nach Eingang eines neuen Telegrams zuerst geschaut, ob dieses Event-Skript bereits läuft, falls ja, dann wird das bereits laufende Skript beendet und das Skript mit den zuletzt empfangen Telegramwerten ausgeführt.
Kommentar
-
Ich habe nun die nächste Etage umgerüstet und damit eine zweite Linie in Betrieb genommen. Beide sind über IP Router über LAN Backbone verbunden. Nun habe ich das Problem, dass der Wiser nur die Telegramme aus der Linie lesen/schreiben kann, in der er hängt. Das ist ja erstmal nicht verwunderlich, da das Gerät in der ETS quasi nicht existiert sondern nur über das Webinterface projektiert wird. Damit erstellt die ETS keine Einträge in der Filtertabelle. Wie löse ich das Problem sinnvoll? Ich habe mehrfach gelesen, dass man einen Dummy in der ETS einrichten soll. Dem müsste ich dann irgendwie fast alle Gruppenadressen zuordnen, damit ich alles Visualisieren kann. Es gibt den Wiser auch nicht als Applikationsprogramm für die ETS.
Kommentar
-
Zitat von Peterich Beitrag anzeigenDer wiser kann auch Routing.
Kommentar
-
Zitat von Peterich Beitrag anzeigenDann nimmst du dir die Gira Dummy Applikation dir kannst du auf den Backbone hängen und verbindest alle Gruppen Adressen damit.
Kommentar
-
Guten Morgen,
ich habe seit ein paar Tagen auch den LSS100100, gestern habe ich das Teil in Betrieb genommen um ihn mir mal im Detail anzuschauen. Da dies hier der Sammelthread ist, stelle ich mal meine Frage in dieser Runde.
Ich bin auf der Suche nach Doku oder sonstigem Info Material um in die Logik Programmierung einzusteigen. Ich habe mir den FBEditor angeschaut, war damit aber etwas überfordert :-) Wenns per programmierung einfacher ist, wäre ich daran auch interessiert.
Vielleicht hat ja jemand ein paar Tipps.
Danke
Kommentar
-
Zitat von maki128 Beitrag anzeigench will mir gerade wiser für knx kaufen
es gibt Anbieter für 562€ und für 1500€ (Neu)
gibt es da Gründe?
spreche das Thema noch einmal an.
Habe auch solche Angebote gesehen und frage mich wie das geht.
Liegen die Geräte über Jahre ungenutzt im Schrank, sind also alt oder sind die genutzt und haben kleine Macken?
Beschäftige mich halt Aktuell mit dem Wiser, evtl Anschaffung.
Klar ist natürlich bei solchen Angeboten, keine Garantie etc..
Was ich momentan bei dem Gerät schade finde, es gibt wohl keine Software wo man ohne Gerät mal ein Programm schreiben kann, sich also die Programmierung vorher mal ansehen kann.
Verstehe das so, Programmierung geht nur in Verbindung mit dem Wiser.
Was mir im Moment auch nicht klar ist. es gibt Wiser Geräte wie z.B. Rauchmelder und Schalter. Können diese direkt mit dem Wiser für KNX verbunden werden, oder wird noch zusätzlich eine Schnittstelle benötigt?Zuletzt geändert von waldecker01; 05.09.2025, 07:34.
Kommentar
Kommentar