diff --git a/ITS_Open_direct/APIKey_template.h b/ITS_Open_direct/APIKey_template.h
new file mode 100644
index 0000000..470e6fc
--- /dev/null
+++ b/ITS_Open_direct/APIKey_template.h
@@ -0,0 +1,5 @@
+// rename this file to "APIKey.h" and fill in a real key!
+
+String thingtweetAPIKey = "myThingspeakKey";
+String serverAPIKey = "myserverAPIKey";
+
diff --git a/ITS_Open_direct/ITS_Open_direct.ino b/ITS_Open_direct/ITS_Open_direct.ino
index d697452..738c29a 100644
--- a/ITS_Open_direct/ITS_Open_direct.ino
+++ b/ITS_Open_direct/ITS_Open_direct.ino
@@ -26,32 +26,14 @@ Example sketches from Arduino team, Ethernet by Adrian McEwen
#include
#include
-//#include
#include "APIKey.h"
-
-char ITSAddress[] = "it-syndikat.org";
-
// Local Network Settings
-byte mac[] = { 0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1 }; // Must be unique on local network
+//byte mac[] = { 0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1 }; // Must be unique on local network
-unsigned int localPort = 8888; // local port to listen for UDP packets
+byte mac[] = { 0xD4, 0xBE, 0xD9, 0x9A, 0x7C, 0x95 }; // Must be unique on local network
-// Variable Setup - check if these Variables are needed
-long lastConnectionTime = 0;
-boolean lastConnected = true;
-int failedCounter = 0;
-
-// NTP stuff
-//IPAddress timeServer(132, 163, 4, 101); // time-a.timefreq.bldrdoc.gov NTP server
-IPAddress timeServer(193,170,62,252); // ana austrian one
-// IPAddress timeServer(132, 163, 4, 102); // time-b.timefreq.bldrdoc.gov NTP server
-// IPAddress timeServer(132, 163, 4, 103); // time-c.timefreq.bldrdoc.gov NTP server
-
-const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message
-
-byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets
// Initialize Arduino Ethernet Client
EthernetClient client;
@@ -59,23 +41,11 @@ EthernetClient client;
// Twitter response variables
char serverName[] = "it-syndikat.org"; // twitter URL
String currentLine = ""; // string to hold the text from server
-String tweet = ""; // string to hold the tweet
-boolean readingTweet = false; // if you're currently reading the tweet
-
// Specific variables
// Status
int hsopen =2;
int ethernetstatus = -1;
-/*
-0=not set
-1=read thingspeak response
-2=read tweet
-*/
-int readStatus=0;
-
-// Twitter message, intermediate part
-String tmsg = " Hackerspace at ";
//debug options
boolean debug = true;
@@ -130,50 +100,22 @@ void setup()
void loop()
{
- switch(readStatus){
- case 0:{
- readStatus = readButtons();
- break;
- }
- case 1:{
- readStatus = readServerReturn();
- if(debug){
- Serial.print("got it ... status: ");
- Serial.println(readStatus);
- }
- break;
- }
- case 2:{
- readStatus = readServerStatus();
- break;
- }
- }
-
- // Check if Arduino Ethernet needs to be restarted
-
- lastConnected = client.connected();
+ readButtons();
}
-int readButtons(){
+void readButtons(){
int ret=0;
if((digitalRead(topen)==LOW)&&(hsopen!=1)){
- startEthernet();
+ //startEthernet();
setRoom(2);
TriggerServerUpdate(true);
- hsopen=1;
- ret=1;
- setRoom(hsopen);
}
if((digitalRead(tclose)==LOW)&&(hsopen!=0)){
- startEthernet();
+ //startEthernet();
setRoom(2);
TriggerServerUpdate(false);
- hsopen=0;
- ret=1;
- setRoom(hsopen);
}
- return ret;
}
void startEthernet()
@@ -236,12 +178,14 @@ void TriggerServerReq() {
// make HTTP GET request to server:
client.println("GET /status-s.php HTTP/1.1");
client.println("HOST: it-syndikat.org");
+ client.println("Connection: close");
client.println();
+ readServerStatus();
+ //readServerReturn();
}else{
if(debug){Serial.println("Not connected...");}
}
// note the time of this connect attempt:
- readStatus=2;
}
void TriggerServerUpdate(boolean stat) {
@@ -251,82 +195,82 @@ void TriggerServerUpdate(boolean stat) {
if(debug){Serial.println("making HTTP request...");}
// make HTTP GET request to server:
String s =(stat?"true":"false");
- client.println("GET /update.php?open=" + s + " HTTP/1.1");
+ client.println("GET /update.php?open=" + s + "&apikey="+serverAPIKey+" HTTP/1.1");
client.println("HOST: it-syndikat.org");
+ client.println("Connection: close");
client.println();
+ readServerStatus();
}else{
if(debug){Serial.println("Not connected...");}
}
// note the time of this connect attempt:
- readStatus=1;
}
-//clean this mess up
-int readServerStatus() {
- if (client.connected()) {
+//reads out the status returned by the server and sets the LED's appropriately.
+int readServerStatus() {
+ char lastsign='0';
+ boolean readStatus = false;
+ while(client.connected()) {
if (client.available()) {
// read incoming bytes:
char inChar = client.read();
// add incoming byte to end of line:
currentLine += inChar;
+
+ if(debug){Serial.print(inChar);}
// if you get a newline, clear the line:
if (inChar == '\n') {
currentLine = "";
+ if(lastsign == '\n'){ // /r/n /r/n is the end of a header
+ readStatus= true; //start to parse the content of the line
+ if(debug){Serial.println("##END OF HEADER##");}
+ }
}
- // if you're currently reading the bytes of a tweet,
- // add them to the tweet String:
- if (readingTweet) {
- if (inChar != '<') {
- tweet += inChar;
- }
- else {
- // if you got a "<" character,
- // you've reached the end of the tweet:
- readingTweet = false;
- if(debug){Serial.println("Message:");}
- if(debug){Serial.println(tweet);}
- if(debug){Serial.println(tweet.startsWith("true", 0));}
- if(debug){Serial.println(tweet.startsWith("false", 0));}
- if(tweet.startsWith("true", 0)){hsopen=1;}
- else {if(tweet.startsWith("false", 0)){hsopen=0;}
- else {hsopen=-1;}}
+ if (readStatus) {
+ // if you got a "<" character,
+ // you've reached the end of the tweet:
+ if(currentLine.startsWith("true", 0)){
+ if(debug){Serial.println("");}
+ hsopen=1;
setRoom(hsopen);
// close the connection to the server:
client.stop();
return 0;
}
+ if(currentLine.startsWith("false", 0)){
+ if(debug){Serial.println("");}
+ hsopen=0;
+ setRoom(hsopen);
+ // close the connection to the server:
+ client.stop();
+ return 0;
+ }
}
- // if the current line ends with , it will
- // be followed by the tweet:
- if ( currentLine.endsWith("")) {
- // tweet is beginning. Clear the tweet string:
- readingTweet = true;
- tweet = "";
- }
- }
+ if (inChar != '\r') {// removes /r so we dan test if the header end with two newlines, hacky but works.
+ lastsign = inChar;
+ }
+ }
}
- return 2;
+ hsopen=-1;
+ setRoom(hsopen);
+ client.stop();
}
-//clean this mess up
-int readServerReturn() {
+//This just reads the server return and logs it to the serial
+void readServerReturn() {
//if(debug){Serial.println("readServerReturn ... ");}
- if (client.connected()) {
+ while(client.connected()) {
if (client.available()) {
char c = client.read();
- Serial.print(c);
- return 1;
+ if(debug){Serial.print(c);}
}
- return 1;
- }else{
- Serial.println();
- Serial.println("disconnecting.");
- client.stop();
- return 0;
- }
+ }
+ if(debug){Serial.println();}
+ if(debug){Serial.println("disconnecting.");}
+ client.stop();
}
diff --git a/ITS_Open_direct/update-t.php b/ITS_Open_direct/update-t.php
deleted file mode 100644
index 5864a23..0000000
--- a/ITS_Open_direct/update-t.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
-".'Sorry, due to an error your Twitter status could not be updated! Please check your username/password!'."
";
-} else {
- echo "".'Your Twitter status has successfully been updated!'."
";
-}
-?>
-
-
diff --git a/server/status-s.php b/server/status-s.php
new file mode 100644
index 0000000..8b64b99
--- /dev/null
+++ b/server/status-s.php
@@ -0,0 +1,9 @@
+
+
diff --git a/server/status.php b/server/status.php
new file mode 100644
index 0000000..41d71ae
--- /dev/null
+++ b/server/status.php
@@ -0,0 +1,33 @@
+
+
diff --git a/server/status.txt b/server/status.txt
new file mode 100644
index 0000000..10bf785
--- /dev/null
+++ b/server/status.txt
@@ -0,0 +1 @@
+false,1361048493
\ No newline at end of file
diff --git a/server/update.php b/server/update.php
new file mode 100644
index 0000000..02aa585
--- /dev/null
+++ b/server/update.php
@@ -0,0 +1,22 @@
+
+