Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不穿格子衫的农民
TencentOS Tiny
提交
a01cf34a
T
TencentOS Tiny
项目概览
不穿格子衫的农民
/
TencentOS Tiny
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TencentOS Tiny
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a01cf34a
编写于
1月 30, 2021
作者:
M
mculover666
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug in mqtt_iot_explorer_tc_pm25_oled demo
上级
1d40fb44
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
106 addition
and
32 deletion
+106
-32
board/TencentOS_tiny_EVB_G0/KEIL/mqtt_iot_explorer_tc_pm25/TencentOS_tiny_EVB_G0.uvoptx
...IL/mqtt_iot_explorer_tc_pm25/TencentOS_tiny_EVB_G0.uvoptx
+1
-1
board/TencentOS_tiny_EVB_G0/KEIL/mqtt_iot_explorer_tc_pm25/demo/mqtt_iot_explorer_tc_pm25_oled.c
...ot_explorer_tc_pm25/demo/mqtt_iot_explorer_tc_pm25_oled.c
+105
-31
未找到文件。
board/TencentOS_tiny_EVB_G0/KEIL/mqtt_iot_explorer_tc_pm25/TencentOS_tiny_EVB_G0.uvoptx
浏览文件 @
a01cf34a
...
...
@@ -1047,7 +1047,7 @@
<Group>
<GroupName>
examples
</GroupName>
<tvExp>
0
</tvExp>
<tvExp>
1
</tvExp>
<tvExpOptDlg>
0
</tvExpOptDlg>
<cbSel>
0
</cbSel>
<RteFlg>
0
</RteFlg>
...
...
board/TencentOS_tiny_EVB_G0/KEIL/mqtt_iot_explorer_tc_pm25/demo/mqtt_iot_explorer_tc_pm25_oled.c
浏览文件 @
a01cf34a
...
...
@@ -3,13 +3,34 @@
#include "tencent_firmware_module_wrapper.h"
#include "pm2d5_parser.h"
#include "oled.h"
#include "math.h"
#define WIFI_SSID "CMCC-Quq4"
#define WIFI_PASSWD "c66trb8d"
#define PRODUCT_ID "7WLPW5Z48Q"
#define DEVICE_NAME "dev001"
#define DEVICE_KEY "5SEZMc2+Ts1FMCwoU6hV6Q=="
#define PRODUCT_ID "XOEHGW66ZD"
#define DEVICE_NAME "pm0001"
#define DEVICE_KEY "pVziOcDry+iOwcgP3kWCCw=="
#define REPORT_DATA_TEMPLATE1 "{\"method\":\"report\",\"clientToken\":\"%s\"," \
"\"params\":{\"PM1_CF1\":%d," \
"\"PM2d5_CF1\":%d," \
"\"PM10_CF1\":%d," \
"\"PM1\":%d," \
"\"PM2d5\":%d," \
"\"PM10\":%d" \
"}}"
#define REPORT_DATA_TEMPLATE "{\\\"method\\\":\\\"report\\\"\\,\\\"clientToken\\\":\\\"00000001\\\"\\,\\\"params\\\":{\\\"Pm2d5Value\\\":%d}}"
#define REPORT_DATA_TEMPLATE2 "{\"method\":\"report\",\"clientToken\":\"%s\"," \
"\"params\":{" \
"\"particles_0d3\":%d," \
"\"particles_0d5\":%d," \
"\"particles_1\":%d," \
"\"particles_2d5\":%d," \
"\"particles_5\":%d," \
"\"particles_10\":%d," \
"\"version\":%d," \
"\"Error\":%d" \
"}}"
void
default_message_handler
(
mqtt_message_t
*
msg
)
{
...
...
@@ -28,11 +49,19 @@ k_mail_q_t mail_q;
pm2d5_data_u
pm2d5_value
;
uint8_t
pm2d5_value_pool
[
3
*
sizeof
(
pm2d5_data_u
)];
void
generate_client_token
(
char
*
buffer
,
size_t
size
)
{
long
client_token_value
;
memset
(
buffer
,
0
,
size
);
client_token_value
=
((
long
)
tos_systick_get
())
%
(
long
)(
pow
(
10
,
size
));
snprintf
(
buffer
,
size
,
"%ld"
,
client_token_value
);
}
void
mqtt_demo_task
(
void
)
{
int
ret
=
0
;
int
size
=
0
;
mqtt_state_t
state
;
int
i
=
0
;
char
*
product_id
=
PRODUCT_ID
;
char
*
device_name
=
DEVICE_NAME
;
...
...
@@ -42,11 +71,8 @@ void mqtt_demo_task(void)
memset
(
&
dev_info
,
0
,
sizeof
(
device_info_t
));
char
str
[
16
];
size_t
mail_size
;
/* OLED显示日志 */
OLED_ShowString
(
0
,
2
,
(
uint8_t
*
)
"connecting..."
,
16
);
uint8_t
report_error_count
=
0
;
char
client_token
[
10
];
/**
* Please Choose your AT Port first, default is HAL_UART_2(USART2)
...
...
@@ -55,24 +81,36 @@ void mqtt_demo_task(void)
if
(
ret
<
0
)
{
printf
(
"esp8266 tencent firmware sal init fail, ret is %d
\r\n
"
,
ret
);
return
;
}
esp8266_tencent_firmware_join_ap
(
"Supowang"
,
"13975426138"
);
OLED_Clear
();
sprintf
(
str
,
"Connecting WIFI..."
);
OLED_ShowString
(
0
,
0
,
(
uint8_t
*
)
str
,
16
);
while
(
1
)
{
if
(
esp8266_tencent_firmware_join_ap
(
WIFI_SSID
,
WIFI_PASSWD
)
==
0
)
{
printf
(
"module WIFI connect success
\n
"
);
break
;
}
printf
(
"module WIFI connect fail
\n
"
);
tos_sleep_ms
(
2000
);
}
OLED_Clear
();
sprintf
(
str
,
"Connecting IoT Explorer..."
);
OLED_ShowString
(
0
,
0
,
(
uint8_t
*
)
str
,
16
);
strncpy
(
dev_info
.
product_id
,
product_id
,
PRODUCT_ID_MAX_SIZE
);
strncpy
(
dev_info
.
device_name
,
device_name
,
DEVICE_NAME_MAX_SIZE
);
strncpy
(
dev_info
.
device_serc
,
key
,
DEVICE_SERC_MAX_SIZE
);
tos_tf_module_info_set
(
&
dev_info
,
TLS_MODE_PSK
);
mqtt_param_t
init_params
=
DEFAULT_MQTT_PARAMS
;
if
(
tos_tf_module_mqtt_conn
(
init_params
)
!=
0
)
{
printf
(
"module mqtt conn fail
\n
"
);
}
else
{
printf
(
"module mqtt conn success
\n
"
);
}
if
(
tos_tf_module_mqtt_state_get
(
&
state
)
!=
-
1
)
{
printf
(
"MQTT: %s
\n
"
,
state
==
MQTT_STATE_CONNECTED
?
"CONNECTED"
:
"DISCONNECTED"
);
while
(
1
)
{
if
(
tos_tf_module_mqtt_conn
(
init_params
)
==
0
)
{
printf
(
"module mqtt connect success
\n
"
);
break
;
}
printf
(
"module mqtt connect fail
\n
"
);
tos_sleep_ms
(
5000
);
}
/* 开始订阅topic */
...
...
@@ -116,24 +154,60 @@ void mqtt_demo_task(void)
printf
(
"data[%d]:%d ug/m3
\r\n
"
,
i
+
1
,
pm2d5_value
.
data
[
i
]);
}
/
/显示PM2.5的值
/
* 显示PM2.5的值 */
OLED_Clear
();
sprintf
(
str
,
"PM1.0:%4d ug/m3"
,
pm2d5_value
.
pm2d5_data
.
data
1
);
sprintf
(
str
,
"PM1.0:%4d ug/m3"
,
pm2d5_value
.
pm2d5_data
.
data
4
);
OLED_ShowString
(
0
,
0
,(
uint8_t
*
)
str
,
16
);
sprintf
(
str
,
"PM2.5:%4d ug/m3"
,
pm2d5_value
.
pm2d5_data
.
data2
);
OLED_ShowString
(
0
,
2
,(
uint8_t
*
)
str
,
16
);
/* 上报值 */
generate_client_token
(
client_token
,
sizeof
(
client_token
));
memset
(
payload
,
0
,
sizeof
(
payload
));
snprintf
(
payload
,
sizeof
(
payload
),
REPORT_DATA_TEMPLATE
,
pm2d5_value
.
pm2d5_data
.
data2
);
snprintf
(
payload
,
sizeof
(
payload
),
REPORT_DATA_TEMPLATE1
,
client_token
,
pm2d5_value
.
pm2d5_data
.
data1
,
pm2d5_value
.
pm2d5_data
.
data2
,
pm2d5_value
.
pm2d5_data
.
data3
,
pm2d5_value
.
pm2d5_data
.
data4
,
pm2d5_value
.
pm2d5_data
.
data5
,
pm2d5_value
.
pm2d5_data
.
data6
);
if
(
tos_tf_module_mqtt_publ
(
report_topic_name
,
QOS0
,
payload
)
!=
0
)
{
report_error_count
++
;
printf
(
"module mqtt publ fail, count: %d
\n
"
,
report_error_count
);
sprintf
(
str
,
"1# report fail"
);
OLED_ShowString
(
0
,
2
,(
uint8_t
*
)
str
,
16
);
}
else
{
report_error_count
=
0
;
printf
(
"module mqtt publ success
\n
"
);
sprintf
(
str
,
"1# report ok"
);
OLED_ShowString
(
0
,
2
,(
uint8_t
*
)
str
,
16
);
}
if
(
tos_tf_module_mqtt_pub
(
report_topic_name
,
QOS0
,
payload
)
!=
0
)
{
printf
(
"module mqtt pub fail
\n
"
);
break
;
tos_sleep_ms
(
5000
);
OLED_Clear
();
sprintf
(
str
,
"PM2.5:%4d ug/m3"
,
pm2d5_value
.
pm2d5_data
.
data5
);
OLED_ShowString
(
0
,
0
,(
uint8_t
*
)
str
,
16
);
/* 上报值 */
generate_client_token
(
client_token
,
sizeof
(
client_token
));
memset
(
payload
,
0
,
sizeof
(
payload
));
snprintf
(
payload
,
sizeof
(
payload
),
REPORT_DATA_TEMPLATE2
,
client_token
,
pm2d5_value
.
pm2d5_data
.
data7
,
pm2d5_value
.
pm2d5_data
.
data8
,
pm2d5_value
.
pm2d5_data
.
data9
,
pm2d5_value
.
pm2d5_data
.
data10
,
pm2d5_value
.
pm2d5_data
.
data11
,
pm2d5_value
.
pm2d5_data
.
data12
,
pm2d5_value
.
pm2d5_data
.
version
,
pm2d5_value
.
pm2d5_data
.
err_code
);
if
(
tos_tf_module_mqtt_publ
(
report_topic_name
,
QOS0
,
payload
)
!=
0
)
{
report_error_count
++
;
printf
(
"module mqtt publ fail, count: %d
\n
"
,
report_error_count
);
sprintf
(
str
,
"2# report fail"
);
OLED_ShowString
(
0
,
2
,(
uint8_t
*
)
str
,
16
);
}
else
{
printf
(
"module mqtt pub success
\n
"
);
report_error_count
=
0
;
printf
(
"module mqtt publ success
\n
"
);
sprintf
(
str
,
"2# report ok"
);
OLED_ShowString
(
0
,
2
,(
uint8_t
*
)
str
,
16
);
}
if
(
report_error_count
>=
6
)
{
HAL_NVIC_SystemReset
();
}
tos_sleep_ms
(
5000
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录