Dieses Mal werde ich Java-Funktionsknoten verwenden, der Java-Code auf Node-RED ausführen kann. Hier sind einige Beispiele für Flows, die Entwickler möglicherweise nützlich finden.
** Java-Funktionsknoten (Node-Red-Contrib-Java-Funktion) ** https://flows.nodered.org/node/node-red-contrib-java-function
Entwickler, die mit JavaScript nicht vertraut sind, haben möglicherweise Probleme, da für den in Node-RED standardmäßig bereitgestellten Funktionsknoten das Schreiben von Code in JavaScript erforderlich ist. Um dieses Problem zu lösen, enthält die Node-RED-Bibliothek Funktionsknoten, die in anderen Sprachen wie Python geschrieben werden können. ) Ist für die Öffentlichkeit zugänglich. Der diesmal eingeführte Java-Funktionsknoten ist ein Funktionsknoten, der Java-Code ausführen kann. Mit diesem Knoten können Sie die zahlreichen Standardbibliotheken von Java von Nodde-RED aus aufrufen.
Hier sind sechs Beispiele für die Verwendung von Java-Funktionsknoten. Mit dem Java-Funktionsknoten können Sie problemlos Funktionen realisieren, die mit herkömmlichem Node-RED schwierig waren.
Lassen Sie uns den Betriebssystem-Sound "Pororon" für Windows 10 und "Tsun" für Mac spielen. Sie kann einfach implementiert werden, indem Sie die beep () -Methode der Toolkit-Klasse in den Java-Funktionsknoten schreiben.
In diesem Ablauf wird durch Klicken auf die Schaltfläche auf dem Injektionsknoten ein Systemklang erzeugt. Es scheint, dass Sie MP3-Dateien auch mit JavaFx abspielen können.
[{"id":"7668777e.580ae8","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":"","x":160,"y":260,"wires":[["f5974570.d119d8"]]},{"id":"f5974570.d119d8","type":"javafunction","z":"3cd542b9.3985de","name":"beep sound","func":"Toolkit.getDefaultToolkit().beep();\nreturn msg;","outputs":1,"x":310,"y":260,"wires":[["279508d1.f18468"]]},{"id":"279508d1.f18468","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":470,"y":260,"wires":[]}]
Versuchen Sie, die Scroll Lock-LED (roter Kreis auf dem Foto unten) auf der Tastatur zu blinken. Es ist eine LED, die ich selten benutze, also verwenden wir sie für Benachrichtigungen von Node-RED.
Schreiben Sie den Code, um die Bildlaufsperre mit der Robot-Klasse im Java-Funktionsknoten zu drücken.
Die LED blinkt jedes Mal, wenn Sie auf den Injektionsknoten klicken. Durch die Kombination mit dem E-Mail-Knoten können Sie anscheinend einen Flow erstellen, der Sie durch Blinken der LED darüber informiert, dass eine E-Mail eingegangen ist.
[{"id":"44c7ddf6.403c24","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":180,"y":480,"wires":[["e38dcfdf.cc86e"]]},{"id":"5a9065ca.2d930c","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":510,"y":480,"wires":[]},{"id":"e38dcfdf.cc86e","type":"javafunction","z":"3cd542b9.3985de","name":"blink scroll lock","func":"Robot rb = new Robot();\nrb.keyPress(KeyEvent.VK_SCROLL_LOCK);\nrb.keyRelease(KeyEvent.VK_SCROLL_LOCK);\nreturn msg;","outputs":1,"x":340,"y":480,"wires":[["5a9065ca.2d930c"]]}]
Wenn Sie eine Nachricht mit der URL erhalten, können Sie auch die Desktop-Klasse verwenden, um den Vorgang des Öffnens der Seite im Browser zu beschreiben.
Wenn der obige Browser im obigen Flow Google Chrome ist, wird beim Ausführen www.google.co.jp in Google Chrome geöffnet (wenn Sie den Flow-Editor in Google Chrome verwenden, wird er in einem neuen Tab geöffnet. ).
Wenn Sie einen Computer verwenden, wird meiner Meinung nach häufig die URL kopiert und in den Browser eingefügt, um die Seite zu öffnen. Wenn Sie es mit der später beschriebenen Verknüpfungsfunktion der Zwischenablage kombinieren, können Sie einen praktischen Ablauf schreiben, der den Browser etwas früher öffnet, wenn die Zeichenfolge, die mit "http: //" oder "https: //" beginnt, in der Zwischenablage gespeichert wird.
[{"id":"b5368af2.afcbc8","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"http://www.google.co.jp","payloadType":"str","repeat":"","crontab":"","once":false,"x":200,"y":380,"wires":[["272fb242.1067ee"]]},{"id":"272fb242.1067ee","type":"javafunction","z":"3cd542b9.3985de","name":"open browser","func":"URI uri = new URI(msg.get(\"payload\").getAsString());\nDesktop.getDesktop().browse(uri);\nreturn msg;","outputs":1,"x":400,"y":380,"wires":[["68407010.0f3ac"]]},{"id":"68407010.0f3ac","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":570,"y":380,"wires":[]}]
Sie können auch über den Java-Funktionsknoten auf die Zwischenablage zugreifen. Im folgenden Ablauf werden die in der Nachricht empfangenen Zeichenfolgen "Daten" in der Zwischenablage gespeichert und der Inhalt der Zwischenablage in einem anderen Ablauf aufgerufen.
Der Java-Funktionsknoten verwendet die Zwischenablageklasse zum Lesen und Schreiben der Zwischenablage.
Wenn Sie es mit dem Dateiknoten kombinieren, können Sie einen Flow schreiben, um den Verlauf der Zwischenablage zu verwalten.
[{"id":"aee0f3ab.fadef","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"data","payloadType":"str","repeat":"","crontab":"","once":false,"x":110,"y":360,"wires":[["8c33e48c.c2cac8"]]},{"id":"8c33e48c.c2cac8","type":"javafunction","z":"3cd542b9.3985de","name":"save to clipboard","func":"String str = msg.get(\"payload\").getAsString();\nToolkit tk = Toolkit.getDefaultToolkit();\nClipboard cb = tk.getSystemClipboard();\ncb.setContents(new StringSelection(str), null);\nreturn msg;","outputs":1,"x":270,"y":360,"wires":[["ce731dd.2cdc4e"]]},{"id":"ce731dd.2cdc4e","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":450,"y":360,"wires":[]},{"id":"51b942a1.110d0c","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":120,"y":420,"wires":[["2e071160.2678ce"]]},{"id":"2e071160.2678ce","type":"javafunction","z":"3cd542b9.3985de","name":"read clipboard","func":"Toolkit tk = Toolkit.getDefaultToolkit();\nClipboard cb = tk.getSystemClipboard();\nObject oj = cb.getData(DataFlavor.stringFlavor);\nmsg.addProperty(\"payload\", oj.toString());\nreturn msg;","outputs":1,"x":280,"y":420,"wires":[["93c1a28a.e100a"]]},{"id":"93c1a28a.e100a","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":450,"y":420,"wires":[]}]
Sie können auch die Koordinaten des Mauszeigers abrufen und den Mauszeiger auf die angegebenen Koordinaten bewegen. Ermitteln Sie zunächst die X- und Y-Koordinaten des Mauszeigers und zeigen Sie sie auf der Registerkarte Debug an.
Verwenden Sie die PointerInfo-Klasse, um die Position des Mauszeigers abzurufen. Wenn Sie den Inject-Knoten so einstellen, dass er regelmäßig ausgeführt wird, und den Mauszeiger bewegen, ändern sich die X- und Y-Koordinatenwerte auf der Registerkarte Debug von Moment zu Moment.
Als nächstes schreiben wir einen Flow, um den Mauszeiger zu bewegen.
Verwenden Sie die Robot-Klasse, um den Mauszeiger zu bewegen. Klicken Sie auf die Schaltfläche am Injektionsknoten, um den Mauszeiger auf die angegebenen Koordinaten zu bewegen.
Wenn Sie diesen Mechanismus verwenden, können Sie die Maus auch mit dem Wert des über MQTT empfangenen Sensors bedienen. Es scheint, dass Sie leicht eine interessante Maus entwickeln können.
[{"id":"84d59034.87a96","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":120,"y":480,"wires":[["df3edce2.04cfa"]]},{"id":"df3edce2.04cfa","type":"javafunction","z":"3cd542b9.3985de","name":"get mouse location","func":"PointerInfo pi = MouseInfo.getPointerInfo();\nPoint pt = pi.getLocation();\nJsonObject jo = new JsonObject();\njo.addProperty(\"x\", pt.getX());\njo.addProperty(\"y\", pt.getY());\nmsg.add(\"payload\", jo);\nreturn msg;","outputs":1,"x":290,"y":480,"wires":[["3b3449cb.5889e6"]]},{"id":"3b3449cb.5889e6","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":470,"y":480,"wires":[]},{"id":"d80fd109.6c26f","type":"javafunction","z":"3cd542b9.3985de","name":"move mouse","func":"Robot rb = new Robot();\nJsonObject jo = (JsonObject)msg.get(\"payload\");\nint x = Integer.parseInt(jo.get(\"x\").toString());\nint y = Integer.parseInt(jo.get(\"y\").toString());\nrb.mouseMove(x, y);\nreturn msg;","outputs":1,"x":310,"y":540,"wires":[["d10b91b3.4141"]]},{"id":"888f6d50.e793f","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"{\"x\":245,\"y\":530}","payloadType":"json","repeat":"","crontab":"","once":false,"x":140,"y":540,"wires":[["d80fd109.6c26f"]]},{"id":"d10b91b3.4141","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":470,"y":540,"wires":[]}]
Versuchen Sie, einen Bestätigungsdialog anzuzeigen, der die vom vorherigen Knoten empfangene Nachricht enthält. Rufen Sie das im folgenden Screenshot gezeigte Fenster auf.
Verwenden Sie die JOptionPane-Klasse, um das Dialogfeld anzuzeigen. Es ist etwas lang, aber die Essenz ist nur die 3. und 4. Zeile.
Im Node-RED-Standard werden Ereignisse häufig in Onlinediensten wie Twitter und E-Mail-Knoten verwendet, es ist jedoch ein Smartphone- oder E-Mail-Benachrichtigungsmechanismus erforderlich. Die Bestätigungsdialogmethode ist praktisch, da sie nur von Node-RED verwendet werden kann.
[{"id":"80733fc8.a636b","type":"debug","z":"3cd542b9.3985de","name":"","active":true,"console":false,"complete":"false","x":490,"y":700,"wires":[]},{"id":"73578fbe.9ba63","type":"javafunction","z":"3cd542b9.3985de","name":"show dialog","func":"String lf = UIManager.getSystemLookAndFeelClassName();\nUIManager.setLookAndFeel(lf);\nString payload = msg.get(\"payload\").getAsString();\nJOptionPane op = new JOptionPane(payload,\n JOptionPane.PLAIN_MESSAGE,\n JOptionPane.DEFAULT_OPTION);\nJDialog dg = op.createDialog(null, null);\ndg.setAlwaysOnTop(true);\ndg.setVisible(true);\nreturn msg;","outputs":1,"x":330,"y":700,"wires":[["80733fc8.a636b"]]},{"id":"6467a0e7.53bfc","type":"inject","z":"3cd542b9.3985de","name":"","topic":"","payload":"message","payloadType":"str","repeat":"","crontab":"","once":false,"x":180,"y":700,"wires":[["73578fbe.9ba63"]]}]
Das diesmal vorgestellte Beispiel wurde für Node-RED unter Windows oder Mac bestätigt. Führen Sie die folgenden drei Schritte aus, um den Java-Funktionsknoten zu aktivieren. Einzelheiten finden Sie in dem Dokument, das mit jedem Link verknüpft ist, und installieren Sie es.
(1) Java JDK installieren (2) Umgebungsvariablen festlegen, damit Java- und Java-Befehle ausgeführt werden können (3) Installieren Sie "Node-Red-Contrib-Java-Funktion" von "Barrett Management" von Node-RED
Die Standardbibliothek von Java ist so umfangreich, dass sie andere interessante Verwendungszwecke zu haben scheint als die hier vorgestellten Beispiele. Bitte spielen Sie mit dem Java-Funktionsknoten.
Recommended Posts