Hallo,
ich sende mit dem Arduino Mega 2560 mit Ethernet-Shield per POST einen String. Das funktioniert grundsätzlich. Die Übertragung findet minütlich statt und bleibt im Heimnetzwerk.
Mit der Länge des Strings gibt es aber Probleme. Länge 993 geht einwandfrei. Bei Länge 1193 erfolgt die erste Übertragung nach Start des Scrips korrekt, bei jeder weiteren Übertragung werden nur die letzten ca. 40 Zeichen gesendet ins Netz und auch an die Konsole. Ich vermute deshalb, dass der String eine Begrenzung hat. Stimmt das? Gibt es Abhilfe?
Ich füge den Codeausschnitt bei:
// String bilden
// Zeit
sStr = sStr + "B" + sNr + "=zeit_ardu";
sStr = sStr + "&W" + sNr + "=" + t; // bzw. client.print(strDatumUhrzeit);
// Daten
for (k = 0; k < AnzahlSensoren; k++) { // Schleife über Sensor-Array
sNr = ++sNr;
// Temp
sStr = sStr + "&B" + sNr + "=" + sensorList[k].bez + "T"; // T = Temp
sStr = sStr + "&W" + sNr + "=" + sensorList[k].isttemp; // Temperatur
// Soll+Digi für Raum
if (k < AnzahlMitSoll) {
// Soll
sNr = ++sNr;
sStr = sStr + "&B" + sNr + "=" + sensorList[k].bez + "S"; // S = Soll
sStr = sStr + "&W" + sNr + "=" + sensorList[k].solltemp; // Solltemperatur
// Digi Achtung Pin-Logic !s.o.
// sNr = ++sNr;
// sStr = sStr + "&B" + sNr + "=" + sensorList[k].bez + "D"; // D = digi
// sStr = sStr + "&W" + sNr + "=" + !sensorList[k].digi; // digi = Schaltausgang
} // Ende if AnzahlMitSoll
} // Ende for AnzahlSensoren
// Verbindung
if (!client.connect(server_wolke, 80)) {
Serial.println(F("-> keine Verbindung zum Server")); // only use serial when debugging
}
else client.stop();
if (client.connect(server_wolke, 80)) { // TRUE => connection
// An Wolke senden
client.print("POST /");
client.print(strphpDatei); // php-Datei
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server_wolke);
client.println("User-Agent: Arduino/1.0");
client.println("Connection: close");
client.println("Content-Type: application/x-www-form-urlencoded;");
client.print("Content-Length: ");
client.println(sStr.length());
client.println();
client.println(sStr);
#ifdef STRING
Serial.print(sStr);
Serial.print(F(" -> "));
Serial.println(sStr.length());
#endif
// client.println(F("Connection: close"));
client.println();
client.stop();
} // Ende if client.connect
else {
Serial.println(F("--> connection failed !!")); // no connection to the server
} // Ende else client.connect
Gruß Gerd