http request ioBroker javascript vs. node-red

Einbindung von Robonect Hx und IO in Deine bereits bestehende MQTT-Infrastruktur
uwe
Beiträge: 37
Registriert: Mi 21. Sep 2016, 16:44
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: 1.0 beta 4

http request ioBroker javascript vs. node-red

Beitrag von uwe » Fr 24. Mär 2017, 00:58

Hallo zusammen,

das Folgende bezieht sich eher auf ioBroker als auf das Robonect Modul, aber vielleicht kann dazu trotzdem jemand was sagen:

Ich bin dabei, eine Oberfläche für ioBroker.vis zu basteln und dabei auf der "Garten"-Seite auch eine Anzeige bzw. Programmiermöglichkeit für den Robbi einzubauen.
Die Anzeige der ganzen Parameter funktionert, nur mit dem Programmieren der Laufzeiten bin ich noch nicht weitergekommen.

Die Daten für die reine Anzeige lese ich über ioBroker.node-red per http-request aus dem Modul aus. Das funktioniert.
Nun möchte ich vor der Timerprogrammierung die aktuellen Werte per ioBroker.javascript aus dem Modul auslesen. Das funktionert leider nicht und liefert immer Fehler 401 (Nicht authentifiziert) zurück, obwohl die URLs identisch sind.

Das Beispiel unten ist nun eine einfache Statusabfrage und hat nichts mit dem Timer zu tun - der Effekt ist aber derselbe.

Ich habe nun mit tcpdump einmal mitgetracet, was jeweils geschickt wird:

Die ioBroker.node-red Abfrage wird wie folgt geschickt (liefert StatusCode 401):

Code: Alles auswählen

P.r.....GET./jso
n?cmd=status.HTT
P/1.1..Host:.Dieser Beitrag wurde vom System als Spam erkannt! Bitte Melde-Funktion nutzen! Danke!
xx.yyyy.intern..
Authorization:.B
asic.xxxxxxxxxxx
xxxxx..Connectio
n:.close....
Die ioBroker.javascript-Abfrage folgendermaßen (liefert StatusCode 200 = OK):

Code: Alles auswählen

P.r.....GET./jso
n?cmd=status.HTT
P/1.1..host:.Dieser Beitrag wurde vom System als Spam erkannt! Bitte Melde-Funktion nutzen! Danke!
xx.yyyy.intern..
authorization:.B
asic.xxxxxxxxxxx
xxxxx..Connectio
n:.close....
Der einzige Unterschied, den ich dabei erkennen kann ist, dass beim zweiten Aufruf "host" und "authorization" mit kleinen Anfangsbuchstaben geschrieben ist.

Die Frage ist nun:
Ist der Webserver auf dem Modul so programmiert, dass er die Header-Daten case-sensitiv auswertet, also wirklich "Authorization" bzw. "Host" erwartet und daher die Anmeldung nicht erkennt und den Code 401 zurückliefert?

Gruß
Uwe

Admin
Administrator
Beiträge: 2520
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
Kontaktdaten:

Re: http request ioBroker javascript vs. node-red

Beitrag von Admin » Fr 24. Mär 2017, 07:53

Ja, ist case-sensitive.
Du kannst Benutzername und Passwort aber auch als Argument am Get platzieren. Dann umgehst du das Problem.
Ich glaube es war: "user=...&pass=..."
Werbefläche zu vermieten. :lol:

uwe
Beiträge: 37
Registriert: Mi 21. Sep 2016, 16:44
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: 1.0 beta 4

Re: http request ioBroker javascript vs. node-red

Beitrag von uwe » Fr 24. Mär 2017, 17:58

Hallo Fabian,

ok, das mit dem Case Sensitive war's - die zweite Möglichkeit funktioniert auch, allerdings werde ich eher das request-Modul anpassen, da mir die URL_Codierung nicht so gut gefällt - aber als Notnagel hilft's:

Case-Sensitive

Code: Alles auswählen

P.r.....GET./jso
n?cmd=status.HTT
P/1.1..host:.Dieser Beitrag wurde vom System als Spam erkannt! Bitte Melde-Funktion nutzen! Danke!
xx.yyyy.intern..
Authorization:.B
asic.xxxxxxxxxxx
xxxxx..Connectio
n:.close....

P..\A...HTTP/1.1
.200.OK.Content-
Type:.applicatio
n/json.Server:.F
HDR.Connection:.
close.Cache-Cont
rol:.no-cache.Co
URL-codiert:

Code: Alles auswählen

P.r.....GET./jso
n?cmd=status&use
r=Dieser Beitrag wurde vom System als Spam erkannt! Bitte Melde-Funktion nutzen! Danke!&pass=XXXXX
Dieser Beitrag wurde vom System als Spam erkannt! Bitte Melde-Funktion nutzen! Danke!.HTTP/1.1..ho
st:.xxxxx.yyyy.i
ntern..Connectio
n:.close....

P..l....HTTP/1.1
.200.OK.Content-
Type:.applicatio
n/json.Server:.F
HDR.Connection:.
close.Cache-Cont
rol:.no-cache.Co
nnection:.close.

Danke für Deine Hilfe!
Jetzt kann's weiter gehen :D

VG Uwe

uwe
Beiträge: 37
Registriert: Mi 21. Sep 2016, 16:44
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: 1.0 beta 4

Re: http request ioBroker javascript vs. node-red

Beitrag von uwe » Sa 25. Mär 2017, 00:11

Hallo Fabian,

Ich habe einen issue bei github deswegen aufgemacht und folgende Antwort erhalten:
Per RFC spec HTTP headers are case insensitive. You'll have to set those headers manually using the header option.
Bzw.
A little bit more about this, because it comes up a lot.

@simov is correct, your server is not spec compliant. The HTTP spec makes it very clear that headers must be case insensitive.

In request, we default to lowercase for the headers that request generates but when you set headers manually we preserve the casing of those headers so that you can deal with servers that are not spec compliant.

You'll need to generate the auth headers yourself and set them with the headers or setHeader features in request if you want a specific casing. It's not reasonable for request to shift around its defaults for servers that aren't spec compliant because there's just no way to us to win, there will always be a server that doesn't like a particular default and is not spec compliant.
Hast du die Möglichkeit, du kannst den Webserver in der Beziehung RFC-konform machen oder ist der Aufwand zu groß?
Den vorgeschlagenen Weg mit dem setHeader feature muss ich mir bei Gelegenheit nochmal anschauen.

Vg Uwe

Admin
Administrator
Beiträge: 2520
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
Kontaktdaten:

Re: http request ioBroker javascript vs. node-red

Beitrag von Admin » Sa 25. Mär 2017, 00:49

Erledigt in V1.0 Beta 0.
Werbefläche zu vermieten. :lol:

uwe
Beiträge: 37
Registriert: Mi 21. Sep 2016, 16:44
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: 1.0 beta 4

Re: http request ioBroker javascript vs. node-red

Beitrag von uwe » Sa 25. Mär 2017, 09:03

Cool. Vielen Dank!

Schläfst du auch mal? :D

VG
Uwe

Admin
Administrator
Beiträge: 2520
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
Kontaktdaten:

Re: http request ioBroker javascript vs. node-red

Beitrag von Admin » Sa 25. Mär 2017, 09:33

Aktuell habe ich für Schlaf keine Zeit. ;-)
Aber bald hab ich Urlaub! :D
Werbefläche zu vermieten. :lol:

uwe
Beiträge: 37
Registriert: Mi 21. Sep 2016, 16:44
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: 1.0 beta 4

Re: http request ioBroker javascript vs. node-red

Beitrag von uwe » Sa 25. Mär 2017, 12:29

Der Urlaub sei dir gegönnt :)
Good jobBildBildBild


Gesendet von iPhone mit Tapatalk

Admin
Administrator
Beiträge: 2520
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
Kontaktdaten:

Re: http request ioBroker javascript vs. node-red

Beitrag von Admin » Sa 25. Mär 2017, 17:12

Ich habe jetzt mal ein Branch von der V0.9 gemacht und eine V0.9b released. Dort ist deine Funktion mit drin. (sonst hat sich zu V0.9 nicht viel geändert)
Kannst Sie ja mal ausprobieren.
Werbefläche zu vermieten. :lol:

kleinemeise
Beiträge: 20
Registriert: Mi 20. Apr 2016, 08:32

Re: http request ioBroker javascript vs. node-red

Beitrag von kleinemeise » Mo 27. Mär 2017, 14:43

Hey Uwe,

wie genau holst du die Werte im ioBroker? Ich stelle derzeit auch um von HM auf ioBroker.

Antworten

Zurück zu „MQTT-Nutzer“