In diesem Tutorial beschreiben wir die Integration von DOMIQ Modulen mit beliebigen Geräten, die das RS-232 Protokoll verwenden.
Das Serial-2SG Modul ermöglicht Kommunikation mit Hilfe des RS-232 Protokolls. Die möglichen Geschwindigkeiten: 9600, 19200, 38400 und 57600 bps sowie Rahmenformats: 8N1, 8N2, 8E1, 8O1. Sie können maximal zwei Serial-2SG Module an DOMIQ/Base gleichzeitig verbinden.
Standardgemäß werden die Serial-2SG Module in der Version mit Adresse 1 verkauft. Wenn Sie zwei Serial-2SG Module an Base Modul verbinden möchten, bestellen Sie das zweite Modul mit Adresse 2.
Im weiteren Teil dieses Tutorials zeigen wir die Integration des DOMIQ Systems mit den Geräten, die das RS-232 Protokoll verwenden. Wir beschreiben es am Beispiel des Multiroom Systems von NuVo. Aus diesem Tutorial erfahren Sie wie:
- die Kommandos im RS-232 Protokoll mit Hilfe der DOMIQ Module zu senden und zu empfangen,
- Multiroom mit dem Gebäudeautomatisierungsystem zu integrieren,
- die vom Serial-2SG Modul gelesene Daten zu verarbeiten,
- das Multiroom System durch Display Visualisierung zu steuern.
1. Multiroom NuVo #
Das Multiroom System ermöglicht es den Ton von Rundfunkstationen oder Mp3 Dateien in mehreren Zonen abzuspielen. Jede Zone kann den Ton von einem beliebigen Audio-Tonquelle abspielen. Wir haben die folgenden Geräte getestet:
- NuVo Concerto – Musikverstärker. Bedient 6 Zonen.
- NuVo NV-T2SIR/FAM – Gerät mit zwei unabhängigen eingebauten Radiotuners. Es ermöglicht zwei Rundfunkstationen als zwei unabhängige Audioströme zu hören.
- NuVo MPS4 – MP3 Dateiserver. Es hat 4 unabhängigen eingebauten Audio-Tonquellen. Wenn das Gerät eine aktive Verbindung mit dem Internet hat, können Sie auch die Musik aus Internetrundfunkstationen abspielen. Jede Quelle kann gleichzeitig verschiedene Musikdateien und Internetrundfunkstationen abspielen. Wenn der MPS4 Server mit dem Ethernet verbunden ist, kann er mit Hilfe des TCP/IP Protokolls gesteuert werden.
- NuVo NV-I8GCP – Wand-Touch-Panels mit Display, die Steuerung der Geräten ermöglichen (Änderung der Einstellungen, Auswahl der Tonquelle, Steuerung der Lautstärke, Auswahl der Lieder usw.).
2. Verbindungen #
Die als RS-232 bezeichnete Verbindungen sollen mit dem Standardkabel mit DB-9 Steckerbolzen ausgeführt werden. Die Verbindungen der Audiosignale zwischen NuVo Geräten sollen nach entsprechenden Hinweisen des Herstellers ausgeführt werden.
3. Konfiguration der DOMIQ Module #
3.1. Konfiguration vom DOMIQ/Serial-2SG #
Wenn Sie die DOMIQ Module verbinden, konfigurieren Sie das Serial-2SG Modul. Stellen Sie die Parameter der RS-232 Transmission ein. Verwenden Sie das Kommando mit folgender Syntax:
LC.SER.config.<Adresse des Moduls>=<Geschwindigkeit> <Format>
zum Beispiel:
LC.SER.config.1=38400 8N1
Die bedienten Geschwindigkeiten der Datentransmission: 9600, 19200, 38400 und 57600
bps sowie Formate der Datenrahmen: 8N1, 8N2, 8E1, 8O1.
Die Geschwindigkeit der Transmission und Format der Daten muss bei jeder Betätigung des Base Moduls eingestellt werden. Zu diesem Zweck verwenden Sie Logik Tab und fügen Sie dort den Teil des Codes mit folgender Syntax ein:
command(„LC.SER.config.<Adresse>=<Geschwindigkeit> <Format> ”)
Ergänzen Sie das Kommando mit entsprechenden Parametern. Das Kommando wird bei jeder Betätigung des Base Moduls oder Serial-2SG Moduls gesendet.
3.2. Steuerkommandos #
Sie können das Multiroom NuVo System völlig konfigurieren. Wenn Sie über Beschreibungen der Kommunikationsprotokolle der NuVo Geräte sowie über die DOMIQ Module verfügen, können Sie alle verfügbare Funktionen steuern: An/Ausschalten der bestimmten Zonen, Änderung der Tonquelle in den Zonen, Lautstärkesteuerung, Änderung der Einstellungen des Rundfunktuners, Anzeigen der RDS Information usw. sowie das Multiroom System mit dem Gebäudeautomatisierungsystem integrieren.
Zu diesem Zweck werden zwei Kommandos verwendet:
- Senden der Kommandos:: LC.SER.line.<Adresse des Moduls>=<Kommando>
Beispiel: LC.SER.line.1=*Z1ON – Zone 1 angeschaltet. - Empfang der Kommandos: LE.SER.line.<Adresse des Moduls>=<Kommando>
Wenn der MPS4 Server mit Ethernet verbunden ist, kann er mit Hilfe des TCP/IP Protokolls gesteuert werden. Dazu verwenden Sie die folgende Syntax:
C.TCP.send.<
IP Adresse des Musikservers:port>=<Kommando>
Beispiel: C.TCP.send.192.168.10.182:5004=PlayPause. – Simulation des Drückens der Play/Pause Taste.
Die Liste der verfügbaren Kommandos befindet sich in Beschreibungen der Kommunikationsprotokolle der NuVo Geräte.
Steuerkommandos können als Folgende gedendet werden:
- Resultat des bedingten Ereignisses,
- Resultat der Aktivität des Timers,
- Resultat des Drückens der Taste,
- Resultat der logischen Funktion.
4. Integration #
Mit Hilfe des DOMIQ/Serial 2SG Moduls ist es möglich das Multiroom System mit dem System der Gebäudeautomatisierung zu integrieren. Sie können das Potential der Gebäudeautomatisierung zur Steuerung des Multiroom Systems und umgekehrt verwenden.
4.1. Musikwecker #
Verwendung der Timers und Logik in Verbindung mit dem Multiroom System ermöglicht den intelligenten Musikwecker zu definieren. Das automatische System schaltet das Multiroom System um bestimmte Uhr und in ausgewählter Zone an, spielt eine Lieblings-CD oder Rundfunkstation ab und stellt die bestimmte Lautstärke ein. Die Definition des intelligenten Musikweckers erfolgt in zwei Phasen. Die erste Phase ist Definieren der logischen Funktionen. In der zweiten Phase werden Timers definiert.
4.1.1. Definieren der logischen Funktionen #
- Wählen Sie Logik im Konfigurator des Base Moduls.
- Geben Sie den Code ein. Basieren Sie auf dem unten dargestellten Code:
- Enter the source code based on the code presented below:
function clock()
command („LC.SER.line.1=Z1ON\rZ1SRC5\rZ1VOL50″) — Zone 1 command („LC.SER.line.2=T’A’FM98.8″)
command („LC.SER.line.1=Z2ON\rZ2SRC6\rZ2VOL45″) — Zone 2 command („LC.SER.line.2=T’B’FM103.0″)
command („LC.SER.line.1=Z3ON\rZ3SRC1\r*Z3VOL45″) — Zone 3
command („C.TCP.send.<music server IP addres>=PlayPlaylist <playlist name>True“)
end
Kurze Erklärung des Codes:
Die Funktion Wecker ist ein Satz der Kommandos, die an NuVo Geräte gesendet werden. Das erste Kommando wird an Musikverstärker gesendet. Es schaltet die erste Musikzone an, ordnet dieser Zone die Signalquelle 5 zu und stellt die Lautstärke auf 50 (Skala von -78 bis 0) ein. Das zweite Kommando wird an Radiotuner gesendet. Es stellt die Frequenz des Tuners auf 101.0 MHz ein. Die Funktionen Nummer 3 und 4 sind analogisch wie Funktionen 1 und 2. Die Funktion 5 aktiviert die Zone Nummer 3, ordnet dieser Zone die Signalquelle 1 und stellt die Lautstärke auf 45 ein. Das letzte Kommando wird mit Hilfe
des TCP/IP Protokolls an Musikserver gesendet. Das Kommando PlayPlaylist spielt die Playliste mit bestimmten Namen ab.
4.1.2. Definieren des Timers #
In diesem Fall wird die Funktion Wecker von Montag bis Freitag um 7:00 aufgerufen.
- Wählen Sie Timers Tab aus.
- Klicken Sie auf Hinzufügen um den neuen Timer hinzuzufügen.
- Ergänzen Sie die Felder Uhr, Minute und Tag der Woche und bestimmen Sie, wenn der Timer aktiviert werden soll.
- Im Feld Kommando klicken Sie auf Kanal hinzufügen…
- Im angezeigten Fenster im Feld Name geben Sie C.LOGIC ein und im Feld Wert geben Sie den Namen der Funktion, in diesem Fall wecker()ein.
Dadurch wird die Funktion Wecker aufgerufen und alle Anweisungen aus dieser Funktion
werden ausgeführt. Die Funktion kann jederzeit modifiziert werden um den Ton in einer anderen
Zone oder aus einer anderen Signalquelle abzuspielen.
5. Parsen der Kommandos #
Das DOMIQ/Serial-2SG Modul speichert die empfangenen Dateien zwischen, bis die Ende der Linie beobachtet wird. Der Inhalt der Linie hängt vom Gerät ab, die verbunden wird.
Um die Kommandos in deutlicher Form anzuzeigen, ist das Parsen notwendig. Dazu laden Sie ins Base Module das parser.lua Skript, das als Anhang an diesem Tutorial heruntergeladen werden kann. Das Parsercode ist universell und kann zur Verarbeitung der beliebigen Kommandos verwendet werden.
import 'parser'
p = parser()
p:add("ADD(%d)",function(n) print(n+1) end)
p:add("SUB(%d)",function(n) print(n-1) end)
p:parse("ADD1")
p:parse("SUB2")
Wenn Sie das oben beschriebene Beispiel ausführen, wird Folgendes angezeigt:
2
1
Eine sehr praktische Verwendung der Dateien ist Speichern der Dateien im Zustand des Base Modules. Dadurch können sie in der Visualisierung von Display oder im Remote Menu angezeigt werden.
Die detaillierte Beschreibung der Anpassungsmuster finden Sie im Kapitel 5.4.1 in „Lua Reference Manual“. Es ist hier herunterzuladen: http://www.lua.org/manual/5.1/
Im weiteren Teil dieses Kapitels zeigen wir Beispielverwendungen des Parsers zum Anzeigen der RDS Informationen aus NuVo Rundfunktuner auf Display Visualisierungen.
5.1. Parsen der RDS Kommandos #
Die RSD Radiokommandos werden mit Hilfe des #SsDISPLINE Kommandos übergaben, wo s für die Nummer der Audiotonquelle steht.
import 'parser'
function nuvo(tab)
local dev = {}
local zones = {}
local tun = assert(tab.tun)
local amp = assert(tab.amp)
local pamp = parser()
local ptun = parser()
-- Parsen der Kommandos aus dem Tuner
function tun:onchange(data)
print("TUN: "..data)
ptun:parse(data)
end
— Parsen der Kommandos aus dem Verstarkenfunction amp:onchange(data)
print("AMP: "..data)
pamp:parse(data)
end
-- Parsen der Anzeigenkommandos
)
pamp:add([[#S(%d)DISPLINE(%d),"([^"]+)"]],function(s,l,txt)
local sid = tonumber(s)
for k,v in pairs(zones) do
if v == sid then set("NUVO.line."..k.."."..l,txt)
end
end
---- Parsen der Kommandos mit dem Status der bestimmten Zonen
pamp:add([[#Z(%d),ON,SRC(%d),VOL(%d+),DND(%d),LOCK(%d)]],
function(z,src,vol,dnd,lock)
local prefix="NUVO."..z.."."
set(prefix.."vol",vol)
set(prefix.."src",src)
set(prefix.."act",1)
zones[tonumber(z)] = tonumber(src)
print ("SRC"..src)
end)
-- Dasselbe, aber wenn die Zone ausgeschaltet ist
pamp:add([[#Z(%d),OFF]],function(z)
set("NUVO."..z..".act",0)
end)
--
-- HIER GEBEN SIE DIE QUELLCODE AUS DEM KAPITEL 6 EIN.
--
return dev
end
-- Initialisierung des obigen Treibers.
-- Als Parameter ubergeben Sie die Objekte von zwei SG Modulen
n = nuvo {tun = use 'SER.line.1', amp = use 'SER.line.2'}
Kurze Erklärung des dargestellten Code:
Der oben dargestellte Code zeigt ein typisches „Entwurfsmuster“, das im Lua-Programmieren verwendet wird, die so genannte Erstellung des Objekts. Es besteht darin, dass alle als local definierten Variablen vor einem anderen Code „versteckt“ werden. Dadurch können mehrere Instanzen des Codes erstellt werden (z.B. zur Bedienung der einigen NuVo Systeme).
Wenn Sie den oben dargestellten Code des Programms einfügen, können Sie die Seite der Visualisierung erstellen. Dort werden die RDS Kommandos angezeigt:
- Gehen Sie zum Display Tab.
- Fügen Sie eine neue Seite hinzu. Geben Sie ihr den Identifizierer und wählen Sie den Hintergrund der Visualisierung aus.
- Fügen Sie ein neues Element wie Text hinzu.
- Im Feld Kanal geben Sie: NUVO.line.<Nummer der Musikzone>.<Nummer der Linie>
- . ein. Beispiel: NUVO.line.2.3 – Anzeigen der Linie 3 aus der Zone 2. Anzahl der Informationslinien und die Nummerierung unterscheidet sich abhängig von der Rundfunkstation. Das NuVo System ermöglicht maximal 6 Linien der Informationen anzuzeigen. Im Fall der Rundfunkstationen werden die Linien von 1 bis 4 am häufigsten verwendet.
- Wiederholen Sie die Punkte 3 und 4 abhängig von der Anzahl der Zonen und Linien der Informationen.
6. Steuerung von NuVo mit Hilfe der Visualisierung #
In diesem Kapitel stellen wir dar, wie das Multiroom System mit Verwendung der Visualisierung (Display Panel oder Remote Applikation) gesteuert werden kann. Wir werden die folgende Funktionalität realisieren:
- Tasten zum An-/Ausschalten der bestimmten Zonen,
- Tasten zum Ausblenden der bestimmten Zonen,
- Einstellung des Radiotuner,
- Änderung der Lautstärke,
- Zentrale Taste zum Ausschalten aller Zonen,
- Änderung der Signalquelle in den bestimmten Zonen.
Diese Funktionen ergänzen das im Kapitel 5 beschriebene Anzeigen der RDS Informationen. Definieren der Steuerung der NuVo Geräte durch Visualisierung erfolgt in zwei Phasen. In der ersten Phase werden die logischen Regeln erstellt. In der zweiten Phase werden die Elemente der Visualisierung erstellt. Die Nummerierung der Zonen und Audiotonquellen kann unterschiedlich sein. Das hängt von der Verbindung der NuVo Geräte ab.
6.1. Definieren der logischen Regeln #
Um die am Anfang des Kapitels angenommene Funktion zu realisieren, erweitern Sie den Quellcode aus dem Logik Tab. Fügen Sie den unten dargestellten Code des Programms anstatt des Kommentars „– HIER FUGEN SIE DEN QUELLCODE AUS KAPITEL 6 EIN” ein.
-- Anschalten der Zonen
function dev:on(z)
amp:send("*Z"..z.."ON")
end
-- Ausschalten der Zonen
function dev:off(z)
if z == nil then
for i=1,6 do
amp:send("*Z"..i.."OFF")
end
else
amp:send("*Z"..z.."OFF")
end
end
-- Steigerung der Lautstarke
function dev:volup(z)
amp:send("*Z"..z.."VOL+")
end
-- Verkleinerung der Lautstarke
function dev:voldown(z)
amp:send("*Z"..z.."VOL-")
end
-- MUTE
function dev:mute(z)
amp:send("*Z"..z.."MUTE")
end
-- Anderung der Signalquelle
function dev:src(z)
amp:send("*Z"..z.."SRC+")
end
-- Einstellung des Radiotuners
— Hilfsfunktion
local function tuner(ch,fun)
tun:send("*T'"..ch.."'"..fun )
end
function dev:seek(ch,dir)
tuner(ch,"SEEK"..dir)
end
Kurze Erklärung des dargestellten Codes:
Der obige Quellcode ist ein Satz der Funktionen, die die ausgewählten Handlungen im Multiroom NuVo System realisieren. Die zwei ersten Funktionen sind An- und Ausschalten der ausgewählten Zonen und Funktion des Zentralschalters. Die drei weiteren Funktionen sind Steuerung der Lautstärke in ausgewählten Zonen sowie Ausblenden der bestimmten Zonen. Die Funktion Nummer 6 ist für die Änderung der Audiosignalquelle verantwortlich. Die zwei letzten Funktionen stellen den Rundfunktuner ein. Die Einstellung besteht darin, dass die Frequenz gesucht wird.
Der dargestellte Quellcode kann beliebig um andere Funktionen der NuVo Geräten erweitern.
6.2. Erstellung der Visualisierung #
Um die neue Funktion zu visualisieren, verwenden wir die im Kapitel 5 erstellte Seite. Alle erstellte Tasten zur Steuerung sind universell und können zur Steuerung der bestimmten Zonen verwendet werden. Ändern Sie die Nummer der Zone in eingegebenen Kommandos. Die im weiteren Teil des Kapitels (mit Ausschluss von 6.2.5) beschriebenen Prozeduren steuern die Zone Nummer 1.
6.2.1. An-/Ausschalten der Zonen #
- Fügen sie das neue Element An/Aus hinzu.
- Im Feld Kanal geben Sie: NUVO.1.act ein.
- Im Feld An geben Sie: LOGIC=n:on(1) ein.
- Im Feld Aus geben Sie: LOGIC=n:off(1) ein.
- Um den Zustand der Zone durch eine Kontrolllampe zu visualisieren, fügen Sie das Element Licht hinzu. Aus der Liste der Themen wählen Sie Green aus. Im Feld Kanal geben Sie NUVO.1.act ein. Platzieren Sie das Element in der Ecke der An/Aus Taste.
6.2.2. Ausblenden der Zone #
- Fügen Sie eine neue Taste hinzu.
- Im Feld Etikett geben Sie z.B. Mute ein.
- In der Zelle Kommando geben Sie: LOGIC=n:mute(1) ein.
6.2.3. Einstellung des Tuners #
- Fügen Sie eine neue Taste hinzu.
- Im Feld Etikett geben Sie z.B. Seek+ ein.
- In der Zelle Kommando geben Sie: LOGIC=n:seek(‚A‘,’+‘) ein.
- Wiederholen sie die Punkte von 1 bis 3. Ändern Sie die Beschreibung in Etikett auf Seek- und den Inhalt der Zelle Kommando auf LOGIC=n:seek(‚A‘,‘-‚).
6.2.4. Änderung der Lautstärke #
- Fügen Sie eine neue Taste hinzu.
- Im Feld Etikett geben Sie z.B. VOL+ ein.
- In der Zelle Kommando geben Sie: LOGIC=n:volup(1) ein.
- Wiederholen sie die Punkte von 1 bis 3. Ändern Sie die Beschreibung in Etikett auf VOL- und den Inhalt der Zelle Kommando auf LOGIC=n:voldown(1).
Wiederholen Sie von 6.2.1 bis 6.2.4 für andere Zonen.
6.2.5. Haupttaste An/Aus #
- Fügen Sie eine neue Taste hinzu.
- Im Feld Etikett geben Sie z.B. ALL OFF ein.
- In der Zelle Kommando geben Sie: LOGIC=n:off()ein.
The example of final result: