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代理服务器。系统架构图如下:

![图片](https://gitee.com/kerwincui/wumei-smart/raw/master/document/sys.png) +![图片](https://gitee.com/kerwincui/wumei-smart/raw/master/document/sys2.png) ![图片](https://gitee.com/kerwincui/wumei-smart/raw/master/document/directory.png) 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 @@ ![案例](https://gitee.com/kerwincui/wumei-smart/raw/master/document/case1.gif) 2. Wifi控制器和LED灯板制作七彩智能灯 ![案例](https://gitee.com/kerwincui/wumei-smart/raw/master/document/case3.gif) -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) ![案例](https://gitee.com/kerwincui/wumei-smart/raw/master/document/case5.gif) 4. 物联网入门学习套件 [详情和购买方式 >>](https://gitee.com/kerwincui/wumei-smart/wikis/pages?sort_id=4233922&doc_id=1506495) ![案例](https://gitee.com/kerwincui/wumei-smart/raw/master/document/case4.gif) @@ -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(二群) 物美智能wumeismart

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/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-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()