最小物聯網系統(七)——與伺服器通訊

Phodal發表於2014-03-06

這裡寫的資料通訊指的是兩部分,一部分是與伺服器,一部分是與微控制器。這樣設計的另外一個原因是,更好的分層,能讓我們更好的理解這個系統。負責這個功能的這裡用的是Raspberry PI,或者是你的PC兩者都可以,我想你也看到了之前的程式碼。那麼先讓我們看看與伺服器通訊的這部分。

伺服器通訊

示例中的程式碼是這樣子的,如果你沒有看懂的話,那麼等等 。

import json,urllib2

url="http://b.phodal.com/athome/1"
while True:
    status=json.load(urllib2.urlopen(url))[0]['led1']

GET

看看get.py的程式碼,這個是沒有壓縮的,換句話說,會比較好理解一點

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

這裡做的事情有兩件,一件是從伺服器GET,另外一個就是解析JSON資料。

如果你用的是*nix,應該就自帶curl了,可以試著用下面的命令來GET

curl http://b.phodal.com/athome/1

那麼應該返回的是下面的結果

[{"id":1,"temperature":14,"sensors1":12,"sensors2":12,"led1":0}]

用在python裡面就是

urllib2.open("http://b.phodal.com/athome/1")

資料解析

python帶有json解析模組,我們在這裡只需要用json.load()來解析獲取下面的date就可以了

result=json.load(date)

解析完的result相當於是C語言裡面的陣列,在這裡相當於是一個二維陣列,我們只需要result[0]['led1'],在python裡面叫做字典,意思就是和字典一樣。

 "led1":0

led1的值是0,所以result[0]['led1]的值是0,如果你用過Ruby,那麼這個和其中的Hash差不多。

因此在這裡我們拿到了伺服器上面的控制狀態的指令,也就是0。我們還需要傳給微控制器,也就是Arduino。。

相關文章