嗯,这篇也是因为一些事情拖得比较久,到今天(2015年9月6日)才开始写。

上次说到我大幅修改了 Telegram 机器人的架构。期间发现一件事情,因为这个机器人与树莓派交互,有时候需要调用摄像头,还有时候需要调用 GPIO 设备(传感器之类)。而这部分代码重复非常多,基本上每个需要用到的项目都是手动复制一遍,看起来很不爽,也对其他部分的代码构成很大影响。

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

于是就有了 JokerQyou/pitools 这个东西,是一个在树莓派上运行的 Tornado 服务器,与硬件进行交互,将它们作为 Web 服务暴露给本地网络(lo)。这样外部程序就可以直接通过 HTTP 请求调用硬件了。

目前有两个功能,一个是 Adfruit 的温度/气压传感器调用,一个是摄像头调用。温度传感器返回的是 JSON,摄像头调用后返回照片的路径。总之代码超级简单。更多的功能之后再添加咯。

那么现在肯定有读者要问了,你哔哔这么一大堆,跟标题有什么琴梨关系?

当然有关系。这个服务中有一个接口不是每次调用都会成功,而是在调用间隔大于 50 秒时才会成功。这个接口被设计来用于实现定时拍照,它会将照片保存在以日期为名字的文件夹中,并且在每天 0 点之后的第一次调用中,把前一天的图片编码转换为一段视频。只需要运行服务,然后设置一个 cron 任务,每分钟触发一次这个接口就可以了。

当然这个工具目前还有很多改进的空间。