参考此库官方说明:https://github.com/mqttjs/MQTT.js#browserify
npm install -g webpack // install webpack
cd node_modules/mqtt
npm install . // install dev dependencies
webpack mqtt.js ./my_mqtt.js --output-library-target commonjs2
第二步:
将生成的my_mqtt.js文件里所有的:
(function() { return this}())
替换为:
window
第三步:
在my_mqtt.js文件顶部加上代码:
var setImmediate = setTimeout
var clearImmediate = clearTimeout
var socketOpen = false
var socketMsgQueue = []
function sendSocketMessage(msg) {
console.log('send msg:', typeof msg)
console.log(msg)
if (socketOpen) {
wx.sendSocketMessage({
data: msg
})
} else {
socketMsgQueue.push(msg)
}
}
var document = {
URL: ''
}
var window = {
setTimeout: setTimeout,
clearTimeout: clearTimeout,
WebSocket: function (url) {
console.log('call window WebSocket', arguments)
var ws = {
send: sendSocketMessage,
close: wx.closeSocket,
onopen: null,
onmessage: null,
onclose: null,
onerror: null
}
wx.connectSocket({ url: url })
wx.onSocketOpen(function (res) {
console.log('收到onopen事件:', arguments)
socketOpen = true
for (var i = 0i <socketMsgQueue.lengthi++) {
sendSocketMessage(socketMsgQueue[i])
}
socketMsgQueue = []
ws.onopen &&ws.onopen.apply(ws, arguments)
})
wx.onSocketMessage(function (res) {
console.log('收到onmessage事件:', arguments)
console.log(res.data)
ws.onmessage &&ws.onmessage.apply(ws, arguments)
})
wx.onSocketClose(function () {
console.log('收到onclose事件:', arguments)
ws.onclose &&ws.onclose.apply(ws, arguments)
})
wx.onSocketError(function () {
console.log('收到onerror事件:', arguments)
ws.onerror &&ws.onerror.apply(ws, arguments)
})
return ws
}
}
这里我们使用了一个库: PubSubClient
找到多协议接入入口
添加旧版MQTT产品
添加产品
添加产品成功
然后添加设备
接下来我们来找到旧版MQTT关键的信息:
2.设备ID(在设备界面)
3.设备鉴权信息
思路: 1.连接网络 2.登录ONENET 3.发布主题信息
可以上传数据,也能接收到OneNet下发的命令
后来又在接收命令的callback里写了一个点灯, 下发命令1就开灯, 0就关灯
需要用到的库:
引入"PubSubClient.h"后
打开"PubSubClient.h"
修改如下内容:
关于MQTT协议, 请参考文章: https://zhuanlan.zhihu.com/p/89057819
请参考我之前整理的文档:
【腾讯文档】MQTT连接阿里云示例(1) https://docs.qq.com/sheet/DWXBaUE9nWmZVaGJX
如果使用了AliyunMqttArduino, 就不需要关系协议的报文和加密方式了
首先创建一个mqtt客户端
返回值: 连接结果
返回: 状态码
mqttClient.publish(主题, 内容)
首先, 创建产品:
其次, 为产品添加设备
第三, 查看设备关键信息:
创建完后,我们发现系统已经自动创建了一些功能定义
找到产品的功能页面, 点击"编辑草稿"
最后发布新的物模型
非常简单的修改, 只修改了要发送json里的param
注意同步修改param和json的内存占用大小