diff --git a/nodes/core/io/10-mqtt.html b/nodes/core/io/10-mqtt.html
index 612c3b159..586d02686 100644
--- a/nodes/core/io/10-mqtt.html
+++ b/nodes/core/io/10-mqtt.html
@@ -31,8 +31,10 @@
@@ -68,7 +70,7 @@
name: {value:""},
topic: {value:"",required:true,validate: RED.validators.regex(/^(#$|(\+|[^+#]*)(\/(\+|[^+#]*))*(\/(\+|#|[^+#]*))?$)/)},
qos: {value: "2"},
- datatype: {value:"utf8",required:true},
+ datatype: {value:"auto",required:true},
broker: {type:"mqtt-broker", required:true}
},
color:"#d8bfd8",
@@ -86,7 +88,7 @@
$("#node-input-qos").val("2");
}
if (this.datatype === undefined) {
- $("#node-input-datatype").val("utf8");
+ $("#node-input-datatype").val("auto");
}
}
});
diff --git a/nodes/core/io/10-mqtt.js b/nodes/core/io/10-mqtt.js
index e9d87ad43..ff152c7b8 100644
--- a/nodes/core/io/10-mqtt.js
+++ b/nodes/core/io/10-mqtt.js
@@ -399,7 +399,15 @@ module.exports = function(RED) {
if (this.topic) {
node.brokerConn.register(this);
this.brokerConn.subscribe(this.topic,this.qos,function(topic,payload,packet) {
- if (this.datatype == "utf8" && 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/nodes/core/locales/en-US/messages.json b/nodes/core/locales/en-US/messages.json
index d4c995ac1..74885cfcb 100644
--- a/nodes/core/locales/en-US/messages.json
+++ b/nodes/core/locales/en-US/messages.json
@@ -361,7 +361,9 @@
"retain": "Retain",
"output": {
"buffer": "a Buffer",
- "string": "a String"
+ "string": "a String",
+ "base64": "a Base64 encoded string",
+ "auto": "auto-detect"
},
"true": "true",
"false": "false",
diff --git a/nodes/core/locales/ja/messages.json b/nodes/core/locales/ja/messages.json
index 3b42454a3..546394682 100644
--- a/nodes/core/locales/ja/messages.json
+++ b/nodes/core/locales/ja/messages.json
@@ -361,7 +361,8 @@
"retain": "保持",
"output": {
"buffer": "バイナリバッファ",
- "string": "文字列"
+ "string": "文字列",
+ "base64": "Base64文字列"
},
"true": "する",
"false": "しない",
diff --git a/nodes/core/locales/zh-CN/messages.json b/nodes/core/locales/zh-CN/messages.json
index aa4bc2113..16afd6707 100644
--- a/nodes/core/locales/zh-CN/messages.json
+++ b/nodes/core/locales/zh-CN/messages.json
@@ -345,7 +345,8 @@
"retain": "保留",
"output": {
"buffer": "Buffer",
- "string": "字符串"
+ "string": "字符串",
+ "base64": "Base64编码字符串"
},
"true": "是",
"false": "否",