依網頁說明 HTTP GET 讀取資料,API 語法如下:
讀取 channel 中所有 fields 的資料,回傳 json 格式:
https://api.thingspeak.com/channels/[channel_id]/feeds.json?api_key=[Read API Key],預設每個 field 抓最後 100 點資料
如果 channel 有設定分享給所有人,則 api_key=[Read API Key] 參數不必給,直接用
https://api.thingspeak.com/channels/[channel_id]/feeds.json
https://api.thingspeak.com/channels/[channel_id]/feeds.json?results=10&api_key=[Read API Key],指定每個 field 抓最後 10 點資料(如果 channel 有設定分享給所有人,則 api_key=[Read API Key] 參數不必給)
https://api.thingspeak.com/channels/[channel_id]/feeds.json?results=1&api_key=[Read API Key],指定每個 field 抓最後 1 點資料(如果 channel 有設定分享給所有人,則 api_key=[Read API Key] 參數不必給)
讀取 channel 中某 field 的資料,回傳 json 格式
https://api.thingspeak.com/channels/[channel_id]/fields/1.json?results=10&api_key=[Read API Key],抓 Field1 最後 10 點資料(如果 channel 有設定分享給所有人,則 api_key=[Read API Key] 參數不必給)
https://api.thingspeak.com/channels/[channel_id]/fields/2.json?results=1&api_key=[Read API Key],抓 Field2 最後 1 點資料(如果 channel 有設定分享給所有人,則 api_key=[Read API Key] 參數不必給)
讀取 Public Channel,Read API Key 可省略
連結線上應用程式商店,搜尋 JSON Formatter,或 連結 https://chromewebstore.google.com/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa?hl=zh-TW
開啟瀏覽器,網址輸入 https://api.thingspeak.com/channels/1408098/feeds.json?api_key=TIDV5OXJZBBF4VLC,讀取所有 Fields 的資料,預設是 JSON 格式,預設抓回最近 100 資料點。
瀏覽器另開分頁,網址列輸入 https://thingspeak.com/channels/1408098/,比較抓回來資料與網頁資料。
開啟瀏覽器,網址輸入 https://api.thingspeak.com/channels/1408098/feeds.json?results=1&api_key=TIDV5OXJZBBF4VLC,指定每個 field 抓最後 1 點資料
讀取 Field1:(預設讀取最後 100 筆資料)
開啟瀏覽器,網址輸入 https://api.thingspeak.com/channels/1408098/fields/1.json?api_key=TIDV5OXJZBBF4VLC,抓 Field1 最後 100 點資料
讀取 Field1:(讀取最後 1 筆資料)
開啟瀏覽器,網址輸入 https://api.thingspeak.com/channels/1408098/fields/1.json?results=1&api_key=8BTACUYLJGR5UASN,抓 Field1 最後 1 點資料
筆記:API Requests 語法
寫入單一 Field:
https://api.thingspeak.com/update?api_key=[Write_API_Key]&fieldx=xxx
寫入多 Fields:
https://api.thingspeak.com/update?api_key=[Write_API_Key]&field1=xxx&field2=xxx&field3=xxx
Read a Channel Feed:讀取所有 fields
讀取 channel 中所有 fields 的資料,回傳 json 格式:
https://api.thingspeak.com/channels/[channel_id]/feeds.json?api_key=[Read API Key],預設每個 field 抓最後 100 點資料
https://api.thingspeak.com/channels/[channel_id]/feeds.json?results=10&api_key=[Read API Key],指定每個 field 抓最後 10 點資料
https://api.thingspeak.com/channels/[channel_id]/feeds.json?results=1&api_key=[Read API Key],指定每個 field 抓最後 1 點資料
Read a Channel Field:讀取單一 field
讀取 channel 中某 field 的資料,回傳 json 格式
https://api.thingspeak.com/channels/[channel_id]/fields/1.json?results=10&api_key=[Read API Key],抓 Field1 最後 10 點資料
https://api.thingspeak.com/channels/[channel_id]/fields/2.json?results=1&api_key=[Read API Key],抓 Field2 最後 1 點資料
或 離線版 TUNIOT(執行資料夾中 demo/code/index.html)
IOT > Thingspeak > Read field (Private):讀取 private channel, field 資料,須提供 API Key
#include <ThingSpeak.h>
WiFiClient client;
========== loop() ==========
Serial.print("field1: ");
Serial.println((ThingSpeak.readIntField(1408098,1,"8BTACUYLJGR5UASN")));
Serial.print("field2: ");
Serial.println((ThingSpeak.readIntField(1408098,2,"8BTACUYLJGR5UASN")));
Serial.print("field3: ");
Serial.println((ThingSpeak.readIntField(1408098,3,"8BTACUYLJGR5UASN")));
IOT > Thingspeak > Read field (Public):讀取 public channel, field 資料,不須提供 API Key
ThingSpeak.readIntField(1408098,1)
完成之積木程式(for public channel)
完成之積木程式(for private channel)
儲存積木檔(.xml),儲存 Arduino 程式碼(.ino)
Arduino IDE 開啟載入程式碼(.ino),選擇正確控制板,選擇正確連接埠,上傳燒錄。開啟序列埠視窗,baudrate 9600
整合所學
自覓同伴,二人一組
甲生當發送端,將光敏電阻、DHT溫濕度計感測資料傳送至自己 channel 中的 field 1~4;乙生當讀取端,讀取甲生光敏電阻、DHT溫濕度計感測資料,當光敏類比值 > 800,開紅光 LED。
甲乙角色交換,重複 2
同 2A.1
完成之積木程式
讀取 Thingspeak IoT 平台上指定 channel、指定 Fields 最後一筆資料來作數位輸出控制。利用瀏覽器遠端遙控開關 LED 燈(電器)。
同 2A.1
設計程式讀取指定 Channel 中指定 Field 的資料,並以讀到資料控制 LED 燈(開關)
或 離線版 TUNIOT(執行資料夾中 demo/code/index.html)
完成之積木程式
Arduino IDE 開啟載入程式碼(.ino),選擇正確控制板,選擇正確連接埠,上傳燒錄。開啟序列埠視窗,baudrate 9600
燒錄完成時,Field6 尚未有資料(NULL),紅光(D0) LED OFF
以瀏覽器傳送資料,更新 Field6 值為 1
https://api.thingspeak.com/update?api_key=[你的Write API Key]&fieldx=1
紅光(D0) LED ON
以瀏覽器傳送資料,更新 Field6 值為 0
https://api.thingspeak.com/update?api_key=VLLNE1XCSBAKTATA&field6=0
紅光(D0) LED OFF
紅光(D0) LED OFF
挑戰:設計程式讀取指定 Channel 中指定 Field 的資料,並以讀到資料控制多 LED 燈(開關);
讀到 1,開紅光 LED
讀到 2,開綠光 LED
讀到 3,開藍光 LED
其他資料:關 LED
完成之積木程式
紅光(D0) LED ON
綠光(D5) LED ON
藍光(D6) LED ON
LED 全關
原本使用瀏覽器以 API 傳送資料到 Thingspeak IoT 平台上,當遙控發射端。這裡客製化使用 MIT AI2 設計手機 App 來當遙控端。如此只要連網狀態下,在世界任何角落都可遙控此裝置,控制LED/開關。
開啟瀏覽器,連結 MIT App Inventor2 開發平台(http://ai2.appinventor.mit.edu/),以陽明 Google 雲帳號登錄
素材下載:課程共用資料夾/APP/素材
設計一個控制頁面
第一頁 controlPage
介面配置 > 垂直配置
畫面編排
組件
介面配置 > 垂直配置,controlPage
1) 使用者介面 > 標籤,course2
2) 使用者介面 > 標籤,project2
介面配置 > 垂直配置,VerticalArrangment2
3) 使用者介面 > 圖像,swOn
4) 使用者介面 > 圖像,swOff
介面配置 > 水平配置,HorizontalArrangement5
5) 使用者介面 > 標籤,labelConnectionStatus
6) 使用者介面 > 標籤,connectionStatus
7) 使用者介面 > 標籤,author2
介面配置 > 水平配置,HorizontalArrangement4
8) 使用者介面 > 圖像,imgInfo
不可見元件
9) 通訊 > 網路,thingspeakWrite
10) 使用者介面 > 對話框,Notifier1
11) 多媒體 > 音效,音效1
選定要傳送資料的 ThingSpeak Channel,複製需要的參數
API語法
https://api.thingspeak.com/update?api_key=PS60NJABBGE2FVGV&field1=0
原本使用瀏覽器以 API 傳送資料到 Thingspeak IoT 平台上,當遙控發射端。這裡客製化使用 MIT AI2 設計手機 App 來當遙控端。如此只要連網狀態下,在世界任何角落都可遙控此裝置,控制LED/開關。
開啟瀏覽器,連結 MIT App Inventor2 開發平台(http://ai2.appinventor.mit.edu/),以陽明 Google 雲帳號登錄
設計三個頁面
第一頁 tsParameterPage
介面配置 > 垂直配置
第二頁 controlPage
介面配置 > 垂直配置
第三頁 viewChannelPage
介面配置 > 垂直配置
畫面編排
組件
1) 使用者介面 > 標籤,course1
2) 使用者介面 > 標籤,project1
介面配置 > 垂直配置,VerticalArrangment1
介面配置 > 表格配置,TableArrangment1
3) 使用者介面 > 標籤,labelChannelId
4) 使用者介面 > 標籤,labelWriteApiKey
5) 使用者介面 > 文字輸入盒,inputChannelId
6) 使用者介面 > 文字輸入盒,inputWriteApiKey
7) 使用者介面 > 按鈕,sendThingspeakParameters
8) 使用者介面 > 文字輸入盒,author1
介面配置 > 水平配置,HorizontalArrangement6
9) 使用者介面 > 圖像,imgInfo2
畫面編排
組件
1) 使用者介面 > 標籤,course2
2) 使用者介面 > 標籤,project2
介面配置 > 垂直配置,VerticalArrangment2
介面配置 > 水平配置,HorizontalArrangement1
3) 使用者介面 > 圖像,sw1
4) 使用者介面 > 標籤,spacer1
5) 使用者介面 > 下拉式選單,fieldsList
介面配置 > 水平配置,水平配置1
介面配置 > 垂直配置,垂直配置1
6) 使用者介面 > 圖像,swOn
7) 使用者介面 > 圖像,swOff
介面配置 > 水平配置,水平配置3
介面配置 > 垂直配置,垂直配置2
介面配置 > 表格配置,表格配置1
8) 使用者介面 > 圖像,sw1Image
9) 使用者介面 > 標籤,sw1State
10) 使用者介面 > 圖像,sw2Image
11) 使用者介面 > 標籤,sw2State
....
畫面編排
組件
介面配置 > 水平配置,HorizontalArrangement7
1) 使用者介面 > 按鈕,setkey
2) 使用者介面 > 按鈕,viewChannel
介面配置 > 水平配置,HorizontalArrangement5
3) 使用者介面 > 標籤,labelConnectionStatus
4) 使用者介面 > 標籤,connectionStatus
5) 使用者介面 > 標籤,author2
介面配置 > 水平配置,HorizontalArrangement4
6) 使用者介面 > 圖像,imgInfo
不可見元件
7) 通訊 > 網路,thingspeakWrite
8) 使用者介面 > 對話框,Notifier1
9) 多媒體 > 音效,音效1
請選擇,1,2,3,4,5,6,7,8
sw1Image~sw8Image
sw1State~sw8State
畫面編排
組件
介面配置 > 垂直配置,垂直配置4
1) 使用者介面 > 網路瀏覽器,網路瀏覽器1
介面配置 > 水平配置,水平配置2
2) 使用者介面 > 按鈕,toControlPage
1) 通訊 > 網路,thingspeakWrite
2) 使用者介面 > 對話框,Notifier1
3) 多媒體 > 音效,音效1
或 離線版 TUNIOT(執行資料夾中 demo/code/index.html)
IN/OUT > Analog > Analog write (PWM):設定類比輸出,PWM 值 0~1023
Loops > count with .. from .. to ..:迴圈
儲存積木檔(.xml),儲存 Arduino 程式碼(.ino)
Arduino IDE 開啟載入程式碼(.ino),選擇正確控制板,選擇正確連接埠,上傳燒錄。開啟序列埠視窗,baudrate 9600