mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-17 16:36:03 +08:00
配网部分
This commit is contained in:
10
firmware/stm32-esp/README.md
Normal file
10
firmware/stm32-esp/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
### 一、项目简介
|
||||
|
||||
|
||||
<br />
|
||||
|
||||
### 二、相关开发板
|
||||
|
||||
<br />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -758,7 +758,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>user/data</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -778,7 +778,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>user/show</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
|
||||
#include "stm32f10x.h"
|
||||
|
||||
#define Device_LCD 1
|
||||
#define Device_LCD 1
|
||||
|
||||
#define MQTT_SCode 1
|
||||
#define MQTT_AT 1
|
||||
|
||||
extern uint8_t UART1ReadBuf[100];
|
||||
extern uint16_t UART1ReadFlag;
|
||||
|
||||
@@ -19,8 +19,7 @@ int main()
|
||||
|
||||
// LCD
|
||||
#ifdef Device_LCD
|
||||
Delay_ms(500);
|
||||
|
||||
Delay_ms(1000);
|
||||
SimLCD_Init();
|
||||
|
||||
DevParam.AirInforGetTime = 3000;
|
||||
@@ -54,7 +53,7 @@ int main()
|
||||
{
|
||||
// 显示部分,侧边跳动
|
||||
Show_BroadSideBeat();
|
||||
|
||||
//
|
||||
// PMD4,获取空气信息
|
||||
PMD4_GetAirInfor();
|
||||
}
|
||||
|
||||
@@ -4,18 +4,34 @@
|
||||
配网流程
|
||||
1、将无线设备初始化为AP模式,默认设置为
|
||||
2、
|
||||
// 配置 MQTT 用户属性
|
||||
// AT+MQTTUSERCFG=0,1,"8bf209cd00704760b7a60b2f71be9d8c","test","123456",0,0,""\r\n
|
||||
// 配置 MQTT 连接属性
|
||||
// AT+MQTTCONNCFG=0,120,0,"","",0,0\r\n
|
||||
// 连接/查询 MQTT Broker
|
||||
// AT+MQTTCONN=0,"106.12.9.213",1883,0\r\n
|
||||
// 发布主题
|
||||
// {"deviceNum":"7CDFA1049ADA","categoryId":2,"firmwareVersion":"1.0","ownerId":"1"}
|
||||
// AT+MQTTPUB=0,"device_info","{"deviceNum":"E8DB84933050","categoryId":1,"firmwareVersion":"1.0","ownerId":"1"}",0,0\r\n
|
||||
// 订阅/查询主题
|
||||
// AT+MQTTSUB=0,"status/set/E8DB84933050",1\r\n
|
||||
// 取消订阅主题
|
||||
// AT+MQTTUNSUB=0,"status/set/E8DB84933050"
|
||||
// 关闭连接, 释放资源
|
||||
// AT+MQTTCLEAN=0
|
||||
****************************/
|
||||
static uint8_t NetWorkFlow = 1;
|
||||
static uint8_t NetWorkFlow = 1;
|
||||
static uint32_t Nport = 0;
|
||||
static uint8_t Nssid[20] = {0};
|
||||
static uint8_t Npassword[20] = {0};
|
||||
static uint8_t Nssid[20] = {0};
|
||||
static uint8_t Npassword[20] = {0};
|
||||
|
||||
#ifdef MQTT_SCode
|
||||
MQTTPacket_connectData MQTT_ConnectData = MQTTPacket_connectData_initializer;
|
||||
char MQTT_ClientId[150] = {0};
|
||||
char MQTT_Username[65] = {0};
|
||||
char MQTT_Password[65] = {0};
|
||||
|
||||
volatile uint16_t MQTT_ReadBufLen = 0;
|
||||
#endif
|
||||
|
||||
int ESP8266_WaitData(unsigned char* buf, int count)
|
||||
{
|
||||
@@ -30,7 +46,7 @@ int ESP8266_WaitData(unsigned char* buf, int count)
|
||||
Delay_ms(10);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MQTT_SCode
|
||||
uint8_t MQTT_UserSubscribe(char *pSubTopic) {
|
||||
uint8_t buf[200] = {0};
|
||||
uint32_t buflen = sizeof(buf);
|
||||
@@ -70,6 +86,8 @@ uint8_t MQTT_UserSubscribe(char *pSubTopic) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef MQTT_SCode
|
||||
// MQTT_Publish("/mqtt/topic/0", "hello0");
|
||||
void MQTT_UserPublish(char *pPubTopic, char *payload, int payloadlen) {
|
||||
uint8_t buf[400] = {0};
|
||||
@@ -81,6 +99,7 @@ void MQTT_UserPublish(char *pPubTopic, char *payload, int payloadlen) {
|
||||
len += MQTTSerialize_publish((unsigned char *)(buf + len), buflen - len, 0, 0, 0, 0, topicString, (unsigned char *)payload, payloadlen);
|
||||
ESP8266_SendStr((char *)buf);
|
||||
}
|
||||
#endif
|
||||
uint8_t buf[400] = {0};
|
||||
int buflen = 0;
|
||||
void ESP8266_NetWorkFlow(void)
|
||||
@@ -110,12 +129,13 @@ void ESP8266_NetWorkFlow(void)
|
||||
NetWorkFlow = 5;
|
||||
}
|
||||
else if(NetWorkFlow == 5) {
|
||||
MQTT_ConnectData.MQTTVersion = 4; // 3.1.1
|
||||
MQTT_ConnectData.keepAliveInterval = 60; // 设置心跳包间隔时间
|
||||
MQTT_ConnectData.clientID.cstring = (char *)MQTT_ClientId;// 客户端ID
|
||||
MQTT_ConnectData.username.cstring = (char *)MQTT_Username;// 用户名
|
||||
MQTT_ConnectData.password.cstring = (char *)MQTT_Password;// 密码
|
||||
MQTT_ConnectData.cleansession = 0; // 清除会话
|
||||
#ifdef MQTT_SCode
|
||||
// MQTT_ConnectData.MQTTVersion = 4; // 3.1.1
|
||||
// MQTT_ConnectData.keepAliveInterval = 60; // 设置心跳包间隔时间
|
||||
// MQTT_ConnectData.clientID.cstring = (char *)MQTT_ClientId;// 客户端ID
|
||||
// MQTT_ConnectData.username.cstring = (char *)MQTT_Username;// 用户名
|
||||
// MQTT_ConnectData.password.cstring = (char *)MQTT_Password;// 密码
|
||||
// MQTT_ConnectData.cleansession = 0; // 清除会话
|
||||
|
||||
//rc = aiotMqttSign(product_key, device_name, device_secret, \
|
||||
//MQTT_ConnectData.clientID.cstring, MQTT_ConnectData.username.cstring, MQTT_ConnectData.password.cstring);
|
||||
@@ -131,51 +151,59 @@ void ESP8266_NetWorkFlow(void)
|
||||
|
||||
// 发送 登录数据
|
||||
// 将连接字符串格式化一下,现在还没有发送
|
||||
memset(buf, 0 ,sizeof(buf));
|
||||
buflen = sizeof(buf);
|
||||
|
||||
MQTTSerialize_connect( buf, buflen, &MQTT_ConnectData);
|
||||
UART2ReadFlag = 0;
|
||||
ESP8266_SendStr((char *)buf);
|
||||
// memset(buf, 0 ,sizeof(buf));
|
||||
// buflen = sizeof(buf);
|
||||
//
|
||||
// MQTTSerialize_connect( buf, buflen, &MQTT_ConnectData);
|
||||
// UART2ReadFlag = 0;
|
||||
// ESP8266_SendStr((char *)buf);
|
||||
|
||||
// 等待connack
|
||||
if (MQTTPacket_read(buf, buflen, ESP8266_WaitData) == CONNACK){
|
||||
unsigned char sessionPresent, connack_rc;
|
||||
if (MQTTDeserialize_connack(&sessionPresent, &connack_rc, buf, buflen) != 1 || connack_rc != 0)
|
||||
{
|
||||
//Sys_SendLog("Unable to connect,return code %d\r\n", connack_rc);
|
||||
//return -1;
|
||||
}
|
||||
}
|
||||
// if (MQTTPacket_read(buf, buflen, ESP8266_WaitData) == CONNACK){
|
||||
// unsigned char sessionPresent, connack_rc;
|
||||
// if (MQTTDeserialize_connack(&sessionPresent, &connack_rc, buf, buflen) != 1 || connack_rc != 0)
|
||||
// {
|
||||
// //Sys_SendLog("Unable to connect,return code %d\r\n", connack_rc);
|
||||
// //return -1;
|
||||
// }
|
||||
// }
|
||||
/*订阅*/
|
||||
MQTT_UserSubscribe("status/set/7CDFA1049ADA"); //更新设备状态
|
||||
MQTT_UserSubscribe("status/get/7CDFA1049ADA"); //获取设备状态
|
||||
MQTT_UserSubscribe("setting/set/7CDFA1049ADA");//更新设备配置
|
||||
MQTT_UserSubscribe("setting/get/7CDFA1049ADA");//获取设备配置
|
||||
// MQTT_UserSubscribe("status/set/7CDFA1049ADA"); //更新设备状态
|
||||
// MQTT_UserSubscribe("status/get/7CDFA1049ADA"); //获取设备状态
|
||||
// MQTT_UserSubscribe("setting/set/7CDFA1049ADA");//更新设备配置
|
||||
// MQTT_UserSubscribe("setting/get/7CDFA1049ADA");//获取设备配置
|
||||
#endif
|
||||
/********************************/
|
||||
#ifdef MQTT_AT
|
||||
|
||||
#endif
|
||||
/********************************/
|
||||
}
|
||||
else if(NetWorkFlow == 10)
|
||||
{
|
||||
if(DevParam.ESP8266SendTime >= 2000)
|
||||
{
|
||||
MQTTSerialize_pingreq(buf, buflen);// 发送心跳
|
||||
ESP8266_SendStr((char *)buf);
|
||||
DevParam.ESP8266SendTime = 0;
|
||||
}
|
||||
#ifdef MQTT_SCode
|
||||
// if(DevParam.ESP8266SendTime >= 2000)
|
||||
// {
|
||||
// MQTTSerialize_pingreq(buf, buflen);// 发送心跳
|
||||
// ESP8266_SendStr((char *)buf);
|
||||
// DevParam.ESP8266SendTime = 0;
|
||||
// }
|
||||
// 发布设备状态
|
||||
else if(DevParam.ESP8266SendTime>=1500){
|
||||
// /a1ykSq0uPgd/qmvH76OCy2FeGp9DDMPx/user/update
|
||||
// 0x00 00000001 0032 0100 001223
|
||||
char txBuf[30] = {0};
|
||||
char txLen = 0;
|
||||
//txBuf[txLen++] = COMMAND_REPORT;// 属性上报
|
||||
txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x01;// ID
|
||||
//txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 8);txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 0); // INT16
|
||||
//txBuf[txLen++] = DeviceData.prop_bool; // BOOL
|
||||
//txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 8);txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 0);// FLOAT
|
||||
// else if(DevParam.ESP8266SendTime>=1500){
|
||||
// // /a1ykSq0uPgd/qmvH76OCy2FeGp9DDMPx/user/update
|
||||
// // 0x00 00000001 0032 0100 001223
|
||||
// char txBuf[30] = {0};
|
||||
// char txLen = 0;
|
||||
// //txBuf[txLen++] = COMMAND_REPORT;// 属性上报
|
||||
// txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x00;txBuf[txLen++] = 0x01;// ID
|
||||
// //txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 8);txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 0); // INT16
|
||||
// //txBuf[txLen++] = DeviceData.prop_bool; // BOOL
|
||||
// //txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 8);txBuf[txLen++] = (uint8_t)(DeviceData.prop_int16 >> 0);// FLOAT
|
||||
|
||||
MQTT_UserPublish("device_info", txBuf, txLen);
|
||||
DevParam.ESP8266SendTime = 0;
|
||||
}
|
||||
// MQTT_UserPublish("device_info", txBuf, txLen);
|
||||
// DevParam.ESP8266SendTime = 0;
|
||||
// }
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,8 +214,7 @@ uint16_t i = 0;
|
||||
|
||||
uint8_t rbuf[256] = {0};
|
||||
uint8_t rlen = 0;
|
||||
void ESP8266_NetReceiveInfor(void)
|
||||
{
|
||||
void ESP8266_NetReceiveInfor(void) {
|
||||
if(UART2ReadFlag&0x8000)
|
||||
{
|
||||
if(NetWorkFlow == 2) {
|
||||
@@ -224,6 +251,7 @@ void ESP8266_NetReceiveInfor(void)
|
||||
}
|
||||
if(NetWorkFlow == 10)
|
||||
{
|
||||
#ifdef MQTT_SCode
|
||||
rlen = UART2ReadFlag&(~(1<<15));
|
||||
memcpy(rbuf, (void*)&UART2ReadBuf, rlen);
|
||||
memset(UART2ReadBuf, 0, sizeof(UART2ReadBuf));
|
||||
@@ -248,6 +276,7 @@ void ESP8266_NetReceiveInfor(void)
|
||||
// memset(rbuf, 0, sizeof(rbuf));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user