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(保留)进行设置, 则将上述项留白",