|
本帖最后由 353529281 于 2022-3-24 10:39 编辑
Arduino部分代码
Html部分代码(可直接新建文本另存为index.html;复制下面代码保存,双击打开即可。)
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>ESP8266+MQTT+DHT11+WEB</title>
- <style type="text/css">
- div {
- width: 33%;
- height: 300px;
- float: left;
- border: red solid 1px;
- }
- </style>
- <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js" ></script>
- <script src="https://unpkg.com/mqtt/dist/mqtt.min.js" ></script>
- <script type="text/javascript">
- const options = {
- clean: true,
- connectTimeout: 4000,
- clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8),
- username: "",
- password: ''
- }
-
-
- /******需要修改的订阅主题和MQTT服务器地址****/
- const toppic="wendu";
- const connectUrl = 'ws://broker.emqx.io:8083/mqtt';
- /******需要修改的订阅主题和MQTT服务器地址*/
-
-
- const client = mqtt.connect(connectUrl, options);
- //当重新连接启动触发回调
- client.on('reconnect', () => {
- $("#div1").text("正在重连.....");
- });
- //连接断开后触发的回调
- client.on("close",function () {
- $("#div1").text("客户端已断开连接.....");
- });
- //从broker接收到断开连接的数据包后发出。MQTT 5.0特性
- client.on("disconnect",function (packet) {
- $("#div1").text("从broker接收到断开连接的数据包....."+packet);
- });
- //客户端脱机下线触发回调
- client.on("offline",function () {
- $("#div1").text("客户端脱机下线.....");
- });
- //当客户端无法连接或出现错误时触发回调
- client.on("error",(error) =>{
- $("#div1").text("客户端出现错误....."+error);
- });
- //当客户端发送任何数据包时发出。这包括published()包以及MQTT用于管理订阅和连接的包
- client.on("packetsend",(packet)=>{
- $("#div1").text("客户端已发出数据包....."+packet);
- });
- //当客户端接收到任何数据包时发出。这包括来自订阅主题的信息包以及MQTT用于管理订阅和连接的信息包
- client.on("packetreceive",(packet)=>{
- $("#div1").text("客户端已收到数据包....."+packet);
- });
- //成功连接后触发的回调
- client.on("connect",function (connack) {
- $("#div1").text("成功连接上服务器"+new Date());
- //订阅某主题
- /**
- * client.subscribe(topic/topic array/topic object, [options], [callback])
- * topic:一个string类型的topic或者一个topic数组,也可以是一个对象
- * options
- */
- client.subscribe(toppic,{qos:0});
- //每隔2秒发布一次数据
- //setInterval(publish,2000)
- });
- function publish() {
- //发布数据
- /**
- * client.publish(topic,message,[options], [callback])
- *
- * message: Buffer or String
- * options:{
- * qos:0, //默认0
- * retain:false, //默认false
- * dup:false, //默认false
- * properties:{}
- * }
- * callback:function (err){}
- */
- const message = "h5 message "+Math.random()+new Date();
- client.publish(toppic,message,{qos:0});
- $("#div2").text("客户端发布了数据:"+message);
- }
- //当客户端接收到发布消息时触发回调
- /**
- * topic:收到的数据包的topic
- * message:收到的数据包的负载playload
- * packet:收到的数据包
- */
- client.on('message', (topic, message,packet) => {
- $("#div2").text("客户端收到订阅消息,topic="+topic+";消息数据:"+message+";数据包:"+packet);
- var obj =JSON.parse(message);
- $("#div3").text("温度:"+obj.wendu+"℃;湿度:"+obj.shidu+"%")
- });
- ;
- //页面离开自动断开连接
- $(window).bind("beforeunload",()=>{
- $("#div1").text("客户端窗口关闭,断开连接");
- client.disconnect();
- })
- </script>
- </head>
- <body>
- <div id="div1"></div>
- <div id="div2"></div>
- <div id="div3"></div>
- </body>
- </html>
复制代码
|
|