mqtt 传递和推送 温湿度计消息 js

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 再推送 一个简单的交互


当然 平台上推送消息具有局限性,可以多个设备公用订阅组来数据交流

相关推荐
你听得到1121 小时前
Web前端们!我用三年亲身经历,说说从 uniapp 到 Flutter怎么转型的,这条路我爬过,坑我踩过
前端·flutter·uni-app
20岁30年经验的码农21 小时前
Java Sentinel流量控制与熔断降级框架详解
java·开发语言·sentinel
葡萄城技术团队21 小时前
在数据录入、指标补录、表单填报场景中,SpreadJS 具备哪些优势和价值
前端
孟陬21 小时前
AI 每日心得——AI 是效率杠杆,而非培养对象
前端
3秒一个大21 小时前
JavaScript 中的 Symbol:特性与实战应用
javascript
漆黑骑士21 小时前
Web Component
前端
San3021 小时前
深入理解 JavaScript 事件机制:从事件流到事件委托
前端·javascript·ecmascript 6
行走在顶尖21 小时前
基础随记
前端
Sakura_洁1 天前
解决 el-table 在 fixed 状态下获取 dom 不准确的问题
前端
best6661 天前
Vue3什么时候不会触发onMounted生命周期钩子?
前端·vue.js