Cette fois, j'utiliserai le nœud de fonction Java qui peut exécuter du code Java sur Node-RED. Voici quelques exemples de flux que les développeurs peuvent trouver utiles.
** Nœud de fonction Java (node-red-contrib-java-function) ** https://flows.nodered.org/node/node-red-contrib-java-function
Les développeurs qui ne sont pas familiarisés avec JavaScript peuvent avoir des difficultés car le nœud de fonction fourni en standard dans Node-RED nécessite l'écriture de code en JavaScript. Pour résoudre ce problème, la bibliothèque Node-RED inclut des nœuds de fonction qui peuvent être écrits dans d'autres langages tels que python. ) Est ouvert au public. Le nœud de fonction Java introduit cette fois est un nœud de fonction qui peut exécuter du code Java. En utilisant ce nœud, vous pouvez appeler les abondantes bibliothèques standard de Java à partir de Nodde-RED.
Voici six exemples d'utilisation des nœuds de fonction Java. En utilisant le nœud de fonction Java, vous pouvez facilement réaliser des fonctions qui étaient difficiles avec Node-RED conventionnel.
Jouons le son du système d'exploitation "Pororon" pour Windows 10 et "Tsun" pour mac. Il peut être implémenté simplement en écrivant la méthode beep () de la classe Toolkit dans le nœud de fonction Java.
Dans ce flux, cliquer sur le bouton sur le nœud d'injection produira un son système. Il semble que vous puissiez également lire des fichiers mp3 en utilisant JavaFx.
[{"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":[]}]
Essayez de faire clignoter le voyant de verrouillage du défilement (cercle rouge sur la photo ci-dessous) sur le clavier. C'est une LED que j'utilise rarement, alors utilisons-la pour les notifications de Node-RED.
Écrivez le code pour appuyer sur la touche Scroll Lock à l'aide de la classe Robot dans le nœud de fonction Java.
La LED clignote chaque fois que vous cliquez sur le nœud d'injection. En le combinant avec le nœud e-mail, il semble que vous puissiez créer un flux qui vous avertit qu'un e-mail est arrivé en faisant clignoter le voyant.
[{"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"]]}]
Lorsque vous recevez un message avec l'URL, vous pouvez également utiliser la classe Desktop pour décrire le processus d'ouverture de la page dans le navigateur.
Dans le flux ci-dessus, si le navigateur par défaut est Google Chrome, lorsque vous l'exécutez, www.google.co.jp s'ouvrira dans Google Chrome (si vous utilisez l'éditeur de flux dans Google Chrome, il s'ouvrira dans un nouvel onglet. ).
Lors de l'utilisation d'un ordinateur, je pense que l'opération consistant à copier l'URL et à la coller sur le navigateur pour ouvrir la page est souvent effectuée. Si vous le combinez avec la fonction de liaison du presse-papiers décrite plus loin, vous pouvez écrire un flux pratique qui ouvre le navigateur dès que possible lorsque la chaîne de caractères commençant par "http: //" ou "https: //" est enregistrée dans le presse-papiers.
[{"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":[]}]
Vous pouvez également accéder au presse-papiers à l'aide du nœud de fonction Java. Dans le flux ci-dessous, la chaîne de caractères "data" reçue dans le message est enregistrée dans le presse-papiers, et le contenu du presse-papiers est appelé dans un autre flux.
Le nœud de fonction Java utilise la classe Clipboard pour lire et écrire le presse-papiers.
Si vous le combinez avec le nœud de fichier, vous pouvez écrire un flux pour gérer l'historique du presse-papiers.
[{"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":[]}]
Vous pouvez également obtenir les coordonnées du curseur de la souris et déplacer le curseur de la souris vers les coordonnées spécifiées. Tout d'abord, obtenez les coordonnées X et Y du curseur de la souris et affichez-les dans l'onglet de débogage.
Utilisez la classe PointerInfo pour obtenir la position du curseur de la souris. Si vous définissez le nœud d'injection pour qu'il s'exécute périodiquement et déplacez le curseur de la souris, les valeurs de coordonnées X et Y de l'onglet Débogage changeront d'un moment à l'autre.
Ensuite, écrivons un flux pour déplacer le curseur de la souris.
Utilisez la classe Robot pour déplacer le curseur de la souris. Cliquez sur le bouton sur le nœud d'injection pour faire passer le curseur de la souris aux coordonnées spécifiées.
Si vous utilisez ce mécanisme, vous pouvez également utiliser la souris en utilisant la valeur du capteur reçu via MQTT. Il semble que vous puissiez facilement développer une souris intéressante.
[{"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":[]}]
Essayez d'afficher une boîte de dialogue de confirmation contenant le message reçu du nœud précédent. Ouvrez la fenêtre illustrée dans la capture d'écran ci-dessous.
Utilisez la classe JOptionPane pour afficher la boîte de dialogue. C'est un peu long, mais l'essence n'est que les 3e et 4e lignes.
Dans la norme Node-RED, les événements sont souvent utilisés dans les services en ligne tels que Twitter et les nœuds de messagerie, mais un mécanisme de notification par smartphone ou par courrier électronique est nécessaire. La méthode de dialogue de confirmation est pratique car elle peut être utilisée par Node-RED seul.
[{"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"]]}]
L'exemple présenté cette fois a été confirmé pour fonctionner sur Node-RED installé sur Windows ou Mac. Pour activer le nœud de fonction Java, effectuez les trois étapes suivantes. Pour plus de détails, reportez-vous au document lié à chaque lien et installez-le.
(1) Installer Java JDK (2) Définissez les variables d'environnement pour que les commandes java et javac puissent être exécutées (3) Installez "node-red-contrib-java-function" depuis "Barrett Management" de Node-RED
La bibliothèque standard de Java est si riche qu'elle semble avoir des utilisations intéressantes autres que les exemples présentés ici. Veuillez jouer avec le nœud de fonction Java.
Recommended Posts