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


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

相关推荐
2603_9651481113 分钟前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
lpfasd12320 分钟前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
xixiaoyunya1 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的1 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务2 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Data analyse4563 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai3 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
打工仔折腾 AI3 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
MATLAB代码顾问3 小时前
Simulink PI 参数扫描与批量仿真完整 MATLAB 代码
开发语言·matlab
Want5954 小时前
Python跳动的爱心②
开发语言·python·数学建模