From f93d95e5cc982ea6af179625fd7e2c9fee218c12 Mon Sep 17 00:00:00 2001
From: kerwincui <164770707@qq.com>
Date: Thu, 4 Aug 2022 22:23:54 +0800
Subject: [PATCH 01/16] =?UTF-8?q?=E9=85=8D=E7=BD=91=E5=90=8E=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=BB=B6=E6=97=B6=EF=BC=8C=E7=AD=89=E5=BE=85=E8=AE=BE?=
=?UTF-8?q?=E5=A4=87=E8=BF=94=E5=9B=9E=E7=8A=B6=E6=80=81=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sdk/Arduino/WumeiArduino/Config.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sdk/Arduino/WumeiArduino/Config.cpp b/sdk/Arduino/WumeiArduino/Config.cpp
index c4d29ac7..9c81763a 100644
--- a/sdk/Arduino/WumeiArduino/Config.cpp
+++ b/sdk/Arduino/WumeiArduino/Config.cpp
@@ -69,8 +69,9 @@ void connectWifi()
{
if (isApMode)
{
- // 关闭AP配网模式
+ // 关闭AP配网模式,延迟2秒确保返回状态码给手机
isApMode = false;
+ delay(2000);
server.stop();
ledStatus(false);
}
From fb51c2a2056e60d9d54d6212dd9afc90cd594400 Mon Sep 17 00:00:00 2001
From: kerwincui <164770707@qq.com>
Date: Thu, 4 Aug 2022 22:24:20 +0800
Subject: [PATCH 02/16] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8F=AF=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E5=85=B3=E8=81=94=E7=9A=84=E7=94=A8=E6=88=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/ruoyi/iot/domain/Product.java | 10 +++---
.../iot/service/impl/DeviceServiceImpl.java | 32 +++++++++++++++++--
2 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java
index 63e25362..7a319b5b 100644
--- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java
+++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/domain/Product.java
@@ -64,19 +64,19 @@ public class Product extends BaseEntity
}
/** 状态(1-未发布,2-已发布,不能修改) */
- @Excel(name = "状态", readConverterExp = "1=-未发布,2-已发布,不能修改")
+ @Excel(name = "状态", readConverterExp = "1==未发布,2=已发布,不能修改")
private Integer status;
/** 设备类型(1-直连设备、2-网关子设备、3-网关设备) */
- @Excel(name = "设备类型", readConverterExp = "1=-直连设备、2-网关子设备、3-网关设备")
+ @Excel(name = "设备类型", readConverterExp = "1=直连设备、2=网关子设备、3=网关设备")
private Integer deviceType;
- /** 联网方式(1-wifi、2-蓝牙、3-wifi+蓝牙) */
- @Excel(name = "联网方式", readConverterExp = "1=-wifi、2-蓝牙、3-wifi+蓝牙")
+ /** 联网方式(1=-wifi、2-蜂窝(2G/3G/4G/5G)、3-以太网、4-其他) */
+ @Excel(name = "联网方式", readConverterExp = "1=-wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他")
private Integer networkMethod;
/** 认证方式(1-账号密码、2-证书、3-Http) */
- @Excel(name = "认证方式", readConverterExp = "1=-账号密码、2-证书、3-Http")
+ @Excel(name = "认证方式", readConverterExp = "1=账号密码、2=证书、3=Http")
private Integer vertificateMethod;
/** 图片地址 */
diff --git a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java
index 574ca886..c815cd5e 100644
--- a/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java
+++ b/springboot/wumei-iot/src/main/java/com/ruoyi/iot/service/impl/DeviceServiceImpl.java
@@ -574,7 +574,7 @@ public class DeviceServiceImpl implements IDeviceService {
return AjaxResult.error("用户已经拥有设备:" + existDevice.getDeviceName() + ", 设备编号:" + existDevice.getSerialNumber());
}
// 先删除设备的所有用户
- deviceUserMapper.deleteDeviceUserByDeviceId(new UserIdDeviceIdModel(null,existDevice.getDeviceId()));
+ deviceUserMapper.deleteDeviceUserByDeviceId(new UserIdDeviceIdModel(null, existDevice.getDeviceId()));
// 添加新的设备用户
DeviceUser deviceUser = new DeviceUser();
deviceUser.setUserId(sysUser.getUserId());
@@ -902,6 +902,7 @@ public class DeviceServiceImpl implements IDeviceService {
* @return 结果
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public int reportDevice(Device device, Device deviceEntity) {
// 未采用设备定位则清空定位,定位方式(1=ip自动定位,2=设备定位,3=自定义)
if (deviceEntity.getLocationWay() != 2) {
@@ -910,11 +911,38 @@ public class DeviceServiceImpl implements IDeviceService {
}
int result = 0;
if (deviceEntity != null) {
- // 更新设备信息
+ // 联网方式为Wifi的需要更新用户信息(1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他)
+ Product product = productService.selectProductByProductId(deviceEntity.getProductId());
+ if (product.getNetworkMethod() == 1) {
+ if (deviceEntity.getUserId().longValue() != device.getUserId().longValue()) {
+ // 先删除设备的所有用户
+ deviceUserMapper.deleteDeviceUserByDeviceId(new UserIdDeviceIdModel(null, deviceEntity.getDeviceId()));
+ // 添加新的设备用户
+ SysUser sysUser = userService.selectUserById(device.getUserId());
+ DeviceUser deviceUser = new DeviceUser();
+ deviceUser.setUserId(sysUser.getUserId());
+ deviceUser.setUserName(sysUser.getUserName());
+ deviceUser.setPhonenumber(sysUser.getPhonenumber());
+ deviceUser.setDeviceId(deviceEntity.getDeviceId());
+ deviceUser.setDeviceName(deviceEntity.getDeviceName());
+ deviceUser.setTenantId(deviceEntity.getTenantId());
+ deviceUser.setTenantName(deviceEntity.getTenantName());
+ deviceUser.setIsOwner(1);
+ deviceUser.setCreateTime(DateUtils.getNowDate());
+ deviceUserMapper.insertDeviceUser(deviceUser);
+ // 更新设备用户信息
+ device.setUserId(device.getUserId());
+ device.setUserName(sysUser.getUserName());
+ }
+ }else{
+ // 其他联网设备不更新用户信息
+ device.setUserId(null);
+ }
device.setUpdateTime(DateUtils.getNowDate());
if (deviceEntity.getActiveTime() == null || deviceEntity.getActiveTime().equals("")) {
device.setActiveTime(DateUtils.getNowDate());
}
+ // 不更新物模型
device.setThingsModelValue(null);
result = deviceMapper.updateDeviceBySerialNumber(device);
}
From 1947a678274731a431ffc9232a899451316feee0 Mon Sep 17 00:00:00 2001
From: kerwincui <164770707@qq.com>
Date: Sat, 6 Aug 2022 00:30:36 +0800
Subject: [PATCH 03/16] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vue/src/views/iot/device/device-edit.vue | 3 ++-
vue/src/views/iot/device/running-status.vue | 11 +++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/vue/src/views/iot/device/device-edit.vue b/vue/src/views/iot/device/device-edit.vue
index 4dca6ad6..6d404a66 100644
--- a/vue/src/views/iot/device/device-edit.vue
+++ b/vue/src/views/iot/device/device-edit.vue
@@ -444,7 +444,8 @@ export default {
} else {
addDevice(this.form).then(response => {
this.form = response.data;
- this.oldDeviceStatus = this.from.status;
+ console.log(response);
+ this.oldDeviceStatus = this.form.status;
if (this.form.deviceId == null || this.form.deviceId == 0) {
this.$modal.alertError("设备编号已经存在,添加设备失败");
} else {
diff --git a/vue/src/views/iot/device/running-status.vue b/vue/src/views/iot/device/running-status.vue
index 368209c6..a2cbc1ca 100644
--- a/vue/src/views/iot/device/running-status.vue
+++ b/vue/src/views/iot/device/running-status.vue
@@ -217,6 +217,7 @@ export default {
this.MonitorChart();
});
});
+ this.connectMqtt();
}
}
},
@@ -259,10 +260,16 @@ export default {
}
},
created() {
- // 回调处理
- this.mqttCallback();
+
},
methods: {
+ /* 连接Mqtt消息服务器 */
+ async connectMqtt() {
+ if (this.$mqttTool.client == null) {
+ await this.$mqttTool.connect(this.vuex_token);
+ }
+ this.mqttCallback();
+ },
/* Mqtt回调处理 */
mqttCallback() {
this.$mqttTool.client.on('message', (topic, message, buffer) => {
From 6924802b1f52598dc6d71bc251c241ca03ca46c5 Mon Sep 17 00:00:00 2001
From: kerwincui <164770707@qq.com>
Date: Sat, 6 Aug 2022 01:23:48 +0800
Subject: [PATCH 04/16] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BC=96=E5=8F=B7?=
=?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=8C=E5=8F=AA=E8=83=BD=E4=B8=BA=E5=AD=97?=
=?UTF-8?q?=E6=AF=8D=E5=92=8C=E6=95=B0=E5=AD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vue/src/views/index.vue | 2 +-
vue/src/views/iot/device/device-edit.vue | 135 +++++++++++++----------
2 files changed, 78 insertions(+), 59 deletions(-)
diff --git a/vue/src/views/index.vue b/vue/src/views/index.vue
index aa3dfc75..093e4d7c 100644
--- a/vue/src/views/index.vue
+++ b/vue/src/views/index.vue
@@ -230,7 +230,7 @@
赞助用户:
-
可用于商业用途,并提供移动端源码,包含一年的更新。但是不能低价或批量转售源码,不能随意分发源码。目前赞助费为3000元,项目不断完善后会对应增加费用。
+
可用于商业用途,并提供移动端源码,包含一年的更新。但是不能低价或批量转售源码,不能随意分发源码。目前赞助费为3500元,项目不断完善后会对应增加费用。
diff --git a/vue/src/views/iot/device/device-edit.vue b/vue/src/views/iot/device/device-edit.vue
index 6d404a66..6d5ad7e6 100644
--- a/vue/src/views/iot/device/device-edit.vue
+++ b/vue/src/views/iot/device/device-edit.vue
@@ -15,7 +15,7 @@
* 设备编号
-
+
生成
@@ -152,7 +152,7 @@
@@ -232,7 +232,7 @@ export default {
data() {
return {
// 二维码内容
- qrText:'wumei-smart',
+ qrText: 'wumei-smart',
// 打开设备配置对话框
openSummary: false,
// 是否加载完成
@@ -271,6 +271,11 @@ export default {
required: true,
message: "设备名称不能为空",
trigger: "blur"
+ }, {
+ min: 2,
+ max: 5,
+ message: '设备名称长度在 2 到 5 个字符',
+ trigger: 'blur'
}],
firmwareVersion: [{
required: true,
@@ -294,61 +299,61 @@ export default {
},
destroyed() {
// 取消订阅主题
- this.mqttUnSubscribe(this.form);
+ this.mqttUnSubscribe(this.form);
},
methods: {
/* 连接Mqtt消息服务器 */
- async connectMqtt() {
- if (this.$mqttTool.client == null) {
- await this.$mqttTool.connect(this.vuex_token);
- }
- this.mqttCallback();
- },
+ async connectMqtt() {
+ if (this.$mqttTool.client == null) {
+ await this.$mqttTool.connect(this.vuex_token);
+ }
+ this.mqttCallback();
+ },
/* Mqtt回调处理 */
- mqttCallback() {
- this.$mqttTool.client.on('message', (topic, message, buffer) => {
- let topics = topic.split('/');
- let productId = topics[1];
- let deviceNum = topics[2];
- message = JSON.parse(message.toString());
- if (topics[3] == 'status') {
- console.log('接收到【设备状态-详情】主题:', topic);
- console.log('接收到【设备状态-详情】内容:', message);
- // 更新列表中设备的状态
- if (this.form.serialNumber == deviceNum) {
+ mqttCallback() {
+ this.$mqttTool.client.on('message', (topic, message, buffer) => {
+ let topics = topic.split('/');
+ let productId = topics[1];
+ let deviceNum = topics[2];
+ message = JSON.parse(message.toString());
+ if (topics[3] == 'status') {
+ console.log('接收到【设备状态-详情】主题:', topic);
+ console.log('接收到【设备状态-详情】内容:', message);
+ // 更新列表中设备的状态
+ if (this.form.serialNumber == deviceNum) {
this.oldDeviceStatus = message.status;
this.form.status = message.status;
- this.form.isShadow = message.isShadow;
- this.form.rssid = message.rssid;
- }
- }
- });
- },
+ this.form.isShadow = message.isShadow;
+ this.form.rssid = message.rssid;
+ }
+ }
+ });
+ },
/** Mqtt订阅主题 */
- mqttSubscribe(device) {
- // 订阅当前设备状态和实时监测
- let topicStatus = '/' + device.productId + '/' + device.serialNumber + '/status/post';
- let topicProperty = '/' + device.productId + '/' + device.serialNumber + '/property/post';
- let topicFunction = '/' + device.productId + '/' + device.serialNumber + '/function/post';
- let topics = [];
- topics.push(topicStatus);
- topics.push(topicProperty);
- topics.push(topicFunction);
- this.$mqttTool.subscribe(topics);
- },
- /** Mqtt取消订阅主题 */
- mqttUnSubscribe(device) {
- // 订阅当前设备状态和实时监测
- let topicStatus = '/' + device.productId + '/' + device.serialNumber + '/status/post';
- let topicProperty = '/' + device.productId + '/' + device.serialNumber + '/property/post';
- let topicFunction = '/' + device.productId + '/' + device.serialNumber + '/function/post';
- let topics = [];
- topics.push(topicStatus);
- topics.push(topicProperty);
- topics.push(topicFunction);
- console.log('取消订阅', topics);
- this.$mqttTool.unsubscribe(topics);
- },
+ mqttSubscribe(device) {
+ // 订阅当前设备状态和实时监测
+ let topicStatus = '/' + device.productId + '/' + device.serialNumber + '/status/post';
+ let topicProperty = '/' + device.productId + '/' + device.serialNumber + '/property/post';
+ let topicFunction = '/' + device.productId + '/' + device.serialNumber + '/function/post';
+ let topics = [];
+ topics.push(topicStatus);
+ topics.push(topicProperty);
+ topics.push(topicFunction);
+ this.$mqttTool.subscribe(topics);
+ },
+ /** Mqtt取消订阅主题 */
+ mqttUnSubscribe(device) {
+ // 订阅当前设备状态和实时监测
+ let topicStatus = '/' + device.productId + '/' + device.serialNumber + '/status/post';
+ let topicProperty = '/' + device.productId + '/' + device.serialNumber + '/property/post';
+ let topicFunction = '/' + device.productId + '/' + device.serialNumber + '/function/post';
+ let topics = [];
+ topics.push(topicStatus);
+ topics.push(topicProperty);
+ topics.push(topicFunction);
+ console.log('取消订阅', topics);
+ this.$mqttTool.unsubscribe(topics);
+ },
// 获取子组件订阅的设备状态
getDeviceStatus(status) {
@@ -374,7 +379,7 @@ export default {
this.oldDeviceStatus = this.form.status;
this.loadMap();
//Mqtt订阅
- this.mqttSubscribe(this.form);
+ this.mqttSubscribe(this.form);
});
},
/**加载地图*/
@@ -429,6 +434,20 @@ export default {
},
/** 提交按钮 */
submitForm() {
+ if (this.form.serialNumber == null || this.form.serialNumber == 0) {
+ this.$modal.alertError("设备编号不能为空");
+ return;
+ }
+ let reg = /^[0-9a-zA-Z]+$/;
+ if (!reg.test(this.form.serialNumber)) {
+ this.$modal.alertError("设备编号只能是字母和数字");
+ return;
+ }
+ if (this.form.productId == null || this.form.productId == 0) {
+ this.$modal.alertError("所属产品不能为空");
+ return;
+ }
+
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.deviceId != 0) {
@@ -476,13 +495,13 @@ export default {
},
/**关闭物模型 */
openSummaryDialog() {
- let json={
- type:1,// 1=扫码关联设备
- deviceNumber:this.form.serialNumber,
- productId:this.form.productId,
- productName:this.form.productName,
+ let json = {
+ type: 1, // 1=扫码关联设备
+ deviceNumber: this.form.serialNumber,
+ productId: this.form.productId,
+ productName: this.form.productName,
};
- this.qrText=JSON.stringify(json);
+ this.qrText = JSON.stringify(json);
this.openSummary = true;
},
/**关闭物模型 */
From a3a3f56d90cd1f19ebf06e6022b1f799edddefd9 Mon Sep 17 00:00:00 2001
From: kerwincui <164770707@qq.com>
Date: Sat, 6 Aug 2022 01:37:27 +0800
Subject: [PATCH 05/16] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=90=8D=E7=A7=B0?=
=?UTF-8?q?=E9=95=BF=E5=BA=A6=E9=99=90=E5=88=B62-32=E4=B8=AA=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vue/src/views/iot/device/device-edit.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/vue/src/views/iot/device/device-edit.vue b/vue/src/views/iot/device/device-edit.vue
index 6d5ad7e6..37715c9b 100644
--- a/vue/src/views/iot/device/device-edit.vue
+++ b/vue/src/views/iot/device/device-edit.vue
@@ -273,8 +273,8 @@ export default {
trigger: "blur"
}, {
min: 2,
- max: 5,
- message: '设备名称长度在 2 到 5 个字符',
+ max: 32,
+ message: '设备名称长度在 2 到 32 个字符',
trigger: 'blur'
}],
firmwareVersion: [{
From f9256a397acf0d93ba7e008885cfe7b55644cf7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 14:23:15 +0000
Subject: [PATCH 06/16] update README.md.
---
README.md | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
index d51bb916..8159390b 100644
--- a/README.md
+++ b/README.md
@@ -3,16 +3,15 @@
#### 1. 物美智能 [wumei-smart](http://wumei.live/) 是一个简单易用的生活物联网平台。可用于搭建物联网平台以及二次开发和学习。
-#### 2. 设备接入使用EMQX消息服务器,加密认证;后端采用Spring boot;前端采用Vue;移动端采用Uniapp;数据库采用Mysql、TDengine和Redis;设备端支持ESP32、ESP8266、树莓派等;系统架构图如下:
+#### 2. 项目采用AGPL3协议,可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://wumei.live/doc/pages/sponsor/)
+
+#### 3. 设备接入使用EMQX消息服务器,加密认证;后端采用Spring boot;前端采用Vue;移动端采用Uniapp;数据库采用Mysql、TDengine和Redis;设备端支持ESP32、ESP8266、树莓派等;系统架构图如下:
-#### 3. 项目采用AGPL3协议,可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://wumei.live/doc/pages/sponsor/)
-
-#### 4. 参考设备
-| [空气检测仪](https://wumei.live/doc/pages/hardware/) | [Wifi通断器](https://wumei.live/doc/pages/hardware/) | [智能插座](https://wumei.live/doc/pages/hardware/) | [智能开关](https://wumei.live/doc/pages/hardware/) | [Wifi通断器](https://wumei.live/doc/pages/hardware/) |
+#### 4. 相关硬件
+|[空气检测仪](https://wumei.live/doc/pages/hardware/) | [物联网开发板](https://wumei.live/doc/pages/hardware/) | [Air724开发板](https://wumei.live/doc/pages/hardware/) | [智能开关](https://wumei.live/doc/pages/hardware/) | [查看更多>>](https://wumei.live/doc/pages/hardware/) |
| :----: | :----------: |:----------: |:----------: |:----------: |
-|  |  |  |  |  |
-
+|  |  |  | |  |
@@ -20,12 +19,12 @@
- 权限管理: 用户管理、部门管理、岗位管理、菜单管理、角色管理、字典和参数管理等
- 系统监控: 操作日志、登录日志、系统日志、在线用户、服务监控、连接池监控、缓存监控等
- 产品管理: 产品、产品物模型、产品分类、产品固件、设备授权码等
-- 设备管理: 控制、分组、定时、日志、统计、定位、分享、配置、配网、禁用、OTA升级、实时状态、自动注册、影子模式、实时监测、加密认证等
+- 设备管理: 设备控制、设备分组、设备定时、设备日志、监测统计、设备定位、设备分享、智能配网、设备禁用、OTA升级、实时状态、影子模式、实时监测、加密认证等
- EMQ管理: Mqtt客户端、监听器、消息主题、消息订阅、插件管理、规则引擎、资源
- 硬件 SDK: 支持WIFI和MQTT连接、物模型响应、实时监测、定时上报监测数据、AES加密、NTP时间等
- 物模型管理: 属性(设备状态和监测数据),功能(执行特定任务),事件(设备主动上报给云端)
- 其他功能:多租户、统计、新闻资讯、通知公告、支持TDengine时序数据库
-- 计划开发完善功能:设备告警、场景联动、云云对接智能音箱、第三方登录、短信登录、APP界面自定义、视频流处理等
+- 开发中功能:设备告警、场景联动、云云对接智能音箱、第三方登录、短信登录、APP界面自定义、视频流处理等
### 四、技术栈
@@ -39,14 +38,13 @@
- 相关技术:uniapp、[uView](https://www.uviewui.com/)、[uChart](https://www.ucharts.cn/)
- 开发工具:HBuilder
* 硬件端
- - 相关技术: ESP-IDF、Arduino、FreeRTOS等
+ - 相关技术: ESP-IDF、Arduino、FreeRTOS、Python等
- 开发工具:Visual Studio Code 和 Arduino
### 五、硬件接入
1. 设备认证
* 加密认证(推荐)
* 简单认证
- * EMQX支持的其他认证方式
2. 设备交互
* 发布物模型、设备信息、时钟同步相关Mqtt主题
* 订阅物模型、设备升级、时钟同步相关Mqtt主题
@@ -87,15 +85,8 @@

##### 项目贡献者
-
-|[小驿物联](https://gitee.com/iot-xiaoyi) |[Guanshubiao](https://gitee.com/guanshubiao)|[CrazyDull](https://gitee.com/crazyDull) |[Kami0314](https://github.com/kami0314)|[YBZX](https://github.com/YBZX)
-|--|--|--|--|--|
-
-| [SXH](https://gitee.com/sixiaohu) | [Redamancy_zxp](https://gitee.com/redamancy-zxp) | [LEE](https://gitee.com/yueming188) | [LemonTree](https://gitee.com/fishhunterplus) | [Tang](https://gitee.com/mexiaotang)
-|--|--|--|--|--|
-
-| [xxmfl](https://gitee.com/xxmfl) |
-|--|
+- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
+- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
### 九、部分图片
From e3316fcd61df34ac173d43a11320c2ac2be473ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 14:24:52 +0000
Subject: [PATCH 07/16] update README.md.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8159390b..46b03827 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
### 一、项目简介
-#### 1. 物美智能 [wumei-smart](http://wumei.live/) 是一个简单易用的生活物联网平台。可用于搭建物联网平台以及二次开发和学习。
+#### 1. WumeiSmart是一个简单易用的生活物联网平台。可用于搭建物联网平台以及二次开发和学习。
#### 2. 项目采用AGPL3协议,可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://wumei.live/doc/pages/sponsor/)
From a160fc95147871a5c4df0a9499d500cd40ec5257 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 14:31:06 +0000
Subject: [PATCH 08/16] update README.md.
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 46b03827..8eaf4aea 100644
--- a/README.md
+++ b/README.md
@@ -49,15 +49,12 @@
* 发布物模型、设备信息、时钟同步相关Mqtt主题
* 订阅物模型、设备升级、时钟同步相关Mqtt主题
-###### 项目提供了示例SDK,使用ESP8266芯片,基于Arduino开发。(设备烧录使用串口模块,例如Ch340,大部分开发板自带了)接线图如下:
-
-
### 六、项目目录
spring-boot --------------- 后端
vue ----------------------- 前端
docker -------------------- docker部署文件
- sdk ----------------------- 硬件SDK
+ sdk ----------------------- 硬件SDK,不同设备的SDK示例在不断增加
app ----------------------- 移动端打包文件
###### 移动端适配多端
From 5879b00f312de7fb520608e7500ee5c50a75e38c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 14:38:48 +0000
Subject: [PATCH 09/16] update README.md.
---
README.md | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 8eaf4aea..47942d8f 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
### 一、项目简介
-#### 1. WumeiSmart是一个简单易用的生活物联网平台。可用于搭建物联网平台以及二次开发和学习。
+#### 1. WumeiSmart是一个简单易用的生活物联网平台。可用于搭建物联网平台以及二次开发和学习。[演示地址>>](https://iot.wumei.live/)
#### 2. 项目采用AGPL3协议,可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://wumei.live/doc/pages/sponsor/)
@@ -75,15 +75,14 @@
### 八、其他
-* 互助交流群:946029159 1073236354
-* [演示地址>>](https://iot.wumei.live/)
-* 小程序演示
-
+1. 互助交流群:946029159 1073236354
+2. 项目贡献者
+ - [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
+ - [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
+3. 扫码查看小程序演示

-##### 项目贡献者
-- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
-- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
+
### 九、部分图片
From a05a7fe5d5f4fe28679c5ecd0c09965d7c8e3b66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:01:49 +0000
Subject: [PATCH 10/16] update README.md.
---
README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/README.md b/README.md
index 47942d8f..8ce2cbf1 100644
--- a/README.md
+++ b/README.md
@@ -79,10 +79,6 @@
2. 项目贡献者
- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
-3. 扫码查看小程序演示
-
-
-
### 九、部分图片
From 3b72e1bbc1886c58dae80f28678735dcf09a415a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:03:23 +0000
Subject: [PATCH 11/16] update README.md.
---
README.md | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 8ce2cbf1..9b2db5aa 100644
--- a/README.md
+++ b/README.md
@@ -41,16 +41,8 @@
- 相关技术: ESP-IDF、Arduino、FreeRTOS、Python等
- 开发工具:Visual Studio Code 和 Arduino
-### 五、硬件接入
-1. 设备认证
- * 加密认证(推荐)
- * 简单认证
-2. 设备交互
- * 发布物模型、设备信息、时钟同步相关Mqtt主题
- * 订阅物模型、设备升级、时钟同步相关Mqtt主题
-
-### 六、项目目录
+### 五、项目目录
spring-boot --------------- 后端
vue ----------------------- 前端
docker -------------------- docker部署文件
@@ -63,7 +55,7 @@
| √ | √| √ | √ | √ |
-### 七、相关文档
+### 六、相关文档
##### 权限管理基于ruoyi-vue系统,Mqtt消息服务器基于EMQX4.0开源版,SDK示例使用ESP8266 Core For Arduino开发
* [项目文档](https://wumei.live/doc/)
* [物美智能官网](http://wumei.live/)
From 338927673de99416f600c7a8e55f58f3edc78d81 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:04:36 +0000
Subject: [PATCH 12/16] update README.md.
---
README.md | 5 -----
1 file changed, 5 deletions(-)
diff --git a/README.md b/README.md
index 9b2db5aa..49fa8e10 100644
--- a/README.md
+++ b/README.md
@@ -49,11 +49,6 @@
sdk ----------------------- 硬件SDK,不同设备的SDK示例在不断增加
app ----------------------- 移动端打包文件
-###### 移动端适配多端
-|安卓/Android|苹果/IOS|微信小程序| 网页/H5|Vue2.0
-| :---: | :---: | :---: | :---: |:---: |
-| √ | √| √ | √ | √ |
-
### 六、相关文档
##### 权限管理基于ruoyi-vue系统,Mqtt消息服务器基于EMQX4.0开源版,SDK示例使用ESP8266 Core For Arduino开发
From 1e7293a819360edfa0a7d2c37596ef9235b1f95d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:07:16 +0000
Subject: [PATCH 13/16] update README.md.
---
README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 49fa8e10..0600bc94 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@
- 相关技术:uniapp、[uView](https://www.uviewui.com/)、[uChart](https://www.ucharts.cn/)
- 开发工具:HBuilder
* 硬件端
- - 相关技术: ESP-IDF、Arduino、FreeRTOS、Python等
+ - 相关技术: ESP-IDF、Arduino、FreeRTOS、Python、Lua等
- 开发工具:Visual Studio Code 和 Arduino
@@ -56,19 +56,18 @@
* [物美智能官网](http://wumei.live/)
* [若依权限管理系统ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
* [Mqtt消息服务器EMQX4.0](https://github.com/emqx/emqx)
-* [ESP8266 Core For Arduino](https://github.com/esp8266/Arduino)
* [uCharts高性能跨平台图表库](https://www.ucharts.cn)
* [TDengine时序数据库](https://www.taosdata.com/?zh)
-### 八、其他
+### 七、其他
1. 互助交流群:946029159 1073236354
2. 项目贡献者
- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
-### 九、部分图片
+### 八、部分图片


From 4f0474bcc14a2232aa659e046768b87e73cc85d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:32:47 +0000
Subject: [PATCH 14/16] update README.md.
---
README.md | 31 ++++++++-----------------------
1 file changed, 8 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index 0600bc94..6afe6a3b 100644
--- a/README.md
+++ b/README.md
@@ -69,36 +69,21 @@
### 八、部分图片
-
-
+
+
-  |
-  |
+  |
+  |
-  |
-  |
+  |
+  |
-  |
-  |
-
-
-  |
-  |
-
-
-  |
-  |
-
-
-  |
-  |
-
-  |
-  |
+  |
+  |
From 497bfaecf1a7a0bb01451100e758438487d98672 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:39:35 +0000
Subject: [PATCH 15/16] update README.md.
---
README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 6afe6a3b..0d991020 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@
- 开发中功能:设备告警、场景联动、云云对接智能音箱、第三方登录、短信登录、APP界面自定义、视频流处理等
-### 四、技术栈
+### 三、技术栈
* 服务端
- 相关技术:Spring boot、MyBatis、Spring Security、Jwt、Mysql、Redis、TDengine、EMQX、Mqtt等
- 开发工具:IDEA
@@ -39,10 +39,10 @@
- 开发工具:HBuilder
* 硬件端
- 相关技术: ESP-IDF、Arduino、FreeRTOS、Python、Lua等
- - 开发工具:Visual Studio Code 和 Arduino
+ - 开发工具:Visual Studio Code 和 Arduino等
-### 五、项目目录
+### 四、项目目录
spring-boot --------------- 后端
vue ----------------------- 前端
docker -------------------- docker部署文件
@@ -50,7 +50,7 @@
app ----------------------- 移动端打包文件
-### 六、相关文档
+### 五、相关文档
##### 权限管理基于ruoyi-vue系统,Mqtt消息服务器基于EMQX4.0开源版,SDK示例使用ESP8266 Core For Arduino开发
* [项目文档](https://wumei.live/doc/)
* [物美智能官网](http://wumei.live/)
@@ -60,14 +60,14 @@
* [TDengine时序数据库](https://www.taosdata.com/?zh)
-### 七、其他
+### 六、其他
1. 互助交流群:946029159 1073236354
2. 项目贡献者
- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)
-### 八、部分图片
+### 七、部分图片


From 0289a532787400827e490b2a03f2f3bec24fd8f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9A=8F=E9=81=87=E8=80=8C=E5=AE=89?= <164770707@qq.com>
Date: Sat, 6 Aug 2022 17:54:12 +0000
Subject: [PATCH 16/16] update README.md.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0d991020..f6e8d017 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@
### 六、其他
-1. 互助交流群:946029159 1073236354
+1. QQ交流群:🚀946029159 🚀1073236354
2. 项目贡献者
- [小驿物联](https://gitee.com/iot-xiaoyi)、 [Guanshubiao](https://gitee.com/guanshubiao)、[CrazyDull](https://gitee.com/crazyDull)、 [Kami0314](https://github.com/kami0314)、 [YBZX](https://github.com/YBZX)
- [SXH](https://gitee.com/sixiaohu)、 [Redamancy_zxp](https://gitee.com/redamancy-zxp)、 [LEE](https://gitee.com/yueming188)、 [LemonTree](https://gitee.com/fishhunterplus)、 [Tang](https://gitee.com/mexiaotang)、 [Tang](https://gitee.com/mexiaotang)、 [xxmfl](https://gitee.com/xxmfl)