我想要讓Arduino直接丟json格式,json格式相當簡單大括號是內容{},中括號是陣列[],這裡有Parse REST API的教學https://parse.com/docs/rest/guide
所以要讓Arduino推到Android,若是用curl就要寫成如下
curl -X POST \
-H "X-Parse-Application-Id: 你的Parse ID" \
-H "X-Parse-REST-API-Key: 你的Parse REST API KEY" \
-H "Content-Type: application/json" \
-d '{
"channels": [
"Android",
],
"data": {
"alert": "Something trigger"
}
}' \
https://api.parse.com/1/push
由於Arduino無法直接寫json格式,上網看到已經有高手用process做完,請參閱https://gist.github.com/krhoyt/cc107efba91adf2875c1
修改成你的APP KEY及REST API KEY然後再把json body
//
JSON body
process.addParameter( "-d" );
sprintf( buffer, "{\"channels\" :
[\"arduino\"], \"data\" : {\"alert\" : \"
Something trigger \"} }");
process.addParameter( buffer );
編譯Arduino code,就發現一直收到推播囉
可以改為當PIN2是high的時候才推播,這樣就很像市面上的產品了
PIN2要接什麼都可以,例如接個Reed
Switch
當磁簧被觸發後,手機就收到推播通知
其實這裡Arduino跳了一步驟,那就是沒有註冊到installation的channels內
Androind的程式碼是有先註冊滴,但這裡我是先用postman寫json註冊到parse,名稱為Led
在parse會看到deviceType為embedd的裝置已經註冊到Led
為什麼會選擇先用postman寫json格式呢?
是因為原本我是把註冊訊息寫到arduino的setup()中
但發現arduino會當機,這個要找時間慢慢修正,所以就用postman偷吃步
用以下格式也是可以註冊到channels的(只是寫到setup()有時不會動作)
經過這一連串的動作後,這樣Arduino就可以推播到手機,也可以用手機控制Arduino的LED
註:其實整篇文章寫的有點亂,細節也沒提到,傷了大家的眼睛很不好意思,而且code還可以再修改,但只是為了for fun就暫時先這樣了
下次再把整個code完整以及加上無線模組吧!
不過要先試一次mbed有什麼魔力,呼叫出借mbed!!!
呼叫出借mbed!!!