把树莓派上的部分硬件以服务的方式暴露出来(当然因为安全原因只能暴露给树莓派本机),方便外部程序调用。甚至更极端一点,把整个树莓派作为一个服务,当然这个目前还没什么用处。
于是就有了 JokerQyou/pitools 这个东西,是一个在树莓派上运行的 Tornado 服务器,与硬件进行交互,将它们作为 Web 服务暴露给本地网络(
lo
)。这样外部程序就可以直接通过 HTTP 请求调用硬件了。
目前有两个功能,一个是 Adfruit 的温度/气压传感器调用,一个是摄像头调用。温度传感器返回的是 JSON,摄像头调用后返回照片的路径。总之代码超级简单。更多的功能之后再添加咯。
那么现在肯定有读者要问了,你哔哔这么一大堆,跟标题有什么关系?
当然有关系。这个服务中有一个接口不是每次调用都会成功,而是在调用间隔大于 50 秒时才会成功。这个接口被设计来用于实现定时拍照,它会将照片保存在以日期为名字的文件夹中,并且在每天 0 点之后的第一次调用中,把前一天的图片编码转换为一段视频。只需要运行服务,然后设置一个 cron 任务,每分钟触发一次这个接口就可以了。
-----------------
PiTOOLS
A set of flask blueprints to be used on RaspberryPi, which allow you to retrieve sensor data or send data to hardware devices via simple HTTP request.
Installation
Notice: Adafruit_Python_BMP package has not yet been released to PyPI, so you need to manually get its source code here.
# Install Adafruit_Python_BMP package
# Enter source code folder for Adafrui_Python_BMP
cd Adafruit_BMP
sudo python setup.py install
cd ..
# Install pitools
cd pitools
sudo python setup.py install
# All other dependencies will be automatically installed
Usage
Currently the available modules are:
pitools.camera
pitools.sensors.bmp085
There is a minimal working flask server in
examples/server.py
. Install the camera and BMP085 sensor hardware and run sudo python server.py
to start it, and visit http://<your_raspberry_pi_IP>:9876/camera/shot
for a photo captured, or visit http://<your_raspberry_pi_IP>:9876/sensors/bmp085/all
for data from your BMP085 sensor.Test
Install nosetests and run
sudo nosetests -v
to see the test result.
FROM https://github.com/JokerQyou/pitools