将树莓派变身成为微博机器人,你只需要简单的几步
第一步,你得有一个树莓派
第二部,先上照片
温度传感器用的是DS18B20,由于树莓派是工作在linux下,所以无法直接使用C来做驱动,因此我使用的是国外大牛做好的驱动,直接编译进内核
具体方式,进入命令行(通过ssh或者直接连显示器)
输入如下命令
sudo wget http://www.frank-buss.de/raspberrypi/kernel-rpi-w1.tgz sudo tar -xzf kernel-rpi-w1.tgz sudo rm -f kernel-rpi-w1.tgz sudo cd /lib/modules sudo wget http://www.frank-buss.de/raspberrypi/modules-rpi-w1.tgz sudo tar -xzf modules-rpi-w1.tgz sudo rm -f modules-rpi-w1.tgz sudo sync sudo reboot
然后等待机器重启重新加载1-wire设备的驱动,也就是给18b20的驱动。
重启完成之后,按图所示连接18B20和树莓派
接下来,在命令行输入
sudo modprobe w1-gpio sudo modprobe w1-therm
(以上两条命令需要在/etc/rc.loca这个启动脚本里添加,添加的时候去掉sudo,这样可以不用每次启动都要手动加载w1模块了)
ls /sys/bus/w1/devices/w1 bus master
会显示
其中28开头的就是28b20设备了
读取温度则用如下命令
cat /sys/bus/w1/devices/w1 bus master /28-*/w1_slave
t的值就是温度,除以1000就是摄氏度
再接下来就是程序部分了,树莓派是运行在linux下的,同时又带有python的解释器.于是我打算写一个python脚本来登录新浪微博,然后发表状态.网上搜了一圈,对于python实在是无力,看到别人用新浪微博python SDK做的脚本,就是不知道怎么移植过来.万般无奈之下,用了一个别人写的模拟登陆新浪微博的脚本,只修改了里面的账户和密码,当然改成我自己的了,发现居然可以登录.运行脚本,显示 Login success!(晚上公司的路由的动态DNS又挂了,家里没法连上树莓的FTP,脚本文件暂时明天上传)
既然能登陆上去,我就可以干别的事了,比如发个状态.
这里必须要先提到一点,新浪微博的开放平台是一个提供各种接口给各种各样的应用访问微博的地方.我们需要申请一个应用用来获得一个Access Token,这里我选择申请的移动应用开发
然后就是各种填表格申请,完成之后就会有一个access token,但是此时这个access token只是一个测试用途的,你需要逐步完善你的应用,通过审核,否者在后面的提交微博请求的时候,就会一直显示"来自未通过审核应用"
目前我还是这样的
接前面说的,用脚本登陆之后,你需要发微博,这里就要对微博的发状态接口发请求了
http://open.weibo.com/wiki/2/statuses/update
这是新浪微博的发状态接口,从API文档里可以看到,access token参数和内容参数status是必须的
请求参数
因此我构造了一条请求
通过这个请求我可以把任意的内容(少于140个字)发到我的微博状态上去.
(代码的百度网盘地址 http://pan.baidu.com/s/1bnw8hXX
下载到树莓派桌面上,按图所示连接好DS18B20即可使用,注意要在moni.py文件中把新浪微博的账号和密码改为自己的)
然后,我需要获取系统当前时间和读我之前接上的温度传感器的数据.这里有两条python的函数,一个是用来获取系统时间并以格式化输出形式显示出来,一个是在python中执行linux的系统命令并获取返回值.(代码明天粘贴上来)
当然,温度传感器的数据需要进行一下处理,取最后的几位,进行一下运算,得到一个1位小数的浮点数
这样,我就可以把时间和温度这两个值,作为status参数通过微博的接口提交到新浪微博了
但是,这样的的脚本运行一次才提交一次,我想要的是定时运行脚本来发微博,这里需要用到linux下的一个计划任务工具cron,具体的使用方法网上非常非常多,这里我就不赘述了,只贴出我的配置就行(同上,明天粘贴)
PS:以上代码,完全不需要任何库来支持,将代码中的账号密码和acces token换成自己的,就可以实现登陆和发微博,发的内容可以自己改,没有树莓派和温度传感器的朋友,可以只发个时间,而且可以在其他的python解释器环境下来运行这个脚本.
(作者注:似乎acces token的作用是用来表示请求来源的身份的,也就是说大家也可以用我找个access token来提交,目前还是会显示未通过申请的应用,但是等我的审核通过了,就会显示我这个应用的申请名称<树莓派_微博小派>)
最后,祝各位技术宅们在新春长假期间玩的开心!
最后展示一张效果图
共有 0 条评论