极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 36990|回复: 18

突破外网限制的最简单办法

[复制链接]
发表于 2016-4-19 10:48:57 | 显示全部楼层 |阅读模式
    不用注册和联接乐联网之类的网站,就可以远程控制家里的电器!方法简单,效果也还可以。办法是用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秒以后。二是执行情况不能反馈,但自己玩玩还是可以的。
回复

使用道具 举报

发表于 2016-4-19 11:12:53 | 显示全部楼层
如果所发的指令不在第一页,那还要知道指令所在的楼层吧,读取指令不是很方便,也不安全
回复 支持 反对

使用道具 举报

发表于 2016-4-19 11:21:46 | 显示全部楼层
连自己搭服务器都省了,楼主创意不错
回复 支持 反对

使用道具 举报

发表于 2016-4-19 12:20:46 | 显示全部楼层
借鸡生蛋,主意不错!
回复 支持 反对

使用道具 举报

发表于 2016-4-19 14:22:25 | 显示全部楼层
高材生,方法可以借鉴,很帅!
回复 支持 反对

使用道具 举报

发表于 2016-4-19 14:37:11 | 显示全部楼层
挺有意思的主意。
回复 支持 反对

使用道具 举报

发表于 2016-4-20 13:19:39 | 显示全部楼层
本帖最后由 Super169 于 2016-4-20 13:21 编辑

用 arduino + W5100 做 web server, 再在 router 設定 port 80 直接轉到 W5100 去.
就不怕會有 delay 了,  但如果在有 proxy 的環境下就不行了.
回复 支持 反对

使用道具 举报

发表于 2016-4-21 07:25:17 | 显示全部楼层
这虽然是个好办法 但你就不怕别人的留言里有你需要的关键字吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-21 08:23:35 | 显示全部楼层
本帖最后由 lqh 于 2016-4-21 09:00 编辑
ridxqqqq 发表于 2016-4-21 07:25
这虽然是个好办法 但你就不怕别人的留言里有你需要的关键字吗


所以要选好你的关键词。另外,如果别人的留言里也有你设定的关键词,但是是在你的关键词之后, 那么他对你的程序没有影响。因为程序每次查询只查第一个关键词,也就是你设定的那个。
回复 支持 反对

使用道具 举报

发表于 2016-4-23 00:49:02 | 显示全部楼层
创意真不错,赞一个
回复 支持 反对

使用道具 举报

发表于 2016-4-23 13:43:58 | 显示全部楼层
有这功夫去解释HTML,为什么不使用SMTP和POP3或者IMAP协议?
回复 支持 反对

使用道具 举报

发表于 2016-4-23 13:45:45 | 显示全部楼层
话说,当年我做木马控制别人电脑的时候,也用过类似的方法
回复 支持 反对

使用道具 举报

发表于 2016-4-24 00:01:37 | 显示全部楼层
学习了 很不错的想法
回复 支持 反对

使用道具 举报

发表于 2016-4-24 09:18:30 | 显示全部楼层
拓展玩法,看看有没有实用价值。。。。
回复 支持 反对

使用道具 举报

发表于 2016-4-24 09:58:57 | 显示全部楼层
你们这么干真的好么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 12:01 , Processed in 0.082466 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表