Lichtsteuerung/Konzept

Aus RaumZeitLabor Wiki
Version vom 1. Dezember 2013, 14:07 Uhr von Felicia (Diskussion | Beiträge) (Initialer Draft)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Einführung

Die Lichtsteuerung verwendet DMX, um die Schaltzustände zu übertragen. Dies ermöglicht es, auch andere Peripherie wie z.b. PAR-Spots anzusteuern. DMX sendet kontinuierlich die Werte für alle 512 Kanäle.

Schaltzustände

In regulären DMX-Setups gibt es nur einen Controller, der alle angeschlossenen Geräte steuert. Im Falle der Lichtsteuerung gibt es da aber ein Problem: Was ist, wenn jemand einen Lichtschalter betätigt? Wie bekommt der Controller den Schaltzustand mit?

Wir verwenden RDM, um dieses Problem zu umgehen. Mittels RDM können Daten von RDM-fähigen Geräten abgerufen werden.

Wird ein Schaltzustand von der Lichtsteuerung verändert, z.b. durch einen Taster, so wird dieser Kanal zukünftig von der Lichtsteuerung ignoriert.

Der Controller frägt den Schaltzustand aktiv mittels DEFAULT_SLOT_VALUE ab, um den aktuellen Wert des Kanals zu erhalten. Die Slotnummern sind 0-31, analog zu den Ausgängen der Lichtsteuerung.

Erst wenn der empfangene Wert über DMX mit dem internen Wert der Lichtsteuerung übereinstimmt, wird der Kanal nicht mehr ignoriert.

Hierdurch ist sichergestellt, daß die Lichtsteuerung autark funktioniert, auch wenn der Controller defekt ist.

Firmware

Die Firmware ist generisch gehalten, sodaß die selbe Firmware für Haupt- und Nebenraum eingesetzt werden kann. Die Konfigurationsdaten werden im EEPROM vorgehalten.

Auf der Lichtsteuerung kommt deshalb bitlash zum Einsatz, welches rudimentäres Scripting ermöglicht. Folgende Funktionen stehen zur Verfügung:

setDeviceName

setDeviceName("description");

Setzt den Namen der Lichtsteuerung. Maximal 32 Zeichen ASCII. Kann über RDM gesetzt und abgefragt werden (DEVICE_LABEL). Beispiel:

setDeviceName("Lichtsteuerung Hauptraum");

getDeviceName

getDeviceName();

Liefert den Namen der Lichtsteuerung. Beispiel:

print getDeviceName();
> Lichtsteuerung Hauptraum

getDMXStartAddress

getDMXStartAddress();

Liefert die konfigurierte DMX Startaddresse zurück. Kann über RDM gesetzt und abgefragt werden (DMX_START_ADDRESS). Beispiel:

print getDMXStartAddress();
> 32

setDMXStartAddress

setDMXStartAddress(number);

Setzt die DMX-Startaddresse. Beispiel:

setDMXStartAddress(32);

getRDMUID

getRDMUID();

Liefert die RDM UID zurück. Beispiel:

print getRDMUID();
> 1f13:abde1000

setOutputName

setOutputName(number, "Description");

Gibt dem Ausgang mit number eine Beschreibung, maximal 32 Zeichen, nur ASCII. Die Beschreibung kann über RDM abgefragt werden. Beispiel:

setOutputName(1, "Lichtkreis 1 (Lager)");

getOutputName

getOutputName(number);

Liefert den Namen eines Ausgangs zurück. Beispiel:

print getOutputName(1);
> Lichtkreis 1 (Lager)

setInputName

setInputName(number, "Description");

Gibt dem Eingang mit number eine Beschreibung, maximal 32 Zeichen, nur ASCII. Beispiel:

setInputName(1, "Lichtschalter Tuer Lager");

getInputName

getInputName(number);

Gibt den Namen des Eingangs zurück. Beispiel:

print getInputName(1);
> Lichtschalter Tuer Lager

setInputMode

setInputMode(number, mode);

Setzt den Modus des Eingangs. Folgende Modis sind definiert:

MODE_TOGGLE: Wechselschalter
MODE_MOMENTARY: Taster

Beispiel:

setInputMode(1, "MODE_MOMENTARY");

getInputMode

getInputMode(number);

Liefert den Modus des Eingangs.

Beispiel:

print getInputMode(1);
> MODE_MOMENTARY

listOutputs

listOutputs();

Gibt alle Ausgänge inklusive der Namen auf dem Terminal zurück. Beispiel:

listOutputs();
> #1: Lichtkreis 1 (Lager)
> #2: Lichtkreis 2 (Lager)
> #3: Lichtkreis 3 (Lager)
> ...
> #32: Nicht belegt

listInputs

listInputs();

Gibt alle Ausgänge inklusive der Namen und des Modus auf dem Terminal zurück. Beispiel:

listInputs();
> #1: Lichtschalter Tuer (Lager) [MODE_TOGGLE]
> #2: Lichtschalter Tuer (Beamer) [MODE_TOGGLE]
> #3: Lichtschalter Tuer (Tafel) [MODE_TOGGLE]
> #4: Lichtschalter Tuer (Kueche) [MODE_TOGGLE]
> ...
> #16: Nicht belegt [MODE_TOGGLE]