Datenlogger mit MKR WIFI 1010 und https-Webseite

Hi,

ich habe in diesem Forum schon viele Lösungen gefunden und möchte mich an dieser Stelle zuerst mal bei allen engagierten Schreibern bedanken :smiley:

Mein aktuelles Problem ist aber bisher nur zu rund 50% gelöst. Mit einem MKR WIFI 1010 sollen Daten (Temperatur, Druck, Luftfeuchte von einem BME280 und die Zeitabweichung einer Pendeluhr) auf meine Webseite geschickt und dort in einer Datei gespeichert werden. Ausgangspunkt ist der Temperatur-Logger. Die Datei senddata.php habe ich auf meine Webseite gepackt und wenn ich in einem Browser

https://www.---meineseite---.de/test/senddata.php?Fuehler1=21.6

eingebe, dann wird der Wert 21.6 auch schön in der log.txt Datei gespeichert. Wenn das allerdings vom MKR WIFI 1010 gemacht werden soll, dann klappt es nicht. Der Code mit SSL ist:

WiFiSSLClient client;
.
.
  if (client.connectSSL(server, 443)) {
    client.println("GET /test/senddata.php?Fuehler1=21.6"); 
    client.println("Host: www.---meineseite---.de");
    client.println("Connection: close");
    client.println();
  } else {
    Serial.println("no Connection");
  }

Damit kommt keine Verbindung zustande. Ohne SSL:

WiFiClient client;
.
.
  if (client.connect(server, 80)) {
    client.println("GET /test/senddata.php?Fuehler1=21.6"); 
    client.println("Host: www.---meineseite---.de");
    client.println("Connection: close");
    client.println();
  } else {
    Serial.println("no Connection");
  }

Dann kommt vom Server die Antwort:

connected to server
HTTP/1.0 400 Bad Request
Server: BigIP
Connection: close
Content-Length: 24

HTTP/1.1 400 Bad Request
disconnecting from server.

Ich hatte auch schon den Fall, dass der Server "You're speaking plain HTTP to an SSL-enabled server port" antwortet oder auf die 301 Umleitung von http auf https hinweist. Da weiß ich aber nicht mehr genau, was ich da im code stehen hatte.

An dem Zertifikat sollte es nicht liegen, das habe ich (hoffentlich) mit dem "WIFININA FirmwareUpdater" auf den Arduino geladen. Hat jemand eine Idee?

Lg, Willy

Der einfache WiFiClient kann nach meinen Kenntnissen (ESP8266) kein HTTPS. Beim ESP8266 hätte ich jetzt gesagt: Nimm den WiFiClientSecure. Ob es den bei Dir gibt, weiß ich nicht, denn Deine Libs kenne ich nicht.

Gruß Tommy

Edit: Schau Dir mal das an. Damit könnte es gehen. Also Port 443 anstelle von 80.

Das MKR WIFI 1010 Board kann grundsätzlich SSL und das Beispiel in der IDE (google über SSL) funktioniert auch. Port 443 ist klar und habe ich im ersten Fall ja auch gemacht. Nur der Server will dann nicht antworten.

Ich vermute die Probleme eher bei der Server-Konfiguration. Es ist ein Strato-Server wo - soweit ich weiß - mehrere Homepages auf derselben IP liegen. Erschwerend kommt hinzu, dass seit der SSL-Einführung von Strato die Anfragen auf https umgeleitet werden. Kann da irgendwo das Problem sein?

LG, Willy

Wenn der von Dir gepostete Code nicht der Realität entspricht, wird Dir wohl keiner helfen können:
if (client.connect(server, 80))

Die Umleitung erfolgt nur, wenn Du per HTTP zugreifst.

Gruß Tommy

Was meinst du jetzt mit "Code nicht der Realität entspricht"? Ich habe ja beide Ports (80 und 443) ausprobiert und bei 443 bekomme ich keine Verbindung zum Server.

LG, Willy

443 ist aber nun mal der Standardport für HTTPS und der funktioniert abseits vom Arduino auch bei Strato.

Da ich Deine Hardware nicht habe, kann ich an der Stelle nichts weiter zum Thema beitragen.

Gruß Tommy

Ich hab' noch etwas recherchiert und festgestellt, dass das Strato-Zertifikat Mitte 2019 abläuft und dann vermutlich auch auf dem Arduino erneuert werden müsste. Das geht gar nicht, da der Logger ein paar Jahre durchlaufen soll.

Jetzt habe ich per .htaccess eine Ausnahme von der 301-Weiterleitung auf https erstellt und verbinde den Arduino per http und Port 80. Funzt :smiley:

LG, Willy