全能電路設計實戰

2019年1月10日 星期四

AIoT軟體架構圖


實現一個AIoT架構,一個可能的方式參考下列作法

在Raspberry Pi 這邊, 將一個ML/DL Model 所預測出來的結果, 也許是0或1, 或是分類的softmax機率值等, 依據結果,以事件方式丟到雲端,再由雲端的程式負責進和外界的通訊,通訊的方式可以E-mail, LINE, MQTT, WebSocket等機制。

這樣的好處是資料與通訊管理的細節都在雲端處理, 而Raspberry Pi 只會根據AI預測的結果,於條件滿足的時候再會用到網路。好處: 終端能減少網路的使用, 而且也不必霊端方面的應用邏輯。並且能專司其職,懂AI的人專注在AI身上,懂雲端/Web 技術的人就專注這些Web技術。







#Python  code snippet 

利用python上驗證各種通訊程序, 包含 MQTT, LinePutsh,...


#Node.js code snippet 


// parse application/json
var jsonParser = bodyParser.json()

/MQTT
app.post('/agent/mqtt',jsonParser, function (req, res) {

  //console.log(req.body)
  console.log(req.body.topic);
  console.log(req.body.message);

//測試Linebot是否能通
app.post('/webhook', bot.parser());

//Line Push
app.post('/agent/line', function (req, res) {

  console.log('Line');

  ////Line code/////////////
 // pushLinemsg(req.body.message['0'])
 pushLinemsg(JSON.stringify(req.body.message))


  ////Repsone to http client/////
     respond_http(res);

});





#為使用Linebot 我們使用ngrok 來解決private IP及要提供https服務

./ngrok http 3010




2a87b84c.ngrok.io/webhook 貼到Line的設定中,並verify https 200 OK, 如果可以通代表ngrok 已打通的channel