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


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

相关推荐
程序员黑豆6 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊6 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃7 小时前
前端转全栈学习路线
前端·学习
浮生望7 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
wuyk5557 小时前
第2章:六步换相原理全解+STM32工程实战
c语言·开发语言·stm32·单片机·嵌入式硬件
hey_sml7 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
陆枫Larry7 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
萧瑟余晖9 小时前
Java深入解析篇十七之SpringCloud
java·开发语言
上海安当技术9 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
ttod_qzstudio9 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python