mqtt 传递和推送 温湿度计消息 js
mqtt 传递和推送 温湿度计消息
做了一个mqtt的小网站
包括设备管理,订阅管理,连接认证+订阅授权
这里我新增了一个设备
订阅组温湿度里面有两个订阅
设备详情授权给设备使用
设备连接
和之前的wifi连接一样 温湿度也和之前的使用一样
require('utils/wifi.js').connent(WIFI_NAME, WIFI_OPTIONS, function () {console.log('start')initMqtt();
})
wifi连接上后 这里我用的1883
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) {
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 再推送 一个简单的交互
当然 平台上推送消息具有局限性,可以多个设备公用订阅组来数据交流