Hallo Forum,
leider merke ich immer mehr meine Grenze im Verstehen und Kombinieren mehrer Lösungen. Ich habe es geschafft im lokalen Netzwerk Daten an mein Arduino zu senden und diese auszuwerten. Ausserdem habe ich es geschafft Werte vom Arduino in meine DB (irgendwo im Internet) abzu speichern. Doch, wenn ich den Spaß jetzt kombinieren möchte, gelingt mir das nicht so recht.
Ich würde mich mal wieder über eure Hilfe freuen.
#include <SPI.h>
#include <Ethernet.h>
// MAC und IP Konfiguration
byte mac[] = { 0xDE, 0xAD, 0xBC, 0xAF, 0xFE, 0xED };
IPAddress ip(192,168,*,***);
IPAddress gateway(192,168,*, *);
IPAddress subnet(255, 255, 255, 0);
// warten auf port 23
EthernetServer server(23);
char serverName[] = "www.hemitheconyx-caudicinctus.de";
EthernetClient client;
int pin = 13;
int statusPin13 = 0;
void setup() {
//Ethernet initialisieren
Ethernet.begin(mac, ip, gateway, subnet);
// Server starten
server.begin();
Serial.begin(9600);
}
void loop() {
pinLeuchten();
webInput();
}
void pinLeuchten()
{
if (statusPin13 == 0)
{
digitalWrite(pin,LOW);
}
else
{
digitalWrite(pin,HIGH);
}
}
void webInput()
{
// auf eine eingehende Verbindung warten
client = server.available();
//wenn verbindung, dann 3 bytes lesen;
if (client) {
char command =client.read();
byte pinnumber =client.read();
byte pinvalue =client.read();
if(command == 'O')
{
if (statusPin13 != 0)
{
//Setze Datenbankquery ab!!!
Serial.println("bin in der Schleife == 1");
dbQuery(pin,0);
}
statusPin13 = 0;
Serial.println("Pin13 ausgeschaltet");
}
if(command == 'S')
{
if (statusPin13 != 1)
{
//Setze Datenbankquery ab!!!
Serial.println("bin in der Schleife == 0");
dbQuery(pin,1);
}
statusPin13 = 1;
Serial.println("Pin 13 angeschaltet");
}
//Kommando auswerten
client.stop();
}
}
void dbQuery(int pin, int statuslevel)
{
Serial.print("bin gestartet");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
while(true);
}
//give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if(client.connect(serverName, 80))
{
if (statuslevel == 1)
{
Serial.println("bin connected");
client.println("GET /hc_arduino_php/hc_status.php?pin=13&status=1 HTTP/1.0");
client.println("Host: www.hemitheconyx-caudicinctus.de");
client.println();
Serial.println("habe alles ausgeführt");
}
else
{
Serial.println("bin connected");
client.println("GET /hc_arduino_php/hc_status?pin=13&status=0 HTTP/1.0");
client.println("Host: www.hemitheconyx-caudicinctus.de");
client.println();
Serial.println("habe alles ausgeführt");
}
}
else
{
Serial.println("bin doch gar nicht verbunden");
}
client.stop();
}
Sollte jemand von euch den Code austesten auf www.hemitheconyx-caudicinctus.de/hc_arduino_php/output.php kann überprüft werden ob sich der Wert von 0 auf 1 ändert.