CoAP與物聯網系統之返回JSON,coap連網返回json
在給IoT CoAP添加了JSON支援之後,變得非常有意思,至少我們可以獲得我們想要的結果。在上一篇中我們介紹了一些常用的工具——CoAP 命令列工具集。
CoAP用戶端程式碼範例
開始之前我們需要有一個用戶端代碼,以便我們的服務端可以返回正確的資料並解析
var coap = require('coap');var requestURI = 'coap://localhost/';var url = require('url').parse(requestURI + 'id/1/');console.log("Request URL: " + url.href);var req = coap.request(url);var bl = require('bl');req.setHeader("Accept", "application/json");req.on('response', function(res) { res.pipe(bl(function(err, data) { var json = JSON.parse(data); console.log(json); }));});req.end();
代碼有點長內容也有點多,但是核心是這句話:
req.setHeader("Accept", "application/json");
這樣的話,我們只需要在我們的服務端一判斷,
if(req.headers['Accept'] == 'application/json') { //do something };
這樣就可以返回資料了。(轉載保留:CoAP與物聯網系統之返回JSON)
CoAP Server端代碼
Server端的代碼比較簡單,判斷一下
if (req.headers['Accept'] == 'application/json') { parse_url(req.url, function(result){ res.end(result); }); res.code = '2.05'; }
請求的是否是JSON格式,再返回一個205,也就是Content,只是這時設計是請求一個URL返回對應的資料。如
coap://localhost/id/1/
這時應該請求的是ID為1的資料,即
[ { id: 1, value: 'is id 1', sensors1: 19, sensors2: 20 }]
而parse_url只是從資料庫從讀取相應的資料。
function parse_url(url ,callback) { var db = new sqlite3.Database(config["db_name"]); var result = []; db.all("SELECT * FROM basic;", function(err, rows) { callback(JSON.stringify(rows)); })}
並且全部都顯示出來,設計得真是有點不行,不過現在已經差不多了。
物聯網工程學習路線
1. 編程方面:C、彙編
2. 嵌入式系統基礎
3.硬體器件與平台:節點器件(T-Mote Sky、TI MSP430等);平台(Arduino,樹莓派等)
3.無線感應器網路:基礎知識、協議棧(ZigBee,IETF 6LowPan, CoAP 等)
4.無線感應器網路作業系統(TinyOS, Contiki等)
5.在網上找典型應用案例,學術性綜述等,這一工作實際上不是在最後進行,而是貫穿在前面4步中
我是大一的, 學物聯網應用專業的, 現在想學些東西,應該學什, 要考什證
建議學學contiki系統,一會ipv6是主流,contiki作業系統是專門為物聯網設計的,包括最新的ipv6協議、rpl協議和coap協議。自己去查資料,基本上都是英文的。