做一个使用iGPIO的远程温度监测器
在这个例子完成时,您将能够使用iGPIO网站界面远程监测温度。
本例所需材料:
- Raspberry Pi B型(有互联网接入,有线或无线均可)
- MCP9808 温度传感器
- 连接线,电路试验板
还需要的是一台电脑或智能手机用于访问iGPIO网站。
按照以下步骤设置温度监测器:
(1)在iGPIO网站注册一个免费帐户
点击这里访问iGPIO注册页面
您需有一个电邮地址,并选择一个密码来注册一个帐号。注册后,您有User ID,即您的电邮地址和密码的帐户。
(2)设置iGPIO的设备通用参数
在iGPIO网站注册后,点击此链接到登录页。使用您的帐户的电邮地址和密码登录,然后点击"设备管理器"按钮。设置以下参数:
- 名称:温度监控器
- 更新间隔:不变(默认值是300秒)
- 邮件间隔:不变(默认值是3600秒(一小时))
- 设备邮件间隔:不变(默认值是3600秒)
- 报警延迟:600(如果设备没有按预定间隔更新温度,iGPIO系统等待这段时间(600秒)后发送电邮提酲用户)
选中启用复选框,然后单击"更新"按钮。
(3)设置iGPIO的设备详细参数
完成设备通用参数的设置后,单击"打开#1"链接,弹出#1设备的详细参数页面。在这个例子中,我们使用CH2设置参数如下:
- 标签:Rm(C)(室温,摄氏度)
- 数值:不变(远程设备进行更新)
- 数值2:19(设定下限为摄氏19度)
- 数值3:22(设定上限为摄氏22度)
- 标记:0(允许远程设备更新值数)
勾选启用复选框,然后单击"更新"按钮完成设置。此设置将允许远程设备更新值数,即,室温。如果温度超出预定范围(19 - 22),系统还将电邮通知用户该温度超出预定范围。
(4)制作温度监测器
此链接会告诉您所有的步骤来制作温度监测器(英文):
https://learn.adafruit.com/mcp9808-temperature-sensor-python-library?view=all
为了检测Raspberry Pi的设置是否正确,请把下面的python代码在存放在一个文件中,例如,/home/pi/read_temp.py
import time
import Adafruit_MCP9808.MCP9808 as MCP9808
sensor = MCP9808.MCP9808()
sensor.begin()
temp = sensor.readTempC()
print 'Temp: ' + str(temp) + ' C'
然后运行下面的命令:
sudo python read_temp.py
如果一切正常,所测温度会显示在屏幕上,您可以继续下面的步骤。
(5)运行Raspberry Pi的python样本代码
将Raspberry Pi连接互联网,无论是用以太网电缆连接到路由器或使用USB无线适配器,http://www.raspberrypi.org/documentation/configuration/wireless/。用此链接下载示例代码。编辑顶部2行,即使用您的帐户名(电子件址)和密码,并将其保存到/home/pi/。欲了解更多信息,请阅读设备用户界面说明。使用下面的命令来运行示例python程序:
sudo python temp_mon.py
请注意,由于更新时间间隔为300秒,运行一次代码后,你需要等待300秒再次运行它。我们建议在crontab(操作系统调度程序)中运行代码。要做到这一点,可以使用下面的命令:
crontab -e
在crontab的末尾添加一行:
*/5 * * * * sudo /usr/bin/python /home/pi/temp_mon.py
保存并退出crontab。用此设定,该设备将每5分钟(300秒)更新室温,用户可以从世界上任何地方使用连网的PC,平板电脑或智能手机,用浏览器监测。当被监测的温度超出预定范围时,该设备将通过iGPIO发送电邮通知用户。此外,如果设备没有按用户设定更新的温度,iGPIO服务器将发送电邮通知用户。如果不活动的设备恢复工作,iGPIO服务器也将通过电邮通知用户。
请注意:如果您使用crontab调度运行程序,请在应用程序中添加一行(在请求iGPIO网站之前)休眠"随机选择"N秒(在python中命令time.sleep(#.#)进入休眠状态#.#秒;你还必须在程序的开始添加一行"import time")。我们建议您这样做的原因是,crontab调度是基于绝对分钟,所以如果1000用户使用crontab每五分钟运行应用程序,那么所有1000用户的程序都在同一时间将访问iGPIO服务器,可能造成服务器过载。然而,如果各用户采取不同的的秒数来延迟其iGPIO的访问,将可避免这个问题。注意,休眠命令不会影响时间间隔;例如4秒延迟将意味着iGPIO网站的初始接入被延迟了4秒;然而访问的时间间隔仍是,例如,5分钟,如同以上crontab的设置。
|