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


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

相关推荐
To_OC16 分钟前
从一个颜色选择器说起:我终于整明白了 React+TS 里的 model 与 api 分层
前端·react.js·typescript
赵大仁17 分钟前
浏览器端 RAG:Transformers.js + WebGPU 本地检索入门
前端·ai·react·webgpu·rag
zyplayer-doc20 分钟前
同一份制度别复制到多个知识库:用zyplayer-doc引用文档解决重复维护
javascript·人工智能·智能手机·开源·ocr
鹿角片ljp28 分钟前
Java面试复盘(二):String不可变、字符串常量池与字符串拼接
开发语言·python
木叶丸33 分钟前
从 Loop 到 Graph:AI 智能体协作系统工程指南
前端·后端·架构
小秋求学记.1 小时前
PHP安全漏洞实战:从环境配置到RCE攻击
开发语言·php
看浪的路人2 小时前
第3讲:代码补全引擎
开发语言·windows·python
小小龙学IT2 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络
吴懿不在 不负信仰2 小时前
从jQuery谈库与框架的设计之优劣
前端·javascript·jquery
灵析表格2 小时前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子