1.无线插座的源码使用方法
2.org.eclipse.paho.client.mqttv3和emqx的关系是什么?
3.EMQX-简介、安装部署、编译基础功能、源码python代码测试
4.使用Qt编译Mqtt记录
无线插座的编译使用方法
简介:使用磁保持继电器的WIFI智能插座。
节电性能优良,源码整体功耗只有0.W左右。编译CMS源码工作室可长期使用不会造成继电器线圈发热。源码还支持MQTT和OTA在线升级固件。编译
本文以WIFI智能插座为主题,源码讲述ESPS、编译ESP+硬件等的源码使用技巧……并完成智能插座的制作!
下文为软件、编译硬件安装步骤,源码超级详细,编译可以一步一步跟着做~
安装步骤导航(7步):
给ESPS刷固件(3)、源码配网设置MQTT参数等(5)、安装MQTT APP并设置参数(4)、焊接、测试、最后的焊接、装壳。
安装步骤
1.先给ESPS刷好固件
1.软件工程导入
1.
安装Visual Studio Code
(vscode),免费软件,请自行百度安装教程。
2.在vscode里面
安装PlatformIO插件
,请自行百度。
3.将工程《磁保持WIFI智能插座》附件中的《VSCODE源代码》。
解压缩以后用VSCODE打开里面的文件夹,就等于打开了这个软件项目。
下载附件解压缩
,可以看到里面有一个文件夹
WIFI_PLUG_ESPS_HF3F 。
文件夹根里面有一个
platformio.ini
如果不清楚,请私信我固件。这里无法上传文件……
4.在vscode 菜单-文件-打开文件夹-到上一步解压缩的
WIFI_PLUG_ESPS_HF3F
文件夹-选择文件夹。
5.这样软件工程就导入完成了。
2.编译并上传固件(烧录固件)
1.把ESPS卡在
ESP开发测试架/烧录器
上,插入到电脑上的USB口,可能需要自己装驱动。
根据USB口不同,
可能还需要修改
一下
platformio.ini文件
里面的数据填报asp源码
COM5
,改成你自己的
COM口。
怎么看COM口?
我的电脑-设备管理器-端口
2.将ESP开发测试架/烧录器
打开电源,在vscode里面打开文件 src/main.cpp,并点击PlatformIO:Upload。
3.因本软件使用了LittleFS文件系统,因此还需要给ESPS安装文件系统。
依次点击如下1、2、3、4按钮:
文件系统安装完成。
3.软件运行:
1.依次点击如下1、2按钮。
2.按一下
ESP开发测试架/烧录器
上的RST复位按钮,重启ESPS。
3.在vscode界面看到这串输出,
就表示软件在正常运行了。
2.给ESPS配网,设置好MQTT参数等
1.设备启动流程
插电启动:
LED快速闪烁3次
以后,闪3次以后才能按钮,否则设备无法正常启动
按住2秒以后放手,进入了WEB配网程序(此时
LED快速闪烁
)。按住6秒以后放手,进入微信扫码配网(此时
LED慢速闪烁
)启动没按钮就进入自动WIFI连网,此时
LED每秒闪2次
。连网成功,就通过NTP初始化时间,还有自动连接MQTT服务器,开始正常运行(此时
LED常亮3分钟后熄灭
)。
本设备只支持2.4G WIFI
,不支持5G WIFI。
WEB配网或微信扫码都可以配置WIFI密码,
但WEB配网可同时设置MQTT等参数
,而微信扫码设置不了MQTT参数。
设备初次启动
设置初始参数:(
建议按照以下顺序
)
插电启动(LED快闪3次)-按钮6秒放手-微信扫码配网-自动重启(LED快闪3次)-按钮2秒放手-WEB配网
-
自动重启(LED快闪3次)-正常使用。
2.微信扫码配网
用手机微信扫描附件里的
配网码
,进入微信配网小程序。
找到上网用的WIFI以后,填写WIFI密码,就可以
通过手机传WIFI ssid和密码
给设备。生鲜超市软件源码
设备配网成功以后会自动重启,进入启动流程。
3.WEB配网
此时设备会生成一个配网用的软件AP热点,参数如下:
IP:..4.1
ssid:qwer
password:asdfghjkl
用手机连上这个WIFI以后,在手机浏览器输入
.emqx.io (有很多免费的MQTT服务器,可以自行百度)
port:
topic:oldfox/esps/hf3f/{ randid} (设备初始化时会自动生成唯一的{ randid},一般不用修改)
OTA固件链接
:.emqx.io
,其他地方都保持默认。填好以后点右上角的
√
保存。
到这里MQTT服务器参数就设置好了。
3.新增一个仪表盘
进入这个界面以后点击左上角进入菜单。
在菜单里面选择Dashboards。
点右上角的+号新建一个仪表盘。
输入你想要的名字(比如
磁保持WIFI插座
),然后点右上角的
√
保存。
4.给仪表盘增加装置
在仪表盘列表,点击刚新增的仪表盘(
磁保持WIFI插座
)。
在插座这个界面点击右上角的
+
号增加一个装置。
装置类型选择
Toggle
(切换开关,在ON/OFF两种状态间切换)。
填写切换开关的参数:
Name:开关
MQTT enable:打开
MQTT connection:选择 broker-cn.emqx.io
Subscribe to topic:
oldfox/esps/hf3f/s4QEJYlo/stat/relay
Qos(Qos for subscribe/Qos for publish):2
Topic for publish:
oldfox/esps/hf3f/s4QEJYlo/relay/in
上面这个加粗黑体字的部分,实际上是:《配网操作说明》 中的topic参数:
oldfox/esps/hf3f/s4QEJYlo
所以只要在配网的时候把
topic参数保存在手机微信或者记事本,需要用的时候直接复制出来就好
ps:
以下所有设置中的
oldfox/esps/hf3f/s4QEJYlo 都应该替换成你自己的topic参数。
全部填好以后,点击界面右上角的
√
保存。
保存好以后界面是这样的,再点击右上角的
+
号增加一个装置。
这次装置类型选择Text(文本)。
填写文本装置相应的参数并点右上角的
√
保存:
Name:当前时间
MQTT enable:打开
connection:broker-cn.emqx.io
Subscribe:
oldfox/esps/hf3f/s4QEJYlo/stat/time
Qos:0
publish:无
QOS是质量、优先级。
取值0-2,0最低,2最高。
这里的当前时间值因为每秒钟都要接收,
不太重要
所以取值为0;上面的开关值比较重要所以Oos取值2。
到这里仪表盘装置已经开始运行了(时间在走)。
但是很奇怪,时间后面有一个单位
℃
,要修改一下:
在
当前时间4个字
上按住不放,文章相似度源码出来的菜单里面选择
Edit
在编辑界面依次点击
Design(设计) - Unit(单位) - Show unit(显示单位) - 关闭显示
,然后点右上角的
√
保存。
好了时间显示终于正常了。
但是显示的地方太窄了,我想拉宽一点,点这里修改界面。
可以更改装置的上下左右位置以及装置大小。
当前时间这个装置的右下角这里
按住不放,往右边拖到边,放手
把当前时间拉到足够的宽度以后,点右上角的
√
保存。
最终效果:
其他的仪表盘装置设置请自行完成,必须的参数列在下面(没错,我就是懒):
一共七项,更多请查看文章最后的截图。
4.焊接
将ESPS焊接到模块上:
在
PCB_插座主体
上焊接,安装元器件。将ESPS模块焊到主体PCB上。焊到这个程度就可以了,公母一体插座(红色圈圈的部分)先不要焊。另外在蓝色箭头指示位置,5V(红色)/GND(黑色)分别焊接2根杜邦线公头。
5.测试
在
ESP开发测试架/烧录器
上取电:
5V(红色)/GND(黑色)分别插上2根杜邦线母头;将上一步骤的2根公头插上。
开电测试:
看看MQTT APP上是否能正常显示跳动的时间(说明ESPS模块焊接好,连接WIFI正常,并连上了MQTT服务器);开关是否反应正常(LED会随开关亮灭);用万用表测量继电器的输出是否能被MQTT APP的开关控制,正常通断。
6.最后的焊接
以上测试都通过以后,
说明插座软硬件功能正常。
可以关电把2根杜邦线焊下来,焊接公母一体的插座。
7.装壳
全部焊接好,可以装壳了。
设计图
原理图
org.eclipse.paho.client.mqttv3和emqx的关系是什么?
EMQX,全球领先的MQTT消息服务器,作为开放源代码分布式MQTT代理在全球享有盛誉,其官网提供了详尽的文档与技术支持,帮助开发者深入理解其功能与特性。
在GitHub上,EMQX的java精品项目源码项目地址吸引了众多开发者关注,开源社区的活跃为项目持续贡献与优化提供了强大动力。
而org.eclipse.paho.client.mqttv3是用Java编写的MQTT客户端SDK,专为开发自定义的MQTT客户端应用程序而设计。它与EMQX协同工作,使得开发者能够轻松构建基于MQTT的实时数据传输解决方案。
组织上,org.eclipse.paho.client.mqttv3和EMQX之间不存在直接隶属关系,但它们在MQTT生态系统中紧密合作。开发者可以使用paho客户端SDK连接到EMQX服务器,实现消息的发送与接收。通过这种方式,paho SDK成为了EMQX生态系统的一部分,增强了其在物联网、实时通信等场景中的应用能力。
总的来说,EMQX提供了一个强大的MQTT消息传递平台,而org.eclipse.paho.client.mqttv3则作为一个灵活的客户端工具,与EMQX结合,为开发者提供了实现高效实时通信的完整解决方案。这种协同工作模式使得它们在各自领域内都发挥着重要作用,共同推动了MQTT技术的发展。
EMQX-简介、安装部署、基础功能、python代码测试
MQTT属于是物联网的通信协议,在MQTT协议中有两大角色:客户端(发布者/订阅者),服务端(Mqtt broker);针对客户端和服务端需要有遵循该协议的的具体实现,EMQ/EMQX就是MQTT Broker的一种实现。
EMQX是基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQ X 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联网设备的数据采集,和对设备的操作和控制。
到目前为止,比较流行的 MQTT Broker 有几个:使用 C 语言实现的 MQTT Broker,使用 Erlang 语言开发的 MQTT Broker,使用 Node.JS 开发的 MQTT Broker,同样使用 Erlang 开发的 MQTT Broker。从支持 MQTT5.0、稳定性、扩展性、集群能力等方面考虑,EMQX 的表现应该是最好的。
与别的MQTT服务器相比EMQ X 主要有以下的特点:经过+版本的迭代,EMQ X 目前为开源社区中最流行的 MQTT 消息中间件,在各种客户严格的生产环境上经受了严苛的考验;支持丰富的物联网协议,包括 MQTT、MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket等;优化的架构设计,支持超大规模的设备连接。企业版单机能支持百万的 MQTT 连接;集群能支持千万级别的 MQTT 连接;易于安装和使用;灵活的扩展性,支持企业的一些定制场景;中国本地的技术支持服务,通过微信、QQ等线上渠道快速响应客户需求;基于 Apache 2.0 协议许可,完全开源。EMQ X 的代码都放在 Github 中,用户可以查看所有源代码;EMQ X 3.0 支持 MQTT 5.0 协议,是开源社区中第一个支持 5.0协议规范的消息服务器,并且完全兼容 MQTT V3.1 和 V3.1.1 协议。除了 MQTT 协议之外,EMQ X 还支持别的一些物联网协议;单机支持百万连接,集群支持千万级连接;毫秒级消息转发。EMQ X 中应用了多种技术以实现上述功能;利用 Erlang/OTP 平台的软实时、高并发和容错(电信领域久经考验的语言);全异步架构;连接、会话、路由、集群的分层设计;消息平面和控制平面的分离等;扩展模块和插件,EMQ X 提供了灵活的扩展机制,可以实现私有协议、认证鉴权、数据持久化、桥接发和管理控制台等的扩展;桥接:EMQ X 可以跟别的消息系统进行对接,比如 EMQ X Enterprise 版本中可以支持将消息转发到 Kafka、RabbitMQ 或者别的 EMQ 节点等;共享订阅:共享订阅支持通过负载均衡的方式在多个订阅者之间来分发 MQTT 消息。比如针对物联网等 数据采集场景,会有比较多的设备在发送数据,通过共享订阅的方式可以在订阅端设置多个订阅者来实现这几个订阅者之间的工作负载均衡。
典型的物联网平台包括设备硬件、数据采集、数据存储、分析、Web / 移动应用等。EMQX 位于数据采集这一层,分别与硬件和数据存储、分析进行交互,是物联网平台的核心:前端的硬件通过 MQTT 协议与位于数据采集层的 EMQX 交互,通过 EMQX 将数据采集后,通过 EMQX 提供的数据接口,将数据保存到后台的持久化平台中(各种关系型数据库和 NOSQL 数据库),或者流式数据处理框架等,上层应用通过这些数据分析后得到的结果呈现给最终用户。
EMQX 公司主要提供三个产品,可在官网首页产品导航查看每一种产品;主要体现在支持的连接数量、产品功能和商业服务等方面的区别。
完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范支持;QoS0, QoS1, QoS2 消息支持;持久会话与离线消息支持;Retained 消息支持;Last Will 消息支持;TCP/SSL 连接支持;MQTT/WebSocket/SSL 支持;HTTP 消息发布接口支持;$SYS/# 系统主题支持;客户端在线状态查询与订阅支持;客户端 ID 或 IP 地址认证支持;用户名密码认证支持;LDAP 认证;Redis、MySQL、PostgreSQL、MongoDB、HTTP 认证集成;浏览器 Cookie 认证;基于客户端 ID、IP 地址、用户名的访问控制 (ACL);多服务器节点集群 (Cluster);支持 manual、mcast、dns、etcd、k8s 等多种集群发现方式;网络分区自动愈合;消息速率限制;连接速率限制;按分区配置节点;多服务器节点桥接 (Bridge);MQTT Broker 桥接支持;Stomp 协议支持;MQTT-SN 协议支持;CoAP 协议支持;Stomp/SockJS 支持;延时 Publish ($delay/topic);Flapping 检测;黑名单支持;共享订阅 ($share/:group/topic);TLS/PSK 支持;规则引擎;空动作 (调试);消息重新发布;桥接数据到 MQTT Broker;检查 (调试);发送数据到 Web 服务。
EMQ X 目前支持的操作系统:Centos6、Centos7、OpenSUSE tumbleweed、Debian 8、Debian 9、Debian 、Ubuntu .、Ubuntu .、Ubuntu .、macOS .、macOS .、macOS .、Windows Server 。产品部署建议 Linux 服务器,不推荐 Windows 服务器。安装的方式有很多种,可供自由选择:Shell脚本安装、包管理器安装、二进制包安装、ZIP压缩包安装、Homebrew安装、Docker运行安装、Helm安装、源码编译安装。
Dashboard界面查看基本信息。
身份认证是大多数应用的重要组成部分,MQTT 协议支持用户名密码认证,启用身份认证能有效阻止非法客户端的连接。EMQ X 中的认证指的是当一个客户端连接到 EMQ X 的时候,通过服务器端的配置来控制客户端连接服务器的权限。EMQ X 的认证支持包括两个层面:MQTT 协议本身在 CONNECT 报文中指定用户名和密码,EMQ X 以插件形式支持基于 Username、ClientID、HTTP、JWT、LDAP 及各类数据库如 MongoDB、MySQL、PostgreSQL、Redis 等多种形式的认证;在传输层上,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书。也支持基于 PSK 的 TLS/DTLS 认证。
EMQ X 支持使用内置数据源(文件、内置数据库)、JWT、外部主流数据库和自定义 HTTP API 作为身份认证数据源。连接数据源、进行认证逻辑通过插件实现的,每个插件对应一种认证方式,使用前需要启用相应的插件。客户端连接时插件通过检查其 username/clientid 和 password 是否与指定数据源的信息一致来实现对客户端的身份认证。(v5.0以上默认集成)EMQ X 支持的认证方式:内置数据源、外部数据库、其他。认证结果:认证成功、认证失败、忽略认证(ignore)。
EMQ X 默认配置中启用了匿名认证,任何客户端都能接入 EMQ X。没有启用认证插件或认证插件没有显式允许/拒绝(ignore)连接请求时,EMQ X 将根据匿名认证启用情况决定是否允许客户端连接。
可以订阅多个主题。
安装 paho-mqtt:导入 Paho MQTT 客户端。
通过TCP连接:设置 broker、port、topic、client_id,连接 MQTT Broker。
通过SSL/TLS连接:设置 broker、port、topic、client_id,连接 MQTT Broker,使用 CA certificate,设置用户名密码。
订阅主题:设置 on_message 回调函数,当收到消息时执行。
取消订阅:通过以下代码取消订阅,此时应指定取消订阅的主题。
发布消息:通过以下代码发布消息,设置消息内容、主题,调用 publish 方法。
接收消息:通过以下代码指定客户端对消息事件进行监听,并在收到消息后执行回调函数,将接收到的消息及其主题打印到控制台。
断开连接:如客户端希望主动断开连接,可以通过如下代码实现。
完整代码:导入 random、time、paho.mqtt.client as mqtt_client,设置 broker、port、topic、client_id,连接 MQTT Broker,设置 on_connect 回调函数,设置 publish 回调函数,运行客户端。
使用Qt编译Mqtt记录
为适应工作需求,我选择使用Qt进行MQTT开发。感谢网络上的分享者,以下内容是对我的开发记录。
我使用的Qt版本为5..,操作平台为Windows 。开发路径设置为D:\qt_install\5..\msvc_,与mingw环境相似。
在GitHub上下载对应Qt版本的MQTT源代码。选择与安装Qt版本相匹配的代码。
执行 "git clone 地址 -b 分支" 命令,例如“git clone github.com/qt/qtmqtt.gi... -b 5..”,完成代码下载到本地。
在生成的影子目录中,如build-qtmqtt-Desktop_Qt_5__MSVC_bit-Release,配置已完成。
新建Qt项目并测试MQTT模块。若仅配置了msvc版本的MQTT,项目中亦只能使用msvc编译套件。在项目pro文件中直接添加MQTT模块。
一个简单的客户端示例可用于验证MQTT配置。
我使用的是EMQX作为broker。下载链接如下:
以下为部分技术文档和端口信息,提供参考: