值类型:
- msg:'ok' or 'fail'
- key:datetime, such as 2012-03-15T16:13:14 or 2012-03-15 16:13:14。
- value: url(as '/pibox_upload/xxxx') or float
url | 作用 | 方法 | 请求参数 | 返回参数 |
---|---|---|---|---|
/API/sensor/{sensor_id}/datapoint/ | 修改 | GET | valueint |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/get/ | 查询 | GET | {'msg', 'value'} |
url | 作用 | 方法 | 请求参数 | 返回参数 |
---|---|---|---|---|
/API/sensor/{sensor_id}/datapoint/ | 新增 | GET | keydatetime ,valuefloat |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/ | 新增 | POST | [{'key' : datetime , 'value' : float }] |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/get/ | 查询 | GET | keydatetime |
{'msg', 'value'} |
/API/sensor/{sensor_id}/datapoint/edit/ | 修改 | GET | keydatetime ,valuefloat |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/remove/ | 删除 | GET | keydatetime |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/history/ | 历史(时间段) | GET | startdatetime , enddatetime , intervalint(seconds) |
{'msg', 'datapoint'=[{'value','key'}] |
/API/sensor/{sensor_id}/datapoint/history/ | 历史(返回最新前二十条) | GET | {'msg', 'datapoint'=[{'value','key'}]} | |
json data could be like this: |
{
"key":"2012-03-15T16:13:14",
"value":294.34
}
or
[
{"key": "2012-06-15T14:00:00", "value":315.01},
{"key": "2012-06-15T14:00:10", "value":316.23},
{"key": "2012-06-15T14:00:20", "value":317.26},
{"key": "2012-06-15T14:00:30", "value":318},
{"key": "2012-06-15T14:00:40", "value":317}
]
url | 作用 | 方法 | 请求参数 | 返回参数 |
---|---|---|---|---|
/API/sensor/{sensor_id}/datapoint/ | 新增 | POST | keydatetime ,valuefile |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/get/ | 查询 | GET | keydatetime |
{'msg', 'valueurl '} |
/API/sensor/{sensor_id}/datapoint/edit/ | 修改 | GET | keydatetime ,valuefile |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/remove/ | 删除 | GET | keydatetime |
{'msg'} |
/API/sensor/{sensor_id}/datapoint/history/ | 历史(时间段) | GET | startdatetime , enddatetime , intervalint(seconds) |
{'msg', 'datapoint'=[{'valueurl ','key'}] |
/API/sensor/{sensor_id}/datapoint/history/ | 历史(返回最新前二十条) | GET | {'msg', 'datapoint'=[{'valueurl ','key'}]} |
|
ret can be like this |
{
"key":"2012-03-15T16:13:14",
"value":"/media/pibox_upload/pic_datapoint/111.png"
}
注意返回的都是url,具体图片再从url读
在sh/datapoint_tools下有使用urllib的数据测试脚本,可以用来增删数据,也可以用来做例子。 开关传感的读写脚本 数据传感的CURD脚本 图片传感的CURD脚本 使用办法如下
输入python switch.py
输出1.write 2.read 选择 1
输出domain(as 192.168.10.106:8000) : 输入192.168.10.106:8000
输出sensor_id(int) : 输入 1
输出value(int) : 输入 1
只要对这些脚本稍加修改,另外加上一些python代码就可以通过以下思路,实现自己的本地智能家居:
- 通过串口等通讯模块,关联单片机,然后关联上native yeelink。
- 通过驱动读取树莓派所接模块的数据,然后上传数据到native yeelink。
Callback file是传感器满足条件后被调用的python代码文件名比如gpio.py
,被调用的文件需要放在PiBox/sh/callback/下(重启有效)。
不使用的话只需提供不存在的文件名或者保持为空即可。
对开关传感器来说,每一次开关数值点发生修改,callback_file都会被按如下格式调用
python callback_file sensor.name swtich_status(1 or 0)
对数值传感器来说,每一次新增或者修改的数值都会检查条件,如果满足条件,callback_file都会被按如下格式调用
python callback_file sensor.name value(溢出的数值) key(时间)
在sh/callback下有几个文件实例可以直接使用
import os,sys
cwd = os.path.dirname(os.path.abspath(__file__)) + '/..' + '/..'
sys.path.append(os.path.join(cwd, 'PiHome'))
from common.driver import linux_gpio
print 'Sensor:', str(sys.argv[1])
print 'Value:', str(sys.argv[2])
GPIO_NUM = 23
print 'GPIO_BCM_NUM:', GPIO_NUM
gpio = linux_gpio.gpio(GPIO_NUM)
gpio.gpio_export()
gpio.write_gpio_direction('out')
gpio.write_gpio_value(sys.argv[2])
在需要的开关传感器下填入gpio.py,将文件的GPIO_NUM改成所需的gpio编号,每次开关状态改变,就会带动gpio改变。 直接使用这个脚本就可以通过web来控制简单电器
import os,sys
print 'Sensor:', str(sys.argv[1])
print 'Value:', str(sys.argv[2])
print 'key:', str(sys.argv[3])
在需要的数值传感器下填入callout.py和条件,数值发生改变时条件若满足,会发送debug信息到log里。
发邮件到指定邮箱,需要修改账号密码,详见sh/callback
Any issues or improvements please contact jacob-chen@iotwrt.com