こんなことを言われた時に、対処した方法をメモ。
どう立ち上げたか
- (大好きな) Node-RED で、UDP ノードってのがあったのを記憶していたのでそれを利用。
- とりあえず、Docker-compose でしょ。
- で、立ち上げた。
一瞬でもハマったポイント
- AWS EC2 で立ち上げたので、セキュリティグループで、UDP を指定する。
- Docker のポート指定で、
/udp
を指定する。← これ知らなかった。- 記事はいっぱいあるけど、自分の備忘録で。
Node-RED
下記、3つのファイルを用意して、 docker-compose up -d --build
。
Dockerfile
FROM nodered/node-red-docker
COPY ./settings.js /usr/src/node-red/node_modules/node-red/settings.js
EXPOSE 1880
CMD ["node", "/usr/src/node-red/node_modules/node-red/red.js"]
settings.js を適宜編集して使用。
module.exports = {
uiPort: process.env.PORT || 1880,
mqttReconnectTime: 15000,
serialReconnectTime: 15000,
debugMaxLength: 2000,
debugUseColors: true,
flowFile: 'flows.json',
flowFilePretty: true,
credentialSecret: "a-secret-key",
httpAdminRoot: '/admin',
adminAuth: {
type: "credentials",
users: [{
username: "root",
password: "$2a$08$YCJb/v9xfKevOq0KPIkzLeuQHHyyjIh.iDjuAoWIpiUT9hWS9yhLS",
permissions: "*"
}]
},
httpNodeCors: {
origin: "*",
methods: "GET,PUT,POST,DELETE"
},
logging: {
console: {
level: "info",
metrics: false,
audit: false
}
},
editorTheme: {
projects: {
enabled: false
}
},
}
docker-compose
version: '3'
services:
nodered:
build: .
ports:
- "1880:1880"
- "1881:1881/udp"
volumes:
- nodered-data:/data
networks:
- nodered-net
volumes:
nodered-data:
networks:
nodered-net:
Node-RED のフロー
[
{
"id": "a516cbe4.dd80a8",
"type": "udp in",
"z": "611156f9.47b338",
"name": "",
"iface": "",
"port": "1881",
"ipv": "udp4",
"multicast": "false",
"group": "",
"datatype": "buffer",
"x": 140,
"y": 60,
"wires": [
[
"172c9d51.c36283"
]
]
},
{
"id": "172c9d51.c36283",
"type": "debug",
"z": "611156f9.47b338",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 350,
"y": 60,
"wires": []
}
]