tag:blogger.com,1999:blog-2573408397176312387.post4475467308404250493..comments2023-10-14T08:44:15.232+08:00Comments on ㄆㄜ ㄊㄧㄡ ㄙˋ: 使用 Arduino IDE 開發 ESP8266 物聯網應用 - 取回 ThingSpeak 特定 Channel 和 Field 最後一筆資料Ruten.proteushttp://www.blogger.com/profile/01780188542231506811noreply@blogger.comBlogger57125tag:blogger.com,1999:blog-2573408397176312387.post-80665270303976264402021-09-10T15:03:37.587+08:002021-09-10T15:03:37.587+08:00感謝幫助!感謝幫助!a16test1https://www.blogger.com/profile/17098982682111038982noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-13890732217487348402021-01-25T21:33:34.848+08:002021-01-25T21:33:34.848+08:00真的很謝謝您有耐心地回答,我照著上面的步驟加上您2020年11月18日回答其他玩家的問題,已經讓我順...真的很謝謝您有耐心地回答,我照著上面的步驟加上您2020年11月18日回答其他玩家的問題,已經讓我順利讀取ThingSpeak上的資料了^^,這對我幫助很大,真的非常的感謝您!plutohttps://www.blogger.com/profile/04431256333313237077noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-12682420534303357652021-01-21T21:51:48.438+08:002021-01-21T21:51:48.438+08:00上面有不只一個程式,除了 ThingSpeakReply.ino 之外,其他的都是由他在進行修改完成...上面有不只一個程式,除了 ThingSpeakReply.ino 之外,其他的都是由他在進行修改完成的,因此可先使用 ThingSpeakReply.ino 作測試,沒問題之後再做其他程式的修改。<br /><br />'GET' was not declared in this scope,看看是不是程式有地方沒有複製到,或是重新複製再做一次編譯試試。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-62195045359529021742021-01-21T20:55:53.194+08:002021-01-21T20:55:53.194+08:00您好不好意思,我想請教您一個問題,我照著上面的程式,嘗試使用arduino編譯,我使用的是ESP01...您好不好意思,我想請教您一個問題,我照著上面的程式,嘗試使用arduino編譯,我使用的是ESP01板可是卻出現,GET = "GET /channels/" + String(channel_id) + "/fields/" + String(field_id) + "/last.json?key=" + READAPIKEY;這邊編譯錯誤,顯示'GET' was not declared in this scopeplutohttps://www.blogger.com/profile/04431256333313237077noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-52350900344270173472020-11-19T15:27:29.482+08:002020-11-19T15:27:29.482+08:00謝謝您抽空幫我做測試
經過測試後已經可以正常執行了
再次感謝!謝謝您抽空幫我做測試<br />經過測試後已經可以正常執行了<br /><br />再次感謝!Anonymoushttps://www.blogger.com/profile/10471923595117999608noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-48581434681429288782020-11-18T21:41:22.186+08:002020-11-18T21:41:22.186+08:00我用你提供的字串裡面的資料 (channel_id=1228438, field_id=1, REA...我用你提供的字串裡面的資料 (channel_id=1228438, field_id=1, READAPIKEY=9BXCDVYXDIM1BK2Y) 用 postman 測試一下,同時也帶入這些資料到 ThingSpeakReply.ino 並燒錄到 NodeMCU 作測試,發現 postman 是沒有問題的,但是 NodeMCU 的輸出卻是只有送出,卻收不到 Thingspeak 的回覆訊息。<br /><br />我猜想,postman 發送和接收都沒有問題,但是用 NodeMCU 去執行時卻收不到回覆,是不是錯過了接收的時機?這個程式在當初寫和測試的時候,發送後接收到 Thinkspeak 的回覆很快,所以為了加快執行速度,發送與接收之間的延遲時間設的非常短,可是經過了幾年,或許用的人太多了,ThinkSpeak 要處理的訊息太多,造成接收訊息後反應回覆的延遲時間變長了,所以才會出現你們遇到的問題!<br /><br />不過,我找到解決方法了,雖然不是最好的,但是只要改兩個地方的數字就可以!<br /><br />修改下面函式裡的 delay(10) 裡面的數值為 2000。如果可以成功獲取資料,再自己去縮短數值就可以。<br /><br />void retrieveField(...){<br /><br />/*** Method 1 ***/<br />...<br />delay(2000);<br />...<br /><br />/*** Method 2 ***/<br />...<br />delay(2000);<br />...<br /><br />} <br /><br />試試吧!<br /><br />----------------------------<br />下面是我執行之後獲取的第一次輸出資料<br />ESP8266 Ready!<br />Connect to Proteus-WiFi<br />...........<br />WiFi connected<br />IP address: <br />192.168.0.11<br /><br />**-- Get a Channel Fiels Feed --**<br />GET /channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2 HTTP/1.1<br />Host: api.thingspeak.com<br />Connection: keep-alive<br /><br />HTTP/1.1 200 OK<br />Date: Wed, 18 Nov 2020 13:19:19 GMT<br />Content-Type: application/json; charset=utf-8<br />Transfer-Encoding: chunked<br />Connection: keep-alive<br />Status: 200 OK<br />X-Frame-Options: SAMEORIGIN<br />Access-Control-Allow-Origin: *<br />Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE, PATCH<br />Access-Control-Allow-Headers: origin, content-type, X-Requested-With<br />Access-Control-Max-Age: 1800<br />ETag: W/"92d97c0c330a1f0214a446b375d50056"<br />Cache-Control: max-age=0, private, must-revalidate<br />X-Request-Id: 036ea14f-fb98-4926-845b-d60b0e504a03<br />X-Runtime: 0.012817<br />X-Powered-By: Phusion Passenger 4.0.57<br />Server: nginx/1.9.3 + Phusion Passenger 4.0.57<br /><br />1f7<br />{"channel":{"id":1228438,"name":"wifi test","description":"收值測試","latitude":"0.0","longitude":"0.0","field1":"Field Label 1","field2":"Field Label 2","field3":"Field Label 3","field4":"Field Label 4","field5":"Field Label 5","field6":"Field Label 6","created_at":"2020-11-13T08:09:52Z","updated_at":"2020-11-16T14:32:41Z","last_entry_id":331},"feeds":[{"created_at":"2020-11-17T12:28:51Z","entry_id":330,"field1":"120.00"},{"created_at":"2020-11-17T12:29:13Z","entry_id":331,"field1":"120.00"}]}<br />0<br /><br />**-- Get Last Entry in a Fiels Feed --**<br />GET /channels/1228438/fields/1/last.json?key=9BXCDVYXDIM1BK2Y HTTP/1.1<br />Host: api.thingspeak.com<br />Connection: close<br /><br />HTTP/1.1 200 OK<br />Date: Wed, 18 Nov 2020 13:19:27 GMT<br />Content-Type: application/json; charset=utf-8<br />Transfer-Encoding: chunked<br />Connection: close<br />Status: 200 OK<br />X-Frame-Options: SAMEORIGIN<br />Access-Control-Allow-Origin: *<br />Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE, PATCH<br />Access-Control-Allow-Headers: origin, content-type, X-Requested-With<br />Access-Control-Max-Age: 1800<br />ETag: W/"7329fd7da0bee2d4f32e7222cd47b3b9"<br />Cache-Control: max-age=0, private, must-revalidate<br />X-Request-Id: ea4bd9f8-b195-496b-bb28-2f9fdabe68fe<br />X-Runtime: 0.008801<br />X-Powered-By: Phusion Passenger 4.0.57<br />Server: nginx/1.9.3 + Phusion Passenger 4.0.57<br /><br />----------------------------Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-69424646338043007992020-11-18T20:44:12.434+08:002020-11-18T20:44:12.434+08:00抱歉忘記說明是使用哪個程式碼
使用的程式碼是ThingSpealReply.ino
GET 與 /c...抱歉忘記說明是使用哪個程式碼<br />使用的程式碼是ThingSpealReply.ino<br />GET 與 /channels 之間確實缺少一個空格,感謝您的提醒<br />一開始在執行Serial Monitor時<br />輸出的值會重複<br />**-- Get a Channel Fiels Feed --**<br />**-- Get Last Entry in a Fiels Feed --**<br /><br />---------------------------------<br /><br />因此將Method 2刪除<br />單獨測試Method 1 試試看是否能將值取回<br />但都無結果<br />輸出會重複顯示"**-- Get a Channel Fiels Feed --**"<br /><br />---------------------------------<br /><br />使用11/17詢問您的那些格式做測試<br />得到的結果依然只重複顯示"**-- Get a Channel Fiels Feed --**"<br />因此上來詢問您<br /><br />---------------------------------<br /><br />測試完您給的程式碼後<br />輸出結果為:<br />**-- Get a Channel Fiels Feed --**<br />GET /channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2 HTTP/1.1<br />Host: api.thingspeak.com<br />Connection: keep-alive<br /><br />---------------------------------<br /><br />Wifi連線測試是有通過的,使用手機的網路也有連線到<br />因此我的判斷才會在是否是請求指令出了問題 以至於沒有收到回傳的訊息<br /><br />使用的是nodemcu esp8266的模組<br /><br />感謝您如此細心耐心的回覆<br /><br />Anonymoushttps://www.blogger.com/profile/10471923595117999608noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-34215411229074085042020-11-17T23:41:26.713+08:002020-11-17T23:41:26.713+08:00我不知道這是不是寫錯
String GET = "GET/channels/1228438...我不知道這是不是寫錯<br />String GET = "GET/channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2";<br />"GET 跟 /channels 之間需要一個空格。<br /><br />/*----------<br />我不知道你用的是哪一個程式(假設是 ThingSpealReply.ino)?執行時 Serial Monitor 輸出為何?基本上,這些資訊都是在問問題的時候要先提供的。<br />-----------*/<br /><br />我試過 https://thingspeak.com/channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2 是可以取回 JSON 字串,所以試試將下面的程式碼取代 ThingSpeakReply.ino 裡的 Method 1 執行看看輸出結果。<br /> <br />/*** Method 1: ***/<br />//<br />//-- Get a Channel Field Feed --//<br />// To view a Channel's field feed, send an HTTP GET to <br />//<br />// https://api.thingspeak.com/channels/CHANNEL_ID/fields/FIELD_ID.json<br />//----<br />String GET = "GET /channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2";<br />//----<br /><br />Serial.println( "**-- Get a Channel Fiels Feed --**" );<br />String getStr = GET + " HTTP/1.1\r\n";;<br />client.print( getStr );<br />Serial.println( getStr );<br />client.print( "Host: api.thingspeak.com\n" ); <br />Serial.print( "Host: api.thingspeak.com\n" ); <br />client.print( "Connection: keep-alive\r\n\r\n" );<br />Serial.print( "Connection: keep-alive\r\n\r\n" );<br /><br />delay(10);<br /><br />// 讀取所有從 ThingSpeak IoT Server 的回應並輸出到串列埠<br />while(client.available())<br />{<br /> String line = client.readStringUntil('\r');<br /> Serial.print(line);<br />}Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-17800682627414684882020-11-17T22:32:09.940+08:002020-11-17T22:32:09.940+08:00感謝您如此快速的回覆,
我發現我的問題點在client.print的傳送請求無法重送出去,因此無法收...感謝您如此快速的回覆,<br />我發現我的問題點在client.print的傳送請求無法重送出去,因此無法收到Thingspeak的回應,<br />我有測試過依照您原始程式直接填入我的id<br />String GET = "GET/channels/1228438/fields/1.json?key=9BXCDVYXDIM1BK2Y&results=2";<br />String getStr = GET + " HTTP/1.1\r\n";;<br />client.print( getStr );<br />client.print( "Host: api.thingspeak.com\n" );<br />client.print( "Connection: keep-alive\r\n\r\n" );<br />也試過另一種方式(這是其他版主寫的我借來測試)<br />const char* _getLink = "http://api.thingspeak.com/channels/1228438/feeds/last.txt";<br />String getStr = _getLink;<br />client.print("GET "+getStr+"\n");<br />client.print("HTTP/1.1\n");<br />client.print("Host: api.thingspeak.com\n");<br />client.print("Connection: close\n\n\n");<br />也有依照我測試上傳寫的get格式<br />String GET = "GET /channels/1228438/fields/1.json?results=2";<br />String getStr = GET + " HTTP/1.1\r\n";<br />client.print( getStr );<br />client.print( "Host: api.thingspeak.com\n" );<br />client.print( "Connection: keep-alive\r\n\r\n" );<br />但是都沒有回傳值給我<br />在網頁上是可以收到json數值的<br />https://api.thingspeak.com/channels/1228438/fields/1.json?results=2<br />Anonymoushttps://www.blogger.com/profile/10471923595117999608noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-73612186592541895872020-11-16T23:00:03.422+08:002020-11-16T23:00:03.422+08:00HTTP GET 的寫法是有格式的,不過不是所有的都需要寫,這一部分可以玩玩 Postman 這套軟...HTTP GET 的寫法是有格式的,不過不是所有的都需要寫,這一部分可以玩玩 Postman 這套軟體(搜尋一下部落格)應該不難了解;至於更詳細的說明,網路上有很多寫得很好的網頁可以看,會比我在這邊寫的更好更容易理解。<br /><br />要與 Thinkspeak 溝通,資料上傳與取得的方式有很多種,每一種都有不一樣的 HTTP GET 要求格式,不過這些需要的 GET 格式都寫在它的參考文件中,只要符合該方式的格式就可以,不需要全部 HTTP GET 的格式全部都寫上去。<br /><br />如取得最後一筆資料,Get Last Entry in a Field Feed ( Response in: JSON ):<br />https://api.thingspeak.com/channels/{CHANNEL_ID}/fields/{FIELD_ID}/last.json<br /><br />將下面網址輸入到 POSTMAN,https://api.thingspeak.com/channels/18795/fields/1/last.json?api_key=READAPIKEY012345<br /><br />其中 {CHANNEL_ID} = 18795, {FIELD_ID} = 1 這兩個值是所創建的 Thinkspeak 裡的 Channel id 和 field id。<br /><br />程式要能執行成功的關鍵就是,這一個網址 https://api.thingspeak.com/channels/18795/fields/1/last.json?api_key=READAPIKEY012345 能夠真正的取回 Json 資料在網頁或是 postman 中,如果連這都不行的話,那程式怎麼跑都不會成功!<br /><br />Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-73499460469114692732020-11-16T22:12:57.852+08:002020-11-16T22:12:57.852+08:00不好意思 我也是剛開始學的新手
目前在測試接收thingspeak的數值
使用大大的程式也遇到一樣的...不好意思 我也是剛開始學的新手<br />目前在測試接收thingspeak的數值<br />使用大大的程式也遇到一樣的問題<br />有測試過String GET = "GET https://api.thingspeak.com/channels/xxxxxxx/feeds.json?api_key=xxxxxxxxxxx&results=2<br />"; //Read a Channel Feed<br />序列監控視窗也沒有顯示數值,網址如果值接收尋收的到數值,<br />另外請教一下GET有固定的寫法嗎?能否說明一下字串的生成 String GET = "GET /channels/" + String(channel_id) + "/fields/" + String(field_id) + ".json?key=" + READAPIKEY + "&results=1";<br /><br />Anonymoushttps://www.blogger.com/profile/10471923595117999608noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-60480748383171548232020-09-21T09:49:24.126+08:002020-09-21T09:49:24.126+08:00我發現問題了
1. (疑似) 我連線的網址沒有加上 https:// 這一段, 但是 thingsp...我發現問題了<br />1. (疑似) 我連線的網址沒有加上 https:// 這一段, 但是 thingspeak 也是可以接受 @@<br />2. 我補上去後, 發現每隔約 5小時30分, 都會收到 -0x7880 準備離線的回應, 我給他 closs 後再重新連線就好了<br />目前已經連續5天以上不關機, 也沒有連線失敗的問題了SEAhttps://www.blogger.com/profile/08634862617054299658noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-3862780458521039042020-09-04T15:19:27.655+08:002020-09-04T15:19:27.655+08:00postman 連續 GET 沒有問題,表示送出去的格式是正確的,但這不表示程式裡的就是對的!
想辦...postman 連續 GET 沒有問題,表示送出去的格式是正確的,但這不表示程式裡的就是對的!<br />想辦法去調整程式直到跟 postman 的動作一樣,因為沒有程式可以參考,這部分沒法提供任何意見!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-86815059399163910382020-09-04T14:08:16.046+08:002020-09-04T14:08:16.046+08:00你好~~
我做了一個智慧插座, 間隔 16 秒定期上傳電力資訊
我透過 postman 傳 talk...你好~~<br />我做了一個智慧插座, 間隔 16 秒定期上傳電力資訊<br />我透過 postman 傳 talkback 命令過去, 未來會用 APP 傳<br />我怕傳完後會有些延遲, 所以我設定一秒去抓 talkback 的命令串有沒有資料<br /><br />但是我不定期會收到連線失敗!!!<br />我有設定失敗後重新連線, 但還是無法有效解決這問題...<br />請問 thingspeak 抓資料也要間隔 15 秒嗎?<br /><br />我比較困惑的是, 我用 postman 連續 GET, 沒有這個問題.....SEAhttps://www.blogger.com/profile/08634862617054299658noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-74952859451947386442020-01-21T18:55:25.757+08:002020-01-21T18:55:25.757+08:00請先使用網址的方式去測試是否能正常抓回資料?如果可以,那就是你的程式 GET 字串的生成有問題,再仔...請先使用網址的方式去測試是否能正常抓回資料?如果可以,那就是你的程式 GET 字串的生成有問題,再仔細檢查一下;不行的話,那就先搞定到可以再寫到程式裏面去。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-13410809384258698882020-01-20T17:15:27.616+08:002020-01-20T17:15:27.616+08:00您好,
請問我接程式全文貼上後,
到這個步驟,
(都完成後,按下 "Upload"...您好,<br />請問我接程式全文貼上後,<br />到這個步驟,<br />(都完成後,按下 "Upload" 按鈕編譯與上傳程式到開發板。<br /><br />打開 "Serial Monitor" 再按下開發板的 RESET1 按鈕,兩種 HTTP GET 方法取得的 ThingSpeak 回應的原始資料,就會完完整整的顯示在輸出視窗中 ( 資料太多,只節錄其中一部分 )<br /><br />序列監控視窗,就只重複出現如下:<br />**-- Get a Channel Fiels Feed --**<br />**-- Get Last Entry in a Fiels Feed --**<br />**-- Get a Channel Fiels Feed --**<br />**-- Get Last Entry in a Fiels Feed --**<br /><br />請問我缺少了什麼步驟,<br />才能看見,Json的訊息呢?!<br />Anonymoushttps://www.blogger.com/profile/00047838717498479001noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-1807263859768622172019-11-25T16:19:35.836+08:002019-11-25T16:19:35.836+08:00取回最後一筆資料 (Get Last Entry in a Field Feed ) 的 HTTP ...取回最後一筆資料 (Get Last Entry in a Field Feed ) 的 HTTP GET 格式是:<br />https://api.thingspeak.com/channels/CHANNEL_ID/fields/FIELD_ID/last.json<br />但是你的程式裡面使用的是 Get Channel Field Feed 的格式:<br />https://api.thingspeak.com/channels/CHANNEL_ID/fields/FIELD_ID.json<br /><br />所以根據你的程式碼,依照正確的格式,正個字串組合後應該是下面這個 HTTP GET 字串:<br />184.106.153.149/channels/888401/fields/1.json?api_key=M8E0AKARFU0X1L5D&results=1<br />發送之後可得到由 thingspeak 回傳的 JSON 字串:<br />{<br /> "channel": {<br /> "id": 888401,<br /> "name": "Aquarium",<br /> "description": "IoT Aquarium",<br /> "latitude": "0.0",<br /> "longitude": "0.0",<br /> "field1": "Light",<br /> "field2": "Waterlevel",<br /> "field3": "Turbidity",<br /> "field4": "Temp",<br /> "created_at": "2019-10-18T07:12:36Z",<br /> "updated_at": "2019-11-21T12:44:34Z",<br /> "last_entry_id": 891<br /> },<br /> "feeds": [<br /> {<br /> "created_at": "2019-11-25T08:07:19Z",<br /> "entry_id": 891,<br /> "field1": "173"<br /> }<br /> ]<br />}<br /><br />所以對照你的程式,下面這一行<br /> getStr += "json?key=";<br />應該改為<br /> getStr += ".json?key=";<br /><br />若改用 Get Last Entry in a Field Feed 的方式,則發送字串的格式應該為:<br />184.106.153.149/channels/888401/fields/1/last.json?api_key=M8E0AKARFU0X1L5D<br />發送之後可得到由 thingspeak 回傳的 JSON 字串:<br />{<br /> "created_at": "2019-11-25T08:16:10Z",<br /> "entry_id": 907,<br /> "field1": "172"<br />}<br />Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-36562612872817542752019-11-25T15:22:20.868+08:002019-11-25T15:22:20.868+08:00你好,想請問一個問題,我使用是Arduino UNO+ESP8266 我是用AT指令下去連WIF...你好,想請問一個問題,我使用是Arduino UNO+ESP8266 我是用AT指令下去連WIFI 我寫入資料可以 但是想讀取資料卻不行<br />目前卡住的地方是 讀取的GET字串沒問題 但是想要印出結果好像沒辦法 請大大指教!! <br /><br /><br /><br />#include <br /><br />/* Arduino+esp8266 thingSpeak example <br /> * Example name = "Write temperature and humidity to Thingspeak channel"<br /> * Created by Ilias Lamprou<br /> * Updated Oct 30 2016<br /> * <br /> * Download latest Virtuino android app from the link:https://play.google.com/store/apps/details?id=com.virtuino_automations.virtuino&hl<br /> * Video tutorial link: https://youtu.be/4XEe0HY0j6k<br /> * Contact address for questions or comments: iliaslampr@gmail.com<br /> */<br /><br />// Code to use SoftwareSerial<br />#include <br />#include <br />#include <br />#include <br />#include <br /><br />SoftwareSerial espSerial = SoftwareSerial(12,13); // arduino RX pin=2 arduino TX pin=3 connect the arduino RX pin to esp8266 module TX pin - connect the arduino TX pin to esp8266 module RX pin<br />#define ONE_WIRE_BUS 2<br />OneWire oneWire(ONE_WIRE_BUS);<br />DallasTemperature sensors(&oneWire);<br /> String ssid = "myssid" ;<br />String password ="mypass";<br /> <br />String apiKey = "M8E0AKARFU0X1L5D"; // replace with your channel's thingspeak WRITE API key<br />String Readkey = "MA2EL29SFDWAXHJA" ;<br />//String ssid="777777"; // Wifi network SSID<br />//String password ="77777777"; // Wifi network password<br />int Light = 0;<br />int Waterlevel;<br />float temp ;<br />int turbidity;<br />int relay= 10;<br />boolean DEBUG=true;<br /><br />//======================================================================== showResponce<br />void showResponse(int waitTime){<br /> long t=millis();<br /> char c;<br /> while (t+waitTime>millis()){<br /> if (espSerial.available()){<br /> c=espSerial.read();<br /> if (DEBUG) Serial.print(c);<br /> }<br /> }<br /> <br />}<br />//================================================================================ setup<br />void setup() { <br /> pinMode(A0, INPUT); <br /> DEBUG=true; // enable debug serial<br /> Serial.begin(9600); <br /> <br /><br /> <br /> espSerial.begin(9600); <br /> <br /><br /> espSerial.println("AT+CWMODE=1"); // set esp8266 as client<br /> showResponse(1000);<br /><br /> espSerial.println("AT+CWJAP=\""+ssid+"\",\""+password+"\""); // set your home router SSID and password<br /> showResponse(5000);<br /><br /> if (DEBUG) Serial.println("Setup completed");<br />}<br /><br /><br />// ====================================================================== loop<br />void loop() {<br /> <br /> thingSpeakRead(888401,1);<br /> delay(10000);<br /><br /><br /> <br />}<br /><br />boolean thingSpeakRead(uint32_t channel_id, uint8_t field_id){<br /> String cmd = "AT+CIPSTART=\"TCP\",\""; // TCP connection<br /> cmd += "184.106.153.149"; // api.thingspeak.com<br /> cmd += "\",80";<br /> espSerial.println(cmd);<br /> if (DEBUG) Serial.println(cmd);<br /> if(espSerial.find("Error")){<br /> if (DEBUG) Serial.println("AT+CIPSTART error");<br /> return false;<br /> }<br />String getStr = "GET /channels/"; // prepare GET string<br />//String GET = "GET /channels/" + String(channel_id) + "/fields/" + String(field_id) + "last.json?key=" + Readkey + "&results=3";<br /> getStr +=String(channel_id);<br /> getStr +="/fields/";<br /> getStr += String(field_id);<br /> getStr += "json?key=";<br /> getStr += Readkey;<br /> getStr += "&results=1";<br /> getStr += "\r\n\r\n";<br /> //getStr = getStr + " HTTP/1.1\r\n";;<br /> // send data length<br /> cmd = "AT+CIPSEND=";<br /> cmd += String(getStr.length());<br /> espSerial.println(cmd);<br /> if (DEBUG) Serial.println(cmd);<br /> <br /> delay(100);<br /> if(espSerial.find(">")){<br /> espSerial.print(getStr);<br /> if (DEBUG) Serial.print(getStr);<br /> }<br /> else{<br /> espSerial.println("AT+CIPCLOSE");<br /> // alert user<br /> if (DEBUG) Serial.println("AT+CIPCLOSE");<br /> return false;<br /> }<br /> return true;<br />}<br /><br /><br /><br /><br /><br /> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> hahahahttps://www.blogger.com/profile/12601514868607191179noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-80070231562726242402019-06-25T13:27:05.731+08:002019-06-25T13:27:05.731+08:00To 阿里嘎豆:
這應該從程式碼中就能直接看到問題點,這跟網頁中的程式沒有關係;thingspeak...To 阿里嘎豆:<br />這應該從程式碼中就能直接看到問題點,這跟網頁中的程式沒有關係;thingspeak 的設定與資料頻道都正常的情況下,正確的 HTTP GET 就會接收到正確的 JSON 字串。<br /><br />能正確上傳,但是回覆後無法正常解析,且輸出的 json 字串值是 -1,這就表示你的上傳有問題,導致回傳的字串出錯,造成接下來的 JSON 無法解析,輸出 parseObject() failed。<br /><br />https://www.youtube.com/channel/UCDd21vf-O4Ay6A3X7WPPvEw<br /><br />自己查詢一下 thingspeak 的說明就不難了解,接收到 -1,就是你沒有存取的權限。<br /><br />//*------------------------------------<br />Response<br /><br />[Success]<br />HTTP Status Code<br />200 OK<br /><br />[Body]<br /> Text Example<br /><br /> JSON Example<br /><br /> XML Example<br /><br /> CSV Example<br /><br />[Error]<br />For the full list, see Error Codes.<br /><br />If you do not have access to the channel, the response is -1.<br /><br />//------------------------------------*Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-50905986382143943772019-06-25T12:49:01.735+08:002019-06-25T12:49:01.735+08:00請問一下,我採用文章中RetrieveHttpGetM2將else全部取代掉,Upload成功
但m...請問一下,我採用文章中RetrieveHttpGetM2將else全部取代掉,Upload成功<br />但moniter出現如下問題<br />-1<br />parseObject() failed<br />阿里嘎豆https://www.blogger.com/profile/06306961749738956529noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-50822800496003892322017-02-28T23:28:26.419+08:002017-02-28T23:28:26.419+08:00輸入 https://api.thingspeak.com/channels/223012/fiel...輸入 https://api.thingspeak.com/channels/223012/fields/3.json?api_key=WE7DFPRX0WG3PZ1M 得到下面的結果,field3 就是沒有接收到資料,所以才會是 null。<br />要去檢查你上傳的程式哪裡出錯,去看你的 Serial monitor 輸出是什麼,對比一下在什麼情況之下會上傳 null。<br /><br />{"channel":{"id":223012,"name":"藥盒提醒","description":"早上的藥盒\r\n","latitude":"0.0","longitude":"0.0","field1":"morn","field2":"noon","field3":"eve","field4":"bed","created_at":"2017-02-04T15:10:42Z","updated_at":"2017-02-28T15:07:48Z","last_entry_id":33},"feeds":[{"created_at":"2017-02-04T15:14:54Z","entry_id":1,"field3":"no"},{"created_at":"2017-02-04T15:16:21Z","entry_id":2,"field3":"no"},{"created_at":"2017-02-04T15:17:27Z","entry_id":3,"field3":"2"},{"created_at":"2017-02-04T15:19:06Z","entry_id":4,"field3":"0"},{"created_at":"2017-02-04T15:20:05Z","entry_id":5,"field3":"0"},{"created_at":"2017-02-13T14:38:07Z","entry_id":6,"field3":null},{"created_at":"2017-02-13T14:39:21Z","entry_id":7,"field3":null},{"created_at":"2017-02-25T13:20:35Z","entry_id":13,"field3":null},{"created_at":"2017-02-<br />// ... 中間省略 ...<br />27T15:09:31Z","entry_id":14,"field3":"2"},{"created_at":"2017-02-28T05:22:48Z","entry_id":15,"field3":null},{"created_at":"2017-02-28T05:23:32Z","entry_id":16,"field3":null},{"created_at":"2017-02-28T05:24:19Z","entry_id":17,"field3":"1"},{"created_at":"2017-02-28T05:24:40Z","entry_id":18,"field3":null},{"created_at":"2017-02-28T05:25:15Z","entry_id":19,"field3":"1"},{"created_at":"2017-02-28T05:25:31Z","entry_id":20,"field3":null},{"created_at":"2017-02-28T05:26:33Z","entry_id":21,"field3":null},{"created_at":"2017-02-<br />// ... 中間省略 ...<br />28T28T12:18:31Z","entry_id":29,"field3":null},{"created_at":"2017-02-28T13:25:25Z","entry_id":30,"field3":null},{"created_at":"2017-02-28T13:25:41Z","entry_id":31,"field3":null},{"created_at":"2017-02-28T13:26:33Z","entry_id":32,"field3":null},{"created_at":"2017-02-28T15:07:48Z","entry_id":33,"field3":null}]}Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-44724084956845123152017-02-28T23:07:37.211+08:002017-02-28T23:07:37.211+08:00恩......又突然好了...
但是原本field3正常,但是現在又出現null
https://a...恩......又突然好了...<br />但是原本field3正常,但是現在又出現null<br />https://api.thingspeak.com/channels/223012/fields/3.json?api_key=WE7DFPRX0WG3PZ1M&results=1黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-37018751618059290042017-02-28T21:51:06.336+08:002017-02-28T21:51:06.336+08:00我連續以及過一段時間連續重新整理那個網址,回傳的資料都是正常的,沒有你所謂的 field4:null...我連續以及過一段時間連續重新整理那個網址,回傳的資料都是正常的,沒有你所謂的 field4:null 的情況出現!<br />像這種情形,可能跟你的瀏覽器有關係,清一下緩衝或是什麼的或許會有幫助! 實際取資料的時候,有資料就會有資料回傳,不會有資料回傳 NULL。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-32925368196206537462017-02-28T21:24:58.558+08:002017-02-28T21:24:58.558+08:00版主擬好!
我輸入thingspeak 讀取資料的網址(https://api.thingspeak...版主擬好!<br />我輸入thingspeak 讀取資料的網址(https://api.thingspeak.com/channels/223012/fields/4.json?api_key=WE7DFPRX0WG3PZ1M&results=1)<br />可是迴傳時卻出現"field4:null"<br />雖然不是經常,但是有甚麼辦法可以解決?<br />這是為何才會出現這個錯誤?<br />黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-76582525777569926622016-12-24T00:25:10.964+08:002016-12-24T00:25:10.964+08:00看文件 https://www.mathworks.com/help/thingspeak/get-...看文件 https://www.mathworks.com/help/thingspeak/get-a-channel-feed.html 裡面描述的方法<br />Example GET:<br />GET https://api.thingspeak.com/channels/9/feeds.json?results=1<br />這可取回 Channel 裡面所有的 Field 的最後一筆資料,看你的溫度在哪一個 filed,濕度在哪一個 field,解析之後就是你要的溫濕度。<br />其他就在仔細研讀一下資料,裡面都有範例可以參考。只要能在網址列取回你要的資料,就可使用程式來完成你要的動作。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.com