Hallo Arduino-Freunde,
ich möchte mein neu erworbenes Arduino WiFi Shield gerne über PHP fernsteuern. Dafür habe ich mir folgendes überlegt:
Auf der Website, welche ich auf einem Webserver gespeichert habe, findet sich die Möglichkeit Buttons zu bedienen, die einen
Wert, in einer ebenfalls auf dem Server befindlichen TXT-Datei, ändern. Der Arduino stellt nun eine Verbindung zum Server her,
lädt alle bspw. 5 Sekunden die Textdatei herunter und liest den dort gespeicherten Wert aus. Dieser Wert wird dann in einer Variablen gespeichert und kann
dann nach belieben weiterverarbeitet werden.
Bisher funktioniert das downloaden des TXT-Files hervorragend, auch zeigt der Serial Monitor den Inhalt dieser Datei an. Das Problem besteht
nun darin, dass ich den Inhalt der Textdatei nicht in einer Variablen speichern kann.
Hier der Code (zusammen gebastelt aus den WiFi-Shield-Examples):
#include <SPI.h>
#include <WiFi.h>
char ssid[] = "Netzwerkname";
char pass[] = "Password";
int keyIndex = 0;
int status = WL_IDLE_STATUS;
WiFiClient client;
char server[] = "Internetadresse der Website";
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
boolean lastConnected = false; // state of the connection last time through the main loop
const unsigned long postingInterval = 10*1000; // delay between updates, in milliseconds
void setup() {
Serial.begin(9600);
while ( status != WL_CONNECTED) {
status = WiFi.begin(ssid, keyIndex, pass);
delay(1000);
}
}
void loop() {
while (client.available()) {
char c = client.read();
Serial.write(c);
}
// if there's no net connection, but there was one last time
// through the loop, then stop the client:
if (!client.connected() && lastConnected) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
}
// Wenn nicht verbunden und 10 Sekunden vergagen seit letzter Verbindung, neue Verbindung
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
httpRequest();
}
// Da nun verbunden: lastConnect
lastConnected = client.connected();
}
// HTTP Verbindung zu Server:
void httpRequest() {
// Wenn Verbindung zu Client besteht:
if (client.connect(server, 80)) {
// Get Request an TXT Datei
client.println("GET /Test.txt HTTP/1.1");
client.println("Host: Internetadresse der Website");
client.println();
lastConnectionTime = millis();
}
else {
// if you couldn't make a connection:
Serial.println("connection failed");
Serial.println("disconnecting.");
client.stop();
}
}
Vielen Dank für Eure Hilfe