Skip to content

it 2. Node Configuration

Massimo edited this page Aug 27, 2024 · 2 revisions

IMPOSTAZIONI NODO KNX-ULTIMATE

  • Gateway

    Interfaccia KNX da utilizzare per la comunicazione con il BUS.

  • Indir. Gruppo

    Indirizzo di gruppo. Per esempio 0/0/1, del node KNX-Ultimate. Con il nodo impostato in Modalità Universale (vedi sotto), può essere cambiato direttamente inviando un messaggio al nodo, specificando msg.destination

  • Datapoint

    Datapoint (DPT). Con il nodo impostato in Modalità Universale (vedi sotto), può essere cambiato direttamente inviando un messaggio al nodo, specificando msg.dpt

  • Modalità Universale (Ascolta tutti gli indirizzi di gruppo)

    Il nodo reagirà ai telegrammi provenienti dal bus KNX, qualsiasi sia il loro indirizzo di gruppo. Il nodo effettuerà automaticamente la codifica/decodifica dei messaggi, secondo i datapoints letti dal file csv o esf di ETS. ** Se non è stato importato il file ETS **, il nodo fungerà da ricevitore/trasmettitore cieco. In questo caso, oltre al payload, è necessario specificare, mel messaggio passato al nodo, il datapoint da trasmettere al bus KNX. Non appena arriva un telegramma dal bus KNX, il nodo proverà a decodificare automaticamente il datagramma e genererà un payload in uscita verso il Flow.

  • Nome

    Nome del nodo. Normalmente viene autocompilato usando il device name preso dal file ETS, se presente.

  • Topic

    Il topic del nodo. Se vuoto, verrà usato l'indirizzo di gruppo (comportamento di Default).

OPZIONI AVANZATE


  • Passa msg di ingresso sull'uscita

    No
    il messaggio in ingresso non verrà passato in uscita.
    Si
    il messaggio in ingresso, verrà unito al messaggio in uscita.
    Si, ma metti il msg in ingresso, nella proprietà msg.inputmessage del messaggio in uscita
    il messaggio in ingresso verrà unito a quello in uscita, ma verrà inserito nella proprietà msg.inputmessage del messaggio in uscita. Questo è utile nel caso le proprietà del messaggio in ingresso, abbiano dei nomi uguali a quelli del messaggio in uscita di knx-ultimata, che potrebbero portare a dei comportamenti non voluti.

OUTPUT (invio datagrammi sul bus KNX)

  • Tipo Output

    Scrittura il nodo invierà il payload al bus KNX come messaggio di "Scrittura" (standard).
    Risposta il nodo invierà il payload al bus KNX come messaggio di "risposta" (nel caso in cui tu voglia creare la tua "risposta" personalizzata, a una richiesta di lettura).
    Lettura il nodo invia una richiesta di lettura sul bus KNX (quindi poi aspettati un telegramma di "risposta" dal device interrogato). Puoi passare come input al nodo qualsiasi payload. Non importa, tanto non verrà preso in considerazione. Nessun output. Solo aggiornamento (aggiorna solo il valore del nodo, senza scrivere sul BUS KNX)
    non invia nulla. Aggiorna semplicemente il valore del nodo KNX-Ultimate (una specie di "Stato passivo). E' utile nel caso serva mantenere uno stato senza scriverlo sul bus, ma leggendolo in un secondo momento con un comando di lettura (per esempio "readrequest")

  • Invia payload al bus KNX solo se modificato (filtro RBE)

    Il filtro RBE trasmette i dati solo se il payload cambia. Il nodo scrive sul bus KNX solo se il messaggio ricevuto differisce dal valore corrente. Ad esempio, se la luce della cucina è accesa (true) e si invia nuovamente un messaggio true al nodo, il valore non verrà riscritto sul bus. Questo è utile per evitare loop, ma se devi inviare più volte un messaggio sempre uguale, disattiva il filtro.

INPUT (ricezione datagrammi dal bus KNX)

  • Leggi il valore alla connessione/riconnessione

    Alla connessione/riconnessione, il nodo invierà una richiesta di "lettura" all'indirizzo di gruppo specificato in Indirizzo di gruppo o, se hai selezionato Modalità Universale, su tutti gli indirizzi di gruppo specificati nel file ETS. KNX-Ultimate salva tutti i valori degli indirizzi di gruppo su file ed alla disconnessione/riconnessione/riavvio di node-red, vengono resi di nuovo disponibili a tutti i nodi. Puoi scegliere se richiedere il valore del nodo dal BUS oppure dal file, oppure dal file e, in mancanda del file, dal BUS. Se hai selezionato anche "Reagisci all'evento risposta", il valore verrà anche inviato in uscita sul flow.

  • Reagisci solo se il payload del bus KNX è cambiato (filtro RBE)

    Con il filtro RBE, il nodo riceve i dati solo se il datagramma che arriva dal bus KNX cambia differisce dal valore corrente. Ad esempio, se la luce della cucina è accesa (true) ed il nodo riceve un altro true dal bus KNX, il valore non verrà inviato al Flow.

  • Reagisci all'evento Scrittura (Write)

    Normalmente i devices KNX inviano un telegramma di scrittora "write" quando vogliono inviare un valore sul BUS KNX. Se selezioni questa opzione, le richieste di scrittura ricevute verranno ricevute dal nodo.

  • Reagisci all'evento Risposta (Response)

    I devices KNX inviano un telegramma di risposta "reponse" ogni qualvolta devono notificare uno stato, come ad esempio la risposta alla richiesta se una luce è accesa Se selezionato, le risposte ricevute verranno ricevute dal nodo.

  • Reagisci all'evento Lettura (Read)

    Puoi inviare un telegramma di richiesta di lettura "read" se vuoi che un device ti risponda in merito al suo stato. Ad esempio puoi chiedere se una luce è accesa. Se selezionato, le richieste di lettura ricevute verranno ricevute dal nodo e questo può essere utilizzato per creare una risposta peronalizzata con un Tipo di outputimpostato su "Risposta". Guarda la Wiki, c'è un esempio di come creare un Virtual Device.

  • Invio automatico del valore del nodo come risposta al bus KNX

    Abilitato solo se l'opzione "Modalità universale" non è selezionata, funziona insieme a Reagisci all'evento GroupValue read. Se selezionato, ogni volta che il nodo riceve una richiesta di lettura dal bus, invia una risposta al bus KNX con il valore di payload memorizzato. Se il valore è sconosciuto/non inizializzato, invia il valore predefinito che hai indicato nella casella di testo.


FORMATTAZIONE DEL VALORE DEI MESSAGGI CUSTOM KNX

Questa sezione consente di manipolare il valore proveniente da KNX BUS e di generare un payload formattato.

VALORI NUMERICI (le operazioni vengono eseguite in questo ordine)

  • Moltiplica

    Moltiplicare o dividere il valore.

  • Decimali

    Seleziona il numero di decimali. Il valore verrà poi arrotondato.

  • Negativi

    A volte può essere necessario manipolare i valori negativi, se questi non hanno senso. Ad esempio, se hai una lavatrice spenta e un misuratore di potenza collegato, a volte il wattmetro mostra un valore negativo, ad esempio -0,4 Watt. Con questa opzione, è possibile inviare 0 ogni volta che il valore è negativo.




MESSAGGI IN USCITA DAL NODO

Supponiamo di aver fornito un indirizzo di gruppo e un datapoint al nodo, manualmente o con l'aiuto del file ETS.

msg = {
    topic: "0/1/2" // (Contiene il topic del nodo, ad esempio "MyTopic". Se il topic del nodo non è impostato, viene usato l'indirizzo di gruppo, ad esempio "0/1/2")
    payload: false 
    previouspayload: true // (Valore precedente del nodo)
    payloadmeasureunit: "%" // (Unità di misura del payload)
    payloadsubtypevalue: "Start" // (Sottotipo del datapoint, ad esempio, On/Off, Ramp/NoRamp, Start/Stop, Alarm/NoAlarm)
    devicename: "Lampada del tavolo" // (Nome del nodo)
    knx: 
        event: "GroupValue_Write" // (o "GroupValue_Response", o "GroupValue_Read")
        dpt: "1.001"
        dptdesc: "Umidità" // (Descrizione dell'unità di misura del valore del payload)
        source: "15.15.22"
        destination: "0/1/2" // (E' l'indirizzo di gruppo del destinatario del telegramma)
        rawValue: buffer[1]raw // (o null, se "GroupValue_Read")
            0: 0x0 // (Valore non decodificato)
    }}
 

MESSAGGI IN USCITA DAL NODO IN "MODALITA' UNIVERSALE"

Qui hai 2 opzioni: con o senza il file ETS.
L'importazione del file ETS è il metodo suggerito. Se importi il file ETS, il nodo eseguirà automaticamente la decodifica del datapoint e fornirà anche il nome del dispositivo.
Se importi il file ETS, il nodo tenterà di decodificare il telegramma.

msg = {
    topic: "0/1/2" // (Contiene l'indirizzo di gruppo del destinatario del telegramma)
    payload: false // (Telegramma decodificato automaticamente. Se non hai importato**il file ETS**, il nodo cercherà di decodificare ugualmente il telegramma**ma potresti ottenere dei valori errati**)
    payloadmeasureunit: "%" // (Unità di misura del payload)
    payloadsubtypevalue: "Start" // (ottotipo del datapoint, ad esempio, On/Off, Ramp/NoRamp, Start/Stop, Alarm/NoAlarm.)
    devicename: "(Primo piano->Cucina) Luce tavolo" // (Contiene il percorso completo del dispositivo, oppure il nome del nodo nel caso in cui **non sia stato importato il file ETS**)) 
    knx: 
        event: "GroupValue_Write" // (o "GroupValue_Response", o "GroupValue_Read")
        dpt: "1.001" // (Se non hai importayo **il file ETS**, rappresenta il datapoint con il quale il nodo ha cercato di decodificare il telegramma)
        dptdesc: "Umidità" // (payload's measure unit description)
        source: "15.15.22"
        destination: "0/1/2" // (Contiene l'indirizzo di gruppo del destinatario del telegramma, uguale al topic)
        rawValue: buffer[1]raw // (oppure null, se "GroupValue_Read")
            0: 0x0 // (Valore non decodificato)
    }},
    emulate : true // In caso il gateway sia impostato in modalità simulazione (consulta la documentazione del nodo gateway), altrimenti non c'è questa proprietà.    

MESSAGGI IN USCITA DAL NODO IN MODALITA' VIRTUAL DEVICE

Puoi trovare qui un esempio di Virtual Device

 {
   topic: '5/0/1',
   payload: true,
   devicename: 'Light Status',
   event: 'Update_NoWrite',
   eventdesc: "The value has been updated from another node and hasn't been received from KNX BUS",
   previouspayload: true
 }
 

MESSAGGI IN INGRESSO AL NODO

COME CONTROLLARE I DISPOSITIVI KONNEX

Il nodo accetta messaggi in ingresso, da inviare al bus KNX e invia in uscita i messaggi arrivati dal bus KNX.
Supponiamo di aver fornito un indirizzo di gruppo e un datapoint al nodo, manualmente o con l'aiuto del file ETS.
Puoi cambiare al volo queste proprietà del nodo, tramite il messaggio di input. I parametri indicati sotto sono tutti opzionali, tranne il payload.

msg.destination
Per esempio, "0/0/1". Imposta l'indirizzo di gruppo a 3 livelli.

msg.payload
Per esempio, true/false/21/"Ciao Banana". Imposta il valore da inviare al BUS KNX.

msg.event
"GroupValue_Write": indica di inviare il telegramma come "scrittura" sul BUS
"GroupValue_Response": indica di inviare il telegramma come "risposta" sul BUS.
"Update_NoWrite": non invia nulla. Aggiorna semplicemente il valore del nodo KNX-Ultimate (una specie di "Stato passivo). E' utile nel caso serva mantenere uno stato senza scriverlo sul bus, ma leggendolo in un secondo momento con un comando di lettura (per esempio "readrequest")
Attenzione: in caso msg.event = "Update_NoWrite", tutti i nodi con l'indirizzo di gruppo di cui viene aggiornato il valore, emetteranno un messaggio in uscita di questo tipo:

{
  topic: '5/0/1',
  payload: true,
  devicename: 'Light Status',
  event: 'Update_NoWrite',
  eventdesc: "The value has been updated from another node and hasn't been received from KNX BUS",
  previouspayload: true
}

Se vuoi inviare un comando di lettura al BUS, per favore usa msg.readstatus qui sotto.

msg.readstatus = true
Invia un comando di lettura sul BUS.

msg.dpt
Per esempio "1.001". Imposta il Datapoint. (Puoi usare questi formati: 9 , "9" , "9.001" or "DPT9.001")

msg.writeraw
msg.bitlenght
Scrive un valore RAW (non formattato) sul BUS. Per favore, leggi sotto negli esempi.

msg.resetRBE
passa msg.resetRBE = true ad un nodo device, per resettare i filtri RBE in ingresso ed uscita, in quel particolare nodo.


MODIFICARE LA CONFIGURAZIONE DEL NODO TRAMITE MESSAGGIO

E' possibile cambiare al configurazione di KNX-Ultimate inviando un messaggio msg.setConfig al nodo.
Vedi qui come fare.




HOW-TO VELOCI

ACCENDERE UNA LAMPADA

// Esempio di funzione che invia un messaggio sul bus KNX
msg.payload = true; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

DIMMERARE UNA LAMPADA

// Esempio di funzione che invia un messaggio sul bus KNX
msg.payload = 30; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

INVIARE DEL TESTO AD UN DISPLAY

// Esempio di funzione che invia un messaggio sul bus KNX
msg.payload = "Temp. esterna 35°C"; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

LETTURA DELLO STATO DELLA LAVATRICE

// Esempio di richiesta stato ad un dispositivo KNX
// Invio di una richiesta "read" al bus. Il nodo si aspetta di ricevere una "risposta" dal device KNX. Devi selezionare quindi **Reagisci agli eventi GroupValue response** nelle opzioni del nodo.
// In questo modo il nodo reagirà alle risposte inviate dal dispositivo che stai interrogando.
msg.readstatus = true; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

SCRIVERE UN BUFFER RAW DIRETTAMENTE SUL BUS
Per scrivere un bufer RAW direttamente sul bus, usa le proprietà writeraw and bitlenght del msg di ingresso.
In questo caso, il Datapoint che hai selezionato nella finestra di configurazione di knx-ultimate, viene ignorato.
Incolla il codice qui sotto in un nodo funzione e collegalo a knx-ultimate.

//  If you encode the values by yourself, you can write raw buffers with writeraw.
// The bitlenght is necessary for datapoint types where the bitlenght does not equal the buffers bytelenght * 8. This is the case for dpt 1 (bitlength 1), 2 (bitlenght 2) and 3 (bitlenght 4).
// Write raw buffer to a groupaddress with dpt 1 (e.g light on = value true = Buffer<01>) with a bitlength of 1
msg.writeraw = Buffer.from('01', 'hex'); // Put '00' instead of '01' to switch off the light.
msg.bitlenght = 1;
return msg;

// Temperature sample (uncomment below and comment above)
// Write raw buffer to a groupaddress with dpt 9 (e.g temperature 18.4 °C = Buffer<0730>) without bitlength
// msg.writeraw = Buffer.from('0730', 'hex');
// msg.bitlenght = 1;
// return msg;

AGGIORNARE IL VALORE DEL NODO SENZA SCRIVERE SUL BUS

msg.event = "Update_NoWrite";
msg.payload = true;
return msg;

CONTROLLARE UN DISPOSITIVO KNX CON IL NODO IMPOSTATO IN "MODALITA' UNIVERSALE"

Qui hai 2 opzioni: importare o meno il file ETS.
L'importazione del tuo file ETS è il metodo suggerito aboslute . Se importi il tuo file ETS, devi solo impostare il payload da trasmettere. Il nodo eseguirà automaticamente la codifica del datapoint.
Se non importi il file ETS, è necessario passare anche il datapoint.

SPEGNERE UNA LAMPADA CON IL FILE ETS IMPORTATO

// Esempio di funzione che invia un messaggio sul bus KNX
msg.event = "GroupValue_Write";
msg.destination = "0/0/1"; // Imposta l'indirizzo di destinazione 
msg.payload = false; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

SPEGNERE UNA LAMPADA SENZA IL FILE ETS IMPORTATO

// Esempio di funzione che invia un messaggio sul bus KNX
msg.event = "GroupValue_Write";
msg.destination = "0/0/1"; // Imposta l'indirizzo di destinazione 
msg.dpt = "1.001"; // Occorre quindi anche impostare il Datapoint, perchè non hai importato il file ETS.
msg.payload = false; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

LEGGERE LO STATO DI TUTTI I DISPOSITIVI KNX CON IL FILE ETS IMPORTATO
Non è possibile inviare una richiesta di lettura a tutti i gruppi se non si importa il file ETS, poiché il nodo non può sapere a quali dispositivi inviare la richiesta di lettura.

// Esempio di una funzione che invia un messaggio di stato di lettura a KNX-Ultimate
// Invia una richiesta di lettura al bus KNX. Ti aspetterai una "risposta" dal bus. È necessario selezionare l'opzione **Reagisci all'evento GroupValue response**.
// Il nodo reagirà al telegramma di risposta KNX proveniente dal BUS.
msg.readstatus = true; // invio di un messaggio di "scrittura" o "risposta" (in base all'opzione selezionata nella configurazione, in Tipo di Output) al bus KNX
return msg;

VEDI ANCHE



Spiegazione colori
Reagisci ad un evento Write.
Protezione riferimento circolare. Vedi qui.
Reagisci ad un evento Response.
Invio automatico del valore al bus come "Response" Vedi Virtual Device.
Reagisci ad un evento read.
Filtro RBE: nessun telegramma inviato.
Errore o disconnessione.
Nodo disabilitato per riferimento circolare. Vedi qui.
Clone this wiki locally