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,並有一段簡單的範例程式:

以下是範例程式:

  1. 新增一個原型 (沿用舊的也可以,看個人喜好,但 Id 不可重複)
  2. 新增2個浮點數顯示通道 tempC (攝氏) / tempF(華氏)
  3. 新增1個資料運算通道 data,填入以下程式碼 (node.js),但須遵守上述縣市。
  4. 以下程式碼中會上傳隨機整數到 data 資料運算通道,並把計算結果 (攝氏溫度與華氏溫度) 顯示在兩個獨立的資料通道 (tempC、tempF)中。
var fahrenheit = context.value; 
var celsius = (fahrenheit - 32) / 1.8; 
return { 
   tempF: fahrenheit, 
   tempC: celsius 
};

執行畫面如下,可以看到 data  / tempC 兩者數值相同,tempF 則為攝氏轉華氏後的四則運算結果:

BlocklyDuino 範例程式

在此每秒上傳一個隨機整數( 8~40) 來模擬溫度變化的效果,您可以改成真實的溫度感測器。另外只要 Id 正確就可以上傳數值到資料運算通道,因為 Blocklyduino 裡面沒有”資料運算“類型的顯示器可以選擇。


我們進一步用另一個範例來看看,請新增三個開關型顯示器通道,分別叫做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};
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *