2015年6月26日 星期五

Arduino YUN + Android + Parse 最終回



我想要讓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 KEYREST API KEY然後再把json body
  // JSON body
  process.addParameter( "-d" );
  sprintf( buffer, "{\"channels\" : [\"arduino\"], \"data\" : {\"alert\" : \" Something trigger \"} }");
  process.addParameter( buffer );

編譯Arduino code,就發現一直收到推播囉
可以改為當PIN2high的時候才推播,這樣就很像市面上的產品了
PIN2要接什麼都可以,例如接個Reed Switch
當磁簧被觸發後,手機就收到推播通知

其實這裡Arduino跳了一步驟,那就是沒有註冊到installationchannels
Androind的程式碼是有先註冊滴,但這裡我是先用postmanjson註冊到parse,名稱為Led


parse會看到deviceTypeembedd的裝置已經註冊到Led

為什麼會選擇先用postmanjson格式呢?
是因為原本我是把註冊訊息寫到arduinosetup()
但發現arduino會當機,這個要找時間慢慢修正,所以就用postman偷吃步

用以下格式也是可以註冊到channels(只是寫到setup()有時不會動作)

經過這一連串的動作後,這樣Arduino就可以推播到手機,也可以用手機控制ArduinoLED

註:其實整篇文章寫的有點亂,細節也沒提到,傷了大家的眼睛很不好意思,而且code還可以再修改,但只是為了for fun就暫時先這樣了

下次再把整個code完整以及加上無線模組吧!

不過要先試一次mbed有什麼魔力,呼叫出借mbed!!! 呼叫出借mbed!!!

1 則留言:

FB設定搶先看的方式

設定搶先看的兩種方式 A1. 先到我家的日常粉絲團按下 …( 紅框處 ) A2. 按下追蹤中 ( 紅框處 ) A3. 按下搶先看 ( 紅框處 ) A4. 完成!!! 另一種方式 ...