Erstellen von benutzerdefinierten Knoten in node-red JavaScript-Dateien API-Schreiben Details

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Erstellen von benutzerdefinierten Knoten in node-red JavaScript-Dateien API-Schreiben Details

Präambel

Wenn Sie in node-red den Knoten nicht finden, den Sie benötigen, können Sie einen Knoten anpassen, der Ihren Bedürfnissen entspricht. In früheren Artikeln habe ich kurz beschrieben, wie man einen Knoten erstellt und ein Beispiel für die Umwandlung von Groß - und Kleinschrift. Obwohl die Beispiele einfach sind, können Sie die Schritte zum Erstellen eines benutzerdefinierten Knoten und die Komponenten eines Knoten verstehen. Dieser Artikel konzentriert sich auf die js-Datei des benutzerdefinierten Knoten. Erläutern Sie die API und andere Konfigurationselemente. Aus den vorherigen Artikeln wissen wir, dass die Node-JS - Datei eine Kerndatei für einen Knoten ist, die Konfigurationsparameter berechnet, die Geschäftslogik verarbeitet und Daten nachgelagerten Daten sendet. Schauen wir uns unten an.

Benutzerdefinierte Knoten JavaScript-Dateien

Knoten-Builder

Alle Knoten sind Funktionen, die von einem Konstruktor generiert werden, und sind eine neue Instanz der Erstellung. Diese Funktion wird in der Laufzeit registriert,
Diese Funktion existiert im Stream-Editor, indem sie ein Konfigurationsobjekt festlegt.
In dieser Funktion ist das erste, was wir tun, ein Anruf.RED.nodes.createNode- Funktion aufzurufen, um die Eigenschaften zu serialisieren, die von anderen Knoten geteilt werden. Danach ist

Dann kann man den Businesscode schreiben.
wie folgt

Akzeptieren Sie Informationen wie folgt

Der Knoten akzeptiert Informationen, die vom vorgelagerten Knoten über den gesamten Strom gesendet werden, indem er ein EreignisinputEreignisse, die Informationen über den gesamten Strom von vorgelagerten Knoten erhalten. Bei der Registrierung eines Ereignisses gibt es in der Rückruffunktion des Ereignisses zwei Parameter: MSG und SEND, wobei MSG die vorgelagerten Daten ist. Send ist eine Funktion, die nach unten weitergegeben wird. Die dritte Funktion done ist eine Funktion, die der Knoten aufruft, nachdem er die Geschäftslogik verarbeitet hat.
Beispiel

function SampleNode(config) {
    RED.nodes.createNode(this,config);
    // node-specific code goes here

}

RED.nodes.registerType("sample",SampleNode);

Akzeptieren von Informationen

Knoten durch Registrierung einesinputEreignisse, die Informationen über den gesamten Strom von vorgelagerten Knoten erhalten. Bei der Registrierung eines Ereignisses gibt es in der Rückruffunktion des Ereignisses zwei Parameter: MSG und SEND, wobei MSG die vorgelagerten Daten ist. Send ist eine Funktion, die nach unten weitergegeben wird. Die dritte Funktion done ist eine Funktion, die der Knoten aufruft, nachdem er die Geschäftslogik verarbeitet hat.
Beispiel

this.on('input', function(msg, send, done) {
    // do something with 'msg'

    // Once finished, call 'done'.
    // This call is wrapped in a check that 'done' exists
    // so the node will work in earlier versions of Node-RED (<1.0)
    if (done) {
        done();
    }
});

Nachrichten senden

Das Senden von Informationen in einem benutzerdefinierten Knoten nach unten ist sehr einfach
Man muss nur die Send-Funktion verwenden, wie folgt

var msg = { payload:"hi" }
this.send(msg);

Wenn ein Knoten Informationen in einem Eingabeereignis nach unten senden möchte, kann man dies tun

let node = this;
this.on('input', function(msg, send, done) {
    // For maximum backwards compatibility, check that send exists.
    // If this node is installed in Node-RED 0.x, it will need to
    // fallback to using `node.send`
    send = send || function() { node.send.apply(node,arguments) }

    msg.payload = "hi";
    send(msg);

    if (done) {
        done();
    }
});

In der Rückruffunktion des Eingabeereignisses gibt es drei Parameter, der erste ist die akzeptierte Information, der zweite ist die Send-Funktion,
Die dritte Funktion ist die done-Funktion. Es gibt unterschiedliche Nutzungsszenarien.

Wenn Sie mehrere Parameter nach unten eingeben möchten, können Sie so schreiben.

this.send([ msg1 , msg2 ]);

this.send([ [msgA1 , msgA2 , msgA3] , msg2 ]);

Journal-Ereignis

schreiben, um das Protokoll in einem benutzerdefinierten Knoten zu drucken, rufen Sie einfach die Methoden log, warn usw. unter this. Das Protokoll wird in der Konsole gedruckt.

this.log("Something happened");
this.warn("Something happened you should know about");
this.error("Oh no, something bad happened");

// Since Node-RED 0.17
this.trace("Log some internal detail not needed for normal operation");
this.debug("Log something more details for debugging the node's behaviour");

Status festlegen

Einige Knoten haben eine Statusanzeige, um zu zeigen, dass sie erfolgreich oder falsch konfiguriert wurden.
Dieser Status wird auch in der JS-Datei festgelegt und muss nur status aufgerufen werden.
wie folgt

this.status({fill:"red",shape:"ring",text:"disconnected"});

Die Farbe des fill-Status
shape-Status - Symbol
text-Status - Text

Benutzerdefinierte Knoten-Einstellungen

Wenn Sie beim Erstellen eines Knoten eine Eigenschaft des Knoten in die Setting-Datei konfigurieren möchten, können Sie dies tun.
Wenn Sie Ihre Art von Knoten haben,fizz-nodehaben undcolorin die Einstellungsdatei legen, müssen Sie in der EinstellungsdateifizzNodeColor
so konfigurieren, dass Sie ihn verwenden können.RED.settings.fizzNodeColorBesuchen zu kommen.

Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.