mqtt 传递和推送 温湿度计消息
做了一个mqtt的小网站
包括设备管理,订阅管理,连接认证+订阅授权
这里我新增了一个设备
订阅组温湿度里面有两个订阅
设备详情授权给设备使用
设备连接
和之前的wifi连接一样 温湿度也和之前的使用一样
js
require('utils/wifi.js').connent(WIFI_NAME, WIFI_OPTIONS, function () {
console.log('start')
initMqtt();
})
wifi连接上后 这里我用的1883
js
function initMqtt() {
try {
var mqtt = require("modules/MQTT.js").create("mqtt address", {
client_id: "xxx",
port: 1883,
username: 'xxx',
password: 'xxx',
});
mqtt.on('connected', function () {
mqtt.subscribe("dh11/send");
var dht = require("modules/DHT11.js").connect(NodeMCU.D1);
mqtt.publish("dh11/data", "设备连接成功");
setInterval(function () {
dht.read(function (a) {
var temp = a.temp.toString();
var rh = a.rh.toString();
var data = "温度为" + temp + "湿度为" + rh;
mqtt.publish("dh11/data", data);
});
}, 1000)
// setInterval(function () {
// mqtt.publish("joystick/direction", "我是傻逼");
// }, 1000);
});
mqtt.on('publish', function (pub) {
if (pub.topic == 'dh11/send') {
console.log("message: " + pub.message);
}
});
mqtt.connect();
} catch (error) {
console.log(error);
}
}
连接成功后设备详情显示连接信息
显示订阅使用状态
查看数据
推送消息给设备
更改数据获取方式
设备一连接不直接推送
通过告知设备消息让设备返回
修改 mqtt.on('publish', function (pub) {
js
var dht = require("modules/DHT11.js").connect(NodeMCU.D1);
mqtt.on('publish', function (pub) {
if (pub.topic == 'dh11/send') {
console.log("message: " + pub.message);
var param = JSON.parse(pub.message);
if (param.type == 1) {
dht.read(function (a) {
var temp = a.temp.toString();
var rh = a.rh.toString();
var data = "温度为" + temp + " 湿度为" + rh;
mqtt.publish("dh11/data", data);
});
}
}
});
当收到type:1 再推送 一个简单的交互
当然 平台上推送消息具有局限性,可以多个设备公用订阅组来数据交流