diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..73f69e09
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/README.md b/README.md
index 55989dbf..2aa320cd 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@
2. 服务端使用spring boot、数据库mysql和redis、前端vue、移动端android、硬件端ESP-IDF和Arduino等。软硬件交互基于Mqtt协议,使用EMQ代理服务器。系统架构图如下:

+

3. 硬件端提供接入文档,需要设备支持网络功能,项目里面包含ESP-IDF和Arduino的硬件代码和接入示例。同时制作了智能开关(wifi通断器)板子,可用于学习和生活中,控制2500W以下的用电设备。硬件完整示例代码采用ESP-IDF框架4.2版本,基于乐鑫ESP32S2芯片,安信可ESP-12K模组。[详情和购买方式 >> ](https://gitee.com/kerwincui/wumei-smart/wikis/pages?sort_id=4233922&doc_id=1506495)
@@ -25,7 +26,7 @@

2. Wifi控制器和LED灯板制作七彩智能灯

-3.物联网开发板 [详情和购买方式 >>](https://gitee.com/kerwincui/wumei-smart/wikis/pages?sort_id=4233922&doc_id=1506495)
+3. 物联网开发板 [详情和购买方式 >>](https://gitee.com/kerwincui/wumei-smart/wikis/pages?sort_id=4233922&doc_id=1506495)

4. 物联网入门学习套件 [详情和购买方式 >>](https://gitee.com/kerwincui/wumei-smart/wikis/pages?sort_id=4233922&doc_id=1506495)

@@ -63,7 +64,7 @@ docker run \
--publish 6379:6379 \
--restart always \
--detach \
-kerwincui/wumei-smart:1.0
+registry.cn-chengdu.aliyuncs.com/kerwincui/wumei-smart:1.0
```
#### 3. 扫码下载APP安装,打开APP,跳过登录,配置服务端地址
@@ -96,10 +97,11 @@ kerwincui/wumei-smart:1.0
* [若依文档](http://doc.ruoyi.vip/ruoyi-vue/),前端和后端基于Ruoyi-Vue,前后端分离权限管理系统
* [XUI](https://gitee.com/xuexiangjys/XUI),Android基于XUI开发,是一个简洁而优雅的原生UI框架
* [ESP-IDF编程指南](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/index.html)
+* [EMQ文档](https://docs.emqx.cn)
-### 七、加入讨论群:1073236354
+### 七、加入互助交流群:1073236354(一群) 252664672(二群)
diff --git a/android/README.md b/android/README.md
index e69de29b..4592c915 100644
--- a/android/README.md
+++ b/android/README.md
@@ -0,0 +1,5 @@
+Android项目打包
+1. 修改工程根目录的gradle.properties中的isNeedPackage=true。
+2. 添加并配置keystore,在versions.gradle中修改app_release相关参数。
+3. 如果考虑使用友盟统计的话,在local.properties中设置应用的友盟ID:APP_ID_UMENG。
+4. 使用./gradlew clean assembleReleaseChannels进行多渠道打包。
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 32580bb9..96048946 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -108,8 +108,9 @@ dependencies {
//屏幕适配AutoSize
implementation 'me.jessyan:autosize:1.1.2'
//umeng统计
- implementation 'com.umeng.umsdk:analytics:8.0.2'
- implementation 'com.umeng.umsdk:common:2.0.2'
+// implementation 'com.umeng.umsdk:analytics:8.0.2'
+// implementation 'com.umeng.umsdk:common:2.0.2'
+ implementation group: 'com.umeng.umsdk', name: 'common', version: '9.3.8'
//预加载占位控件
implementation 'me.samlss:broccoli:1.0.0'
diff --git a/document/sys2.png b/document/sys2.png
new file mode 100644
index 00000000..be5b734c
Binary files /dev/null and b/document/sys2.png differ
diff --git a/firmware/esp-idf/wumei-smart-firmware/main/button.c b/firmware/esp-idf/wumei-smart-firmware/main/button.c
index 93aef6c6..aa74d1fd 100644
--- a/firmware/esp-idf/wumei-smart-firmware/main/button.c
+++ b/firmware/esp-idf/wumei-smart-firmware/main/button.c
@@ -271,42 +271,47 @@ static void radar_sense(void *arg) {
ESP_LOGI(TAG, "begin radar sense");
uint16_t num=0;
while(true){
- // if(is_radar==1 && is_alarm==1){
- // if(gpio_get_level(IO_RADAR_OUT)==1){
- // if(relay_status==0) {
- // open_relay();
- // led_rgb_blink(255,0,0,100,0,0,3,1000); //红灯闪烁
- // }
- // }
- // else{
- // //超过指定时间后关闭
- // if(relay_status==1 && num >5*radar_interval){
- // close_relay();
- // light_status=0;
- // led_status();
- // num=0;
- // }
- // num++;
- // }
- // } else if(is_radar==1) {
- // if(gpio_get_level(IO_RADAR_OUT)==1){
- // if(relay_status==0) {
- // open_relay();
- // light_status=1;
- // led_status();
- // }
- // }
- // else{
- // //超过指定时间后关闭
- // if(relay_status==1 && num >5*radar_interval){
- // close_relay();
- // light_status=0;
- // led_status();
- // num=0;
- // }
- // num++;
- // }
- // }
+ if(is_radar==1 && is_alarm==1){
+ if(gpio_get_level(IO_RADAR_OUT)==1){
+ if(relay_status==0) {
+ relay_status=1;
+ open_relay();
+ light_status=1;
+ led_rgb_blink(255,0,0,100,0,0,3,500); //红灯闪烁
+ }
+ }
+ else{
+ //超过指定时间后关闭
+ if(relay_status==1 && num >5*radar_interval){
+ relay_status=0;
+ close_relay();
+ light_status=0;
+ led_status();
+ num=0;
+ }
+ num++;
+ }
+ } else if(is_radar==1) {
+ if(gpio_get_level(IO_RADAR_OUT)==1){
+ if(relay_status==0) {
+ relay_status=1;
+ open_relay();
+ light_status=1;
+ led_status();
+ }
+ }
+ else{
+ //超过指定时间后关闭
+ if(relay_status==1 && num >5*radar_interval){
+ relay_status=0;
+ close_relay();
+ light_status=0;
+ led_status();
+ num=0;
+ }
+ num++;
+ }
+ }
vTaskDelay(pdMS_TO_TICKS(200));
}
diff --git a/firmware/esp-idf/wumei-smart-firmware/main/common.c b/firmware/esp-idf/wumei-smart-firmware/main/common.c
index 99095ea2..9089e4bf 100644
--- a/firmware/esp-idf/wumei-smart-firmware/main/common.c
+++ b/firmware/esp-idf/wumei-smart-firmware/main/common.c
@@ -21,9 +21,9 @@ char ssid[33]="wifi-ssid"; // wifi的SSID
char pwd[65]="wifi-password"; // wifi的密码
char owner_id[64]="1"; // 用户ID
-char open_broken_url[128]=""; // 二次开发mqtt服务器地址
-char open_account[64]=""; // 二次开发mqtt账号
-char open_pwd[64]=""; // 二次开发mqtt密码
+// char open_broken_url[128]="wumei.live:1883"; // 二次开发mqtt服务器地址
+// char open_account[64]="admin"; // 二次开发mqtt账号
+// char open_pwd[64]="admin123"; // 二次开发mqtt密码
uint8_t relay_status=0; // 继电器状态 0-关闭,1-打开
uint8_t light_status=0; // 灯的状态 0-关闭 1-打开
diff --git a/firmware/stm32/smart_dormitory/Core/Src/main.c b/firmware/stm32/smart_dormitory/Core/Src/main.c
index 03b4c559..512b0913 100644
--- a/firmware/stm32/smart_dormitory/Core/Src/main.c
+++ b/firmware/stm32/smart_dormitory/Core/Src/main.c
@@ -74,6 +74,24 @@ void delay_ms(int ms)
{
HAL_Delay(ms);
}
+
+// ESP8266·MCU
+int wifi_data_recv_fun(type_recv_e type, uint8_t *data, int len)
+{
+ switch((int)type)
+ {
+ case TYPE_RECV_DISCONNECT:
+ printf("WIFI DISCONNECT!\r\n");
+ break;
+ case TYPE_RECV_GOT_IP:
+ printf("WIFI GOT IP!\r\n");
+ break;
+ case TYPE_RECV_SUBSCRIBE:
+ printf("recv_fun sucribe data : %s\r\n", data);
+ break;
+ }
+}
+
/* USER CODE END 0 */
/**
@@ -144,11 +162,14 @@ int main(void)
{
printf("enable time4 pwm output\r\n");
}
+ set_sg90(50);
if (HAL_TIM_Base_Start_IT(&htim3))
{
printf("enable time3 base isr\r\n");
}
+
+ ESP8266_Fram_Record_Struct.wifi_data_recv_cb = wifi_data_recv_fun; // ϵͳص·
ESP8266_STA_MQTTClient_Init();
printf("ready go into while1\r\n");
diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator
index d90456ce..eb80ebcf 100644
--- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator
+++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator
@@ -80,8 +80,8 @@
44
- 2
- 3
+ 0
+ 1
-1
-1
@@ -92,16 +92,16 @@
0
- 245
- 1540
- 824
+ -8
+ 1002
+ 843
0
- 1484
- 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C00000002000000010000004B443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF52443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C7463702E6300000000057463702E6300000000BECEA100FFFFFFFF4C443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C75736172742E63000000000775736172742E6300000000F0A0A100FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6300000000066D7174742E6300000000BCA8E100FFFFFFFF56443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E630000000009657370383236362E63000000009CC1B600FFFFFFFF52443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C50726F636573735C70726F636573732E63000000000970726F636573732E6300000000F7B88600FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6800000000066D7174742E6800000000D9ADC200FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E6300000000A5C2D700FFFFFFFF56443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E680000000009657370383236362E6800000000B3A6BE00FFFFFFFF70443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D2E63000000001373746D3332663178785F68616C5F74696D2E6300000000EAD6A300FFFFFFFF4A443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C74696D2E63000000000574696D2E6300000000F6FA7D00FFFFFFFF4A443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C646D612E630000000005646D612E63000000005FC3CF00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000034010000660000000006000043020000
+ 1593
+ 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000D00000004000000010000004B443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF52443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C7463702E6300000000057463702E6300000000BECEA100FFFFFFFF4C443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C75736172742E63000000000775736172742E6300000000F0A0A100FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6300000000066D7174742E6300000000BCA8E100FFFFFFFF56443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E630000000009657370383236362E63000000009CC1B600FFFFFFFF52443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C50726F636573735C70726F636573732E63000000000970726F636573732E6300000000F7B88600FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6800000000066D7174742E6800000000D9ADC200FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E6300000000A5C2D700FFFFFFFF56443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E680000000009657370383236362E6800000000B3A6BE00FFFFFFFF70443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F74696D2E63000000001373746D3332663178785F68616C5F74696D2E6300000000EAD6A300FFFFFFFF4A443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C74696D2E63000000000574696D2E6300000000F6FA7D00FFFFFFFF4A443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C646D612E630000000005646D612E6300000000B5E99D00FFFFFFFF52443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C50726F636573735C70726F636573732E68000000000970726F636573732E6800000000B5E99D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000340100006E000000E2030000B8020000
@@ -124,7 +124,7 @@
16
- F40000006600000090050000F6000000
+ F40000006E00000090050000FE000000
@@ -140,7 +140,7 @@
0
16
- 03000000660000002D01000013020000
+ 03000000660000002D01000080020000
16
@@ -160,7 +160,7 @@
0
16
- 03000000660000002D01000013020000
+ 03000000660000002D01000080020000
16
@@ -440,7 +440,7 @@
0
16
- 03000000660000002D01000013020000
+ 03000000660000002D01000080020000
16
@@ -460,7 +460,7 @@
0
16
- 03000000660000002D01000013020000
+ 03000000660000002D01000080020000
16
@@ -480,7 +480,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000DF030000F8020000
16
@@ -520,7 +520,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000DF030000F8020000
16
@@ -1140,7 +1140,7 @@
0
16
- 03000000660000002D01000013020000
+ 03000000660000002D0100007D020000
16
@@ -1160,7 +1160,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000DF030000F8020000
16
@@ -1180,7 +1180,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000FD050000F8020000
16
@@ -1240,7 +1240,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000FD050000F8020000
16
@@ -1260,7 +1260,7 @@
0
16
- 0300000047020000FD050000F5020000
+ 03000000B4020000FD050000F8020000
16
@@ -1720,7 +1720,7 @@
0
16
- 000000000E0300000006000021030000
+ 0000000011030000E203000024030000
16
@@ -1789,14 +1789,14 @@
3317
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F000000340100002C02000001000000020000100400000001000000EAFEFFFFDF040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003001000043020000000000004F000000300100002C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000002C0200000006000030020000010000000100001004000000010000009BFEFFFF4F010000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000004702000000060000250300000000000030020000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006E00000090050000FE000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A00400006E0000009005000048020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F000000340100009902000001000000020000100400000001000000EAFEFFFFDF040000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006E00000030010000B5020000000000004F00000030010000990200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003802000090050000DC020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000099020000E20300009D0200000100000001000010040000000100000001FEFFFFB5000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000B9020000000600002D030000000000009D020000E2030000110300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
59392
File
- 2628
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000115553415254335F49525148616E646C657296000000000000001400115553415254335F49525148616E646C65721C20455350383236365F4672616D5F5265636F72645F5374727563742022455350383236365F4672616D5F5265636F72645F5374727563742E496E66426974201B455350383236365F4672616D5F5265636F72645F537472756374201555415254315F48616E646C6553747275637475726516455350383236365F43485F50445F50696E5F5365744C16455350383236365F43485F50445F50696E5F536574480844656C61795F6D730E44485431315F52656164427974650A44485431315F496E69741A44485431315F526561645F54656D70416E6448756D69646974790B64687431315F44656C6179084750494F5F50696E02753803753136037533320F44485431315F446174615F494E28291244485431315F446174615F5479706544656603726572062F2F42555A5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000
+ 2632
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000005737461746596000000000000001400057374617465084B65795F5363616E07666C616754786410636F756E745F696E746572727570743110636F756E745F696E746572727570743008494E54315F636E7408494E54305F636E740B4D5154545F484541445F5417557365725F455350383236365F4D51545453657276657213455350383236365F4C696E6B5F5365727665720F455350383236365F41545F5465737416455350383236365F4765745F4C696E6B53746174757315455350383236365F556E7661726E69736853656E6412455350383236365F53656E64537472696E6719455350383236365F456E61626C655F4D756C7469706C6549640E455350383236365F4A6F696E415017455350383236365F4E65745F4D6F64655F43686F6F73650B455350383236365F52737419455350383236365F45786974556E7661726E69736853656E6413455350383236365F53656E645F41545F436D640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000
1423
@@ -1812,7 +1812,7 @@
Build
974
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000750726F6A656374960000000000000001000750726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000750726F6A656374960000000000000001000750726F6A656374000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -1828,7 +1828,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -1852,18 +1852,18 @@
0
100
- 2
+ 4
../Core/Src/main.c
- 7
- 100
- 108
+ 3
+ 175
+ 198
1
0
- ..\User\xiaoyi_wifi\tcp.c
+ D:\work\platform\wumei-smart\firmware\stm32\smart_dormitory\User\xiaoyi_wifi\tcp.c
0
1
3
@@ -1874,35 +1874,35 @@
../Core/Src/usart.c
1
- 238
- 248
+ 227
+ 258
1
0
..\User\xiaoyi_wifi\mqtt.c
- 16
- 16
- 34
+ 30
+ 1
+ 17
1
0
..\User\xiaoyi_wifi\esp8266.c
- 0
- 49
- 54
+ 27
+ 357
+ 373
1
0
..\User\Process\process.c
- 10
- 28
- 39
+ 0
+ 18
+ 27
1
0
@@ -1910,8 +1910,8 @@
..\User\xiaoyi_wifi\mqtt.h
0
- 3
- 28
+ 21
+ 22
1
0
@@ -1927,9 +1927,9 @@
..\User\xiaoyi_wifi\esp8266.h
- 0
- 51
- 57
+ 14
+ 95
+ 102
1
0
@@ -1955,12 +1955,21 @@
../Core/Src/dma.c
0
- 37
+ 32
38
1
0
+
+ ..\User\Process\process.h
+ 8
+ 2
+ 24
+ 1
+
+ 0
+
diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx
index e3b803df..38d06495 100644
--- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx
+++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx
@@ -330,18 +330,6 @@
0
0
0
- ..\User\xiaoyi_wifi\tcp.c
- tcp.c
- 0
- 0
-
-
- 3
- 13
- 1
- 0
- 0
- 0
..\User\xiaoyi_wifi\mqtt.c
mqtt.c
0
@@ -349,7 +337,7 @@
3
- 14
+ 13
1
0
0
@@ -369,7 +357,7 @@
0
4
- 15
+ 14
1
0
0
@@ -381,7 +369,7 @@
4
- 16
+ 15
1
0
0
@@ -393,7 +381,7 @@
4
- 17
+ 16
1
0
0
@@ -405,7 +393,7 @@
4
- 18
+ 17
1
0
0
@@ -417,7 +405,7 @@
4
- 19
+ 18
1
0
0
@@ -429,7 +417,7 @@
4
- 20
+ 19
1
0
0
@@ -449,7 +437,7 @@
0
5
- 21
+ 20
1
0
0
@@ -461,7 +449,7 @@
5
- 22
+ 21
1
0
0
@@ -473,7 +461,7 @@
5
- 23
+ 22
1
0
0
@@ -485,7 +473,7 @@
5
- 24
+ 23
1
0
0
@@ -497,7 +485,7 @@
5
- 25
+ 24
1
0
0
@@ -509,7 +497,7 @@
5
- 26
+ 25
1
0
0
@@ -521,7 +509,7 @@
5
- 27
+ 26
1
0
0
@@ -533,7 +521,7 @@
5
- 28
+ 27
1
0
0
@@ -545,7 +533,7 @@
5
- 29
+ 28
1
0
0
@@ -557,7 +545,7 @@
5
- 30
+ 29
1
0
0
@@ -569,7 +557,7 @@
5
- 31
+ 30
1
0
0
@@ -581,7 +569,7 @@
5
- 32
+ 31
1
0
0
@@ -593,7 +581,7 @@
5
- 33
+ 32
1
0
0
@@ -605,7 +593,7 @@
5
- 34
+ 33
1
0
0
@@ -617,7 +605,7 @@
5
- 35
+ 34
1
0
0
@@ -629,7 +617,7 @@
5
- 36
+ 35
1
0
0
@@ -641,7 +629,7 @@
5
- 37
+ 36
1
0
0
@@ -653,7 +641,7 @@
5
- 38
+ 37
1
0
0
@@ -673,7 +661,7 @@
0
6
- 39
+ 38
1
0
0
diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx
index 864619de..4a66eaa4 100644
--- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx
+++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx
@@ -446,11 +446,6 @@
Application/User/Process
-
- tcp.c
- 1
- ..\User\xiaoyi_wifi\tcp.c
-
mqtt.c
1
diff --git a/firmware/stm32/smart_dormitory/User/Process/process.h b/firmware/stm32/smart_dormitory/User/Process/process.h
index ab85db81..5a7f1028 100644
--- a/firmware/stm32/smart_dormitory/User/Process/process.h
+++ b/firmware/stm32/smart_dormitory/User/Process/process.h
@@ -21,6 +21,8 @@ void start_buzz(void);
void stop_buzz(void);
+void set_sg90(int value);
+
void process_local_handle(uint16_t value_humi);
void process_report_data(void);
diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.c b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.c
index 12aca5b7..6469edf5 100644
--- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.c
+++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.c
@@ -78,6 +78,22 @@ void ESP8266_AT_Test(void)
}
}
+//ȡ
+void ESP8266_ATE0(void)
+{
+ char count=0;
+ delay_ms(1000);
+ while(count < 10)
+ {
+ if(ESP8266_Send_AT_Cmd("ATE0","OK",NULL,500))
+ {
+ printf("OK\r\n");
+ return;
+ }
+ ++ count;
+ }
+}
+
//ѡESP8266Ĺģʽ
// enumMode ģʽ
@@ -231,13 +247,13 @@ uint8_t ESP8266_Get_LinkStatus ( void )
{
if (ESP8266_Send_AT_Cmd( "AT+CIPSTATUS", "OK", 0, 500 ) )
{
- if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:2\r\n" ) )
+ if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:2\r\n" ) )
return 2;
- else if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:3\r\n" ) )
+ else if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:3\r\n" ) )
return 3;
- else if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:4\r\n" ) )
+ else if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:4\r\n" ) )
return 4;
}
@@ -359,7 +375,7 @@ void USART_printf ( char * Data, ... )
Data++;
break;
}
- }
+ }
else
{
HAL_UART_Transmit(&huart3, (uint8_t *)Data, 1, 0xFFFF);
@@ -370,98 +386,4 @@ void USART_printf ( char * Data, ... )
}
}
-//ΪESP8266MQTTָ
-
-/*
-*MQTTû
-*LinkID ID,Ŀǰֻ֧0
-*scheme ӷʽѡMQTT over TCP,Ϊ1
-*client_id MQTTclientID ڱ־client
-*username ڵ¼ MQTT username
-*password ڵ¼ MQTT password
-*cert_key_ID ֤ ID, Ŀǰ֧һ cert ֤, Ϊ 0
-*CA_ID Ŀǰ֧һ CA ֤, Ϊ 0
-*path Դ·Ϊ""
-*óɹtrue ֮false
-*/
-bool ESP8266_MQTTUSERCFG( char * pClient_Id, char * pUserName,char * PassWord)
-{
- char cCmd [120];
- sprintf ( cCmd, "AT+MQTTUSERCFG=0,1,\"%s\",\"%s\",\"%s\",0,0,\"\"", pClient_Id,pUserName,PassWord );
- return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 );
-}
-
-
-/*
-*ָMQTT
-*LinkID ID,Ŀǰֻ֧0
-*IPMQTT϶ӦIPַ
-*ComNum MQTT϶ӦĶ˿ںţһΪ1883
-*óɹtrue ֮false
-*/
-bool ESP8266_MQTTCONN( char * Ip, int Num)
-{
- char cCmd [120];
- sprintf ( cCmd,"AT+MQTTCONN=0,\"%s\",%d,0", Ip,Num);
- return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 );
-}
-
-/*
-*ָӵ MQTT , ظζIJͬ topic
-*LinkID ID,Ŀǰֻ֧0
-*Topic ĵ֣ΪTopic
-*QosֵһΪ0Ϊ1
-*óɹtrue ֮false
-*/
-bool ESP8266_MQTTSUB(char * Topic)
-{
- char cCmd [120];
- sprintf ( cCmd, "AT+MQTTSUB=0,\"%s\",1",Topic );
- return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 );
-}
-
-
-/*
-*LinkIDͨ topic data, data ΪַϢ
-*LinkID ID,Ŀǰֻ֧0
-*Topic ĵ֣ΪTopic
-*dataַϢ
-*óɹtrue ֮false
-*/
-bool ESP8266_MQTTPUB( char * Topic,char *temp)
-{
- char cCmd [512];
- sprintf (cCmd, "AT+MQTTPUB=0,\"%s\",\"%s\",0,0", Topic ,temp);
- return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 1000 );
-}
-
-/*
-*ر MQTT Client Ϊ LinkID , ͷڲռõԴ
-*LinkID ID,Ŀǰֻ֧0
-*Topic ĵ֣ΪTopic
-*dataַϢ
-*óɹtrue ֮false
-*/
-bool ESP8266_MQTTCLEAN(void)
-{
- char cCmd [120];
- sprintf ( cCmd, "AT+MQTTCLEAN=0");
- return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 );
-}
-
-//ESP8266ַ
-//enumEnUnvarnishTxǷʹģʽ
-//pStrַ
-//ulStrLengthַ
-//ucId Ӻ
-//óɹtrue ֮false
-bool MQTT_SendString(char * pTopic,char *temp2)
-{
-
- bool bRet = false;
- ESP8266_MQTTPUB(pTopic,temp2);
- delay_ms(1000);
- bRet = true;
- return bRet;
-}
-
+
\ No newline at end of file
diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h
index bfe5ab4e..935029bd 100644
--- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h
+++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h
@@ -24,6 +24,7 @@ typedef enum{
enumTCP,
enumUDP,
} ENUM_NetPro_TypeDef;
+
//ӺţָΪӺſԷֹͬһ˿ڶ
typedef enum{
Multiple_ID_0 = 0,
@@ -34,6 +35,26 @@ typedef enum{
Single_ID_0 = 5,
} ENUM_ID_NO_TypeDef;
+
+//ESP8266״̬
+typedef enum{
+ NET_STATUS_INIT = 0,
+ NET_STATUS_WIFI_CONNECTING,
+ NET_STATUS_WIFI_CONNECTED,
+ NET_STATUS_WIFI_FAILED,
+ NET_STATUS_CLOUD_SUCCESS,
+ NET_STATUS_CLOUD_FAIL,
+}connect_status_e;
+
+//ESP8266״̬
+typedef enum{
+ TYPE_RECV_CONNECT = 0,
+ TYPE_RECV_DISCONNECT,
+ TYPE_RECV_GOT_IP,
+ TYPE_RECV_SUBSCRIBE, // MQTT·Ϣ
+ TYPE_RECV_NONE,
+}type_recv_e;
+
#define ESP8266_RST_Pin GPIO_PIN_4 //λܽ
#define ESP8266_RST_Pin_Port GPIOA //λ
@@ -55,6 +76,10 @@ typedef enum{
#define RX_BUF_MAX_LEN 1024 //ֽ
+
+typedef int (*wifi_data_arrvied)(type_recv_e type, uint8_t *data, int len); // ָ룬WIFI
+
+
extern struct STRUCT_USART_Fram //֡ṹ
{
uint8_t Data_RX_BUF[RX_BUF_MAX_LEN];
@@ -67,13 +92,16 @@ extern struct STRUCT_USART_Fram //
__IO uint16_t FramFinishFlag :1; // 15
}InfBit;
};
+ wifi_data_arrvied wifi_data_recv_cb;
}ESP8266_Fram_Record_Struct;
+
//ʼTCPܺ
void ESP8266_Init(uint32_t bound);
void ESP8266_AT_Test(void);
+void ESP8266_ATE0(void);
bool ESP8266_Send_AT_Cmd(char *cmd,char *ack1,char *ack2,uint32_t time);
void ESP8266_Rst(void);
bool ESP8266_Net_Mode_Choose(ENUM_Net_ModeTypeDef enumMode);
diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c
index 8f621499..be984675 100644
--- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c
+++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c
@@ -1,42 +1,324 @@
#include "mqtt.h"
-void ESP8266_STA_MQTTClient_Init(void)
-{
- char str[] = "{\
- \"deviceNum\": \"E8DB84933089\",\
- \"relayStatus\": 0,\
- \"lightStatus\": 0,\
- \"isOnline\": 1,\
- \"rssi\": -54,\
- \"deviceTemperature\": 40,\
- \"airTemperature\": 0,\
- \"airHumidity\": 0,\
- \"triggerSource\": 0,\
- \"brightness\": 11,\
- \"lightInterval\": 432,\
- \"lightMode\": 0,\
- \"fadeTime\": 259,\
- \"red\": 255,\
- \"green\": 0,\
- \"blue\": 0,\
- \"remark\":{\"door_status\":1, \"light\":60}\
- }";
- printf("ESP8266\r\n");
- // ESP8266_AT_Test();//ָĬģʽ
- ESP8266_Net_Mode_Choose(STA);
- while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));
- ESP8266_MQTTUSERCFG(User_ESP8266_client_id,User_ESP8266_username,User_ESP8266_password);
- ESP8266_MQTTCONN( User_ESP8266_MQTTServer_IP, User_ESP8266_MQTTServer_PORT);
- ESP8266_MQTTSUB( User_ESP8266_MQTTServer_Topic_SUB);
- printf("\r\nMQTT");
-
-// sprintf(str,"{}");//ʽַMQTT
- MQTT_SendString (User_ESP8266_MQTTServer_Topic_PUB,str);//ݵMQTT
-
-// while(1)
-// {
+#define MQTT_NAME "n87ieud/my_board2"
+#define MQTT_PW "k4e9trh5qjwjhc2q"
+#define MQTT_CLIENT_ID "my_board2"
-// delay_ms(20);
-// }
+#define MQTT_TOPIC_UPDATE "$baidu/iot/shadow/my_board2/update"
+#define MQTT_TOPIC_DELTA "$baidu/iot/shadow/my_board2/delta"
+#define MQTT_TOPIC_SNAPSHOT "$baidu/iot/shadow/my_board2/update/snapshot"
+
+
+char str[] = "{\"deviceNum\": \"E8DB84933089\",\"relayStatus\": 0,\"lightStatus\": 0,\"isOnline\": 1,\"rssi\": -54,\"deviceTemperature\": 38}";
+
+static int mqtt_send(uint8_t head, uint32_t vlen, uint8_t *vhead,
+ uint32_t pay_len, uint8_t *payload)
+{
+ int32_t tmp_encode, tmp_x;
+ uint32_t i = 0;
+ uint8_t msg[RX_BUFF_LEN];
+ msg[i++] = head;
+
+ tmp_x = vlen + pay_len;
+ do {
+ tmp_encode = tmp_x % 128;
+ tmp_x = tmp_x / 128;
+ if (tmp_x > 0) {
+ tmp_encode = tmp_encode | 128;
+ }
+ msg[i++] = tmp_encode;
+ } while (tmp_x > 0);
+
+ if (vlen != 0) {
+ memcpy(&msg[i], vhead, vlen);
+ i = i + vlen;
+ }
+ if (pay_len != 0) {
+ memcpy(&msg[i], payload, pay_len);
+ i = i + pay_len;
+ }
+ esp8266_send(msg, i);
+
+ return 0;
+}
+static int mqtt_str_fill(uint8_t *outbuff, char *instr)
+{
+ uint8_t *p_tmp;
+ p_tmp = &outbuff[2];
+ outbuff[0] = strlen(instr) / 256;
+ outbuff[1] = strlen(instr) % 256;
+ strcpy((char*) p_tmp, (char*) instr);
+ return 0;
+}
+
+static int mqtt_recv(uint8_t *ackbuff, uint16_t *ack_len, int timeout)
+{
+
+ do {
+ if (esp8266_recv(ackbuff, &ack_len) == 0) {
+ return 0;
+ }
+ if (timeout > 0) {
+ HAL_Delay(100);
+ } else {
+ return -1;
+ }
+
+ } while (timeout--);
+ return -1;
+}
+
+static int mqtt_ack_check(uint8_t head, int timeout, uint16_t msg_id)
+{
+ uint8_t recv_head;
+ uint8_t recv_buff[RX_BUFF_LEN];
+ uint16_t recv_len;
+
+ if (mqtt_recv(recv_buff, &recv_len, timeout) != 0) {
+ return -1;
+ }
+ recv_head = recv_buff[0];
+
+ if ((head & recv_head) != head) {
+ return -1;
+ }
+ switch (recv_head & 0xF0) {
+ case MQTT_CONNACK:
+ return 0;
+ case MQTT_PUBACK:
+ return 0;
+ case MQTT_SUBACK:
+ return 0;
+ case MQTT_PINGRESP:
+ return 0;
+ default:
+ return -1;
+ }
+ return -1;
+}
+
+static int mqtt_connect(char *name, char *pwd, char *client_id)
+{
+ uint32_t i, j;
+ uint8_t vhead[512];
+ uint8_t payload[512];
+ uint8_t connec_flag = 0;
+ uint8_t head;
+ uint16_t keep_alive = 60;
+
+ i = 0;
+ vhead[i++] = 0;
+ vhead[i++] = 4;
+ vhead[i++] = 'M';
+ vhead[i++] = 'Q';
+ vhead[i++] = 'T';
+ vhead[i++] = 'T';
+ vhead[i++] = 4;
+
+ if (name != NULL) {
+ connec_flag = connec_flag | CONNECT_FLAG_NAME;
+ }
+ if (pwd != NULL) {
+ connec_flag = connec_flag | CONNECT_FLAG_PWD;
+ }
+ vhead[i++] = connec_flag;
+ vhead[i++] = keep_alive / 256;
+ vhead[i++] = keep_alive % 256;
+
+ j = 0;
+ mqtt_str_fill(&payload[j], client_id);
+ j = j + strlen(client_id) + 2;
+ mqtt_str_fill(&payload[j], name);
+ j = j + strlen(name) + 2;
+ mqtt_str_fill(&payload[j], pwd);
+ j = j + strlen(pwd) + 2;
+
+ head = MQTT_CONNECT;
+
+ mqtt_send(head, i, vhead, j, payload);
+ if (mqtt_ack_check(MQTT_CONNACK, 100, 0) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int mqtt_disconnect(void)
+{
+ uint8_t head;
+ head = MQTT_DISCONNECT;
+ mqtt_send(head, 0, NULL, 0, NULL);
+}
+static int mqtt_publish(char *topic, uint8_t *msg, uint16_t msg_len,
+ uint16_t msg_id)
+{
+ uint32_t i, j;
+ uint8_t vhead[512];
+ uint8_t head;
+ uint8_t payload[512];
+
+ head = 0;
+ head = head | MQTT_PUBLISH;
+ head = head | PUBLISH_FLAG_RETN;
+ head = head | PUBLISH_FLAG_QOS1;
+
+ i = 0;
+ mqtt_str_fill(&vhead[i], topic);
+ i = i + strlen(topic) + 2;
+ vhead[i++] = msg_id >> 8;
+ vhead[i++] = msg_id;
+
+ j = 0;
+ memcpy(payload, msg, msg_len);
+ j = j + msg_len;
+
+ mqtt_send(head, i, vhead, j, payload);
+
+ if (mqtt_ack_check(MQTT_PUBACK, 100, msg_id) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int mqtt_publish_ack(uint16_t msg_id)
+{
+ uint32_t i, j;
+ uint8_t vhead[512];
+ uint8_t head;
+ uint8_t payload[512];
+ head = MQTT_PUBACK;
+ i = 0;
+ vhead[i++] = msg_id >> 8;
+ vhead[i++] = msg_id;
+ j = 0;
+ mqtt_send(head, i, vhead, j, payload);
+ return 0;
+}
+
+static int mqtt_subscriber(char *topic, uint16_t msg_id)
+{
+ uint32_t i, j;
+ uint8_t vhead[512];
+ uint8_t payload[512];
+ uint8_t head;
+ head = MQTT_SUBSCRIBE;
+ head = head | 0x02;
+ i = 0;
+ vhead[i++] = msg_id >> 8;
+ vhead[i++] = msg_id;
+
+ j = 0;
+ mqtt_str_fill(&payload[j], topic);
+ j = j + strlen(topic) + 2;
+ payload[j++] = 1;
+ mqtt_send(head, i, vhead, j, payload);
+ if (mqtt_ack_check(MQTT_SUBACK, 100, msg_id) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+static int mqtt_publish_from_cloud(uint8_t *ackbuff, uint16_t ack_len)
+{
+ uint32_t i = 0;
+ uint16_t multiplier = 1;
+ uint32_t remain_len = 0;
+ uint32_t vhead_len;
+ uint32_t payload_len;
+ uint8_t byte;
+ uint8_t payload[512];
+ uint16_t msg_id;
+ uint8_t topic[256];
+ i = 1;
+
+ memset(topic, 0, 256);
+ memset(payload, 0, 256);
+ do {
+ byte = ackbuff[i++];
+ remain_len += (byte & 0x7F) * multiplier;
+ multiplier *= 128;
+ if (multiplier > 128 * 128 * 128) {
+ return -1;
+ }
+ } while ((byte & 0x80) != 0);
+ vhead_len = ackbuff[i++];
+ vhead_len = (vhead_len * 256) + ackbuff[i++];
+ memcpy(topic, &ackbuff[i], vhead_len);
+
+ i = i + vhead_len;
+ msg_id = ackbuff[i++];
+ msg_id = (msg_id * 256) + ackbuff[i++];
+
+ payload_len = remain_len - vhead_len - 4;
+
+ memcpy(payload, &ackbuff[i], payload_len);
+ if (strcmp((char*) topic, MQTT_TOPIC_DELTA) == 0) {
+ sensor_data_set(payload);
+ }
+ mqtt_publish_ack(msg_id);
+ return 0;
+}
+
+uint16_t msg_id = 1;
+
+int mqtt_beat(void)
+{
+ uint8_t head = MQTT_PINGREQ;
+ uint8_t vhead[5];
+ uint8_t payload[5];
+ uint32_t i = 0, j = 0;
+ mqtt_send(head, i, vhead, j, payload);
+ if (mqtt_ack_check(MQTT_PINGRESP, 100, 0) != 0) {
+ if (mqtt_connect(MQTT_NAME, MQTT_PW, MQTT_CLIENT_ID) != 0) {
+ return -1;
+ }else{
+ return 0;
+ }
+ }
+ return 0;
+}
+
+int mqtt_handle(void)
+{
+ uint8_t recv_head;
+ uint8_t recv_buff[RX_BUFF_LEN];
+ uint16_t recv_len;
+
+ if (mqtt_recv(recv_buff, &recv_len, 0) != 0) {
+ return -1;
+ }
+ recv_head = recv_buff[0];
+
+ switch (recv_head & 0xF0) {
+ case MQTT_PUBLISH:
+ return mqtt_publish_from_cloud(recv_buff, recv_len);
+ default:
+ return -1;
+ }
+ return -1;
+}
+
+int mqtt_publish_update(uint8_t *msg, uint16_t msg_len)
+{
+ if (mqtt_publish(MQTT_TOPIC_UPDATE, msg, msg_len, msg_id++) != 0) {
+ return -1;
+ }
+ return 0;
+}
+
+int mqtt_init(void)
+{
+ if (mqtt_connect(MQTT_NAME, MQTT_PW, MQTT_CLIENT_ID) != 0) {
+ mqtt_disconnect();
+ esp8266_init();
+ HAL_Delay(100);
+ if (mqtt_connect(MQTT_NAME, MQTT_PW, MQTT_CLIENT_ID) != 0) {
+ return -1;
+ }
+ }
+
+ if (mqtt_subscriber(MQTT_TOPIC_DELTA, msg_id++) != 0) {
+ return -1;
+ }
+ return 0;
}
diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h
index c34d1324..6d6e38e2 100644
--- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h
+++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h
@@ -1,27 +1,70 @@
#ifndef __MQTT_H
#define __MQTT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include "main.h"
#include "esp8266.h"
-/*
-*²ҪûIJܲù
-*/
-
#define User_ESP8266_SSID "brown" //wifi
#define User_ESP8266_PWD "123456789a" //wifi
#define User_ESP8266_client_id "50fccfefb50a48b98a93ce27bb04591f" //MQTTclientID ڱ־client 256ֽ
#define User_ESP8266_username "admin" //ڵ¼ MQTT username, 64 ֽ
-#define User_ESP8266_password "admin13" //ڵ¼ MQTT password, 64 ֽ
+#define User_ESP8266_password "admin123" //ڵ¼ MQTT password, 64 ֽ
#define User_ESP8266_MQTTServer_IP "106.12.9.213" //MQTTطIP
#define User_ESP8266_MQTTServer_PORT 1883 //˿ں
#define User_ESP8266_MQTTServer_Topic_PUB "status" //MQTT
#define User_ESP8266_MQTTServer_Topic_SUB "status/set/E8DB84933089" //MQTT
+enum{
+ MQTT_NULL = 0,
+ MQTT_CONNECT = 1 << 4,
+ MQTT_CONNACK = 2 << 4,
+ MQTT_PUBLISH = 3 << 4,
+ MQTT_PUBACK = 4 << 4,
+ MQTT_PUBREC = 5 << 4,
+ MQTT_PUBREL = 6 << 4,
+ MQTT_PUBCOMP = 7 << 4,
+ MQTT_SUBSCRIBE = 8 << 4,
+ MQTT_SUBACK = 9 << 4,
+ MQTT_UNSUBSCRIBE= 10 << 4,
+ MQTT_UNSUBACK = 11 << 4,
+ MQTT_PINGREQ = 12 << 4,
+ MQTT_PINGRESP = 13 << 4,
+ MQTT_DISCONNECT = 14 << 4,
+}MQTT_HEAD_T;
-void ESP8266_STA_MQTTClient_Init(void);
+enum{
+ CONNECT_FLAG = 0,
+ CONNECT_FLAG_NAME = 1 << 7,
+ CONNECT_FLAG_PWD = 1 << 6,
+ CONNECT_FLAG_RETAIN = 1 << 5,
+ CONNECT_FLAG_QOS = 1 << 4,
+ CONNECT_FLAG_FLAG = 1 << 2,
+ CONNECT_FLAG_CLS = 1 << 1,
+}CONNECT_T;
+enum{
+ PUBLISH_FLAG_RETN = 1,
+ PUBLISH_FLAG_QOS0 = 0,
+ PUBLISH_FLAG_QOS1 = 1 << 1,
+ PUBLISH_FLAG_QOS2 = 1 << 2,
+ PUBLISH_FLAG_DUP = 1 << 3,
+}PUBLISH_FLAG_T;
+
+int mqtt_init(void);
+int mqtt_handle(void);
+int mqtt_beat(void);
+int mqtt_publish_update(uint8_t *msg, uint16_t msg_len);
+
+
+#ifdef __cplusplus
+}
#endif
+#endif /* __MQTT_H */
+
diff --git a/spring-boot/ruoyi-admin/pom.xml b/spring-boot/ruoyi-admin/pom.xml
index fe370b40..ed8d8da6 100644
--- a/spring-boot/ruoyi-admin/pom.xml
+++ b/spring-boot/ruoyi-admin/pom.xml
@@ -8,6 +8,7 @@
3.4.0
4.0.0
+
jar
ruoyi-admin
diff --git a/spring-boot/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/spring-boot/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 9d2daa6c..51f9d2a0 100644
--- a/spring-boot/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/spring-boot/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -124,7 +124,7 @@ public class SysUserController extends BaseController
/**
* 新增用户
*/
-// @PreAuthorize("@ss.hasPermi('system:user:add')")
+ @PreAuthorize("@ss.hasPermi('system:user:add')")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation(value = "新增用户", notes = "新增用户")
@@ -149,6 +149,33 @@ public class SysUserController extends BaseController
return toAjax(userService.insertUser(user));
}
+ /**
+ * 用户注册
+ */
+ @Log(title = "用户管理", businessType = BusinessType.INSERT)
+ @PostMapping("/register")
+ @ApiOperation(value = "用户注册", notes = "用户注册")
+ public AjaxResult register(@Validated @RequestBody SysUser user)
+ {
+ if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName())))
+ {
+ return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
+ }
+ else if (StringUtils.isNotEmpty(user.getPhonenumber())
+ && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
+ {
+ return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
+ }
+ else if (StringUtils.isNotEmpty(user.getEmail())
+ && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
+ {
+ return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+ }
+ user.setDelFlag("0");
+ user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+ return toAjax(userService.insertUser(user));
+ }
+
/**
* 修改用户
*/
diff --git a/spring-boot/ruoyi-admin/src/main/resources/application-druid.yml b/spring-boot/ruoyi-admin/src/main/resources/application-druid.yml
index 4b8de442..41297b37 100644
--- a/spring-boot/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/spring-boot/ruoyi-admin/src/main/resources/application-druid.yml
@@ -8,7 +8,7 @@ spring:
master:
url: jdbc:mysql://localhost:3306/wumei-smart?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
- password: admin123
+ password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
diff --git a/spring-boot/ruoyi-admin/src/main/resources/application.yml b/spring-boot/ruoyi-admin/src/main/resources/application.yml
index 7643ef3f..8a05437d 100644
--- a/spring-boot/ruoyi-admin/src/main/resources/application.yml
+++ b/spring-boot/ruoyi-admin/src/main/resources/application.yml
@@ -65,7 +65,7 @@ spring:
# 数据库索引
database: 0
# 密码
- password: admin123
+ password:
# 连接超时时间
timeout: 10s
lettuce:
diff --git a/spring-boot/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/spring-boot/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index a8a61d42..e71fccb2 100644
--- a/spring-boot/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/spring-boot/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.authorizeRequests()
// 对于登录login 验证码captchaImage 允许匿名访问
- .antMatchers("/login", "/captchaImage").anonymous()
+ .antMatchers("/login", "/captchaImage","/system/user/register").anonymous()
.antMatchers(
HttpMethod.GET,
"/*.html",
@@ -113,7 +113,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers("/webjars/**").anonymous()
.antMatchers("/*/api-docs").anonymous()
.antMatchers("/druid/**").anonymous()
- .antMatchers("/system/user/**").anonymous()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
.and()