Anfänger braucht Hilfe MySQL auf DS110j

Status
Für weitere Antworten geschlossen.

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Hallo!

Ich möchte Temperatur-Daten von einem Arduino in einer MySQL-Datenbank auf meiner Diskstation DS110J abspeichern.
Das Erfassen der Temperaturen von den Sensoren funktioniert, der Aufruf der php Dateien durch den Arduino auch, nur in der Tabelle kommt nix an :(

Ich habe eine Datenbank (Ardunio) und eine Tabelle (arduino_temperaturen) angelegt. Ich habe einen Benutzer mit Passwort angelegt, der
für die Datenbank alle Rechte hat. (soweit ich das beurteilen kann)

Der Ardunio ruft eine php-Datei auf, in die eine weitere php-Datei eingebunden ist.

-------------------------------------------------------------------------------
<?php
/***********************************************************************************
Autor: Enrico Sadlowski *
Kontakt: profwebapps@gmail.com *
*
PROJEKT: Arduino-MultiSensor-Temperatur-Ueberwachung *
------------------------------------------------------------------------------- *
*
Arduino ruft dieses Script auf, uebergibt Innen- und Aussentemperatur *
(TI und TA) sowie einen Key (key), der mit dem hier angegebenen Key *
identisch sein muss. *
Wenn der Key identisch ist und beide Temperaturwerte uebergeben wurden, *
werden die Temperaturwerte und das aktuelle Datum in der Datenbank gespeichert. *
*
***********************************************************************************/

define("KEY","123");

include("../inc/db.inc.php");

if(isset($_GET['key']))
{
if($_GET['key'] == KEY)
{
if(isset($_GET['T1']) && isset($_GET['T2']))
{
$TEMP1 = mysql_real_escape_string($_GET['T1']);
$TEMP2 = mysql_real_escape_string($_GET['T2']);
$DATUM = date("Y-m-d H:i:s");

$result = mysql_query("INSERT INTO arduino_temperaturen (datumzeit, temp1, temp2)
VALUES('".$DATUM."', '".$TEMP1."', '".$TEMP2."') ") or die(mysql_error());

if(mysql_affected_rows() == 1)
{
$result = "Temperaturwerte gespeichert";
} else $result = "Fehler beim speichern der Daten in der MySQL-Datenbank";
} else $result = "Keine Temperaturwerte übergeben";
} else $result = "Falscher Key";
} else $result = "Kein Key übergeben";

print_r($result);
?>


Der Inhalt dieser eingebundenen Datei sieht folgendermaßen aus:
-----------------------------------------------------

<?php
define('DB_SERVER',"localhost"); Was kommt hier rein?
define('DB_NAME',"DATENBANKNAME"); Hier habe ich "Arduino" eingetragen
define('DB_USER',"DATENBANKUSER"); Hier den User
define('DB_PASSWORD',"DATENBANKPASSWORT"); Hier das Passwort

$conn = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD);
if(is_resource($conn))
{
mysql_select_db(DB_NAME, $conn);
mysql_query("SET NAMES 'utf8'", $conn);
mysql_query("SET CHARACTER SET 'utf8'", $conn);
}
?>

-----------------------------------------------------------

Mir ist nicht klar was ich bei DB_SERVER eintragen soll.
Die IP der Diskstation 192.168.*.*
oder 127.0.0.1


Kann mir bitte jemand dabei helfen.

Danke sehr.
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Mir ist nicht klar was ich bei DB_SERVER eintragen soll.
Die IP der Diskstation 192.168.*.*
oder 127.0.0.1
Hallo, wenn die Datenbank auf der DiskStation ist, localhost.
Das sollte aber auch bei dem Benutzer der Datenbank eingetragen sein.

Gruß Jo
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Hallo Jo!
Vielen Dank.

Habe localhost eingetragen

das sind die Angaben zum User in PHPadmin

DJS localhost Ja USAGE Nein

Funktioniert aber leider noch immer nicht

-------------------------------------
Arduino TemperaturLogger
Ethernet initialisieren...
Temperatur-Sensoren ermitteln...
2 Temperatur-Sensoren gefunden.
Temp1: 20.75
Temp2: 21.19
Verbunden, Sende Daten...
GET /temperatur/TempToMySQL.php
?T1=20.75
&T2=21.19
&key=123 HTTP/1.1
Host: 192.168.***.*** // Die Angaben stimmen habe ich *** eingetragen
User-Agent: Arduino
Connection: close

HTTP/1.1 200 OK
Date: Tue, 16 Apr 2013 13:58:44 GMT
Server: Apache/2.2.22 (Unix) PHP/5.3.15
X-Powered-By: PHP/5.3.15
Vary: Accept-Encoding
Content-Length: 20
Connection: close
Content-Type: text/html

No database selectedDone.

-------------------------------------------

Jemand einen Tipp was das sein kann?

Gruß
DJ
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Arduino TemperaturLogger
[ ... ]
Host: 192.168.***.*** // Die Angaben stimmen habe ich *** eingetragen
User-Agent: Arduino
Connection: close
Hallo, wo ist der Logger ?
auf der DiskStation ?
Wenn ja, Host: localhost.


Gruß Jo
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Arduino 192.168.***.17
ruft seine Sensoren ab und ruft dann über das Netzwerk php Skript auf das liegt auf der
Diskstation Laufwerk W 192.168.***.110 und übermittelt die Werte

Die Angaben zum MySQL Server sind im zweiten, eingebunden php Skript hinterlegt.

Ich sehe im SerialMonitor die Informationen, was der Arduino gerade macht und wie es aussieht erreicht der wohl
die Datenbank gar nicht.

Ich habe irgendwie die Vermutung, der kommt mit der Bezeichung localhost nicht klar.

Gibt es keine Möglichkeit die Datenbank mit einer IP direkt anzusprechen? Die müsste doch eigentlich auch über die IP der Diskstation
erreichbar sein, so wie ich auch eine Website (index.html (auf LW: W) über 192.168.***.110 erreiche. Oder liege ich da völlig falsch?

Wenn ich 127.0.0.1 oder Localhost im Browser eingebe funktioniert ja auch nichts

Gruß
DJ









Gruß
DJ
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Gibt es keine Möglichkeit die Datenbank mit einer IP direkt anzusprechen? Die müsste doch eigentlich auch über die IP der Diskstation erreichbar sein
Ja, mit IP Adresse ist das möglich, wenn Programme nicht auf der DiskStation arbeiten.
localhost auf die IP Adresse ändern,
dem Datenbankbenutzer Zugriff von dieser IP Adresse erlauben.
Der, welcher die Daten an die Datenbank sendet und/oder abruft,
dessen IP Adresse ist es.
17 oder 110, das ist die Frage :)
wo befindet sich die Datei db.inc.php ?

Gruß Jo
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
wo befindet sich die Datei db.inc.php ?

Gruß Jo

Diskstation 192.168.***.110

LW W:/temperatur/

hier ist die Datei TempToMySQL.php abgelegt, die vom Arduino aufgerufen wird

LW W:/temperatur/inc

hier liegt die eingebundene db.inc.php



wenn ich jetzt 192.168.***.110 in der db.inc.php eintrage und dem Benutzer DJS die Adresse der Diskstation eintrage änder sich auch nichts.

Die Datenbank wird doch sicher irgendwie anzusprechen sein -
So wie ich ja den phpMyAdmin auch über 192.168.***.110/phpMyAdmin erreiche

ich habe da was gelesen , wo noch der Port zur IP beigefügt werden muss?


Gruß
DJ
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
LW W:/temperatur/inc
hier liegt die eingebundene db.inc.php
Also, sollte in der db.inc.php die IP stehen wo die Datenbank ist, die DiskStation.
Der Datenbankbenutzer, sollte Rechte erhalten, von der IP Adresse wo das LW W ist.
Das Laufwerk w ist doch bestimmt auf einem PC eingebunden ?

Gruß Jo
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Zur Klärung und Sicherstellung:

Die php dateien liegen auf der Diskstation und zwar in dem Bereich wo ich auch eine index.html ablege, die ich sehe, wenn ich in meinem Browser
die iP Adresse der Diskstation eingebe. Das ist das Verzeichnis was in der "FileStation" mit "web" bezeichnet wird.
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Die php dateien liegen auf der Diskstation und zwar in dem Bereich wo ich auch eine index.html ablege
Ok, warum dann LW W ?
Wenn alles auf der DiskStation ist und Du es mit
http://diskstation/usw ansehen kannst.
Die Datei db.inc.php sich auch auf der DiskStation befindet.
Ist nun die Frage, wer schreibt in diese Datenbank ?
Arduino selbst ?
Ein anderes Programm ?
Wo befindet sich dieses Programm ?

Gruß Jo
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Sorry -Fehler gefunden

in der ersten php Datei fehlte in der Zeile das Unterverzeichnis "temperatur"

include("../temperatur/inc/db.inc.php");

dann funktionieren sowohl localhost als auch die ip der Diskstation.

Gruß
DJ
 

Pete2000

Benutzer
Mitglied seit
15. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
Ok, warum dann LW W ?
Wenn alles auf der DiskStation ist und Du es mit
http://diskstation/usw ansehen kannst.
Die Datei db.inc.php sich auch auf der DiskStation befindet.
Ist nun die Frage, wer schreibt in diese Datenbank ?
Arduino selbst ?
Ein anderes Programm ?
Wo befindet sich dieses Programm ?

Gruß Jo


Der Arduino übergibt die Daten an das erste php Programm (liegt auf der Diskstation) das wiederum das zweite php- Programm aufruft liegt ein Verzeichnis tiefer auf der Diskstation. Das macht die Verbindung zur Datenbank auf und schreibt die Daten in die Datenbank.

Wen es interssiert hier kann man mehr dazu finden:

http://fluuux.de/2012/09/arduino-mysql-temperatur-sensoren-uber-webserver-auslesen/


Gruß
DJ
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat