原文出處:https://www.phodal.com/blog/bare-minimum-iot-system-date-commucation/
這里寫的數(shù)據(jù)通訊指的是兩部分,一部分是與服務(wù)器,一部分是與單片機(jī)。這樣設(shè)計(jì)的另外一個(gè)原因是,更好的分層,能讓我們更好的理解這個(gè)系統(tǒng)。負(fù)責(zé)這個(gè)功能的這里用的是Raspberry PI,或者是你的PC兩者都可以,我想你也看到了之前的代碼。那么先讓我們看看與服務(wù)器通信的這部分。
示例中的代碼是這樣子的,如果你沒有看懂的話,那么等等 。
import json,urllib2
url="http://b.phodal.com/athome/1"
while True:
status=json.load(urllib2.urlopen(url))[0]['led1']
看看get.py的代碼,這個(gè)是沒有壓縮的,換句話說,會(huì)比較好理解一點(diǎn)
import json
import urllib2
url="http://b.phodal.com/athome/1"
while 1:
date=urllib2.urlopen(url)
result=json.load(date)
status=result[0]['led1']
print status
這里做的事情有兩件,一件是從服務(wù)器GET,另外一個(gè)就是解析JSON數(shù)據(jù)。
如果你用的是*nix,應(yīng)該就自帶curl了,可以試著用下面的命令來GET
curl http://b.phodal.com/athome/1
那么應(yīng)該返回的是下面的結(jié)果
[{"id":1,"temperature":14,"sensors1":12,"sensors2":12,"led1":0}]
用在python里面就是
urllib2.open("http://b.phodal.com/athome/1")
python帶有json解析模塊,我們?cè)谶@里只需要用json.load()來解析獲取下面的date就可以了
result=json.load(date)
解析完的result相當(dāng)于是C語(yǔ)言里面的數(shù)組,在這里相當(dāng)于是一個(gè)二維數(shù)組,我們只需要result[0]['led1'],在python里面叫做字典,意思就是和字典一樣。
"led1":0
led1的值是0,所以result[0]['led1]的值是0,如果你用過Ruby,那么這個(gè)和其中的Hash差不多。
因此在這里我們拿到了服務(wù)器上面的控制狀態(tài)的指令,也就是0。我們還需要傳給單片機(jī),也就是Arduino。。
更多建議: