Datenübergabe an PHP Datei

Die Zeilen sind nur scheinbar identisch. Der Browser sendet noch viel mehr zum Server. Irgend etwas fehlt beim Arduino.

Da bleibt Dir nur der Weg, den Netzwerkverkehr für beide Varianten zu checken.
Ich empfehle dazu Wireshark.

Gruß Tommy

Hast du in deinem Sketch das delay rausgemacht und lässt du dir die Antwort des Servers auf dem seriellen Monitor anzeigen?

Klappt das mit einer anderen http Seite (nicht https!)
Ist dein Server http oder https ?

ElEspanol:
Hast du in deinem Sketch das delay rausgemacht und lässt du dir die Antwort des Servers auf dem seriellen Monitor anzeigen?

Klappt das mit einer anderen http Seite (nicht https!)
Ist dein Server http oder https ?

ich mache jetzt mal das Delay raus. wie kann ich mir denn die Antwort des Servers im seriellen Monitor anzeigen lassen?

Ein kleiner Beispiel Sketch zum Senden via GET und der Rückempfang wäre prima.

Was für eine andere HTTP Seite?
Apache läuft unter Port80 http.

Setze ich meinen Domain Namen auf localhost, bekomme ich diese Apache Log Einträge....

192.168.178.18 - - [17/Sep/2017:18:24:23 +0200] "GET /arduino_push_data.php?TEMP=173.34&KEY=arduino HTTP/1.1" 200 6
192.168.178.18 - - [17/Sep/2017:18:24:23 +0200] "GET /arduino_push_data.php?TEMP=172.36&KEY=arduino HTTP/1.1" 200 6
192.168.178.18 - - [17/Sep/2017:18:24:23 +0200] "GET /arduino_push_data.php?TEMP=172.36&KEY=arduino HTTP/1.1" 200 6
192.168.178.18 - - [17/Sep/2017:18:24:23 +0200] "GET /arduino_push_data.php?TEMP=170.90&KEY=arduino HTTP/1.1" 200 6
192.168.178.18 - - [17/Sep/2017:18:24:24 +0200] "GET /arduino_push_data.php?TEMP=171.39&KEY=arduino HTTP/1.1" 200 6

Kein Fehler 400 mehr. Obwohl der Zugriff auf Apache von allen gestattet ist.

Du meinst den Hostnamen.

Das hat nichts damit zu tun, ob etwas gestattet ist.

Ich kenne die Einstellungen Deines Apache nicht aber der Host ist oft beim Zugriff vom Arduino aus der Knackpunkt für 400 "bad request".
Da wird "debian.fritz.box" nicht in der Apachekonfiguration stehen, nur localhost.
Du kannst ja mal als host "192.168.178.34" probieren (wenn das seine IP ist).
Der ist implizit meist auch definiert.

Aber schön, dass es funktioniert.

Gruß Tommy

Hallo Tommy,

es ist zwar der BAD Error 400 weg, trotzdem funktioniert es nicht.

Ist dein Testbrowser auf dem gleichen Rechner wie der Apache?

Falls ja, teste mal von einem anderen oder vom Tablett oder mobil

Testest Du vom Arduino oder vom Browser aus?

Was sagen die Ausgaben?

Du sitzt vor der Hardware. Mit den mageren Infos können wir allenfalls raten oder würfeln.

Gruß Tommy

ElEspanol:
Ist dein Testbrowser auf dem gleichen Rechner wie der Apache?

Falls ja, teste mal von einem anderen oder vom Tablett oder mobil

Im Moment läuft der Browser auf dem gleichen Rechner wie der Apache.

Wenn ich in den Logfiles 200 stehen habe... dann sollte es doch funktionieren oder?

Was braucht Ihr denn für Infos?

Teste von einem anderen Gerät aus

SO Jungs,

egal was ich mache. Ich kann die Daten am Browser nicht auslesen bzw. weiterverarbeiten.

Am Tablet, Handy, und in verschiedenen Browsern das gleiche Bild.

Hier nochmal mein Apache Access.log

192.168.178.18 - - [17/Sep/2017:20:04:59 +0200] "GET /arduino_push_data.php?TEMP=158.69&KEY=arduino HTTP/1.1" 200 15
192.168.178.18 - - [17/Sep/2017:20:05:49 +0200] "GET /arduino_push_data.php?TEMP=158.69&KEY=arduino HTTP/1.1" 200 15

Das ist jetzt mal mein vereinfachtes PHP Script um die Daten nur anzeigen zu lassen, selbst das bringt einen Fehler.

<?php
$ABC = $_GET['TEMP'];
$DEF = $_GET['KEY'];
echo " $ABC $DEF";
?>

Wanderfalke:
Das ist jetzt mal mein vereinfachtes PHP Script um die Daten nur anzeigen zu lassen, selbst das bringt einen Fehler.

Den Du lieber geheim hälst, er könnte ja zur Lösungsfindung beitragen.

Gruß Tommy

Tommy56:
Den Du lieber geheim hälst, er könnte ja zur Lösungsfindung beitragen.

Gruß Tommy

Hab ich doch gepostet oben den Code.

Hier noch einmal für Dich.

<?php $ABC = $_GET['TEMP']; $DEF = $_GET['KEY']; echo " $ABC $DEF"; ?>

Was an Deinem eigenen Text: "selbst das bringt einen Fehler" ist Dir unverständlich?

Wenn es einen Fehler bringt, heißt das in normalem Deutsch: Es gibt eine Fehlermeldung.

Genau diese solltest Du uns mitteilen.

Außerdem steht die Antwort auf die Frage, was vom Arduino passiert und was vom Browser noch aus.

Zwischendurch hast Du mitgeteilt, dass es mit Host: localhost funktionieren würde, nun plötzlich nicht mehr?

Irgendwie sind deine Antworten reichlich konfus.

Gruß Tommy

Wanderfalke:

#include <Ethernet.h>

#include <SPI.h>

EthernetClient client;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC-ADRESSE eingeben!
byte ip[] = { 192, 168, 178, 18 }; // IP-Adresse eingeben!
byte gateway[] = { 192, 168, 178, 1 }; // Gateway eingeben!
byte subnet[] = { 255, 255, 255, 0 };
byte server[] = { 192, 168, 178, 34 }; // IP des Servers eingeben
char host[] = "debian.fritz.box"; // DOMAIN eingeben!
char url[] = "/dallas/arduino_push_data.php"; // Pfad zur PHP-Datei eingeben
char key[] = "arduino"; // Kennwort aus PHP-Datei eingeben
char c;

Ersetzt in deinem sketch doch mal die Variablen (server, host, url, key) durch die tatsächlichen Werte, also so eine Art "Hard Wired" Adresse.
Also statt: if (client.connect(server, 80)) // Verbindung zum Server aufbauen
gib mal: if (client.connect(192, 168, 178, 34, 80)) // Verbindung zum Server aufbauen
ein. Bei den anderen Zeilen im Sketch auch. Einfach mal die Variablen gegen Werte tauschen.

Das war bei mir nämlich das Problem.
Wenn ich die Zeile die im Serial Monitor angegeben wurde im Browser eingegeben habe (Copy/Paste) wurde der Wert in die MySql Datei geschrieben, vom Sketch aus tat sich nix, so wie bei dir immer nur BAD REQUEST.

Als ich dann direkt im sketch die Wert eingegeben hab lief alles - warum es so ist ? keine Ahnung -
Versuchs mal....

Eventuell hast du noch das Problem das du auf 'nem localhost arbeitest. Versuch doch mal die Verbindung zu 'nem Webspace mit PHP und MySQL Datenbank herzustellen. Dann aber auch mit dem Domain Namen statt der IP Adresse.

Ulrich

black5:
if (client.connect(192, 168, 178, 34, 80)) // Verbindung zum Server aufbauen

Nicht eher if (client.connect(192, 168, 178, 34)) ?

ähmmm - und wo bleibt der port?

Der Port sollte dabei sein.
EthernetClient.h:

  virtual int connect(IPAddress ip, uint16_t port);
  virtual int connect(const char *host, uint16_t port);

Gruß Tommy

Hast recht, war zu schnell.

Richtig
if (client.connect({192, 168, 178, 34}, 80))

weil if (client.connect(192, 168, 178, 34, 80)) kompiliert bei mir nicht mal.

Sorry mit der numerischen Eingabe ( der IP Adresse), ich hab bei mir direkt den Domain Namen eingegeben, zusammen mit dem Port. Bin abisserl durcheinandergekommen mit den numerischen Eingaben :roll_eyes:

BTW - @ Wanderfalke

Könnte dein Code von hier kommen : http://www.blog.sa2bfo.com/categories/31-Projekt-7-Ver-3