diff --git a/packages/node_modules/@node-red/nodes/core/io/10-mqtt.html b/packages/node_modules/@node-red/nodes/core/io/10-mqtt.html index afe710472..586d02686 100644 --- a/packages/node_modules/@node-red/nodes/core/io/10-mqtt.html +++ b/packages/node_modules/@node-red/nodes/core/io/10-mqtt.html @@ -28,6 +28,15 @@ +
+ + +
@@ -61,6 +70,7 @@ name: {value:""}, topic: {value:"",required:true,validate: RED.validators.regex(/^(#$|(\+|[^+#]*)(\/(\+|[^+#]*))*(\/(\+|#|[^+#]*))?$)/)}, qos: {value: "2"}, + datatype: {value:"auto",required:true}, broker: {type:"mqtt-broker", required:true} }, color:"#d8bfd8", @@ -77,6 +87,9 @@ if (this.qos === undefined) { $("#node-input-qos").val("2"); } + if (this.datatype === undefined) { + $("#node-input-datatype").val("auto"); + } } }); diff --git a/packages/node_modules/@node-red/nodes/core/io/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/io/10-mqtt.js index 233bef1b6..ff152c7b8 100644 --- a/packages/node_modules/@node-red/nodes/core/io/10-mqtt.js +++ b/packages/node_modules/@node-red/nodes/core/io/10-mqtt.js @@ -392,13 +392,22 @@ module.exports = function(RED) { if (!/^(#$|(\+|[^+#]*)(\/(\+|[^+#]*))*(\/(\+|#|[^+#]*))?$)/.test(this.topic)) { return this.warn(RED._("mqtt.errors.invalid-topic")); } + this.datatype = n.datatype || "utf8"; var node = this; if (this.brokerConn) { this.status({fill:"red",shape:"ring",text:"node-red:common.status.disconnected"}); if (this.topic) { node.brokerConn.register(this); this.brokerConn.subscribe(this.topic,this.qos,function(topic,payload,packet) { - if (isUtf8(payload)) { payload = payload.toString(); } + if (node.datatype =="buffer") { + // payload = payload; + } else if (node.datatype =="base64") { + payload = payload.toString('base64'); + } else if (node.datatype =="utf8") { + payload = payload.toString('utf8'); + } else { + if (isUtf8(payload)) { payload = payload.toString(); } + } var msg = {topic:topic,payload:payload, qos: packet.qos, retain: packet.retain}; if ((node.brokerConn.broker === "localhost")||(node.brokerConn.broker === "127.0.0.1")) { msg._topic = topic; diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index da2c59256..f55179204 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -324,6 +324,7 @@ "label": { "broker": "Server", "example": "e.g. localhost", + "output": "Output", "qos": "QoS", "retain": "Retain", "clientid": "Client ID", @@ -358,6 +359,12 @@ "connect-failed": "Connection failed to broker: __broker__" }, "retain": "Retain", + "output": { + "buffer": "a Buffer", + "string": "a String", + "base64": "a Base64 encoded string", + "auto": "auto-detect" + }, "true": "true", "false": "false", "tip": "Tip: Leave topic, qos or retain blank if you want to set them via msg properties.", diff --git a/packages/node_modules/@node-red/nodes/locales/ja/messages.json b/packages/node_modules/@node-red/nodes/locales/ja/messages.json index 624c59c0e..e93fb8a66 100644 --- a/packages/node_modules/@node-red/nodes/locales/ja/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/ja/messages.json @@ -323,6 +323,7 @@ "label": { "broker": "サーバ", "example": "例) localhost", + "output": "出力", "qos": "QoS", "retain": "保持", "clientid": "クライアント", @@ -357,6 +358,11 @@ "connect-failed": "ブローカへの接続に失敗しました: __broker__" }, "retain": "保持", + "output": { + "buffer": "バイナリバッファ", + "string": "文字列", + "base64": "Base64文字列" + }, "true": "する", "false": "しない", "tip": "注釈: トピックやQoSをメッセージのプロパティを用いて設定する場合は、無記入にしてください。", diff --git a/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json b/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json index d58d2a413..d2ca5674f 100644 --- a/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/zh-CN/messages.json @@ -313,6 +313,7 @@ "label": { "broker": "服务端", "example": "e.g. localhost", + "output": "输出", "qos": "QoS", "clientid": "客户端ID", "port": "端口", @@ -341,6 +342,11 @@ "connect-failed": "与服务端 __broker__ 的连接失败" }, "retain": "保留", + "output": { + "buffer": "Buffer", + "string": "字符串", + "base64": "Base64编码字符串" + }, "true": "是", "false": "否", "tip": "提示: 若希望通过msg属性对topic(信息), qos及retain(保留)进行设置, 则将上述项留白",