Virtuelle Geräte - mdzio/ccu-jack GitHub Wiki
Virtuelle Geräte im CCU-Jack
Ab Version 2 des CCU-Jacks werden virtuelle Geräte in der CCU unterstützt. Diese bieten eine nahtlose Integration in die Bedien- und Beobachtungsoberfläche der CCU und können in CCU-Programmen wie reale Geräte abgefragt und gesteuert werden. Dadurch wird der Logik-Schicht der CCU (ReGaHss) selbst ermöglicht, Daten aus Fremdsystemen oder -geräten abzufragen oder an diese zu übertragen.
Achtung: Virtuelle Geräte funktionieren nur dann, wenn der CCU-Jack als Add-On auf der CCU installiert wurde. Eine neue Geräteschnittstelle wird zur Projektierung der CCU hinzugefügt. Der Hersteller der CCU kann unter Umständen Support-Leistungen ablehnen. Dies betrifft generell jede zusätzlich installierte Software auf der CCU.
Virtuelle Geräte müssen als erstes in der Konfiguration des CCU-Jacks aktiviert werden. Danach ist ein Neustart der CCU erforderlich. Virtuelle Geräte werden dann über die Web-UI des CCU-Jacks angelegt und auch die gewünschten Kanäle hinzugefügt. Neu angelegte Geräte erscheinen direkt im Geräte-Posteingang der CCU. Spezifische Einstellungen der Geräte können dann in der CCU vorgenommen werden (Einstellungen → Geräte → Gerät auswählen → Einstellen).
Achtung: Wenn noch virtuelle Geräte auf der CCU angelegt sind, und der CCU-Jack deinstalliert und erneut installiert wird, so werden die vorhandenen virtuellen Geräte gelöscht. Die vorhandene Konfigurationsdatei ccu-jack.cfg
mit den virtuellen Geräten wird in diesem Fall durch eine leere ersetzt. Um den CCU-Jack zu aktualisieren, die neue Version einfach über die bereits vorhandene Version installieren. Dadurch wird die vorhandene Konfigurationsdatei übernommen.
Der CCU-Jack bietet die Möglichkeit virtuelle Geräte aus bis zu 32 beliebigen Kanalfunktionen zusammenzustellen. Dadurch können alle Funktionen und Messwerte eines Fremdgerätes in einem Gerät auf der CCU nachgebildet werden.
Liste der virtuellen Geräte
Im Folgenden sind die unterstützten virtuellen Geräte beschrieben. Spezifische Einstellungen der Geräte können in der CCU vorgenommen werden (Einstellungen → Geräte → Gerät auswählen → Einstellen).
Hinweis:
Durch einen Fehler in der Web-UI der CCU können zwar die Zeichen '
und "
(einfaches und doppeltes Hochkomma) in Werten von Text-Parametern (z.B. SHORT_PAYLOAD) angegeben werden, beim Anzeigen dieser Zeichen werden sie aber fälschlicherweise als HTML-Entitäten ('
und "
) kodiert. Bei einem erneuten Setzen werden die HTML-Entitäten durch den CCU-Jack automatisch zurückgewandelt. Zudem dürfen in Text-Parametern zurzeit nur ASCII-Zeichen verwendet werden. Beispielsweise sind die Zeichen üöäÜÖÄß
nicht zulässig.
Statische Geräte (Keine Logik)
Statische Geräte besitzen keine interne Logik und keine Einstellmöglichkeiten. Sie dienen dazu, zusätzliche Datenpunkte zu erschaffen, die über die MQTT- und REST-API des CCU-Jacks angesprochen werden können. Gleichzeitig können sie nahtlos in CCU-Programmen verwendet werden.
Kanaltyp | Ab Version | Funktion |
---|---|---|
Taster | 2.0.11 | Taster (wie die virtuellen Taster in der CCU) |
Schaltaktor | 2.0.11 | Schaltaktor (wie HM-LC-Sw1-Pl) |
Analogeingang | 2.0.11 | Analogeingang (wie HmIP-MIO16-PCB Kanal 1, aber der Eingang kann zusätzlich von der CCU oder von extern gesetzt werden) |
Tür-/Fensterkontakt | 2.0.47 | Tür-/Fensterkontakt (wie HM-Sec-SC-2) |
Dimmer | 2.0.62 | Dimmer (wie HM-LC-Dim1TPBU-FM) |
Temperatursensor | 2.5.0 | Temperatursensor (wie HmIP-STHO) |
Leistungsmessung / Stromzähler | 2.6.1 | Leistungsmessung / Stromzähler (wie HM-ES-PMSw1) |
Kommunikationsstörung | 2.12.0 | Schaltaktor zum Schalten der Kommunikationsstörung des eigenen Gerätes (Kanalnr. ist egal) |
Schaltaktor für Kommunikationsstörung
Dieser Kanal kann an beliebiger Stelle in einem beliebigen virtuellen Gerät platziert werden. Er stellt einen Schaltaktor zur Verfügung, um die Kommunkationsstörung des eigenen Gerätes ein- und auszuschalten. Diese verhält sich analog zu der Kommunikationsstörung eines realen Gerätes.
Dieser Kanal kann beispielsweise für folgenden Anwendungsfall verwendet werden. Mit einem virtuellen Gerät, das aus den zwei Kanälen Analogeingang und Kommunikationsstörung besteht, kann per HM-Skript über ein Curl-Aufruf ein Wert von einem Fremdsystem gelesen werden und in den Analogeingang geschrieben werden. Bei Erfolg wird die Kommunikationsstörung gelöscht. Im Fehlerfall wird sie gesetzt.
MQTT-Geräte (Senden und Empfangen von MQTT-Nachrichten)
Der CCU-Jack enthält einen vollwertigen MQTT-Server, über den generell Datenpunkte der CCU gelesen und gesetzt werden können. Allerdings kann der MQTT-Server auch von beliebigen anderen MQTT-Clients zum Datenaustausch untereinander verwendet werden. Viele Geräte bzw. Geräte-Firmwares (siehe unten) können als MQTT-Client konfiguriert werden und sich dann mit dem MQTT-Server des CCU-Jacks verbinden.
MQTT-Geräte senden bei Zustandsänderungen (z.B. Tastendruck, Schalten eines Aktors) frei konfigurierbare Nachrichten (MQTT-Payload) auf frei konfigurierbaren MQTT-Topics. Zudem können MQTT-Geräte Topics abonnieren und bei eingehenden Nachrichten ihren eigenen Zustand anpassen (z.B. Rückmeldungen von Schaltaktoren, Messwerte).
Durch die weite Verbreitung des MQTT-Protokolls können eine Vielzahl an Geräten einfach an die CCU angebunden und in die CCU-Automatisierung integriert werden. Im Folgenden sind einige Beispiele aufgelistet:
- DeLock WLAN-Steckdosen
- Shelly
- Geräte-Firmwares mit MQTT-Unterstützung
In der MQTT-Konfiguration der Geräte muss die CCU als MQTT-Server (bzw. Broker) eingetragen werden. Der MQTT-Port 1883 bzw. 8883 muss in der CCU-Firewall freigegeben sein. Die MQTT-Payload wird als Text in UTF-8-Kodierung behandelt. Auf der Diagnose-Seite des CCU-Jacks werden eventuelle Konfigurationsfehler angezeigt.
Kanaltyp | Ab Version | Funktion |
---|---|---|
MQTT Sendetaster | 2.0.31 | Taster zum Senden von beliebigen MQTT-Nachrichten |
MQTT Empfangstaster | 2.0.31 | Taster zum Empfangen von beliebigen MQTT-Nachrichten |
MQTT Schaltaktor | 2.0.31 | Schaltaktor zum Senden von MQTT-Nachrichten beim Ein- und Aussschalten |
MQTT Schaltaktor mit Rückmeldung | 2.0.31 | Zusätzlich wird der Status des Schaltaktors durch empfangene MQTT-Nachrichten aktualisiert. |
MQTT Analogwertempfänger | 2.0.31 | Ein Zahlenwert wird aus der MQTT-Nachricht extrahiert und als Analogwert zur Verfügung gestellt. |
MQTT Fenster-/Türkontakt | 2.0.47 | Fenster-/Türkontakt zum Empfangen von MQTT-Nachrichten |
MQTT Dimmer | 2.0.62 | Dimmer zum Senden und Empfangen von MQTT-Nachrichten mit einem Dimmwert (wie HM-LC-Dim1TPBU-FM) |
MQTT Temperatursensor | 2.5.0 | Temperatursensor (wie HmIP-STHO) |
MQTT Leistungsmessung / Stromzähler | 2.7.0 | Leistungsmessung / Stromzähler (wie HM-ES-PMSw1) |
MQTT Kommunikationsstörung | 2.12.0 | Setzen der Kommunikationsstörung über MQTT-Last-Will-Nachrichten (Kanalnr. ist egal) |
MQTT-Sendetaster
Der MQTT-Sendetaster sendet konfigurierbare MQTT-Nachrichten.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
SHORT_TOPIC | MQTT-Topic für einen kurzen Tastendruck |
SHORT_PAYLOAD | MQTT-Payload für einen kurzen Tastendruck |
SHORT_RETAIN | Der MQTT-Server soll die zuletzt gesendete Nachricht speichern. |
LONG_TOPIC | s.o., für langen Tastendruck |
LONG_PAYLOAD | s.o., für langen Tastendruck |
LONG_RETAIN | s.o., für langen Tastendruck |
MQTT-Empfangstaster
Der MQTT-Empfangstaster löst einen Tastendruck beim Empfang einer MQTT-Nachricht aus.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
SHORT_TOPIC | MQTT-Topic für einen kurzen Tastendruck. Die Platzhalter + und # werden unterstützt. |
SHORT_PATTERN | Prüfmuster für die MQTT-Payload (abhängig von SHORT_MATCHER) |
SHORT_MATCHER | Vergleichsfunktion für die Überprüfung der Payload mit dem Prüfmuster (EXACT: Die Payload muss dem Prüfmuster entsprechen; CONTAINS: In der Payload muss das Prüfmuster enthalten sein; REGEXP: Das Prüfmuster ist ein regulärer Ausdruck, der zutreffen muss.) |
LONG_TOPIC | s.o., für langen Tastendruck |
LONG_PATTERN | s.o., für langen Tastendruck |
LONG_MATCHER | s.o., für langen Tastendruck |
Für reguläre Ausdrücke werden die üblichen Operatoren und Zeichenklassen unterstützt. Weitere Informationen sind in der Spezifikation zu finden.
MQTT-Schaltaktor
MQTT-Schaltaktor sendet beim Ein- oder Ausschalten jeweils eine MQTT-Nachricht.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
TOPIC | MQTT-Topic für das Ein- oder Ausschalten |
RETAIN | Der MQTT-Server soll die zuletzt gesendete Nachricht speichern. |
ON_PAYLOAD | MQTT-Payload für das Einschalten |
OFF_PAYLOAD | MQTT-Payload für das Ausschalten |
MQTT-Schaltaktor mit Rückmeldung
MQTT-Schaltaktor sendet ebenfalls beim Ein- oder Ausschalten jeweils eine MQTT-Nachricht. Der Zustand wird aber erst aktualisiert, wenn eine Rückmeldung vom MQTT-Gerät eingeht.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
COMMAND_TOPIC | MQTT-Topic für das Ein- oder Ausschalten |
RETAIN | Der MQTT-Server soll die zuletzt gesendete Nachricht speichern. |
ON_PAYLOAD | MQTT-Payload für das Einschalten |
OFF_PAYLOAD | MQTT-Payload für das Ausschalten |
FEEDBACK_TOPIC | MQTT-Topic für die Rückmeldung. Die Platzhalter + und # werden unterstützt. |
MATCHER | Vergleichsfunktion für die Überprüfung der Payload mit dem Prüfmuster (EXACT: Die Payload muss dem Prüfmuster entsprechen; CONTAINS: In der Payload muss das Prüfmuster enthalten sein; REGEXP: Das Prüfmuster ist ein regulärer Ausdruck, der zutreffen muss.) |
ON_PATTERN | Prüfmuster für die MQTT-Payload für den eingeschalteten Zustand (abhängig von MATCHER) |
OFF_PATTERN | Prüfmuster für die MQTT-Payload für den ausgeschalteten Zustand (abhängig von MATCHER) |
Für reguläre Ausdrücke werden die üblichen Operatoren und Zeichenklassen unterstützt. Weitere Informationen sind in der Spezifikation zu finden.
MQTT-Analogwertempfänger
Der MQTT-Analogwertempfänger extrahiert aus der MQTT-Payload eine als Text übertragene Zahl und stellt sie als Analogwert der CCU zur Verfügung. Diese kann optional ein . (Punkt) als Dezimaltrennzeichen enthalten. Falls die Zahl nicht extrahiert werden kann, so wird der Status des Analogwerts auf Überlauf gesetzt.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
TOPIC | MQTT-Topic für die zu empfangenden Nachrichten. Die Platzhalter + und # werden unterstützt. |
PATTERN | Suchmuster für den Zahlenwert in der MQTT-Payload (abhängig von EXTRACTOR) |
EXTRACTOR | Methode für die Extraktion des Zahlenwertes (AFTER: Der nächstliegende Zahlenwert hinter dem Suchmuster wird verwendet; BEFORE: Der nächstliegende Zahlenwert vor dem Suchmuster wird verwendet; REGEXP: Das Suchmuster ist ein regulärer Ausdruck. Der Zahlenwert befindet sich in der Gruppe mit der Nummer REGEXP_GROUP; ALL: Die ganze MQTT-Payload wird als Zahlenwert interpretiert; TEMPLATE: Eine Vorlage im Parameter PATTERN dient zur Abbildung der MQTT-Payload auf einen Zahlenwert.) |
REGEXP_GROUP | Nummer der zu verwendenden Gruppe des regulären Ausdrucks, wenn EXTRACTOR auf REGEXP gesetzt ist. |
Beispiele:
EXTRACTOR | PATTERN | REGEXP_GROUP | MQTT-Payload | Extrahierter Zahlenwert | Bemerkungen |
---|---|---|---|---|---|
BEFORE | cm |
0 | 100 l 52 cm | 52,0 | REGEXP_GROUP ist egal. |
AFTER | Vcc |
0 | { "Vcc": 3.3, "Version": 2.2 } | 3,3 | REGEXP_GROUP ist egal. |
REGEXP | (\S+) (\S+) (\S+) |
1 | 123 543.31 21.3 | 123,0 | 1. Zahl wird extrahiert. |
REGEXP | (\S+) (\S+) (\S+) |
2 | 123 543.31 21.3 | 543,31 | 2. Zahl wird extrahiert. |
ALL | 0 | -7. | -7,0 | REGEXP_GROUP und PATTERN sind egal. | |
TEMPLATE | {{(parseJSON .).a.b.c}} |
0 | {"a":{"b":{"c":55.5}}} | 55,5 | REGEXP_GROUP ist egal. |
Für reguläre Ausdrücke werden die üblichen Operatoren und Zeichenklassen unterstützt. Weitere Informationen sind in der Spezifikation zu finden.
Das Extrahieren von Werten aus der MQTT-Payload mit Hilfe der TEMPLATE
-Methode ist weiter unten beschrieben.
MQTT-Fenster-/Türkontakt (ab v2.0.47)
Der Zustand des virtuellen Fenster-/Türkontakts wird aktualisiert, wenn eine Nachricht vom MQTT-Gerät empfangen wird.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
TOPIC | MQTT-Topic für die Statusmeldungen. Die Platzhalter + und # werden unterstützt. |
MATCHER | Vergleichsfunktion für die Überprüfung der Payload mit dem Prüfmuster (EXACT: Die Payload muss dem Prüfmuster entsprechen; CONTAINS: In der Payload muss das Prüfmuster enthalten sein; REGEXP: Das Prüfmuster ist ein regulärer Ausdruck, der zutreffen muss.) |
OPEN_PATTERN | Prüfmuster für die MQTT-Payload für den geöffneten Zustand (abhängig von MATCHER) |
CLOSED_PATTERN | Prüfmuster für die MQTT-Payload für den geschossenen Zustand (abhängig von MATCHER) |
MQTT-Dimmer (ab v2.0.62)
Mit dem MQTT-Dimmer kann ein Analogwert/Zahlenwert per MQTT gesendet werden. Der Wertebereich kann mit den Einstellungsparametern RANGE_MIN
und RANGE_MAX
angepasst werden. Die Parameter COMMAND_TOPIC
, RETAIN
und TEMPLATE
enthalten die nötigen Informationen zum Senden der MQTT-Nachricht. Durch die (optionale) Angabe der Parameter FEEDBACK_TOPIC
, PATTERN
, EXTRACTOR
und REGEXP_GROUP
kann der gespeicherte Wert in der CCU durch das MQTT-Gerät auch aktualisiert werden.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
RANGE_MIN | Gerätewert für Dimmwert 0% |
RANGE_MAX | Gerätewert für Dimmwert 100% |
COMMAND_TOPIC | MQTT-Topic für das Setzen des Dimmwertes |
RETAIN | Der MQTT-Server soll die zuletzt gesendete Nachricht speichern. |
TEMPLATE | Vorlage für die Erstellung der MQTT-Payload |
FEEDBACK_TOPIC | MQTT-Topic für die Rückmeldung des tatsächlichen Dimmwerts. Die Platzhalter + und # werden unterstützt. (Optional) |
PATTERN | siehe MQTT Analogwertempfänger (Optional) |
EXTRACTOR | siehe MQTT Analogwertempfänger (Optional) |
REGEXP_GROUP | siehe MQTT Analogwertempfänger (Optional) |
Im Kanalparameter TEMPLATE
wird die Vorlage für die Erstellung der MQTT-Payload angegeben. In den folgenden Beispielen wird ein zu sendender Dimmwert von 55,5% und RANGE_MIN=0 und RANGE_MAX=100,0 angenommen.
TEMPLATE | Ausgabe |
---|---|
{{.}} |
55.5 |
{{.|round}} |
56 |
{"brightness":{{.}}} |
{"brightness":55.5} |
Die Generierung der Payload mit Hilfe des TEMPLATE
-Parameters ist weiter unten näher beschrieben.
MQTT-Temperatursensor (ab v2.5.0)
Die Konfiguration erfolgt analog zu dem MQTT-Analogwertempfänger.
MQTT-Leistungsmessung/Stromzähler (ab v2.7.0)
Die Konfiguration erfolgt analog zu dem MQTT-Analogwertempfänger.
MQTT-Kommunikationsstörung (ab v2.12.0)
Dieser Kanal kann an beliebiger Stelle in einem virtuellen Gerät platziert werden. Er setzt die Kommunikationsstörung des eigenen Gerätes abhängig von eingehenden MQTT-Nachrichten. Diese verhält sich analog zu der Kommunikationsstörung eines realen Gerätes.
Da viele MQTT-Geräte (z.B. Shellies) beim Verbindungsaufbau zum MQTT-Server vorab eine Last-Will-Nachricht registrieren, die automatisch vom MQTT-Server bei einem Verbindungsabbruch gesendet wird, kann so der Fehlerzustand festgestellt werden.
Einige Geräte verbinden sich bei einem Verbindungsabbruch innerhalb sehr kurzer Zeit mit dem MQTT-Server des CCU-Jacks neu. Der Abbruch der vorherigen Verbindung ist unter Umständen dann noch nicht vom CCU-Jack detektiert worden. Dies hat zur Folge, dass der Verbindungsabbruch zeitlich hinter dem Neuverbinden liegt. Um dann den Kommunikationsfehler zu löschen kann das Ereignis des Verbindungsaufbaus mit dem Parameter OK_DELAY nach der angegebenen Anzahl an Sekunden dupliziert werden.
Da WLAN-Geräte öfters einen kurzen Verbindungsabbruch haben, kann über den Parameter ERROR_DELAY eine Verzögerungszeit eingestellt werden. Wenn während der eingestellten Zeit die Verbindung wieder hergestellt wird, wird keine Störung ausgelöst.
Liste der Einstellungsparameter:
Name | Bedeutung |
---|---|
TOPIC | MQTT-Topic für die Störungsmeldung. Die Platzhalter + und # werden unterstützt. |
MATCHER | Vergleichsfunktion für die Überprüfung der Payload mit dem Prüfmuster (EXACT: Die Payload muss dem Prüfmuster entsprechen; CONTAINS: In der Payload muss das Prüfmuster enthalten sein; REGEXP: Das Prüfmuster ist ein regulärer Ausdruck, der zutreffen muss.) |
ERROR_PATTERN | Prüfmuster für die MQTT-Payload für den Fehlerzustand (abhängig von MATCHER) |
OK_PATTERN | Prüfmuster für die MQTT-Payload für den Gutzustand (abhängig von MATCHER) |
OK_DELAY | Verzögerungszeit für das Rücksetzen der Kommunikationsstörung [Sekunden] |
ERROR_DELAY | Verzögerungszeit für das Auslösen der Kommunikationsstörung [Sekunden] |
Beispiel für die Konfiguration eines Shelly Plus 1 PM:
Name | Wert | Bemerkung |
---|---|---|
TOPIC | {Shelly-ID}/online | {Shelly-ID} entsprechend einsetzen. |
MATCHER | EXACT | |
ERROR_PATTERN | false | |
OK_PATTERN | true | |
OK_DELAY | 60.0 | |
DELAY_TIME | 75.0 |
Vorlagen für die Ein-/Ausgabe von Werten
Mit Hilfe von Vorlagen bzw. Templates kann aus einem Zahlenwert eine MQTT-Payload generiert werden (z.B. als Ausgabe für den MQTT-Dimmer) oder eine MQTT-Payload in eine Zahl umgewandelt werden (z.B. als Eingabe für den MQTT-Analogwertempfänger). Funktionsweise und Aufbau der Templates sind in der zugehörigen Entwicklerdokumentation beschrieben.
Einstieg
Eine Vorlage bzw. ein Template wandelt den Eingangswert in einen Text um. Der resultierende Text ist entweder eine zu sendende MQTT-Payload oder eine aus einer empfangenen MQTT-Payload extrahierte Zahl. In der Vorlage müssen Ausdrücke, die eine Verarbeitung vornehmen, in {{
und }}
eingeschlossen werden. Der Eingangswert wird durch einen alleinstehenden Punkt .
repräsentiert.
Die Verarbeitung der Vorlage {{ div (index (parseJSON .) "1.8.0") 1000 }}
läuft folgendermaßen ab:
- Der Eingangswert wird in ein JSON-Objekt umgewandelt.
- Von dem JSON-Objekt wird die Eigenschaft
1.8.0
ausgewählt. - Der Wert der Eigenschaft wird durch 1000 dividiert.
Die Auswertungsreihenfolge der Funktionen ist also von der innersten Klammer zur äußersten. Aus dem Eingangswert {"1.8.0":625026,"2.8.0":2195717}
wird so die Zahl 625,026 extrahiert.
Funktionen
Folgende zusätzliche Funktionen stehen zur Verfügung:
Funktion | Argumente | Beschreibung | ab Version |
---|---|---|---|
round | Zahl | Die Zahl wird zur nächstliegenden Ganzzahl gerundet. | |
parseJSON | Text | Der Text wird in ein JSON-Objekt umgewandelt. | |
contains | Text Suchtext | Es wird geprüft, ob der Suchtext im Text enthalten ist. | v2.2.1 |
fields | Text | Der Text wird anhand der Leerräume zerlegt. | v2.2.1 |
split | Text Trenntext | Der Text wird anhand des Trenntextes zerlegt. | v2.2.1 |
toLower | Text | Der Text wird in Kleinbuchstaben umgewandelt. | v2.2.1 |
toUpper | Text | Der Text wird in Großbuchstaben umgewandelt. | v2.2.1 |
trimSpace | Text | Leerraum vor und hinter dem Text wird entfernt. | v2.2.1 |
add | a b | a und b werden addiert. | v2.7.0 |
sub | a b | b wird von a subtrahiert. | v2.7.0 |
mul | a b | a und b werden multipliziert. | v2.7.0 |
div | a b | a wird durch b dividiert. | v2.7.0 |
mapRange | inMin inMax outMin outMax Wert | Der Wert wird vom Wertebereich inMin/inMax auf den Wertebereich outMin/outMax abgebildet. | v2.7.0 |
param | Parametername | Referenziert andere Parameter (Formate: "Gerät:Kanal.Param" oder "Kanal.Param" oder "Param") | v2.12.0 |
masterParam | Parametername | Referenziert andere Geräteeinstellungen (Formate: "Gerät:Kanal.Param" oder "Kanal.Param" oder "Param") | v2.12.0 |
dimmerOut | Kanalname | Referenziert den skalierten Ausgangswertes eines anderen Dimmer-Kanals (Formate: "Gerät:Kanal" oder "Kanal") | v2.12.0 |
param
Beispiele für die Funktion Mit der Funktion param
können weitere Parameterwerte desselben Kanals, selben
Gerätes oder eines anderen beliebigen virtuellen Gerätes in einem Template
referenziert werden. Diese Funktion kann bei folgenden virtuellen MQTT-Geräten
verwendet werden: MQTT Sendetaster, MQTT Schaltaktor, MQTT Schaltaktor mit
Rückmeldung und MQTT Dimmer. Es können aber die Parameter aller virtuellen
Geräte des CCU-Jacks referenziert werden, also auch die der statischen Geräte.
Template-Beispiel für einen MQTT Dimmer:
{ "level": {{ . }}, "onTime": {{ param "ON_TIME" }}, "rampTime": {{ param "RAMP_TIME" }} }
Template-Beispiel für 3 MQTT Dimmer, die zusammen einen RGB-Wert senden sollen. Alle 3 Dimmer bekommen dasselbe Template:
{ "red": {{ param "1.LEVEL" }}, "green": {{ param "2.LEVEL" }}, "blue": {{ param "3.LEVEL" }} }
Template-Beispiel für die Referenzierung eines Parameterwertes eines anderen virtuellen Gerätes:
{{ param "JACK000013:1.STATE" }}
Ausgabe eines Wertes
Der alleinstehende Punkt im Template repräsentiert den auszugebenen Wert.
Beispiele:
Template | Eingabe | Ausgabe |
---|---|---|
{{if eq . 0.0}}{"turn":"off"}{{else}}{"brightness":{{.}},"turn":"on"}{{end}} | 0,0 | {"turn":"off"} |
wie oben | 42,0 | {"brightness":42,"turn":"on"} |
{{.}} | 55,5 | 55.5 |
{{.|round}} | 55,5 | 56 |
{"brightness":{{.}}} | 55,5 | {"brightness":55.5} |
Einlesen eines Wertes
Für das Einlesen eines Wertes aus der MQTT-Payload muss das konfigurierte Template eine Zahl (optional mit Punkt und Nachkommastellen) generieren. Der alleinstehende Punkt im Template repräsentiert den Inhalt der empfangenen MQTT-Nachricht.
Beispiele:
Template | Eingabe | Ausgabe |
---|---|---|
{{with parseJSON .}}{{if .ison}}{{.brightness}}{{else}}0{{end}}{{end}} | {"brightness":21,"ison":false} | 0,0 |
wie oben | {"brightness":42,"ison":true} | 42,0 |
{{if contains . "b"}}1{{else}}0{{end}} | abc | 1,0 |
wie oben | def | 0,0 |
{{index (fields .) 1 }} | 1 2 3 | 2,0 |
{{index (split . ",") 2 }} | 1,2,3 | 3,0 |
{{if eq (toLower .) "abc"}}1{{else}}0{{end}} | aBC | 1,0 |
{{if eq (toUpper .) "ABC"}}1{{else}}0{{end}} | Abc | 1,0 |
{{if eq (trimSpace .) "abc"}}1{{else}}0{{end}} | Leerraum abc Leerraum | 1,0 |
{{slice . 0 2}}{{slice . 3 5}} | 14:23 | 1423,0 |
wie oben | 00:01 | 1,0 |
{{ mul (parseJSON .).ENERGY.Total 1000 }} | {"ENERGY":{"Total":0.12}} | 120,0 |
{{ mapRange -10 10 0 100 . }} | 5.0 | 75,0 |
{{ div (index (parseJSON .) "1.8.0") 1000 }} | {"1.8.0":625026,"2.8.0":2195717} | 625,026 |