PHP POST an die Web Station

bimo

Benutzer
Mitglied seit
28. Jan 2020
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo Community

Ich arbeite aktuell an einem Projekt und habe Probleme die Disk Station / Web Station richtig einzubinden.
Das Projekt ist folgendes, mit einem Micro-Controller (Arduino) werden Sensordaten erfasst und diese Sensordaten, werden per WiFi-Modul (ESP8266) an ein PHP Skript geschickt. Die angewendete PHP Methode hierbei ist POST. Die gesendeten Daten sollen in eine Datenbank auf der Synology NAS gespeichert werden. Es werden über den Micro-Controller alle 30 Sekunden Daten gesendet und die Datenbank soll entsprechend kontinuierlich angereichert werden.

Als Grundlage nutze ich folgendes Tutorial, welches sich auf einen Webserver bezieht und ich habe das Projekt mit meinem Provider-Webspace auch erfolgreich umgesetzt:
https://randomnerdtutorials.com/esp32-esp8266-mysql-database-php/
Anstatt meine Daten an einen Webserver zu senden, würde ich aber lieber meine Daten an mein NAS (DS215+) schicken. Zur Orientierung habe ich folgende Anleitung genutzt, primär von Interesse waren die Einstellungen der NAS und Web Station:
https://werner.rothschopf.net/202009_iot_webserver_synology.htm
Sämtliche Checks, wie in der Anleitung zu PHP und Schreibrechten waren erfolgreich. Wenn ich aber die Sensordaten schicke - per Serial Monitor erhalte ich ein PHP 200 (was grundsätzlich positiv ist), kommen diese leider nicht an bzw. werden diese nicht verarbeitet. Die PHP Skripte erhalten nichts und in die Datenbank wird auch nichts eingetragen. Da ich keine Fehlermeldung vom Micro-Controller erhalte gehe ich stark von einem Problem bei der Konfiguration des NAS bzw. der Web Station aus.

Würde mich über Hilfestellungen und Anregungen freuen. Sollte ich wichtige Details ausgelassen haben, die an dieser Stelle nennenswert sind, lasst es mich bitte wissen und ich füge zusätzliche Details hinzu.

Danke und Gruss
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.195
Punkte für Reaktionen
73
Punkte
68
Du könntest ins Webserver Logfile schauen, ob überhaupt was vom ESP ankommt.
Dann testweise Im Sketch und und im PHP Script auf von POST GET umstellen. Im Logfile sollten dann alle Parameter zu sehen sein.
C-ähnlich:
// Send HTTP POST request
//int httpResponseCode = http.POST(httpRequestData);
int httpResponseCode = http.GET(httpRequestData);
Im PHP Script testweise unterhalb von <?php die Ausgabe von Fehlern und der Parameter einfügen
PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
print_r($_REQUEST);
...

if ($_SERVER["REQUEST_METHOD"] == "GET") {
...
;



Die URL mit den Parametern dann testweise im Browser aufrufen und schauen, was die Ausgabe ist.

Hinterher natürlich alles wieder rückgängig machen
 

bimo

Benutzer
Mitglied seit
28. Jan 2020
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Du könntest ins Webserver Logfile schauen, ob überhaupt was vom ESP ankommt.
Mit "Webserver" meinst Du die Synology Web Station App im DSM? Keine Ahnung, wo ich diese Logfiles finden kann, auf die Du Bezug nimmst.

Sobald ich weiß, wo diese Logfiles zu finden sind, kann ich dann die weiteren Tests durchführen.

Danke!
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.195
Punkte für Reaktionen
73
Punkte
68
Per default wird leider nur ein Error log geschrieben. Damit man die Parameter sieht kan man so einen Fehler in seinem Script mit einem bewussten Syntaxfehler leicht provozieren. Das kann man sich dann als root ansehen:
cat /var/log/nginx/error.log


Für das eigentliche Access Log muss man die Config anpassen, siehe z.B. hier
 

Lama-64

Benutzer
Mitglied seit
23. Jan 2022
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
@bimo: Ich stehe vor dem selben Problem, aus dem Arduino Sketch einen POST an die PHP-Datei auf der lokalen Synology abzusetzen. Ich nehme dieses Projekt als Basis: https://www.aeq-web.com/selbstbau-https-lora-gateway-fur-iot-mit-esp32-lora-board/ . Aber ich bekomme auch nur "Sackgassen", das PHP-Skript anzusprechen. Das Skript selber habe ich mal manuell mit einer vorgeschalteten HTML-Seite angesprochen, dann läuft es normal durch.
 

AlexRe

Benutzer
Mitglied seit
07. Feb 2022
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
@Lama-64: ich habe eine stabile Anwendung auf ESP8266 oder ESP32 mit Datenübertragung zur Synology NAS. Der Standard "Web-Server" muß installiert sein und dann lassen sich im /web-Verzeichnis der Synology die dort liegenden PHP-Skripte starten. Aufgerufen und versorgt werden die mit der POST-Methode vom ESP.
Die Daten bucht das PHP-Skript auf der Synology dann in eine MariaDB ein. Der ESP bekommt die Rückmeldung von der NAS, dass die Buchung geklappt hat und geht wieder in den DeepSleep.
Das funktioniert schon seit einiger Zeit völlig problemlos.
In den PHP-Skripten auf der Synology habe ich zum Testen die GET-Methode verwendet. Dann kann man im Browser die Skripte aufrufen und schauen, ob die Daten korrekt ausgewertet und in der MariaDB eingetragen werden. Eine vorangeschaltete HTML-Seite ist nicht nötig. Bei mir klappt das z.B. mit folgendem Aufruf: https://synology-IP-oder-Name/testscript.php?val1=otto&val2=56
Ist die Synology Web Station App im DSM installiert und richtig konfiguriert? Ist im "Standardserver" des Web Admin PHP eingetragen?
 
Zuletzt bearbeitet:

Lama-64

Benutzer
Mitglied seit
23. Jan 2022
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Vielen Dank für Deinen Beitrag. Ich habe inzwischen eine Variante gefunden, die mit der Synology und dem dort laufenden WebServer funktioniert. Ich benutze die HTTPClient.h Library und an den relevanten Stellen folgende Initialisierung / Code:

HTTPClient http;

http.begin("http://xxx.xxx.xxx.xx/iot/gateway.php"); //gateway.php Skript wird über POST angesprochen
http.addHeader("Content-Type","application/x-www-form-urlencoded");

String daten = "data=" + packet + "&rssi=" + rssi + "&type=gateway";

int httpResponseCode = http.POST(daten); //Send the actual POST request

if(httpResponseCode>0){
String response = http.getString(); //Get the response to the request
}else{
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}

http.end(); //Free resources

Damit läuft das Ansprechen des PHP-Skriptes. Das PHP-Skript schreibt die Daten mit Semikolon getrennt in eine TXT-Datei, welche mit Excel (Datenimport) weiter bearbeitet werden kann.

Im nächsten Schritt will ich wie bei Dir eine MariaDB an der Synology installieren und die Daten in der Datenbank ablegen.
 


 

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