电表(3)EC600N 4G模块通过mqtt向服务器发送数据

工具

1、ec600
2、stm32f030c8
3、keil5
4、腾讯云服务器(ubutu20.04)

mqtt服务器

sudo apt  install mosquitto mosquitto-clients
sudo systemctl start mosquitto
sudo vim /etc/mosquitto/mosquitto.conf
sudo systemctl status mosquitto

在这里插入图片描述
listener 1883 # 监听端口为 1883,可按需修改
protocol mqtt # 使用 MQTT 协议

firewall-cmd --add-port=1883/tcp --permanent

服务器配置

1、EMQX 开源版 4.4.1 for Ubuntu 18.04

1、查看系统版本号

 lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04

2、下载服务器

https://www.emqx.io/downloads?os=Ubuntu

wget https://www.emqx.com/en/downloads/broker/4.1.5/emqx-ubuntu18.04-v4.1.5_amd64.deb

安装EMQX

sudo apt install ./emqx-ubuntu18.04-v4.1.5_amd64.deb

运行 EMQX

sudo systemctl start emqx

3、安装测试mosquitto

1、 引入mosquitto仓库

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update

2、 安装mosquitto

sudo apt-get install mosquitto

3、 查看mosquitto状态

sudo service mosquitto status 

在这里插入图片描述
4、 开启停止服务

sudo service mosquitto start
sudo service mosquitto stop

4、 关闭服务器防火墙

在这里插入图片描述

2、EC600配置

1、4g模块启动

ERR_RET EC600E_PowerOn(void)
{
	delay_ms(50);
	//1. power on
	GPIO_WriteBit(USART_4G_GPIO_PORT, USART_4G_PWRKEY, Bit_SET);	//pull up powerkey low
	//delay >= 500ms
	delay_ms(510);
	GPIO_WriteBit(USART_4G_GPIO_PORT, USART_4G_PWRKEY, Bit_RESET);	//pull down powerkey high
	//delay >= 27ms, release reset
	delay_ms(30);
	GPIO_WriteBit(USART_4G_GPIO_PORT, USART_4G_RESETN, Bit_RESET);	//pull down
	//
	delay_ms(11000);
	return ERR_NONE;
}

2、模块初始化

ERR_RET EC600E_Init(void)
{
	ERR_RET iRet = ERR_NONE;
	char *AckStr = NULL;
	int timeout = 0;
	delay_ms(200);
	USART_4G_SendStr("AT+CGATT?\r\n");
	ClearRxBuffer();
	delay_ms(50);
	USART_4G_SendStr("AT+CPIN?\r\n");
	ClearRxBuffer();
	delay_ms(50);
	
	USART_4G_SendStr("AT+QIACT=1\r\n");
	ClearRxBuffer();
	delay_ms(50);
		
	USART_4G_SendStr("AT+QMTCFG=\"qmtping\",0,30\r\n");
	ClearRxBuffer();
	delay_ms(50);

	USART_4G_SendStr("AT+QMTCFG=\"recv/mode\",0,0,1\r\n");
	ClearRxBuffer();
	delay_ms(50);

	_end:
	ClearRxBuffer();
	return iRet;
}

3、连接服务器

uint8_t EC600_CONNECT_SERVER()
{	  
	uint16_t i=1;
	USART_4G_SendStr("AT+QMTOPEN=0,\"ip\",8083\r\n");
	delay_ms(1000);
	ClearRxBuffer();
}
4、创建连接客户端

```c
uint16_t EC600_mqtt_Connection()
{
uint16_t i=1;
USART_4G_SendStr("AT+QMTCONN=0,\"ec600\",\"test\",\"test\",\r\n");
delay_ms(1000);
ClearRxBuffer();

	return 0;
}

5、订阅消息

uint8_t EC600_mqtt_subscribe()
{
USART_4G_SendStr("AT+QMTSUB=0,1,\"test\",0,\"test1\",0\r\n");
ClearRxBuffer();
delay_ms(1000);
}

6、发送消息

uint8_t EC600_Send_data()
{
	float Dianya = 255.5;
float Dianliu = 10.0;
		USART_4G_SendStr("AT+QMTPUB=0,0,0,0,\"test_pub\"\r\n");
		delay_ms(500);
	char buffer[50];
sprintf(buffer, "{\"method\":\"report\",\"params\":{\"Dianya\":%.2f,\"Dianliu\":%.2f}}\r\n", Dianya, Dianliu);
USART_4G_SendStr(buffer);

		delay_ms(1000);
		ClearRxBuffer();
}

3、4G模块发送,服务器接收测试

1、开启话题监听

mosquitto_sub -h localhost -t "test_pub" -v

2、电表发送数据
main函数中EC600_mqtt_Connection();的连接持续10秒

EC600E_PowerOn();
EC600E_Init();
EC600_CONNECT_SERVER();
EC600_mqtt_Connection();
while (1)
{
 EC600_Send_data();
}

3、测试结果
发送串口显示
在这里插入图片描述
服务器接收到数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404107.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Aspose.Words For JAVA 动态制作多维度表格(涵2024最新无水印包)

全网最全Aspose.Words For JAVA 高级使用教程: CSDNhttps://blog.csdn.net/LiHaoHang6/article/details/133989664?spm1001.2014.3001.5501 运行截图: 所谓多维度表格通常包含多个维度, 每个维度都代表一种数据属性,多维度表格可以用于数据分析,通过不…

ArcgisForJS如何使用ArcGIS Server发布的切片地图服务?

文章目录 0.引言1.准备海量地理数据2.ArcGIS Server发布切片地图服务3.ArcgisForJS使用ArcGIS Server发布的切片地图服务 0.引言 ArcGIS Server是一个由Esri开发的地理信息系统(GIS)服务器软件,它提供了许多功能,包括发布切片地图…

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &…

Servlet使用过程中常见问题总结

💕"Echo"💕 作者:Mylvzi 文章主要内容:Servlet使用过程中常见问题总结 前言:笔者在学习Servlet的过程中遇到了很多问题,这里总结一下 1.乱码问题 如果我们在响应报文中传输中文"你好",那么在浏览器之中显示…

Redis中的AOF重写到底是怎么一回事

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB,一种二进制数据格式,这样就是相当于全量保存数据快照了。AOF则是保存命令,然后恢复的时候重放命令。 AOF随着时间推移,会越来越大,因为不断往里追加命令。…

Java基于SpringBoot+Vue的图书馆管理系统,附源码,数据库

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

一款跳转警告HTML单页模板源码

一款跳转警告HTML单页模板,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 代码如下 <!DOCTYPE html> <html> <!--QQ沐编程 www.q…

HarmonyOS—使用预览器查看应用/服务效果

DevEco Studio为开发者提供了UI界面预览功能&#xff0c;可以查看应用/服务的UI界面效果&#xff0c;方便开发者随时调整界面UI布局。预览器支持布局代码的实时预览&#xff0c;只需要将开发的源代码进行保存&#xff0c;就可以通过预览器实时查看应用/服务运行效果&#xff0c…

统计图玫瑰图绘制方法

统计图玫瑰图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制&#xff0c;饼图环形图绘制较难。 还有一种玫瑰图的绘制也较难&#xff0c;今提供玫瑰图的绘制方法供参考。 本方法采用C语言的最基本功能&#xff1a; &am…

axure9.0 工具使用思考

原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】快速原型设计工具原型设计软件【AxureRP】…

Kafka3.x进阶

来源&#xff1a;B站 目录 Kafka生产者生产经验——生产者如何提高吞吐量生产经验——数据可靠性生产经验——数据去重数据传递语义幂等性生产者事务 生产经验——数据有序生产经验——数据乱序 Kafka BrokerKafka Broker 工作流程Zookeeper 存储的 Kafka 信息Kafka Broker 总…

预告 | 飞凌嵌入式即将亮相第八届瑞芯微开发者大会(RKDC2024)

2024年3月7~8日&#xff0c;第八届瑞芯微开发者大会&#xff08;RKDC2024&#xff09;将在福州举办&#xff0c;本届大会以“AI芯片AI应用AloT”为主题&#xff0c;邀请各行业的开发者共启数智化未来。 本届大会亮点颇多&#xff0c;不仅有13大芯片应用展示、9场产品和技术论坛…

洛谷 【算法1-2】排序

【算法1-2】排序 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 鄙人不才&#xff0c;刷洛谷&#xff0c;迎蓝桥&#xff0c;【算法1-2】排序 已刷&#xff0c;现将 AC 代码献上&#xff0c;望有助于各位 P1271 选举学生会 【深基9.例1】选举学生会 - 洛谷 题目 解答…

YOLOv9 | 利用YOLOv9训练自己的数据集 -> 推理、验证(源码解读 + 手撕结构图)

一、本文介绍 本文给大家带来的是全新的SOTA模型YOLOv9的基础使用教程&#xff0c;需要注意的是YOLOv9发布时间为2024年2月21日&#xff0c;截至最近的日期也没有过去几天&#xff0c;从其实验结果上来看&#xff0c;其效果无论是精度和参数量都要大于过去的一些实时检测模型&…

智能水浸传感器拆解指导,水浸传感器有哪些种类?

很多朋友听说过智能水浸传感器&#xff0c;当我们的厨房或者卫生间发生漏水&#xff0c;只要提前安装放置好一个水浸传感器&#xff0c;哪怕我们身处外地也能发现并及时处理。除此之外&#xff0c;数据中心、机房、仓库、实验室、工厂、档案馆等也是智能水浸传感器的常见应用场…

如何图片无损放大?分享两个无损放大方法

在数字化时代的洪流中&#xff0c;我们时常被细微之处的美丽所打动——那些精致的画面&#xff0c;那些清晰的细节。然而&#xff0c;随着图片的放大&#xff0c;我们常常面临一个难题&#xff1a;清晰度的损失。此时&#xff0c;图片无损放大软件能够在不损失图片质量的前提下…

宝塔面板安装了mysql5.7和phpMyadmin,但是访问phpMyadmin时提示502 Bad Gateway

操作流程截图如下&#xff1a; 原因是没有选择php版本 选择php版本 下一页找到phpMyAdmin&#xff0c;选择设置 目前只有纯净态&#xff0c;说明没有php环境&#xff0c;前去安装php环境 点击安装&#xff0c;选择版本&#xff0c;这里选择的是7.4版本&#xff0c;编译安…

设计模式六:策略模式

1、策略模式 策略模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;使每个算法可以相互替代&#xff0c;使算法本身和使用算法的客户端分割开来&#xff0c;相互独立。 策略模式的角色&#xff1a; 策略接口角色IStrategy&#xff1a;用来约束一系列具体…

抖音爬虫批量视频提取功能介绍|抖音评论提取工具

抖音爬虫是指通过编程技术从抖音平台上获取视频数据的程序。在进行抖音爬虫时&#xff0c;需要注意遵守相关法律法规和平台规定&#xff0c;以确保数据的合法获取和使用。 一般来说&#xff0c;抖音爬虫可以实现以下功能之一&#xff1a;批量视频提取。这个功能可以用于自动化地…

【C++精简版回顾】7.析构函数

1.析构函数 class MM { public:MM() {}MM(const char* a) {name new char[strlen(a)1];strcpy(name, a);cout << name << endl;}~MM() {delete[] name;name nullptr;cout << "调用析构函数" << endl;} private:char* name; }; int main(…