MCS雲服務推出可自定義的 Functional Data Channel

MCS雲服務推出可自定義的 Functional Data Channel

聯發科技實驗室旗下的 Mediatek Cloud Sandbox(本文後簡稱MCS) 最近推出了可讓使用者自行透過 JavaScript 來自定義的[資料運算(functional)]通道,根據MCS網站說法,本通道的特色如下:

  1. 可節省 IoT 裝置的電池電力
  2. 不再只顯示原始資料,可以顯示運算後的結果(例如電流感測器的數值,經過計算之後可以換為電費,對使用者來說更直觀。這當然也可以在裝置端做,但能在雲端做更好囉)
  3. 程式碼某些情況下(非全部)可直接在 MCS Function Data Channel 的定義中修改,不需要碰到實體裝置。 (思考一下如果您的裝置已經佈建在天花板上…要再次燒錄程式就很麻煩。當然也可以透過FOTA,但總是多一個方式)

請登入 MCS 之後建立一個原型,點選新增資料通道之後會看到以下畫面:

可以看到多一個[資料運算]通道選項,今天的主角就是他!請點選[新增]

當然也是有相關限制的:

  1. javascript 程式碼大小限制 < 5000 字元
  2. 不允許使用外部函式庫。
  3. 處理時間限制為每個資料點調用 < 20 毫秒。
  4. 運算結果可以傳到裝置內其他非資料運算型態的資料通道, 傳回值的時間戳記與上傳的資料戳的時間戳記相同。

目前支援的語言只有JavaScript,並有一段簡單的範例程式:

以下是MCS提供的範例程式提供的範例程式,其中只有一筆是來自裝置的真實資料 (context.value) 也就是華氏溫度,但以下程式碼中做了攝氏與華氏的溫度轉換,並顯示在兩個獨立的資料通道中。

var fahrenheit = context.value;
var celsius = (fahrenheit - 32) / 1.8;
return {
   dataChnId1: fahrenheit,
   dataChnId2: celsius
};

我們進一步用另一個範例來看看,請新增三個開關型顯示器通道,分別叫做remote1, remote2, remote3,這樣加上原本的functional data channel 就有四個。funtional 會根據本身收到的數值範圍來點亮三個開關顯示器的其中一個:

var tempf = context.value;
var tempc = (tempf - 32) / 1.8;

if (tempf<30){
   return {
      remote:1,
      remote2:0,
      remote3:0
};
}else if(tempf>70){
   return {
      remote:0,
      remote2:0,
      remote3:1
}; 
}else{
   return {
      remote:0,
      remote2:1,
      remote3:0
}; 
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *