MCS雲服務推出可自定義的 Functional Data Channel
聯發科技實驗室旗下的 Mediatek Cloud Sandbox(本文後簡稱MCS) 最近推出了可讓使用者自行透過 JavaScript 來自定義的[資料運算(functional)]通道,根據MCS網站說法,本通道的特色如下:
- 可節省 IoT 裝置的電池電力
- 不再只顯示原始資料,可以顯示運算後的結果(例如電流感測器的數值,經過計算之後可以換為電費,對使用者來說更直觀。這當然也可以在裝置端做,但能在雲端做更好囉)
- 程式碼某些情況下(非全部)可直接在 MCS Function Data Channel 的定義中修改,不需要碰到實體裝置。 (思考一下如果您的裝置已經佈建在天花板上…要再次燒錄程式就很麻煩。當然也可以透過FOTA,但總是多一個方式)
請登入 MCS 之後建立一個原型,點選新增資料通道之後會看到以下畫面:
可以看到多一個[資料運算]通道選項,今天的主角就是他!請點選[新增]
當然也是有相關限制的:
- javascript 程式碼大小限制 < 5000 字元
- 不允許使用外部函式庫。
- 處理時間限制為每個資料點調用 < 20 毫秒。
- 運算結果可以傳到裝置內其他非資料運算型態的資料通道, 傳回值的時間戳記與上傳的資料戳的時間戳記相同。
目前支援的語言只有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
};
}