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": "否",