OSnode:flows

From twidunode wiki
Jump to: navigation, search

Cos'è un flow

OSNode è basato su node-red, prodotto open source di IBM. Node-red è un sistema di programmazione visuale basato su flussi logici. Ogni installazione di Node-Red può contenere diversi flussi, chiamati appunto flows, ogniuno dedicato ad eseguire una particolare azione.

Di seguito sono riportati dei flussi di esempio utilizzabili nell'installazione di OSNode. Il loro scopo è di fornire un esempio pratico e funzionante, ma possono essere integrati e modificati in base alle esigenze.


Ecco un esempio di come è fatto un flow:

L'esempio seguente è il flusso di invio messaggio a TAS.

[
    {
        "id": "7beaad55.70af84",
        "type": "http request",
        "z": "b95fa0b2.962b58",
        "name": "",
        "method": "POST",
        "ret": "txt",
        "url": "https://iot.mywaver.it/townetalert/message/",
        "tls": "",
        "x": 270,
        "y": 60,
        "wires": [
            [
                "3f6735a5.cf1502"
            ]
        ]
    },
    {
        "id": "3f6735a5.cf1502",
        "type": "debug",
        "z": "b95fa0b2.962b58",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 457,
        "y": 71,
        "wires": []
    },
    {
        "id": "1d370c3f.3ba17c",
        "type": "link in",
        "z": "b95fa0b2.962b58",
        "name": "ToTownetAlert",
        "links": [
            "df2ce6f0.a5039",
            "d7b150b.740333",
            "d0f0c843.0a5378",
            "e8ca84eb.426e5",
            "927bc30a.899498"
        ],
        "x": 91,
        "y": 80,
        "wires": [
            [
                "7beaad55.70af84"
            ]
        ]
    }
]

Si consiglia comunque la lettura della manualistica ufficiale di Node-Red QUI

Come inserire un Flow

Il modo più semplice per importare un flow all'interno del sistema Node-red è di eseguire il copia/incolla del codice al suo interno.

Procedere come di seguito

Selezionare e copiare il codice del flow con il proprio editor preferito. Dal menu in alto a destra selezionare "Import"->"Clipboard" Incollare il testo all'interno della input box e premere "Import". Posizionare il flow nel punto desiderato.

IDU

Il flusso più importante è quello che permette di dialogare con la TW-IDU-NODE. Abbiamo infatti creato, e lo si trova nella nostra installazione, un nodo specifico per comunicare con il CAN BUS.

Questo flusso prende i dati che provengono dalla IDU e li scrive su un array. Come seconda aziene ha un link interno per la scrittura sulla IDU.

Da notare le due funzioni di scrittura dati globali, Write Global IDU List e WriteToGlobal. La prima scrive la lista delle idu collegate mentre la seconda registra i dati provenienti dalle idu stesse. La prima scrive una variabile di nome "ListOfIDU" mentre la seconda utilizza l'ID della idu come nome di variabile globale.

Tali contenuti possono essere recuperati con i comandi:

global.get("ListOfIDU");  // ritorna un array con la lista delle idu di cui ha ricevuto dati dal CANBUS
global.get("19011");      // Dove 19011 è un esempio di ID


Node-red idu.png

Scarica il file

Specific IDU Node

Questo flow recupera i dati di una specifica IDU e ne esegue delle azioni. In questo esempio vengono inviati alcuni dati alla dashboard integrata e gestito il controllo sul carico con avviso su Townet Alerting System.

Notare che il componente node-red-dashboard deve essere installato. Notare inoltre che l'esempio riporta un ID di test della IDU che dovrà poi essere cambiato con quello dalla propria unità. Il valore di ricarica del ciclo è impostato nel primo nodo Inject a 5 secondi. Tale valore può essere variato a piacimento considerando però la frequenza di campionamento dei dati eseguita dal flusso di acquisizione principale "IDU".


Node-red idu-1.png

Scarica il file

Alerting con TAS

Nore-red TAS.png

TAS (Towent Alerting system) è il nostro gateway di invio allarmistica con Telegram.

E' possibile reindirizzare una chiamata ad un URL esterno per inviare un messaggio di allerta.

Il flow si apetta di avere il payload formattato come di seguito:

{
    "message": "This is yor message",
    "list": "this_is_yout_list"
}

In genere si utilizza il nodo Change per impostare il messaggio dal flusso che ha causato l'alert e poi lo si invia al flusso TAS con il connettore Link

Scarica il file

HTTP API

Node-red-HTTP.png

Con HTTP API è possibile recuperare la lista delle IDU attive e tutti i valori monitorati.

Il flow legge la lista delle IDU e ritorna solo quelle con una data di aggiornamento recente. Il controllo sulla data è necessario per eliminare di fatto le idu che sono state rimosse e che non inviano più messaggi sul BUS.

Notare nella funzione Retrieve IDU List il valore ti TTL impostato. Di default è 5000 che corrisponde a 5 secondi.

// Set expiration to 5 sec.
var TTDif = TT - 5000;

La API può esserer raggiunta al seguente indirizzo: http://[ip_router]:1880/idu/

Scarica il file