網頁

Blynk雲端平台的Value Display工具



在雲端平台blynk中,我覺得顯示元件display比起控制元件controllers還常用許多,因為透過這些工具才能有效地知道遠端目前的狀態與數據,尤其是在國外相當流行的氣象站專題中,紀錄與數據是非常重要的,這一點在blynk中也都替大家想好了,而今天我就先從最簡單的Value Display工具開始,從硬體中上傳資訊到開發板中。

一如之前的控制元件一樣,顯示元件反而更加的簡單,除了工具名稱之外,剩下的就是輸入腳INPUT跟刷新間隔REFRESH INTERVAL。

在INPUT中我們有Digital、Analog及Virtual可以選擇,在Digital的模式中,會讀取硬體的數位腳是HIGH或是LOW的狀態,而Analog腳就能讀取該腳位的電壓值並進行換算,這些都與Arduino差不多。但是在INPUT中我覺得比較好用的還是Virtual,因為無論是透過ESP8266作為上網的媒介,或是要讀取各種數位介面(IIC等等)感測器的數值,都會使用Virtual虛擬引腳來進行資料的傳輸,畢竟整塊NodeMCU就只有一支類比輸入腳,如果要偵測許多資料的話還是用數位介面的感測器比較方便。



而在讀取數據的時間間隔Refresh Interval又分成兩種的模式,一種是PUSH模式,另外一種則是時間間隔讀取(1sec, 2sec....等等)。

(要注意在Digital與Analog中沒有PUSH的選項)

這兩種的不同大致是這樣的,在PUSH模式中,Display會等待硬體送過來的數值,而不會主動地去發送讀取的請求,在官方的文件中也對這個有清楚的解釋Pushing data from hardware,在這個模式中的程式碼必須要寫成在間隔時間發送一次訊號(或是某件事情觸發硬體進行資料發送),而這個模式中的程式碼可以參考官方的範例Push Data,在這個模式中它會發送當前開機到現在的秒數到V5引腳。重要的是這個模式中的數據,也會存在Blynk的雲端資料庫中,這個在之後會介紹的數據圖表工具SuperChart是相當重要的,因為我們不可能無時無刻開著手機等待資料送過來,而透過PUSH這個模式,就能讓資料自動發送到資料庫中,當我們開啟APP時,它會自動從資料庫下載下來。

像是溫溼度與日照等等需要長時間觀察的數據,就非常需要這樣的狀況。



在PUSH模式中,還有一個很重要的事情是,數據能存多久? 能存多大?

關於這點官方在SuperChart這個工具的文末有介紹到,在數據的發送中資料庫僅能提供每一個pin每分鐘1筆的紀錄(因為資料庫是免費的),如果在每一分鐘內PUSH上去的資料會被平均後再儲存。

(As Blynk Cloud is free to use we have a limit on how many data you can store. At the moment Blynk Cloud accepts 1 message per minute per pin. In case you send your data more frequently your values will be averaged. For example, in case you send value 10 at 12:12:05 and than again 12 at 12:12:45 as result in chart you’ll see value 11 for 12:12.)

每一個使用Blynk.virtualWrite指令發送到Blynk資料庫的數據都會被儲存起來,不管APP有無運行都一樣。
(Blynk任何儲存在資料庫中的Data會在三個月之後被刪除,所以這一點務必要注意)

In order to see data in chart you need to use either widgets with “Frequency reading” interval (in that case your app should be open and running) or you can use Blynk.virtualWrite on hardware side. EveryBlynk.virtualWrite command is stored on server automatically. In that case you don't need application to be up and running.

基本上在需要數據長時間儲存與監控的模式中,PUSH模式是必要的,因為我們不可能一直開著APP去紀錄。然而在秒數間隔的模式中,這個是屬於Push Data On Request的程式,在這個程式碼中並沒有固定發送訊息的一個功能,而是當APP端去進行請求的時候,才會觸發BLYNK_READ(PIN_UPTIME)裡面的程式碼,進一步再進行資料的上傳Blynk.virtualWrite(PIN_UPTIME, millis() / 1000)。也就是說在這個模式下一定要APP是運行的狀態,才會對硬體發送數據傳送的請求。

因此我私心覺得PSUH模式會比起秒數間隔模式來的常用許多,無論是溫溼度、光照、PM2.5等等專案,都需要不斷的進行資料的發送。不過官方這個設計也一定有它的用途,就是視情況而定了,如果沒有長時間監控資料的需求,用秒數的模式其實也比較好,就在運行時才進行資料的要求即可。