突破外网限制的最简单办法
不用注册和联接乐联网之类的网站,就可以远程控制家里的电器!方法简单,效果也还可以。办法是用Arduino+W5100联接一个论坛,自己在论坛里发表或修改某个关键词,即可控制家里的电器,比如,我在http://www.geek-workshop.com/thread-25592-1-1.html就有一段“做一个小试验Si?a”,只要我将“Si?a”修改成“Si?b”就可以打开家里的热水器了,反之热水器将关闭。闲话少说,程序如下:#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.geek-workshop.com";
char C;
int a=2;
IPAddress ip(192, 168, 0, 177);
EthernetClient client;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
pinMode(a,OUTPUT);
digitalWrite(a,HIGH);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
}
void loop()
{
if (client.connect(server, 80)) {
Serial.println("connected");
client.println("GET /forum.php?mod=viewthread&tid=25592&page=1&extra=#pid119047 HTTP/1.1");
client.println("Host: www.geek-workshop.com");
client.println("Connection: close");
client.println();
}
else {
Serial.println("connection failed");
}
if(client.connected()) {
Serial.println("OK");
if (client.find("Si?")){
Serial.println("OK2");
C=client.read();
Serial.print(C);
}
}
client.stop();
client.flush();
if(C=='b'){ digitalWrite(a,LOW);}//控制电器
else{digitalWrite(a,HIGH);}
delay(20000); //决定其查询的时间,可以适当修改的长一些。
}
主要缺点有二点:一是在时间上有一些延迟,比如,以上程序,每20秒查询一次,也就是说,你修改页面下达命令后,等到Arduino执行,一般都在20秒以后。二是执行情况不能反馈,但自己玩玩还是可以的。 如果所发的指令不在第一页,那还要知道指令所在的楼层吧,读取指令不是很方便,也不安全 连自己搭服务器都省了,楼主创意不错 借鸡生蛋,主意不错! 高材生,方法可以借鉴,很帅! 挺有意思的主意。 本帖最后由 Super169 于 2016-4-20 13:21 编辑
用 arduino + W5100 做 web server, 再在 router 設定 port 80 直接轉到 W5100 去.
就不怕會有 delay 了,但如果在有 proxy 的環境下就不行了. 这虽然是个好办法 但你就不怕别人的留言里有你需要的关键字吗 本帖最后由 lqh 于 2016-4-21 09:00 编辑
ridxqqqq 发表于 2016-4-21 07:25 static/image/common/back.gif
这虽然是个好办法 但你就不怕别人的留言里有你需要的关键字吗
所以要选好你的关键词。另外,如果别人的留言里也有你设定的关键词,但是是在你的关键词之后, 那么他对你的程序没有影响。因为程序每次查询只查第一个关键词,也就是你设定的那个。 创意真不错,赞一个 有这功夫去解释HTML,为什么不使用SMTP和POP3或者IMAP协议? 话说,当年我做木马控制别人电脑的时候,也用过类似的方法:lol:lol:lol 学习了 很不错的想法 拓展玩法,看看有没有实用价值。。。。 :'(你们这么干真的好么?
页:
[1]
2