物联网+mqtt+微信小程序(ESP8266+OneNET+小程序)
本文主要是关于物联网小程序MQTT (ESP8266+ONENET+applet)的远程控制。
.
MQTT通信
MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择。
mqtt有很多的关键词,这个我们只需要了解一部分就可以了
subscribe:订阅某个主题,未来这个主题收到的消息都会发给你publish:发送消息给某个主题,只要是订阅了这个主题的客户端,都会收到这条消息Payload:发送的数据,一般数据格式为string、hex(16进制字符串)、json,这个由前后端商定QoS: 分为三个等级,0:最多交付一次, 1:至少交付一次, 2:只交付一次 其中,使用 QoS 0 可能丢失消息,使用 QoS 1 可以保证收到消息,但消息可能重复,使用 QoS 2 可以保证消息既不丢失也不重复。QoS 等级从低到高,不仅意味着消息可靠性的提升,也意味着传输复杂程度的提升。Retain:遗嘱消息,客户端订阅某个主题后,会将这个主题之前最近一次的消息发送过来。 适用场景:比如某个温度传感器,设置的每隔1个小时发送一次温度数据,刚好某个app要展示这个温度传感器数据,打开app的时候,刚好错过温度传感器上次一发送数据,正常情况下需要再等待1个小时,但是如果设置消息为Retain,app打开之后,依旧可以收到温度传感器上一次发送的数据在管理MQTT连接方面我采用的是MQTTX,这里注意我们设置的属性名和代码中指定的符合就行了
小程序开发
JS 脚本逻辑文件,通常是用来处理这个页面和用户的交互,比如数据的定义,功能函数的实现等JSON配置文件,在小程序中json扮演的静态配置的角色,最经常用的文件是app.json,用来对全局配置wxml文件用来描述当前这个页面的结构,比如第一个组件是按钮,第二个组件是文本框等wxss文件用来描述页面的样式,比如位置大小排版等配置MQTT服务
需要准备一些内容:
- 在公网IP上搭建MQTT服务器,并且这个IP还配置了域名,且这个域名进行过ICP备案能够连接MQTT服务器的设备
OneNET API介绍OneNET是中国移动旗下的物联网平台,它提供了强大的数据存储和管理能力,支持各类物联网设备的接入。通过OneNET,设备可以实现数据的上传与存储,开发者也可以利用提供的API来获取这些数据进行分析或显示,亦或是发送控制指令到远端设备。
OneNET的API基于RESTful架构,支持标准的HTTP/HTTPS协议,使得各种平台和设备都能方便地集成和使用。通过API,开发者可以实现如下功能:
小程序是通过js开发的,因此可以使用MQTT.js作为MQTT客户端库
点开这个连接之后会看到一大串类似于乱码的内容。但这实际上不是乱码,其实是一个被压缩过的一个js文件。
我们需要复制这整个文件,到代码中的utils下面新建一个mqtt.js文件,这样,我们的文件就有mqtt这样的一个库了。
我们直接调用这个mqtt文件:const { connect } = require("../../utils/mqtt");
在data里面存在页面数据中代码语言:js复制Page({
data: {
client: null
},
})
在onShow生命周期中进行连接代码语言:js复制onShow(){
const that = this
that.setData({
client: connect('wxs://broker.emqx.io:8084/mqtt')
})
}
注意:这里的wxs就是wsswss实际上就是拥有SSL加密通信的websocket协议//broker.emqx.io:8084
这里要指定域名和端口,这里直接用的OneNET云平台,都是硬件设置的在EMQ的官网中,我们WebSocketSecure端口就是8084端口,这里和硬件指定的端口是不一样的,涉及到一些加密的内容没怎么详细研究,只知道这么用在这里我直接上完整代码了代码语言:js复制onShow() {
var that = this;
wx.showToast({
title: "连接服务器....",
icon: "loading",
duration: 10000,
mask: true,
});
let second = 10;
var toastTimer = setInterval(() => {
second--;
if (second) {
wx.showToast({
title: `连接服务器...${second}`,
icon: "loading",
duration: 1000,
mask: true,
});
} else {
clearInterval(toastTimer);
wx.showToast({
title: "连接失败",
icon: "error",
mask: true,
});
}
}, 1000);
that.setData({
client: connect(mqttUrl)
})
that.data.client.on("connect", function () {
console.log("成功连接mqtt服务器!");
clearInterval(toastTimer);
wx.showToast({
title: "连接成功",
icon: "success",
mask: true,
});
// 一秒后订阅主题
setTimeout(() => {
that.data.client.subscribe(mpSubTopic, function (err) {
if (!err) {
console.log("成功订阅设备上行数据Topic!");
wx.showToast({
title: "订阅成功",
icon: "success",
mask: true,
});
}
});
}, 1000);
});
that.data.client.on("message", function (topic, message) {
console.log(topic);
// message是16进制的Buffer字节流
let dataFromDev = {};
// 尝试进行JSON解析
try {
dataFromDev = JSON.parse(message);
console.log(dataFromDev);
that.setData({
//这里要写一些需要解析json的数据,就是硬件和云平台传过来的那些东西
Hum: dataFromDev.Hum
})
} catch (error) {
// 解析失败错误捕获并打印(错误捕获之后不会影响程序继续运行)
console.group(`[${formatTime(new Date)}][消息解析失败]`)
console.log('[错误消息]', message.toString());
console.log('上报数据JSON格式不正确', error);
console.groupEnd()
}
})
}
在这里,直接提取的路径和端口之类的内容,还是为了方便维护吧
代码语言:js复制const { connect } = require("../../utils/mqtt");
const mqttHost = "broker.emqx.io"; //mqtt 服务器域名/IP
const mqttPort = 8084; //mqtt 服务器域名/IP
const hefengVIP = false;
const deviceSubTopic = "/myhome/sub"; // 设备订阅topic(小程序发布命令topic)
const devicePubTopic = "/myhome/pub"; // 设备发布topic(小程序订阅数据topic)
const mpSubTopic = devicePubTopic;
const mpPubTopic = deviceSubTopic;
const mqttUrl = `wxs://${mqttHost}:${mqttPort}/mqtt`;
这些都完成了之后呢,只需要继续做完功能就可以了
作为一个物联网小白,目前对这些都很了解。如有不正确的内容,请指正,还请轻喷,吼吼...
物联网APP开发和物联网小程序开发分开应用前景如何?
随着人们生活节奏的加快,智能物联网已经成为我们生活中不可或缺的一部分,移动物联网得到了广泛的应用。现在很多手机APP都可以完成所有流程,所以物联网APP和物联网小程序的开发是很多机构开发定制的机会。物联网APP和物联网小程序的发展才刚刚开始,那么它们的未来趋势是什么?
接下来讲解物联网APP开发与物联网小程序开发分别应用的前景怎么样:
物联网APP开发前景:
1、物联网APP开发系统
物联网APP软件开发的APP用户层,将数据返回给APP并将数据可视化的呈现在APP上,物联网系统层面开发是一个慢工出细活的过程,需要设计和产品的参与。
2、物联网APP开发分析
物联网APP开发过程还需要一个分析层,用来处理分析物联网设备产生的大量数据。
3、物联网APP开发后端
物联网APP后端开发后端数据层需要有一个智能化软件系统,来管理物联网设备(包括固件升级等)、网络、处理海量数据,并返回给用户想要的物联网app数据。
物联网小程序开发前景:
物联网小程序开发很大的优势,因为现在是移动互联网时代,我们出门不用带什么,只带一部手机就可以完成所有事情,那么很重要的事情就是移动手机的内存问题,而物联网小程序能够很好的解决移动手机内存不足的问题,同时他还有很多的优点。
1. 能够拉近商家和客户联系
之前商家和用户之间的交流是靠线下门对门交流,通过物联网小程序平台,可以选择在线进行交流,从而拉近商家和客户联系,用户在选择商品时,如果遇到一些不了解的问题,可以选择在线咨询客服,这样有利于增加用户的了解
2.物联网小程序的发展有很多潜在客户。
物联网APP的发展前景如何?
随着科技的不断进步,物联网逐渐成为人们日常生活中不可或缺的一部分。作为物联网技术的重要组成部分,物联网APP的开发也蓬勃发展。那么,物联网APP的发展前景如何?
首先,从市场需求来看,物联网APP开发具有巨大的潜力。随着物联网技术的普及,越来越多的设备将被连接到互联网上,从而形成一个庞大的物联网生态系统。在这个生态系统中,APP作为用户与设备之间的桥梁,将发挥着至关重要的作用。无论是智能家居、智能穿戴设备、智能工业等领域,都需要依赖于物联网APP来实现设备的远程控制、数据监测等功能。因此,物联网APP开发市场的需求将呈现持续增长的趋势。
其次,从技术发展趋势来看,物联网APP开发也有着广阔的发展前景。随着物联网技术的不断创新和完善,物联网APP的功能和性能也将不断提升。例如,通过引入人工智能、大数据等先进技术,物联网APP可以实现更加智能化的数据处理、分析和预测,从而为用户提供更加便捷、高效的服务。此外,随着5G、6G等新一代通信技术的普及,物联网APP的传输速度和稳定性也将得到大幅提升,为用户带来更加流畅的使用体验。
再次,从政策支持来看,物联网APP开发也受到了各级政府的重视和支持。为了推动物联网产业的发展,政府出台了一系列扶持政策,包括提供资金支持、降低税收等。这些政策的实施为物联网APP开发企业创造了良好的发展环境,进一步促进了物联网APP开发行业的繁荣。
然而,物联网APP开发也面临着一些挑战。首先,由于物联网设备的多样性和复杂性,开发难度相对较高。开发者需要针对不同的设备、平台和系统进行适配和优化,以确保APP的稳定性和兼容性。其次,物联网APP的安全性问题也不容忽视。由于物联网设备涉及到大量的个人隐私和企业机密信息,如何保障数据的安全性成为了一个亟待解决的问题。因此,开发者需要加强对APP的安全防护和隐私保护,确保用户数据的安全可靠。
为了应对这些挑战,物联网APP开发企业需要不断提高自己的技术实力和创新能力。一方面,企业可以加大技术研发的投入,积极引入新技术、新理念,完善APP的性能和功能。另一方面,企业需要加强对安全问题的关注和研究,确保APP的安全性得到充分保障。同时,企业也可以与产业链上下游的企业合作,共同推动物联网产业的健康发展。
上面是由红匣子编辑,如需要了解更详细,请搜【红_匣_子】选官网进入,有至集中全方位的资料。另外途径也可直找作者:1662 0511 776 (同微)