主要内容

大容量更新使用覆盆子π

这个例子展示了如何使用一个覆盆子π™董事会运行Python®2.7这是连接到一个wi - fi®网络来收集数据。你可以不断收集CPU温度和比例的CPU利用率超过15秒,大容量更新ThingSpeak™通道每2分钟。下面的例子使用了Bulk-Write JSON数据API来收集数据作为一个批处理和发送给ThingSpeak频道。这大容量更新减少了用电的设备。因为树莓π板不与实时时钟,您可以使用相对大容量更新消息的时间戳。

设置

1)创建一个频道所示收集数据的新渠道

2)进口必需的库脚本。进口urllib2 ul

导入操作系统导入psutil导入json导入时间

3)定义全局变量,追踪过去连接时间和最后更新时间。定义时间间隔更新数据,并把数据ThingSpeak。

lastConnectionTime = time.time() #跟踪最后连接时间lastUpdateTime = time.time() #跟踪postingInterval最后更新时间= 120 # Post数据每隔2分钟updateInterval = 15 #每15秒更新一次

4)定义ThingSpeak通道设置如编写API密匙和通道ID以及ThingSpeak服务器设置。

writeAPIkey = " YOUR-CHANNEL-WRITEAPIKEY " # YOUR-CHANNEL-WRITEAPIKEY换成你的频道写API密匙channelID =“YOUR-CHANNELID”# YOUR-CHANNELID替换为您的频道ID url = " https://api.thingspeak.com/channels/ " + channelID + " / bulk_update.json " # ThingSpeak服务器设置messageBuffer = []

5)定义的函数httpRequest将数据发送给ThingSpeak和打印服务器的响应代码。一个响应代码202年表明服务器接受请求,并将处理它。

def httpRequest():”功能发送POST请求ThingSpeak渠道批量更新。“全球messageBuffer数据= json.dumps ({write_api_key: writeAPIkey,“更新”:messageBuffer}) # json数据缓冲区的格式要求= ul。请求(url = url) requestHeaders ={“用户代理”:“mw.doc。大容量更新(覆盆子π)”、“内容类型”:“application / json内容长度”、“”:str (len(数据))}为关键,瓦尔在requestHeaders.iteritems(): #设置标题req.add_header(关键,val) req.add_data(数据)#将数据添加到请求#使请求ThingSpeak尝试:响应= ul.urlopen(点播)#使请求打印response.getcode() # 202年表明,除了ul服务器接受请求。HTTPError e:打印e。代码#打印错误代码messageBuffer =[] #重新启动消息缓冲全球lastConnectionTime lastConnectionTime = time.time() #更新连接时间

6)定义的函数getData返回的CPU温度摄氏CPU利用率百分比。def getData ():

”函数,它返回CPU温度和比例的CPU利用率”的cmd = ' / opt / vc / bin / vcgencmd measure_temp '过程= os.popen (cmd) .readline () .strip () cpuTemp = process.split (“=”) [1] .split (“”) [0] cpuUsage = psutil.cpu_percent(间隔= 2)返回cpuTemp cpuUsage

7)定义的函数updatesJson不断更新信息缓冲每15秒。

def updatesJson():“函数来更新信息缓冲数据每15秒。然后调用httpRequest函数每2分钟。这个例子使用的相对时间戳作为它使用“delta_t”参数。如果你的设备有一个实时时钟,您还可以提供使用“created_at”参数的绝对时间戳。“全球lastUpdateTime消息={}消息[' delta_t '] = int(圆(time.time () - lastUpdateTime))温度,使用= getData()消息[' field1 '] = Temp消息[' field2 '] =使用全球messageBuffer messageBuffer.append(消息)#如果发布时间间隔了2分钟更新ThingSpeak通道与数据如果time.time ()——lastConnectionTime > = postingInterval: httpRequest () lastUpdateTime = time.time ()

8)运行一个无限循环,不断调用的函数updatesJson每隔15秒。

if __name__ = =“__main__”: #确保这是直接运行,不运行时进口1:#如果更新间隔时间有过15秒更新消息缓冲区的数据如果time.time ()——lastUpdateTime > = updateInterval: updatesJson ()

相关的例子

更多关于