View Categories

DMX-Szenen

Speichern der beliebten Farben der RGB Lampen ist eine grundsätzliche Anforderung bei der Steuerung der Farbenbeleuchtung. Wir haben eine Lösung erstellt, die das Speichern der beliebigen Anzahl der DMX-Szenen erlaubt.

Was erfahren Sie von diesem Tutorial?

Von diesem Tutorial erfahren Sie wie die Schnittstellen zu erstellen, mit den Sie eine beliebige Anzahl der DMX Szenen mit Hilfe der Menu des Remote sowie der Visualisierung speichern/aufrufen können. Um diese Funktionalität zu realisieren, brauchen Sie keine Software. Der ganze notwendige Code befindet sich im Skript dmxscene.lua, der in der Aktualisierung der Komponenteresources in der Version 130311 für das Base Modul verfügbar ist.

Sie können den Code des Skriptes in Ressourcen > Skripten > dmxsce- ne.lua schauen. Wenn es in Ihrem Modul kein Skript gibt dmxscene.lua, können Sie es manuell hinzu- fügen. Zu diesem Zweck klicken Sie auf Hinzufügen und dann merken Sie die Datei auf die lokale Festplatte.

Das Skript ist im Anhang an diesem Tutorial verfügbar.

1. Deklaration der Gruppen und Szenen #

Um die Lichtszenen zu erstellen, importieren Sie das Skript dmxscene.lua ins Lesezeichen Logik. Dazu dient das Kommando import ’import ’<skrypt>’’, in diesem Fall import ’import ’dmxscene’’.

Um die Verwaltung der Szenen noch intuitiver zu machen, gruppiert das Skript dieses Szene automatisch nach von Ihnen angegebenen Namen. Dadurch können Sie mehreren Szenen erstellen, die mit einem Zimmer oder bestimmter Lichtquelle verbunden werden. Zu einer Gruppe können Sie eine beliebige Anzahl der Szenen hinzufügen. Es ist sehr ein- fach eine neue Gruppe zu erstellen. Fügen Sie im Lesezeichen Logik eine einzelne Linie des Codes nach dem folgenden Schema hinzu:
<zmienna> = dmxscene(’<grupa>’,<slot1>,...,<slotn>)<zmienna>, wo ein beliebiger Name der Variable ist, die mit einer Gruppe verbunden ist. Im weiteren Teil des Tutorials werden die Variable als „Objekte“ genannt. <grupa> ist ein beliebiger Name der Gruppe. Statt … geben Sie die Nummer der DMX-Kanäle ein, die einer Gruppe zugeordnet werden sollen. Das Skript ermöglicht es einer Gruppe eine beliebige Anzahl der DMX-Kanäle zuzuordnen.

Beispiele der fertigen Deklarationen der Gruppen:

salon = dmxscene(’salon’,2,3,4,5,6,7,8,9,10)
salonsufit = dmxscene(’sufit’,2,3,4)

Das Skript ermöglicht es mehrere Szene, die mit denselben Satz der DMX Kanäle verbun- den sind, zu speichern. Dank dieser Einführung wird es möglich sein, Szenen für ganze Räume sowie unabhängige Szenen für bestimmte Lichtquellen zu speichern.

Das Skript ermöglicht es mehrere Szene, die mit denselben Satz der DMX Kanäle verbun- den sind, zu speichern. Dazu dient die Funktion save. Zur Funktion save übergeben Sie als Argument der Name der Szene, die gespeichert werden soll. Die Syntax ist wie folgt:
obiekt:save(’nazwa’)objekt:salon:save(’relaks’), z.B. ’relaks’
Der Aufruf der Funktion verursacht, dass in der Szene ’erholung’ die Werte der DMX Kanäle gespeichert werden. In diesem Fall sind das die Nummer von 2 bis 10.

Die Szenen werden im nichtflüchtigen Speicher des Base Moduls (als MEM-Variablen) gespeichert. Jeder Aufruf der Funktion save überschreibt die Szene mit der aktuellen Werten der DMX Kanäle, die einer Gruppe zugeordnet werden. Die Werte aller Szenen können Sie im Lesezeichen Zustand anschauen. Jede Szene ist eine separate MEM-Variable mit dem gleichen Namen wie der Name der Gruppe und Szene. Der Wert einer bestimmten MEM Variable ist der Wert der bestimmten Kanäle, die im sedezimalen Code ausgedrückt wurden. Eine allgemeine Form der Darstellung ist wie folgt: MEM.dmxs.<nazwa>.<scena>=<wartość>.

Um die Szenen aufzurufen, verwenden Sie die Funktion restore. In der Funktion restore ist der Name der aufzurufenden Szene der Argument. Die Syntax ist wie folgt: obiekt:restore(’nazwa’), z.B. salon:restore(’relaks’).

Wenn Sie die Gruppen deklariert haben, können Sie die Schnittstelle zur Steuerung der Szene erstellen.
Vergessen Sie nicht das Lesezeichen Logik zu speichern.

2. Remote #

Die Schnittstelle in der Applikation Remote bestehen aus mindestens zwei Elemente:
RGB Licht-Auswahl der Farbe und Helligkeit des Lichts und Steuerelement
Taste– die Taste zum Speichern und Aufruf der Szene.

Ein kurzes Drücken der Taste ruft die Szene auf- ein langes Drücken der Taste speichert die aktuellen Werte der DMX-Kanäle, die in der Deklaration der Gruppe bestimt wurden. Wenn für einen Satz der DMX-Kanäle mehrere Szenen deklariert wurden, dann fügen Sie die entsprechende Anzahl der Tasten hinzu.

Die unten beschriebene Prozedur gilt für die Deklaration der Gruppe ’wohnzimmer’, die im letzten Kapitel dargestellt wurde.

  1. Fügen Sie dann das neue Element RGB Licht und doppelklicken Sie auf ihm. Ergänzen Sie ihre Eigenschaften. In weiteren Feldern geben Sie die Nummer der DMX Kanäle, die jeder Farbe des Lichts zugewiesen sind, z.B. DMX.2, DMX.3, DMX.4. Zu unserer Gruppe gehören die Kanäle von 2 bis 10, deshalb wiederholen Sie diesen Schritt 3 Mal.
  2. Fügen Sie Taste hinzu, doppelklicken Sie auf sie und ergänzen Sie seinen Eigenschaften:

    • In der Zelle Etikett geben Sie die Beschreibung der Taste ein. Wählen Sie das Lesezeichen Drücken aus. Klicken Sie auf Kommando hinzufügen und im angezeigten Fenster im Feld Name geben Sie: C.LOGIC ein, und im Feld Wert:<nazwa>:restore(’<scena>’), in diesem Fall salon:restore(’relaks’). Gehen Sie zum Lesezeichen Halten und wiederholen Sie den letzten Schritt. Ändern Sie den Inhalt des Feldes Wert auf <nazwa>:save(’<scena>’), in diesem Fall salon:save(’relaks’).

Eine Beispielschnittstelle wird im Bild unten angezeigt:

3. Visualisierung #

Aufruf der DMX-Szene kann einfach in der Visualisierung implementiert werden. Als Steuerelemente verwenden Sie z.B. Taste. Die Definition des Kontrollelementes ist nur auf Zuordnung der Tasten den Befehl und optional Etikett beschränkt.

Der Befehl soll die folgende Syntax haben: LOGIC=obiekt:restore(’scena’) in diesem Fall: LOGIC=salon:restore(’relaks’).

--
-- DMX Scenes
--
-- Copyright 2013 DOMIQ Sp. z o.o.
--

function dmxscene(group,…)
assert(group, "Group name required")
for ,v in ipairs(arg) do
assert(v >= 0 and v <= 255, "Invalid slot value "..v)
end
local t = {}

function t:save(name)
local val = {}
for ,v in ipairs(arg) do
table.insert(val,
string.format('%02x',
math.ceil((get('DMX.'..v))*2.55)))
end
set(string.format('MEM.dmxs.%s.%s',group,name),
table.concat(val))
end

function t:restore(name)
local val = get(string.format('MEM.dmxs.%s.%s',group,name))
assert(val,"Missing scene "..name)
local c = 0
for v in string.gmatch(val,"(%x%x)") do
c = c + 1
command('C.DMX.'..arg[c],
math.floor(tonumber(v,16)/2.55+0,5))
end
end

return t
end

Angehängte Dateien #

Powered by BetterDocs