忘備録-備忘録

技術的な備忘録

node-redでローカルIPアドレスを取得する

2016-11-28 17:46:44 | raspberry ...
node-red上でローカルIPアドレスの値を取得する関数を作ってみました。

最初に ~/.node-red/setting.js の170行目くらいの functionGlobalContext の項目に必要な項目を追加します(コメントを外すだけです。)。
  1.     // Anything in this hash is globally available to all functions.
  2.     // It is accessed as context.global.
  3.     // eg:
  4.     // functionGlobalContext: { os:require('os') }
  5.     // can be accessed in a function block as:
  6.     // context.global.os
  7.     functionGlobalContext: {
  8.         os:require('os'),
  9.         // octalbonescript:require('octalbonescript'),
  10.         // jfive:require("johnny-five"),
  11.         // j5board:require("johnny-five").Board({repl:false})
  12.     },

次にコードを書きます。


-------------------------------------code-------------------------
[{"id":"98c4454e.0650c","type":"function","z":"78174f00.279c9","name":"IPアドレス取得(詳細)","func":"var os = context.global.os;\n\nvar ifacesObj = {}\nifacesObj.ipv4 = [];\nifacesObj.ipv6 = [];\nvar interfaces = os.networkInterfaces();\n\nfor (var dev in interfaces) {\n    interfaces[dev].forEach(function(details){\n        if (!details.internal){\n            switch(details.family){\n                case \"IPv4\":\n                    ifacesObj.ipv4.push({name:dev, address:details.address});\n                break;\n                case \"IPv6\":\n                    ifacesObj.ipv6.push({name:dev, address:details.address})\n                break;\n            }\n        }\n    });\n}\nmsg.payload = ifacesObj;\nreturn msg;","outputs":1,"noerr":0,"x":299.5,"y":371,"wires":[["d775a21.dbef86"]]},{"id":"d775a21.dbef86","type":"debug","z":"78174f00.279c9","name":"","active":true,"console":"false","complete":"false","x":589.5,"y":368,"wires":[]},{"id":"ce20cf3a.8685e8","type":"inject","z":"78174f00.279c9","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":91.5,"y":370,"wires":[["98c4454e.0650c","d0b13b58.8cbe3"]]},{"id":"d0b13b58.8cbe3","type":"function","z":"78174f00.279c9","name":"IPアドレス取得","func":"var os = context.global.os;\nvar ifaces = os.networkInterfaces();\nvar ipAddress;\n \nObject.keys(ifaces).forEach(function (ifname) {\n  ifaces[ifname].forEach(function (iface) {\n \n    if ('IPv4' !== iface.family || iface.internal !== false) {\n      // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses\n      return;\n    }\n \n    console.log(ifname, iface.address);\n    // en0 192.168.1.NNN\n    ipAddress = iface.address;\n \n  });\n});\nmsg.payload = ipAddress;\nreturn msg;","outputs":1,"noerr":0,"x":277.5,"y":415,"wires":[["d775a21.dbef86"]]}]
-------------------------------------code-------------------------

参考URL
node.jsでローカルIPアドレスの取得
node.js local IP アドレスを取得したい


最新の画像もっと見る

コメントを投稿