# eros 本地控制器+数据采集服务+本地界面 开发语言:python 框架:tornado+demeter类库 通信协议: 所有通信都是基于topic(key:value)的形式进行传输。 topic的key定义:method/type/parent/child 其中,method为传输的数据类型(见基础数据类型表),type为设备的类型(见设备类型表),parent为网关id,child为设备id 1、接入网关:在农场后台,录入网关基本信息,如网关的设备id和名称即可。 2、接入设备:无需在后台录入,只要使用以下topic定义就能自动接入。 topic具体定义: ``` 1、需要设备pub的key:用于数据、状态等提交到服务器,value均为数值 1.1、传感器: key定义:sensor/温度等/gateway/device 说明:获取传感器数据,可以定义5分钟提交一次 注意:如需要批量提交,请去掉device项,value改成json格式:{'device_1':12,'device_2':33} 1.2、控制器: key定义:control/阀门、卷帘/gateway/device 说明:获取控制器状态,可以定义30秒或者更短提交一次 1.3、摄像头拍照: key定义:pic/图片名_总数_当前序号/gateway/device 说明:获取摄像头的照片,可以定义10分钟提交一次 1.4、电源: key定义:power/power/gateway/device 说明:电源比较特殊,所以单独拿出来做一个类型。 注意:当为网关电源时,gateway和device值相同即可 2.需要服务器pub的key: 2.1、更新开关状态: key定义:update/阀门等定义/gateway/device 说明:更新开关的状态,设备sub订阅update/#这样的消息即可,qos需要为2。 ``` 附表(待持续完善): 1、基础数据类型表 | 类型名 | 说明 | | -------- | -------- | | sensor | 传感器 | | control | 控制器 | | pic | 摄像头 | | power | 电源 | | update | 更改状态 | 2、设备类型表 | 类型名 | 所属基础类型 | 说明 | | -------- | -------- | -------- | | temprature | sensor | 温度 | | humidity | sensor | 湿度 | | light | sensor | 光照 | | co2 | sensor | 二氧化碳 | | pm2.5 | sensor | pm2.5 | | power | power | 电源 | | valve | control、update | 阀门 | | blower | control、update | 放风机 | 增加支持modbus协议: 01 10 00 FA 00 04 08 01 03 00 00 00 04 44 09 AD 68 8,30