# IOT 服务端 [使用aedes作为MQTT服务](https://github.com/moscajs/aedes#readme) [使用fastiry作为http服务](https://github.com/fastify/fastify) [使用sqlite3作为数据存储](https://github.com/TryGhost/node-sqlite3) 服务框架使用http+mqtt+sqlite3,以轻量化为目的。整个原理采用IM群聊方式进行设备管理 1. 设备: 1. 存储: 1. wifi 房间号,设备唯一ID 2. 接收: 1. 接收来自管理端的配置信息:wifi 房间号,唯一设备ID等 2. 接收来自房间的控制信息:执行命令 3. 发送: 2. 订阅房间号后发送设备状态等相关信息 4. 订阅: 1. 主动订阅房间号 2. 被动订阅管理端(由服务端完成) 2. 管理端(网页) 1. 对房间进行增删改查操作 2. 对设备进行相关配置,分配房间号,配置Wi-Fi等 3. 对房间中的设备进行增删改查,控制等操作,房间外的设备不允许控制操作 4. 设备统计(包括未分配房间的设备,未分配设备只显示状态),在房间中显示各设备状态 5. 控制设备时,需要下发设备唯一ID 3. 服务端 1. 主动对连接设备进行管理号的订阅,方便后面统计设备状态,修改wifi 信息等 2. 增加http-jwt鉴权 3. splite3 1. 存储房间,设备,日志等相关数据 2. 为管理端提供数据支撑 4. mqtt 1. 对已连接设备进行主动订阅,并下发唯一设备id: 设备连接时需要提供名称,唯一ID=名称+uuid ## Run ``` 1. yarn build 2. ./server ``` ## Debug ``` 1. yarn 2. node index.js 3. node>=18.0.0 ```