Pages

Wednesday, 29 June 2016

使用树莓派自动记录家庭影像

把树莓派上的部分硬件以服务的方式暴露出来(当然因为安全原因只能暴露给树莓派本机),方便外部程序调用。甚至更极端一点,把整个树莓派作为一个服务,当然这个目前还没什么用处。
于是就有了 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