# demeter

数据采集服务+本地web界面

开发语言：python
框架：gevent+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     | 放风机     |