Auslesen von Werten mit Arduino CUxD 400 Bad Reques

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Antworten
svenp
Beiträge: 630
Registriert: 11.12.2012, 14:24
Hat sich bedankt: 3 Mal
Danksagung erhalten: 4 Mal

Auslesen von Werten mit Arduino CUxD 400 Bad Reques

Beitrag von svenp » 27.04.2019, 20:07

Hallo, ich habe mir mit einem ein Sketch geschrieben welches noch vor dem Update auf die CCU3 lange seinen Dient verrichtet hat.
Nun habe ich natürlich die Anpassung gemacht und hinter der Anfrage auch HTTP.... geschrieben.

Nun ist es so das ich eine Variable in der CCU3 abfragen kann und auch die gewünschte Antwort erhalte Beispiel:
Sende an CCU3

Code: Alles auswählen

GET /xy.exe?antwort=dom.GetObject('esptuer_a_IP').State() HTTP/1.1 Host:192.168.1.90 Connection: close
Antwort von CCU3

Code: Alles auswählen

Antwort der CCU3
HTTP/1.1 200 OK
Server: ise GmbH HTTP-Server v2.0
Accept-Ranges: bytes
Cache-Control: no-store, no-cache
Content-Type: text/xml; charset=iso-8859-1
Content-Length: 108
Date: Sat, 27 Apr 2019 19:41:22 GMT
Connection: close

<xml><exec>/xy.exe</exec><sessionId></sessionId><httpUserAgent></httpUserAgent><antwort>192.168.1.50</antwort></xml>

Nun die Abfrage eines CUxD Gerätes:

Code: Alles auswählen

GET /xy.exe?antwort=dom.GetObject('CUxD.CUX4000001:2.STATE').State()  HTTP/1.1 Host:192.168.1.90 Connection: close
Die Antwort dazu:

Code: Alles auswählen

HTTP/1.0 400 Bad Request
Content-Type: text/html
Content-Length: 349
Connection: close
Date: Sat, 27 Apr 2019 17:41:49 GMT
Server: lighttpd/1.4.50

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>400 - Bad Request</title>
 </head>
 <body>
  <h1>400 - Bad Request</h1>
 </body>
</html>
Das CUxD Gerät existiert, denn wenn ich im Browser folgende Zeile eingebe:

Code: Alles auswählen

http://192.168.1.90:8181/xy.exe?antwort=dom.GetObject('CUxD.CUX4000001:2.STATE').State()
Erhalte ich auch eine Antwort:

Code: Alles auswählen

<xml><exec>/xy.exe</exec><sessionId/><httpUserAgent>User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0</httpUserAgent><antwort>true</antwort></xml> 
Hat jemand eine Idee was ich falsch mache?

svenp
Beiträge: 630
Registriert: 11.12.2012, 14:24
Hat sich bedankt: 3 Mal
Danksagung erhalten: 4 Mal

Re: Auslesen von Werten mit Arduino CUxD 400 Bad Reques

Beitrag von svenp » 24.05.2019, 18:55

Hallo, ich habe mir nun alles einmal mit tcpdump angesehen aber ich finde den Fehler leider nicht.

Das ist der dump wenn ich mit Firefox folgendes absetze:

Code: Alles auswählen

http://192.168.1.90:8181/xy.exe?antwort=dom.GetObject(%27CUxD.CUX4000001:2.STATE%27).State()
Tcpdump zeigt folgendes:

Code: Alles auswählen

E...eu@........C...Z.m...v...m-.P. ..3..GET /xy.exe?antwort=dom.GetObject(%27CUxD.CUX4000001:2.STATE%27).State() HTTP/1.1
Host: 192.168.1.90:8181
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,de-DE;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1


18:21:30.551716 IP (tos 0x0, ttl 64, id 39201, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.90.8181 > 192.168.1.67.64365: Flags [.], cksum 0x8408 (incorrect -> 0x4ccd), seq 1, ack 424, win 251, length 0
E..(.!@.@......Z...C...m.m-..v.@P.......
18:21:30.557599 IP (tos 0x0, ttl 64, id 39202, offset 0, flags [DF], proto TCP (6), length 451)
    192.168.1.90.8181 > 192.168.1.67.64365: Flags [P.], cksum 0x85a3 (incorrect -> 0xd9be), seq 1:412, ack 424, win 251, length 411
E...."@.@..%...Z...C...m.m-..v.@P.......HTTP/1.1 200 OK
Server: ise GmbH HTTP-Server v2.0
Accept-Ranges: bytes
Cache-Control: no-store, no-cache
Content-Type: text/xml; charset=iso-8859-1
Content-Length: 198
Date: Fri, 24 May 2019 18:21:30 GMT

<xml><exec>/xy.exe</exec><sessionId></sessionId><httpUserAgent>User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0</httpUserAgent><antwort>true</antwort></xml>
18:21:30.598954 IP (tos 0x0, ttl 128, id 25974, offset 0, flags [DF], proto TCP (6), length 40)
Nun das gleiche mit dem esp. selbst den http request habe ich angepasst und das gleiche übergeben wie der Firefox:

Code: Alles auswählen

18:40:20.478184 IP (tos 0x0, ttl 128, id 14, offset 0, flags [none], proto TCP (6), length 464)
    192.168.1.50.32433 > 192.168.1.90.8181: Flags [P.], cksum 0xcf6d (correct), seq 1:425, ack 1, win 5840, length 424
E..........=...2...Z~..........{P....m..GET /xy.exe?antwort=dom.GetObject(%27CUxD.CUX4000001:2.STATE%27).State()  HTTP/1.1
Host: 192.168.1.90:8181
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,de-DE;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1


18:40:20.478311 IP (tos 0x0, ttl 64, id 61288, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.90.8181 > 192.168.1.50.32433: Flags [.], cksum 0x83f7 (incorrect -> 0xdf5b), seq 1, ack 425, win 31624, length 0
E..(.h@.@......Z...2..~....{...6P.{.....
18:40:20.478575 IP (tos 0x0, ttl 64, id 61289, offset 0, flags [DF], proto TCP (6), length 544)
    192.168.1.90.8181 > 192.168.1.50.32433: Flags [P.], cksum 0x85ef (incorrect -> 0x10c1), seq 1:505, ack 425, win 31624, length 504
E.. .i@.@......Z...2..~....{...6P.{.....HTTP/1.0 400 Bad Request
Content-Type: text/html
Content-Length: 349
Connection: close
Date: Fri, 24 May 2019 16:40:20 GMT
Server: lighttpd/1.4.50

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>400 - Bad Request</title>
 </head>
 <body>
  <h1>400 - Bad Request</h1>
 </body>
</html>

Übersehe ich etwas?
Es kann doch nicht sein das ich mit dem Browser den gleichen Befehl absetze und unterschiedliche Ergebnisse bekomme.

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Auslesen von Werten mit Arduino CUxD 400 Bad Reques

Beitrag von jp112sdl » 31.05.2019, 14:23

Schau mal in der CCU in /var/log, da liegen die logs vom lighttpd, ob darin was zu sehen ist.
Der 400er Response wird ja schon vom Lighttpd (Server: lighttpd/1.4.50) zurückgegeben, während dein Browser-Aufruf korrekt zur Rega weitergeleitet wird (Server: ise GmbH HTTP-Server v2.0).

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

sissiwup
Beiträge: 325
Registriert: 10.03.2015, 10:54
Wohnort: Süd NDS
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: Auslesen von Werten mit Arduino CUxD 400 Bad Reques

Beitrag von sissiwup » 30.03.2021, 14:13

Hi,

gab es eine Lösung? Habe das gleiche Problem seit Update auf CUxD 2.5.1
MfG

Sissiwup

--------------------------------------------
CCu3,CCu2Gateway,RaspiGateway,LanGateway
--------------------------------------------

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“