Grab the net with Arduino

How to access a website with multiple virtual hots from Arduino Ethernet Shield. The problem is if you have used Arduino Ethernet Shield, then you know that you can connect a IP, But if the IP has multiple virtual hosts, it will only connect to default virtual host. If it is commercial shared VPS, You wont be able to make your site default.

Gist is use of HTTP protocol which allows you to define host in your request on virtual host server. Here are the possible headers.

http://en.wikipedia.org/wiki/List_of_HTTP_headers

You should also provide basic debugging info like “User-Agent” etc.

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[]            = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[]             = { 192, 168,   6,  30 };

byte server[]         = { ***, ***, 168,  16 }; // Your VPS

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

String response = "";

void setup() {
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  // Give the Ethernet shield a second to initialize
  delay(1000);
  Serial.println("Connecting...");
}

void loop() {
  if (!client.available() && client.connect()) {
    Serial.println("-- Connected");
    // Make a HTTP request:
    client.println("GET /bot HTTP/1.0");
    client.println("Host: example.com");
    client.println("User-Agent: Arduino/Shishir (mail.mastermind [at] gmail.com)");
    client.println();
  }
  if (client.available()) {
    char c = client.read();
    response.concat(c);
  }
  if(!client.connected()){
    process(response);
    //Serial.print(response);
  }
  if (!client.connected() && reset == 1) {
    Serial.println("disconnecting.");
    client.stop();
    response = "";
    delay(1000*10);
  }
}
void process(String response) {
  Serial.println(response);
}

Power Programming with Tags

Featured

Source tagging is very powerful source code navigation system, it beats any state of the art IDE. If you are using Emacs, Vim and TextMate then you can use source tagging for navigation. Here are the few simple steps to do it.

Step 1. Install ctags in your system. For mac

$ sudo port install ctags

Step 2. Create A tag file

$ cd /Users/username/Workspace/rails-project
$ ctags -e -a --Ruby-kinds=+f -o TAGS -R app/ lib/ config/

It is best to add this in crontab for this around 11:30am

Step 3.1 emacs

M-. Follow a tag
M-* Jump back to source.

Step 3.2 vim
just add this in your ~/.vimrc

set tags=TAGS;/

Once this is done you can navigate to source of tag by using.

C-] - go to definition
C-T - Jump back from the definition.
C-W C-] - Open the definition in a horizontal split

Hope you will be able to use this awesome feature.
C is ctrl
M is Meta/Alt/Ecs

मौकों

मौकों मैं शिरकत ना होती, नज़रों मैं नज़ारे ना होते |
जो हम ना होते इस दुनिया में, इन हुस्न वालों के गुज़रे ना होते ||
– शिशिर शर्मा ‘क्रिस’(1)

मैं चाहता था की मैं हिंदी मैं बहुत कुछ लिखूं, पर मैं हाल फिलहाल तो कुछ नहीं लिख पा रहा | पर हो सकता है मैं कुछ समय निकाल कर हिंदी मैं और भी कुछ लिखूं | तब तक के लिए अलविदा |

  1. Shishir Sharma ‘criss’ []