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


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

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读5 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车5 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄5 天前
JavaScript 隐式全局变量解析
javascript