mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-17 16:36:03 +08:00
Merge branch 'master' of gitee.com:kerwincui/wumei-smart
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
2. 服务端使用spring boot、数据库mysql和redis、前端vue、移动端android、硬件端ESP-IDF和Arduino等。软硬件交互基于Mqtt协议,使用EMQ代理服务器。系统架构图如下:
|
2. 服务端使用spring boot、数据库mysql和redis、前端vue、移动端android、硬件端ESP-IDF和Arduino等。软硬件交互基于Mqtt协议,使用EMQ代理服务器。系统架构图如下:
|
||||||
<br /><br />
|
<br /><br />
|
||||||

|

|
||||||
|

|
||||||

|

|
||||||
|
|
||||||
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)<br /><br />
|
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)<br /><br />
|
||||||
@@ -63,7 +64,7 @@ docker run \
|
|||||||
--publish 6379:6379 \
|
--publish 6379:6379 \
|
||||||
--restart always \
|
--restart always \
|
||||||
--detach \
|
--detach \
|
||||||
kerwincui/wumei-smart:1.0
|
registry.cn-chengdu.aliyuncs.com/kerwincui/wumei-smart:1.0
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. 扫码下载APP安装,打开APP,跳过登录,配置服务端地址
|
#### 3. 扫码下载APP安装,打开APP,跳过登录,配置服务端地址
|
||||||
@@ -96,10 +97,11 @@ kerwincui/wumei-smart:1.0
|
|||||||
* [若依文档](http://doc.ruoyi.vip/ruoyi-vue/),前端和后端基于Ruoyi-Vue,前后端分离权限管理系统
|
* [若依文档](http://doc.ruoyi.vip/ruoyi-vue/),前端和后端基于Ruoyi-Vue,前后端分离权限管理系统
|
||||||
* [XUI](https://gitee.com/xuexiangjys/XUI),Android基于XUI开发,是一个简洁而优雅的原生UI框架
|
* [XUI](https://gitee.com/xuexiangjys/XUI),Android基于XUI开发,是一个简洁而优雅的原生UI框架
|
||||||
* [ESP-IDF编程指南](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/index.html)
|
* [ESP-IDF编程指南](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/index.html)
|
||||||
|
* [EMQ文档](https://docs.emqx.cn)
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
### 七、加入讨论群:1073236354
|
### 七、加入互助交流群:1073236354(一群) 252664672(二群)
|
||||||
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=P_oc91N6KC39zp2PEV_-BY3xMnAokeZ8&jump_from=webapi"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="物美智能wumeismart" title="物美智能wumeismart"></a>
|
<a target="_blank" href="https://qm.qq.com/cgi-bin/qm/qr?k=P_oc91N6KC39zp2PEV_-BY3xMnAokeZ8&jump_from=webapi"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="物美智能wumeismart" title="物美智能wumeismart"></a>
|
||||||
<br /><br />
|
<br /><br />
|
||||||
|
|
||||||
|
|||||||
@@ -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进行多渠道打包。
|
||||||
@@ -108,8 +108,9 @@ dependencies {
|
|||||||
//屏幕适配AutoSize
|
//屏幕适配AutoSize
|
||||||
implementation 'me.jessyan:autosize:1.1.2'
|
implementation 'me.jessyan:autosize:1.1.2'
|
||||||
//umeng统计
|
//umeng统计
|
||||||
implementation 'com.umeng.umsdk:analytics:8.0.2'
|
// implementation 'com.umeng.umsdk:analytics:8.0.2'
|
||||||
implementation 'com.umeng.umsdk:common:2.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'
|
implementation 'me.samlss:broccoli:1.0.0'
|
||||||
|
|||||||
BIN
document/sys2.png
Normal file
BIN
document/sys2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
@@ -271,42 +271,47 @@ static void radar_sense(void *arg) {
|
|||||||
ESP_LOGI(TAG, "begin radar sense");
|
ESP_LOGI(TAG, "begin radar sense");
|
||||||
uint16_t num=0;
|
uint16_t num=0;
|
||||||
while(true){
|
while(true){
|
||||||
// if(is_radar==1 && is_alarm==1){
|
if(is_radar==1 && is_alarm==1){
|
||||||
// if(gpio_get_level(IO_RADAR_OUT)==1){
|
if(gpio_get_level(IO_RADAR_OUT)==1){
|
||||||
// if(relay_status==0) {
|
if(relay_status==0) {
|
||||||
// open_relay();
|
relay_status=1;
|
||||||
// led_rgb_blink(255,0,0,100,0,0,3,1000); //红灯闪烁
|
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){
|
else{
|
||||||
// close_relay();
|
//超过指定时间后关闭
|
||||||
// light_status=0;
|
if(relay_status==1 && num >5*radar_interval){
|
||||||
// led_status();
|
relay_status=0;
|
||||||
// num=0;
|
close_relay();
|
||||||
// }
|
light_status=0;
|
||||||
// num++;
|
led_status();
|
||||||
// }
|
num=0;
|
||||||
// } else if(is_radar==1) {
|
}
|
||||||
// if(gpio_get_level(IO_RADAR_OUT)==1){
|
num++;
|
||||||
// if(relay_status==0) {
|
}
|
||||||
// open_relay();
|
} else if(is_radar==1) {
|
||||||
// light_status=1;
|
if(gpio_get_level(IO_RADAR_OUT)==1){
|
||||||
// led_status();
|
if(relay_status==0) {
|
||||||
// }
|
relay_status=1;
|
||||||
// }
|
open_relay();
|
||||||
// else{
|
light_status=1;
|
||||||
// //超过指定时间后关闭
|
led_status();
|
||||||
// if(relay_status==1 && num >5*radar_interval){
|
}
|
||||||
// close_relay();
|
}
|
||||||
// light_status=0;
|
else{
|
||||||
// led_status();
|
//超过指定时间后关闭
|
||||||
// num=0;
|
if(relay_status==1 && num >5*radar_interval){
|
||||||
// }
|
relay_status=0;
|
||||||
// num++;
|
close_relay();
|
||||||
// }
|
light_status=0;
|
||||||
// }
|
led_status();
|
||||||
|
num=0;
|
||||||
|
}
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
}
|
||||||
vTaskDelay(pdMS_TO_TICKS(200));
|
vTaskDelay(pdMS_TO_TICKS(200));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ char ssid[33]="wifi-ssid"; // wifi的SSID
|
|||||||
char pwd[65]="wifi-password"; // wifi的密码
|
char pwd[65]="wifi-password"; // wifi的密码
|
||||||
char owner_id[64]="1"; // 用户ID
|
char owner_id[64]="1"; // 用户ID
|
||||||
|
|
||||||
char open_broken_url[128]=""; // 二次开发mqtt服务器地址
|
// char open_broken_url[128]="wumei.live:1883"; // 二次开发mqtt服务器地址
|
||||||
char open_account[64]=""; // 二次开发mqtt账号
|
// char open_account[64]="admin"; // 二次开发mqtt账号
|
||||||
char open_pwd[64]=""; // 二次开发mqtt密码
|
// char open_pwd[64]="admin123"; // 二次开发mqtt密码
|
||||||
|
|
||||||
uint8_t relay_status=0; // 继电器状态 0-关闭,1-打开
|
uint8_t relay_status=0; // 继电器状态 0-关闭,1-打开
|
||||||
uint8_t light_status=0; // 灯的状态 0-关闭 1-打开
|
uint8_t light_status=0; // 灯的状态 0-关闭 1-打开
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<version>3.4.0</version>
|
<version>3.4.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<!-- jar部署:pom war部署:war-->
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<artifactId>ruoyi-admin</artifactId>
|
<artifactId>ruoyi-admin</artifactId>
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
@Log(title = "用户管理", businessType = BusinessType.INSERT)
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ApiOperation(value = "新增用户", notes = "新增用户")
|
@ApiOperation(value = "新增用户", notes = "新增用户")
|
||||||
@@ -149,6 +149,33 @@ public class SysUserController extends BaseController
|
|||||||
return toAjax(userService.insertUser(user));
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改用户
|
* 修改用户
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
|||||||
// 过滤请求
|
// 过滤请求
|
||||||
.authorizeRequests()
|
.authorizeRequests()
|
||||||
// 对于登录login 验证码captchaImage 允许匿名访问
|
// 对于登录login 验证码captchaImage 允许匿名访问
|
||||||
.antMatchers("/login", "/captchaImage").anonymous()
|
.antMatchers("/login", "/captchaImage","/system/user/register").anonymous()
|
||||||
.antMatchers(
|
.antMatchers(
|
||||||
HttpMethod.GET,
|
HttpMethod.GET,
|
||||||
"/*.html",
|
"/*.html",
|
||||||
@@ -113,7 +113,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
|
|||||||
.antMatchers("/webjars/**").anonymous()
|
.antMatchers("/webjars/**").anonymous()
|
||||||
.antMatchers("/*/api-docs").anonymous()
|
.antMatchers("/*/api-docs").anonymous()
|
||||||
.antMatchers("/druid/**").anonymous()
|
.antMatchers("/druid/**").anonymous()
|
||||||
.antMatchers("/system/user/**").anonymous()
|
|
||||||
// 除上面外的所有请求全部需要鉴权认证
|
// 除上面外的所有请求全部需要鉴权认证
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
.and()
|
.and()
|
||||||
|
|||||||
Reference in New Issue
Block a user