聯發科技實驗室旗下的 Mediatek Cloud Sandbox(本文後簡稱MCS) 最近推出了可讓使用者自行透過 JavaScript 來自定義的[資料運算(functional)]通道,根據MCS網站說法,本通道的特色如下:
- 可節省 IoT 裝置的電池電力
- 不再只顯示原始資料,可以顯示運算後的結果(例如電流感測器的數值,經過計算之後可以換為電費,對使用者來說更直觀。這當然也可以在裝置端做,但能在雲端做更好囉)
- 程式碼某些情況下(非全部)可直接在 MCS Function Data Channel 的定義中修改,不需要碰到實體裝置。 (思考一下如果您的裝置已經佈建在天花板上…要再次燒錄程式就很麻煩。當然也可以透過FOTA,但總是多一個方式)
請登入 MCS 之後建立一個原型,點選新增資料通道之後會看到以下畫面:
可以看到多一個[資料運算]通道選項,今天的主角就是他!請點選[新增]
當然也是有相關限制的:
- javascript 程式碼大小限制 < 5000 字元
- 不允許使用外部函式庫。
- 處理時間限制為每個資料點調用 < 20 毫秒。
- 運算結果可以傳到裝置內其他非資料運算型態的資料通道, 傳回值的時間戳記與上傳的資料戳的時間戳記相同。
目前支援的語言只有JavaScript,並有一段簡單的範例程式:
以下是範例程式:
- 新增一個原型 (沿用舊的也可以,看個人喜好,但 Id 不可重複)
- 新增2個浮點數顯示通道 tempC (攝氏) / tempF(華氏)
- 新增1個資料運算通道 data,填入以下程式碼 (node.js),但須遵守上述縣市。
- 以下程式碼中會上傳隨機整數到 data 資料運算通道,並把計算結果 (攝氏溫度與華氏溫度) 顯示在兩個獨立的資料通道 (tempC、tempF)中。
執行畫面如下,可以看到 data / tempC 兩者數值相同,tempF 則為攝氏轉華氏後的四則運算結果:
BlocklyDuino 範例程式
在此每秒上傳一個隨機整數( 8~40) 來模擬溫度變化的效果,您可以改成真實的溫度感測器。另外只要 Id 正確就可以上傳數值到資料運算通道,因為 Blocklyduino 裡面沒有”資料運算“類型的顯示器可以選擇。
我們進一步用另一個範例來看看,請新增三個開關型顯示器通道,分別叫做remote1, remote2, remote3,這樣加上原本的functional data channel 就有四個。funtional 會根據本身收到的數值範圍來點亮三個開關顯示器的其中一個: