# 初始化配置及持久化文件

> - `./data/gateway{}.json` 手动维护, 存储已经完成注册上线虚拟网关信息
> - `./data/devices.csv` 手动维护, 存储每个设备的所属项目编码、设备ID以及人为设置的主题信息
> - `./data/users.csv` 手动维护, 存储初始的用户信息
> - `./data/meian.db` 自动维护, 存储程序初始化及运行过程中的数据

# 可拓展性

> devices.meian_model
> - 完成创建的数据模型，可拓展更多的数据模型
> - 不同体系的数据模型应当存储在不同的文件中，如{factory}_model
> - 每个用于转换的数据模型都应该继承一个具有check函数的BaseInfo类，用于校验数据的有效性

> devices.meian_db
> - 实现与数据库的对接逻辑，可拓展不同表的处理逻辑
> - 每个表class应当继承BaseTable再进行个性化拓展
> - 在完成拓展后需要在TableHandle进行路由逻辑补充

> devices.meian_service
> - 业务逻辑层，可拓展不同的业务处理逻辑
> - 拓展的每个服务应当最追加到Services中，并对BaseService进行继承，实现handle方法，实现拿到数据后的**处理逻辑**
> - 完成拓展后，若对BaseService进行了修改则需在auto_service中进行路由逻辑补充

# 生产部署手册

**注意事项：**
> - 完成 devices.csv 的信息收集
> - 根据 devices.csv 的项目编码一一手动完成网关设备的注册上线并记录返回的ID与token保存存到gateway.json中
> - 若有初始化人员信息需求则补充users.csv，若无则不做操作或删除该文件
> - 每次重启需保证meian.db的数据备份，保持其唯一性

环境变量

| 环境变量                 | 参考值                                 | 备注                                   |
|----------------------|-------------------------------------|--------------------------------------|
| ENV_TYPE             | 0: local;1: test-svc;2: product-svc | 用于控制环境变量的动态选择，可统一控制以下所有变量，但优先级低于环境变量 |
| LOGGER_DEBUG         | False\True                          | 用于控制日志的丰富程度                          |
| BROKER_0_HOST,       | iot-broker-test.*******.com     | 云端中转mqtt的访问地址                        |
| BROKER_0_PORT,       | 31883                               | 云端中转mqtt的请求端口                        |
| BROKER_0_API_PORT,   | 38083                               | 云端中转mqtt的api请求端口                     |
| BROKER_0_USERNAME,   | center@meian                        | 云端中转mqtt的mqtt账号                      |
| BROKER_0_PASSWD,     | 28b8db7******a5f2                   | 云端中转mqtt的mqtt密码                      |
| BROKER_0_API_KEY,    | fe705******b707                     | 云端中转mqtt的api请求key                    |
| BROKER_0_API_SECRET, | yNsTO21******iRHByI                 | 云端中转mqtt的api请求secret                 |
| BROKER_1_HOST,       | iot-broker-test.*******.com     | 云服aiot平台的mqtt请求地址                    |
| BROKER_1_PORT,       | 1883                                | 云服aiot平台的mqtt请求端口                    |

# 常用查询sql

```sql
-- 查询长时间离线的设备信息
select heart_beat.device_id, device_position_desc, last_heart_beat  from heart_beat LEFT JOIN register ON register.device_id=heart_beat.device_id LEFT JOIN device ON device.device_id=heart_beat.device_id where project_code = 'WF-TYJMY' AND last_heart_beat < '1720576800';

-- 查询某个项目的设备注册状态
select * from device where project_code = 'NSJMW';
```

# 常用日志过滤

```bash
tail -f data/run.log |grep -v "heartBeat\|心跳\|上线阈值\|新数据\|HeartBeat\|移除订阅\|ms\|subscribe"
```