Guten Abend!
Ich versuche seit Tagen einen Sensorwert auf einen Server zu übertragen. Leider bin ich überfordert und finde nicht, wo das Problem liegt. Vlt kann mir jemand weiterhelfen? Den Sketch hab ich nach der Anleitung für den Uno Wifi Rev 2 zusammengebastelt - impliziert halt auch, dass ich nur bestehenden Code etwas weiterentwickeln kann (langsam bezweifle ich das aber....). Ähnliche Themen hab ich durchsucht, dort gibt es auch Lösungsvorschläge aber die kann ich anscheinend nicht richtig anwenden...
In meinem Fall ist der Server ein Raspberry auf dem Homematic läuft. Dort habe ich eine Systemvariable definiert (?ise_id=3553) und möchte dieser einen neuen Wert zuweisen (?new_value="Sensorwert=13").
Gebe ich die Zeile "http://"ServerIP"/config/xmlapi/statechange.cgi?ise_id=3553&new_value=13" im Browser ein, wird der Wert geschrieben.
Mit meinem Sketch passiert das aber nicht. Verbindung zum Server scheint aber gegeben zu sein????? Ich weiß nicht, wo der Fehler liegt. Die Firewall der Homematic ist offen.
#include <SPI.h>
#include <WiFiNINA.h>
char ssid[] = ""; //netzwerk SSID
char pass[] = ""; //netzwerk pw
int status = WL_IDLE_STATUS;
IPAddress server(hier die ServerIP); // Homematic IP
IPAddress ip(hier die Arduino IP), gateway(192, 168, 1, 1), subnet(255, 255, 255, 0); //statische IP für board
// Initialize the client library
WiFiClient client;
void setup() {
Serial.begin(9600);
Serial.println("Attempting to connect to network...");
Serial.print("SSID: ");
Serial.println(ssid);
WiFi.config(ip, gateway, subnet);
status = WiFi.begin(ssid, pass);
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection");
while(true); //weiter soll nix passieren
}
else {
Serial.println("Connected to wifi");
//ausgabe board IP:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);Serial.println("\nStarting connection...");
//bei verbindung, im Serial Monitor ausgeben
if (client.connect(server, 80)) {
Serial.print("connected to ");
Serial.println(server);
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
}
//wenn nicht verbunden, dann Ausgabe
else {
Serial.print("connection failure to host");
while(true);
}
}
}
//Daten an Server senden
void loop() {
int pHMeter = 0;
pHMeter=13; //zum Test fixen wert zuweisen, sonst analogRead
if (client.connect(server,80)) {
Serial.print("pH = ");
Serial.println(pHMeter);
client.println("GET /config/xmlapi/statechange.cgi?ise_id=3553&new_value=");
client.print(pHMeter);
client.println(" HTTP/1.1");
while (client.available()) {
client.read();
}
if (client.connected()){
client.stop();
}
delay(10000); //alle 10sek ausgeben
}
}
Wäre super, wenn mir jemand helfen könnte.
Vielen, vielen Dank im Voraus!