Kann man eine neue Systemvariable von aussen definieren?
Moderator: Co-Administratoren
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
@Black
Probier ich aus .
Danke!
Probier ich aus .
Danke!
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
Die Semikolons wegzulassen hat´s leider auch nicht gebracht.
Hier der Arduino Programmschnipsel, mit dem ich versuche den POST-request zu machen.
Der Arduino verbindet sich mit der CCU ("connected") und setzt die client.print-Meldungen ab. Aber keine Wirkung auf die Systemvariable "Anwesenheit", die ich damit setzen wollte.
Hier der Arduino Programmschnipsel, mit dem ich versuche den POST-request zu machen.
Code: Alles auswählen
String HM_skript = "string antwort=dom.GetObject(\"Anwesenheit\").State(0);";
if (client.connect(ccu_ip, 8181))
{Serial.println("connected"); delay(2500);
client.println("POST /tclrega.exe HTTP/1.1");
client.println("Content-Type: Content-type: application/x-www-form-urlencoded;");
client.println("Host: 192.168.178.41"); //das ist die CCU IP
client.print("Content-Length: "); client.println(HM_skript.length());
client.println("Connection: Close");client.println();
Serial.println( HM_skript);
client.println(HM_skript);
}else{Serial.println("connection failed");delay(1000);}
if(client.connected()){client.stop();}
delay(2000);
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
Ich habe mal das Firefox-Plugin HttpRequester installiert. Damit lassen sich auch PoST-Requests absetzen.
Mit diesem Programm funktioniert es einwandfrei! Man kann per POST die Systemvariable Anwesenheit setzen. Funktioniert aber nur , wenn die HM-Skriptzeile mit Semikolon abgeschlossen ist.
Jetzt muß ich nur(!) noch herausfinden, warum mein Arduino-Schnipsel nicht funktioniert .
Mit diesem Programm funktioniert es einwandfrei! Man kann per POST die Systemvariable Anwesenheit setzen. Funktioniert aber nur , wenn die HM-Skriptzeile mit Semikolon abgeschlossen ist.
Jetzt muß ich nur(!) noch herausfinden, warum mein Arduino-Schnipsel nicht funktioniert .
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
-
- Beiträge: 124
- Registriert: 14.02.2011, 23:09
Re: Kann man eine neue Systemvariable von aussen definieren?
Hallo in die Runde,
@funkleuchtturm: Du hast ja auf Deinem Arduino einen Webserver laufen - oder kannst dir so einen zurechtbauen. Wenn Du dann den "wget" Befehl wie angegeben auf den Arduino-Webserver laufen läßt, indem du die IP-Adresse von dem Arduino eingibst, kannst du den gesamten Stream abfangen und dir anschauen was der wget genau sendet. Diesen String musst du dann halt umgekehrt mit dem Arduino erzeugen und an die CCU senden.
Ich hoffe das war verständlich und hilft weiter.
Viele Grüße
@funkleuchtturm: Du hast ja auf Deinem Arduino einen Webserver laufen - oder kannst dir so einen zurechtbauen. Wenn Du dann den "wget" Befehl wie angegeben auf den Arduino-Webserver laufen läßt, indem du die IP-Adresse von dem Arduino eingibst, kannst du den gesamten Stream abfangen und dir anschauen was der wget genau sendet. Diesen String musst du dann halt umgekehrt mit dem Arduino erzeugen und an die CCU senden.
Ich hoffe das war verständlich und hilft weiter.
Viele Grüße
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
@mastermind611
Ich kann ja mit dem Firefox-Plugin HttpRequester die Telegramme detailliert ansehen/editieren und die POST-Requests so absetzen, daß die CCU das auch versteht bzw erfolgreich mit "true" quittiert. So kann man genau sehen, ob ein Punkt und Komma evtl zuviel ist.
Mein Problem ist aber, daß wenn ich das gleiche Telegramm vom Arduino verschicke, die CCU das eben nicht erfolgreich annimmt. Ich hab schon Leerzeichen und Sonderzeichen duch die ASCII-Werte ersetzt usw. aber keine "true" Quittung seitens CCU erfolgt.
Ich kann ja mit dem Firefox-Plugin HttpRequester die Telegramme detailliert ansehen/editieren und die POST-Requests so absetzen, daß die CCU das auch versteht bzw erfolgreich mit "true" quittiert. So kann man genau sehen, ob ein Punkt und Komma evtl zuviel ist.
Mein Problem ist aber, daß wenn ich das gleiche Telegramm vom Arduino verschicke, die CCU das eben nicht erfolgreich annimmt. Ich hab schon Leerzeichen und Sonderzeichen duch die ASCII-Werte ersetzt usw. aber keine "true" Quittung seitens CCU erfolgt.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Re: Kann man eine neue Systemvariable von aussen definieren?
HTTP-Zeilenenden müssen CR LF sein, der EthernetClient der Arduino-Library (ich nehme an, den verwendest Du) schreibt aber nur ein LF. Probier mal
client.println("POST /tclrega.exe HTTP/1.1\r");
etc.
Außerdem ist Deine Content-Length um ein Byte zu klein:
client.println(HM_skript);
sollte
client.print(HM_skript);
sein
client.println("POST /tclrega.exe HTTP/1.1\r");
etc.
Außerdem ist Deine Content-Length um ein Byte zu klein:
client.println(HM_skript);
sollte
client.print(HM_skript);
sein
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
Danke für den Hinweis. Habe schon nur mit \r und mit \n\r probiert. Aber läuft nicht! Hier der letzte Code:
Code: Alles auswählen
String HM_skript = "string antwort=dom.GetObject('Anwesenheit').State(0);";
if (client.connect(ccu_ip,8181))
{Serial.println("connected post"); delay(2500);
client.println("POST /tclrega.exe HTTP/1.1\r");
client.println("Host:192.168.178.41:8181\r");
client.println("Connection: Close\r");client.println();
client.println("Content-Type: application/xml\r");
client.print("Content-Length: "); client.println(HM_skript.length());client.print("\r");
Serial.print(HM_skript.length()+1 ); Serial.println(HM_skript);
client.print(HM_skript);
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
- Black
- Beiträge: 5550
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 434 Mal
- Danksagung erhalten: 1097 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
arduino ist jetzt nicht grade mein spezialgebiet, das wäre in der richtung eher python.
kannst nicht mal mit wireshark oder fiddler in einer testumgebung mal gucken und vergleichen, wie ein manuell erzeugtes Telegramm und eines deines Arduinos ausschaut ?
irgendwo muss da ja der wurm sein.
greetz und viel Erfolg,
Black
kannst nicht mal mit wireshark oder fiddler in einer testumgebung mal gucken und vergleichen, wie ein manuell erzeugtes Telegramm und eines deines Arduinos ausschaut ?
irgendwo muss da ja der wurm sein.
greetz und viel Erfolg,
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
... das mach ich schon den ganzen Nachmittag. Ich bin sicher, das ist irgendein lächerliches Steuerzeichen. Aber wo ?Black hat geschrieben:kannst nicht mal mit wireshark oder fiddler in einer testumgebung mal gucken und vergleichen
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
- funkleuchtturm
- Beiträge: 2371
- Registriert: 13.06.2011, 16:42
- Hat sich bedankt: 23 Mal
- Danksagung erhalten: 358 Mal
- Kontaktdaten:
Re: Kann man eine neue Systemvariable von aussen definieren?
Also ich hab jetzt mal erfolgreich einen GET-Request abgeschickt und das Echo aufgezeichnet. Mit folgendem Arduino Programm...
ergibt das folgendes Echo:
Die gleiche Transaktion als nicht erfolgreichem POST-request abgeschickt mit ...
führt zu folgendem Echo: Irgendwo ist im POST-request der Wurm drin
So langsam bin ich mit meinem Latein am Ende.
Code: Alles auswählen
String befehl = "GET /blabla.exe?antwort=dom.GetObject(\"Anwesenheit\").State(1)";
client.print(befehl); Serial.print(befehl);
//read back one line from server
String line = client.readStringUntil('%03');
Serial.println(); Serial.println("serverantwort:");
Serial.println(line);
Code: Alles auswählen
String HM_skript = "string antwort=dom.GetObject(\"Anwesenheit\").State(0);";
client.println("POST /tclrega.exe HTTP/1.1");
client.println("Host:192.168.178.41:8181");
client.println("Connection: close");
client.println("Content-Type: text/xml");
client.println("Content-Length: "); client.println(HM_skript.length());
Serial.print(HM_skript.length()); Serial.println(HM_skript);
client.println(HM_skript);
//read back one line from server
String line = client.readStringUntil('%03');
Serial.println(); Serial.println("serverantwort:");
Serial.println(line);
delay(10); client.stop();
Serial.println("closing connection");;
führt zu folgendem Echo: Irgendwo ist im POST-request der Wurm drin
So langsam bin ich mit meinem Latein am Ende.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker