KNX-ULTIMATE GERĂTE-NODE EINSTELLUNGEN
Dieser Node steuert eine KNX-Gruppenadresse und ist der am hÀufigsten verwendete.
Konfiguration
| Eigenschaft | Beschreibung |
|---|---|
| Gateway | Zu verwendendes KNX-Gateway auswÀhlen |
| GA-Typ (Dropdown) | Typ der Gruppenadresse. 3-Ebenen ist Standard (Eingabe der 3-stufigen GA oder GA-Bezeichnung, sofern ETS importiert). Global liest die GA beim Start aus einer globalen Variablen, Flow analog auf Flow-Ebene. $Env variable liest die GA aus einer Umgebungsvariable. Universeller Modus (alle GAs abhören) reagiert auf ALLE Gruppenadressen. |
| Gruppenadresse | Zu steuernde Gruppenadresse. Mit importierter ETS kannst du den GerÀtenamen tippen. Kann leer bleiben, wenn du sie per msg.setConfig setzt. |
| Datenpunkt | Der zum Node gehörende Datapoint. |
Manueller Befehlsbutton
Im Editor kann pro Node ein kleiner Button angezeigt werden, ĂŒber den du KNX-Telegramme ohne zusĂ€tzlichen Inject-Knoten auslösen kannst.
| Eigenschaft | Beschreibung |
|---|---|
| Manuellen Button anzeigen | Blendet den Button im Workspace und in der Knotenliste ein bzw. aus. |
| SchaltflĂ€chenaktion | Legt fest, was beim Klick geschieht. KNX Read senden erzeugt ein normales Read-Telegramm. Toggle boolean steht bei DPT 1.x zur VerfĂŒgung und wechselt zwischen true und false. Benutzerdefinierten Wert schreiben sendet den angegebenen Wert (muss zum eingestellten Datapoint passen). |
| Initialer Toggle-Status | (Nur fĂŒr boolesche Datapoints) Startwert der Toggle-Funktion. Der Zustand bleibt mit den ankommenden KNX-Telegrammen synchron. |
| Benutzerdefinierter Wert | Wert fĂŒr den Modus âBenutzerdefinierten Wert schreibenâ. Erlaubt sind JSON-Literale wie 42, true, "Text" oder { "red": 255 }. |
Der Button wird nur eingeblendet, wenn die Option aktiv ist. Im Universalmodus ist die Leseaktion deaktiviert, da keine feste Gruppenadresse vorhanden ist.
TAB Erweiterte Optionen
| Eigenschaft | Beschreibung |
|---|---|
| Â | Allgemein |
| Node-Name | Anzeigename. |
| Topic | Topic der Ausgabe. Leer lassen, um die Gruppenadresse zu verwenden. |
| Passthrough | Leitet die Eingangs-Nachricht an den Ausgang weiter. |
| Â | Vom Node-EINGANG zum KNX-BUS |
| Telegrammtyp | write zum Senden eines Schreib-Telegramms (ĂŒblich), alternativ Reaktion auf andere Typen. |
| RBE-Filter | âReport by changeâ. Wenn aktiv, sendet nur geĂ€nderte Werte zum BUS. FĂŒr identische Wiederholungen deaktivieren. Bei Aktivierung wird ârbeâ dem Nodename hinzugefĂŒgt. |
| Periodisches Senden (gespeicherter Wert) | Wenn aktiv, sendet der Node den zuletzt gespeicherten Wert in festen Intervallen als write-Telegramm auf den KNX-Bus. Diese Option umgeht absichtlich den Output-RBE. |
| Intervall periodisches Senden | Intervall in Sekunden fĂŒr das periodische Senden. |
| Â | Vom KNX-BUS zum Node-AUSGANG |
| Status beim Start lesen | Liest den GA-Status bei Editorstart und jeder Wiederverbindung. Werte werden in einer Datei gepuffert, Quelle wÀhlbar (Datei/BUS). |
| RBE-Filter | Wie oben, aber fĂŒr Ausgaben zum Flow. |
| Auf Schreib-Telegramme reagieren | Sendet bei eingehendem Write eine Nachricht an den Flow. |
| Auf Response-Telegramme reagieren | Sendet bei Response eine Nachricht an den Flow. |
| Auf Lese-Telegramme reagieren | Sendet bei Read eine Nachricht an den Flow (z. B. um eigene Werte zu liefern). |
| Multiply/Decimals/Negatives | Skaliert, rundet und behandelt negative Werte (nur numerische Werte). |
TAB KNX Function
Mit JavaScript kannst du das Verhalten eingehender Nachrichten (vom Flow) und ausgehender Telegramme (zum BUS) anpassen. Der Editor stellt Hilfsobjekte und -funktionen bereit, um GA-Werte zu lesen - mit ETS (ohne DPT) oder ohne ETS (mit DPT). Der Code lĂ€uft bei jeder Eingangs-Nachricht und bei jedem BUS-Telegramm. Bei Aktivierung erscheint âf(x)â im Nodename.
| Eigenschaft | Beschreibung |
|---|---|
| Search GA | Nur mit importierter ETS: tippen, GA wĂ€hlen und das Feld in getGAValue einfĂŒgen. |
VerfĂŒgbare Objekte/Funktionen
| Objekt/Funktion | Beschreibung |
|---|---|
msg |
Aktuelle Nachricht. |
getGAValue(GA, DPT?, readIfMissing?) |
Liest den Wert einer GA, z. B. '1/0/1' oder '1/0/1 Bed table light' (Text nach Leerzeichen wird ignoriert). Mit importierter ETS ist DPT optional; sonst muss es angegeben werden. StandardmĂ€Ăig sendet die Funktion bei fehlendem Cache-Wert ein GroupValue_Read und wartet auf die Antwort. Mit false als drittem Parameter, oder als zweitem wenn kein DPT nötig ist, arbeitet die Funktion nur mit dem Cache und liefert undefined, wenn lokal kein Wert vorhanden ist. getGAValue ist asynchron, daher solltest du await getGAValue(...) verwenden, wenn du den echten Wert brauchst. Auch im Cache-only-Modus bleibt await erforderlich: ohne await erhĂ€ltst du ein Promise-Objekt statt des GA-Werts. |
setGAValue(GA, value, DPT?) |
Setzt den Wert der GA; DPT wie oben. |
self(value) |
Setzt den eigenen Node-Wert und sendet ihn an den BUS (Achtung Schleifen). |
toggle() |
Toggeln wie self. |
node, RED, return(msg) |
Node-Objekt, RED-Objekt, RĂŒckgabe der Nachricht. |
Beispiele (Flow â BUS)
const statusGA = await getGAValue('0/0/09','1.001');
if (msg.payload !== statusGA){ return msg; } else { return; }
if (msg.payload){
setGAValue('0/1/8', true)
setTimeout(function(){ self(off); }, 2000);
}
return msg;
Beispiele (BUS â Ausgang)
msg.externalTemperature = await getGAValue('0/0/10'); // ohne ETS: await getGAValue('0/0/10','9.001')
return msg;
const otherGA = await getGAValue('0/0/11','1.001');
if (msg.payload === false && otherGA === false){ return; } else { return msg; }
Inputs
- destination (string): 3-stufige GA, z. B.
1/1/0 - payload (any): zu sendender Wert
- event (string):
GroupValue_Write,GroupValue_Response,Update_NoWrite(nur interner Wert, kein BUS-Senden) - readstatus (boolean): Leseauftrag an den BUS
- dpt (string): z. B.
1.001 - writeraw (buffer) + bitlength (int): RAW-Senden;
bitlengthin Bit (bitlenghtwird aus Kompatibilitaetsgruenden weiterhin akzeptiert) - resetRBE (boolean): RBE-Filter zurĂŒcksetzen
- setConfig (json): GA/DPT des Nodes per Nachricht Àndern
setConfig Details
var config= { setGroupAddress: "0/1/2", setDPT: "1.001" };
msg.setConfig = config; return msg;
var config= { setGroupAddress: "0/1/2", setDPT: "auto" };
msg.setConfig = config; return msg;
Outputs
- Standardausgang:
payloadam PIN 1. - Fehler:
erroram PIN 2.
Ausgehende Nachricht (Beispiel)
msg = {
topic: "0/1/2",
payload: false,
previouspayload: true,
payloadmeasureunit: "%",
payloadsubtypevalue: "Start",
devicename: "Esstischlampe",
gainfo: {
maingroupname: "Light actuators",
middlegroupname: "First flow lights",
ganame: "Table Light",
maingroupnumber: "1",
middlegroupnumber: "1",
ganumber: "0"
},
echoed: true,
knx: {
event: "GroupValue_Write",
dpt: "1.001",
dptdesc: "Humidity",
source: "15.15.22",
destination: "0/1/2",
rawValue: "<buffer>"
}
}
Hinweis zu echoed: Wenn echoed auf true steht, ist die Nachricht nur eine interne Passthrough-Kopie (Eingangspin -> Ausgangspin desselben Nodes). Das ist kein echter KNX-Busverkehr und sollte bei der Busanalyse ignoriert werden.
EINGANGS-NACHRICHT AUS DEM FLOW
KNX-GerÀte steuern
Der Node nimmt Nachrichten entgegen und sendet sie auf den KNX-BUS; eingehende BUS-Telegramme werden als Nachrichten an den Flow ausgegeben. Alle Eigenschaften optional, auĂer payload.
- msg.destination: z. B.
0/0/1 - msg.payload: z. B.
true/false/21/"Hello" - msg.event:
GroupValue_Write/GroupValue_Response/Update_NoWrite(beiUpdate_NoWritegeben alle Nodes mit derselben GA eine Meldung mitevent: 'Update_NoWrite'aus)
FĂŒr Read statt event bitte msg.readstatus = true verwenden.
- msg.readstatus = true: Read an den BUS
- msg.dpt: z. B.
1.001(auch9,"9","DPT9.001") - msg.dpt = raw: eingehende Telegramme bleiben undekodiert;
msg.payloadistnullund die Bytes stehen inmsg.knx.rawValue. Zum Senden von RAW-Telegrammenmsg.writerawverwenden - msg.writeraw + msg.bitlength: RAW-Senden; ignoriert den am Node gesetzten DPT
- msg.resetRBE = true: RBE-Filter zurĂŒcksetzen
Konfiguration per Nachricht Àndern
QUICK HOW TO
Weitere Beispiele hier
LAMPE EINSCHALTEN
msg.payload = true; return msg;
ABSOLUTES DIMMEN
msg.payload = 30; return msg;
TEXT AN DISPLAY
msg.payload = "Output Tem. 35°C"; return msg;
STATUS LESEN
msg.readstatus = true; return msg;
RAW AN BUS SENDEN
msg.writeraw = Buffer.from('01','hex');
msg.bitlength = 1; return msg;
// Temperatur (DPT9): 18.4 °C = <0730>
// msg.writeraw = Buffer.from('0730','hex'); return msg;