hihi…
ich habe dieses “tut” hier versucht nachzustellen, nur scheitere ich kläglich… naja mehr oder weniger…
die datenbank geht, es kommen keine fehler aber in die mysql datenbank wird nichts geschrieben… hat einer ne Idee?
arduino_push_data.php:
<?php
//Datenbank-Verbindung herstellen
//--------------------------------
include("db.php");
// GET mit Prüfung (durch Aufruf von "http://aquarium.jleopold.de/arduino_push_data.php?TEMP=21.90&key=XXXXXXXXX")
//-----------------
if ((isset($_GET['TEMP'])) and (($_GET['key']) == "XXXXXXXXXX")) { // Wenn 'TEMP' übergeben wurde und key stimmt...
$TEMP = ($_GET['TEMP']);
echo $TEMP;
$eintragen = mysql_query("INSERT INTO datenbank (TEMP,DATE) VALUES ($TEMP, NOW())"); // TEMP real übergeben, DATE = automatischer SQL-Befehl (NOW)
} else {
$ergebnis = mysql_query("SELECT * FROM datenbank ORDER BY id DESC LIMIT 1"); //nur letzten Datensatz
while($row = mysql_fetch_object($ergebnis))
{
echo "Aktuellster Wert in der Datenbank:
";
echo "ID \t\t\t","<b>","<font color = 'red'>",$row->ID,"</b>
";
echo "<font color = 'black'>","Temp \t\t","<b>","<font color = 'red'>",$row->TEMP,"</b>
";
echo "<font color = 'black'>","Datum / Uhrzeit \t","<b>","<font color = 'red'>",$row->DATE,"</b>
";
}
}
?>
db.php
<?php
mysql_connect("192.168.2.100","arduino","Kennwort") or die ("Keine Verbindung moeglich");
mysql_select_db("arduino") or die ("Die Datenbank existiert nicht.");
?>
Arduino Sketch:
/*
#####################################
# Poldis Aquarium-Temperatur-Logger #
#####################################
Hardware:
---------
- Arduino Diecimila mit ATMEGA168
- LM35 Temperatur-Sensor (an Analog 0)
- Taster an Digital 2
Funktionen:
-----------
Wird der Taster gedrückt, liest Arduino die Temperatur des Sensors und überträgt den
Wert per Ethernet-Shield in eine mySQL-Datenbank.
Hierzu enthält die angegebenen URL ein PHP Skript, welches die Daten per GET-Befehl
übernimmt und in die Datenbank einträgt.
Versionsinfo:
-------------
AutoSend = Keine Abfrage des Tasters
sendet alle 15 Minuten einen Wert in die Datenbank
*/
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0x90, 0xA2, 0xDA, 0x00, 0x82 }; // MAC-ADRESSE eingeben!
byte ip[] = { 192, 168, 2, 21 }; // IP-Adresse eingeben!
byte gateway[] = { 192, 168, 2, 1 }; // Gateway eingeben!
byte subnet[] = { 255, 255, 255, 0 };
byte server[] = {192,168,2,100}; // IP des Servers eingeben
EthernetClient client;
char host[] = "192.168.2.21"; // DOMAIN eingeben!
char url[] = "/arduino_push_data.php"; // Pfad zur PHP-Datei eingeben
char key[] = "key"; // Kennwort aus PHP-Datei eingeben -> arduino_push_data.php
char c;
int Sensor = 0; // LM35
int PowerLED = 3; // Power LED
float Temperatur = 0; // Variable für Temperatur ;-)
int temp = 0; // Analog-Wert
void setup()
{
pinMode(PowerLED, OUTPUT);
Serial.begin(9600); // für Debug-Ausgaben
Serial.println("Programm gestartet...");
digitalWrite(PowerLED, HIGH);
Ethernet.begin(mac, ip, gateway, subnet);
delay(5000); // warten, bis LAN gestartet
}
void loop()
{
digitalWrite(PowerLED, LOW);
Sensor_lesen();
Daten_senden();
delay(900);
digitalWrite(PowerLED, HIGH);
if (client.available())
{
char c = client.read();
Serial.print(c);
}
delay(9000);
client.stop();
client.flush();
}
void Sensor_lesen()
{
temp = analogRead(Sensor); // Analog-Wert auslesen
Temperatur = (5.0 * temp * 100.0)/10240.0; // Berechnung der Temperatur in °C
Serial.print("Temperatur: ");
Serial.println(Temperatur);
}
void Daten_senden()
{
if(client.connect(server, 80)>0) // Verbindung zum Server aufbauen
{
Serial.print("Verbunden...sende Daten...");
client.print("GET ");
client.print(url);
client.print("?TEMP=");
client.print(Temperatur);
client.print("&key=");
client.print(key);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(host);
client.println();
Serial.println("fertig!");
}
else
{
Serial.println(" ***** VERBINDUNGSAUFBAU NICHT MÖGLICH *****");
}
}
ich glaub ich mach hier den Fehler:
byte mac[] = { 0xDE, 0x90, 0xA2, 0xDA, 0x00, 0x82 }; // MAC addresse ist vom ethernet shield abgeschrieben
byte ip[] = { 192, 168, 2, 21 }; // IP-Adresse vom Ethernet Shield ?!
byte gateway[] = { 192, 168, 2, 1 }; // Gateway
byte subnet[] = { 255, 255, 255, 0 }; //Subway maske
byte server[] = {192,168,2,100}; // IP des Servers mysql
EthernetClient client;
char host[] = "192.168.2.21"; // DOMAIN eingeben! !!! Welche ? vom Server oder vom shield?
char url[] = "/arduino_push_data.php"; // Pfad zur PHP-Datei eingeben Welche ?
char key[] = "key"; // Kennwort aus PHP-Datei eingeben Welches Passwort
edit:
bild aus MyPHPAdmin
edit2:
hab den key vergessen… oben editiert