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.<adres modułu>=<prędkość> <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.<adres>=<prędkość> <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.<adres modułu>=<polecenie>
Beispiel:LC.SER.line.1=*Z1ON– Zone 1 angeschaltet. - Empfang der Kommandos:
LE.SER.line.<adres modułu>=<polecenie>
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.<adres IP serwera muzycznego:port>=<polecenie>
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:
function budzik()
command("LC.SER.line.1=*Z1ON\r*Z1SRC5\r*Z1VOL50")
command("LC.SER.line.2=*T'A'FM98.8")
command("LC.SER.line.1=*Z2ON\r*Z2SRC6\r*Z2VOL45")
command("LC.SER.line.2=*T'B'FM103.0")
command("LC.SER.line.1=*Z3ON\r*Z3SRC1\r*Z3VOL45")
command("C.TCP.send.<adres IP >=PlayPlaylist <nazwa> True")
end
Kurze Erklärung des dargestellten 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.LOGICein und im Feld Wert geben Sie den Namen der Funktion, in diesem Fallbudzik()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 diese Nachrichten in einer für den Benutzer lesbaren Form anzuzeigen, müssen sie analysiert werden. Hierzu müssen Sie das Skript parser.lua in das Modul Base (Registerkarte Ressourcen, Abschnitt Skripte) hochladen, das als Anhang zu diesem Tutorial zum Download bereitsteht. Der Parsercode ist universell und kann zur Verarbeitung beliebiger Nachrichten verwendet werden.
Parser zawierający komunikaty z wzorami dostosowanymi. Jeśli komunikat pochodzi ze wzorcem, urządzenie jest wowczas jednym ze wszystkich funkcji, które przetwarzają odebrane dane.
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")
Wykonanie przykładowego przykładu wypuszczenia:2
1
Bardziej praktyczne wykorzystanie danych jest zapisanie danych w stanie Base, pozwala na ich wyświetlenie na ekranie wizualizacji Display lub w menu Remote.
Możesz również zapoznać się z dokumentem 5.4.1 „Podręcznik referencyjny Lua” zamieszczonym pod adresem http://www.lua.org/manual/5.1/
W dalszej części tego rozdziału przedstawiono przykładowe zastosowanie parsera do informacyjnych informacji RDS z tunera radiowego NuVo na wizualizacjach Display.
5.1. Analiza komunikacji RDS #
Die RSD Radiokommandos werden mit Hilfe des #SsDISPLINE Kommandos übergaben, wo s für die Nummer der Audiotonquelle steht. Übrigens können Sie RDS über folgende Logik informieren:
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()
-- Parsowanie komunikatów z tunera
function tun:onchange(data)
print("TUN: "..data)
ptun:parse(data)
end
-- Parsowanie komunikatów ze wzmacniacza
function amp:onchange(data)
print("AMP: "..data)
pamp:parse(data)
end
-- Parsowanie komunikatów wyświetlania)
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
-- Parsowanie komunikatów o statusie poszczególnych stref
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)
-- To samo, ale jak strefa jest wyłączona
pamp:add([[#Z(%d),OFF]],function(z)
set("NUVO."..z..".act",0)
end)
--
-- TU WSTAW KOD ŹRÓDŁOWY PRZEDSTAWIONY W ROZDZIALE 6.
--
return dev
end
-- Inicjalizacja powyższego sterownika.
-- Jako parametry przekazujemy obiekty od dwu modułów SG
n = nuvo {tun = use 'SER.line.1', amp = use 'SER.line.2'}
Kurze Erklärung des dargestellten Codes:
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).
Nachdem Sie den obigen Programmcode eingegeben haben, können Sie mit der Erstellung der Visualisierungsseite beginnen, auf der RDS-Nachrichten angezeigt werden:
- 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.<numer strefy muzycznej>.<numer linii>.
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.
Als Ergebnis erhalten wir:

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 -- TU WSTAW KOD ŹRÓDŁOWY PRZEDSTAWIONY W ROZDZIALE 6 ein.
-- Włączanie stref
function dev:on(z)
amp:send("*Z"..z.."ON")
end
-- Wyłączanie stref
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
-- Zwiekszanie glosnosci
function dev:volup(z)
amp:send("*Z"..z.."VOL+")
end
-- Zmniejszanie glosnosci
function dev:voldown(z)
amp:send("*Z"..z.."VOL-")
end
-- MUTE
function dev:mute(z)
amp:send("*Z"..z.."MUTE")
end
-- Zmiana źródła sygnału
function dev:src(z)
amp:send("*Z"..z.."SRC+")
end
-- Strojenie tunera radiowego
-- Funkcja pomocnicza
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.actein. - Im Feld An geben Sie:
LOGIC=n:on(1). - 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.actein. 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:
