Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3072|回復: 10
打印 上一主題 下一主題

新手詢問,請問如何讓arduino 觸發感測後前往到某個網址?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2018-6-6 21:29:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位高手請問一下,我目前有作好可以連arduino的ip 在網頁上 看到溫度值,

那要怎麼作才能讓arduino 自動導向到某個網址呢


例如溫度到32度後導向到http://xxx.xxx.xxx.xxx   

推薦
發表於 2018-6-9 02:45:44 | 只看該作者
本帖最後由 超新手 於 2018-6-11 10:23 編輯

你會顯示温度,怎麼會不知道怎麼用?
和顯示温度相同方法
bfill.emit_p(PSTR("$D\n"), sss);  
也就是
bfill.emit_p(PSTR("<meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID=$D'>"),name);
注意!你又忘記在 > 的前面, 加一個單引號. 注意!
如果是整數,就用 $D,
如果是字串,就用 $S........
2#
發表於 2018-6-6 21:57:44 | 只看該作者
本帖最後由 超新手 於 2018-6-7 09:30 編輯

先讓你的網頁有自動更新功能,在 <head> </head>間
加上
<meta http-equiv='refresh' content='10'/>
表示每 10 秒自動更新網頁
一旦超過温度, 就把上面那行,改成
<meta http-equiv='refresh' content='0; url=http://xxx.xxx.xxx.xxx'>
應該就可以了
3#
 樓主| 發表於 2018-6-7 22:27:46 | 只看該作者
感謝回應~
請教一下,能自動觸發嗎,不用找一台電腦開流覽器去瀏覽
4#
發表於 2018-6-8 06:57:56 | 只看該作者
你的問題有點奇怪?
如果沒有人開瀏覽器,
Arduino 自動導向網址根本沒意義了吧?
因為有人看這個網頁,但因為温度高,所以
Arduino 把網頁導向另一個網址
如果沒人監看這個網頁,那就沒有導向網址這件事
我猜你應該沒把問題講清楚吧?
不知道你的需求是..
1.只要曾經温度過高,就要轉址
還是
2.監控過程中,温度過高就轉址

5#
 樓主| 發表於 2018-6-8 13:42:15 | 只看該作者
不好意思,沒有說很明白我是要
1.只要曾經温度過高,就要轉址

可否再請教一個問題,我有照您說的在網頁自動更新的能是有成功,那可加上變數嗎,因為想把變數帶到下一個頁面裡 但不管我用什麼方式串,他檢查時都說語法錯誤
  if(pos) {
      
      int val = DHT11.read(DHT11PIN);

int sss;

sss = micVal;

    BufferFiller bfill = ether.tcpOffset();

    bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n"));


    if(sss>26){

    bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID=變數>"));

    }else{
   
     bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://222.222.222.222>"));   

     }

     bfill.emit_p(PSTR("<p><h1>感測值</h1></p> "));
    bfill.emit_p(PSTR("<p><h2>等於: </h2></p> "));  

    bfill.emit_p(PSTR("$D\n"), sss);  
   
    ether.httpServerReply(bfill.position());
  }
6#
 樓主| 發表於 2018-6-8 13:45:29 | 只看該作者
我試過以下都不行

bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID='".sss."'>"));
bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID='"&sss&"'>"));
bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID='"+sss+"'>"));
7#
發表於 2018-6-8 14:33:09 | 只看該作者
本帖最後由 超新手 於 2018-6-8 14:43 編輯

1) 少了引號(紅色)
bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID=變數'>"));
bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://222.222.222.222'>"));   
2. 這個要包在 <head> </head> 間
從你貼的程式看不到 <html> <head> 這些東西
大致要像這樣
<html>
<head>
<meta http-equiv='refresh' content='5;url=http://222.222.222.222'>
</head>
<body>
<p><h1>感測值</h1></p>
省略......
</body>
</html>

8#
發表於 2018-6-8 19:54:48 | 只看該作者
另外,關於 emit_p(PSTR(" "));
如果要印出雙引號裡面的東西
要注意的是,裡面不能有雙引號
emit_p(PSTR("   "   "));這樣寫是錯的
如果要印出雙引號等特殊字元
就必須加上 \
也就是
emit_p(PSTR(" \"  "));
9#
 樓主| 發表於 2018-6-8 23:35:26 | 只看該作者
不好意思請問
int name= 5;
bfill.emit_p(PSTR(" <meta http-equiv='refresh' content='5; url=http://111.111.111.111?ID=name>"));

我在下一頁的網址列是出現
http://111.111.111.111?ID=name

請問要怎麼把這變數帶到下一頁呢希望呈現如下
http://111.111.111.111?ID=5
11#
 樓主| 發表於 2018-6-11 17:09:27 | 只看該作者
非常感謝你耐心的回覆

可以了,謝謝
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-20 13:01 , Processed in 0.281945 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表