NEWS
HTTP-request von Mobotix T25
-
Ich benötige Euere Hilfe
Konstellation:
ioBroker in Docker-Container auf Qnap-NAS
Mobotix-Türsprechanlage T25 (hat bisher erfolgreich an 10.10.1.35/ Edomi per http gesendet)NEU soll die Türsprechanlage die Netzwerkbefehle an 10.10.1.37 senden (ioBroker/ Docker)
-> dies funktioniert leider trotz intensivem Test NICHTEinstellungen der Mobotix:
Frage: Sind die Zugangsdaten des ioBrokers hier korrekt ???
Die Daten (Türklingel)werden offensichtlich verschickt (zu Edomi wird korrekt verschickt !):
kommen aber nicht an (Fehler http-request-node):
auch beim http-In Baustein in Node-red erhalte ich keine Antwort
offensichlich wird geblockt:
Hier der Flow:
Wie muss die Konfiguration in node-red aussehen ?
Müssen ggf. im Docker-Container Portweiterleitungen eingerichtet werden ?
Wie muss ggf. der Response-node konfigurieert sein ?Vielen Dank für Euere Hile
Andreas -
@ak68 Die Http In Node definierst Du den Pfad nach der NodeRed Instanz um den Webserver anzusprechen.
Der Port ist der NodeRed Port auf dem es läuft. Die ResponseNode musst Du in der Regel nicht konfigurieren, ausser Du willst auf eine andere Webseite umleiten.Sprich wenn Du NodeRed von aussen im Docker-Container ansprechen kannst, dann kannst Du über diesen Port auch NodeRed ansprechen. Also NICHT Port 80
-
@mickym Sprich: Port 8081 !?
-
@ak68 Nein NodeRed läuft auch unter dem iobroker auf Port 1880 - ausser Du hast es in den Adaptereinstellungen geändert.
-
-
@ak68 Ja und in der Http In Node - definierst Du den Pfad
-
-
@ak68 Genau damit ist Dein HTTP URL definiert:
http://<IP des iobrokers>:1880/mobotix
Wenn das nicht tut - dann musst Du an Deinem Docker rumfummeln, dass Du den Port 1880 nach aussen gibst. Wie gesagt, testen kannst ja erst mal über den Browser.
-
Juhuu:
zum Glück kein Rumgepople mit Port-Weiterleitungen
Jetzt kann ich weiterarbeiten
Vielen Lieben Dank und Gute Nacht !!!
-
@ak68 Gerne - schlaf gut.
-
Hallo Mickym,
inzwischen funktioniert es zwar, mehrere unterschiedlich Befehle von der Mobotix zu senden,
offensichlich jedoch nicht hintereinander.
Irgendwie schein der Empfang nach einer Meldung geblockt zu sein, erst ein Node-red-Neustart
empfängt wieder Befehle.Müssen hier ggf. HTTP-Fehler abgefangen werden ?
Hier ist von einer "Antwort-Funktion" die Rede, leider ohne weitere Erklärungen:
Vielen Dank
Andreas -
@ak68 Wo ist denn Deine HTTP-OUt Node hin? Du gibst ja nichts zurück, somit geht Dein Sender davon aus, dass die erste Nachricht nicht angekommen ist und stellt ggf. das Senden ein. Ausserdem würde ich halt anstelle mit function Nodes über eine Switch Node - richtig den Flow aufsplitten.
Ich glaube nicht, dass NodeRed hier blockiert, sondern der Sender nicht mehr sendet, wenn kein ReturnCode kommt. Prüfen kannst Du es ja einfach, indem Du über den Browser an die URL etwas schickst. Wenn was in der Debug 438 ankommt, dann liegt es ja nicht am Empfänger.
Im Übrigen finde ich Deinen Flow eh recht umständlich, da Du hinten ja die gleichen Filter hast, so dass ich erst vorne die verschiedenen Quellen unterscheiden würde.
Die Antwortfunktion, wäre etwas wenn Dein Sender eine bestimmte Antwort ausser ReturnCode 200 erwartet. Aber wie gesagt, Deine HTTP-OUt sehe ich nicht mehr und die muss die Antwort zurückgeben.
-
Wie muss im HTTP-Out Node der Statuscode (= ReturnCode ?) gesetzt werden, mit den Voreinstellungen klappt es leider nicht !
-
@ak68 Doch Du musst die HTTP-Out aber direkt hinter die HTTP-In setzen.
Die Respose Node gibt immer 200 zurück. Wenn ein anderer Code erwartet wird, dann musst Du den in dem statusCode mitgeben.
Je nachdem was gesendet wurde, wird auch die vollständige Antwort im res (response Objekt) an den Sender zurückgeschickt.
Also mach die ResponseNode in jedem Fall direkt hinter die http-IN Node und verfälsche den Request nicht.
-
-
@ak68 Du codierst auch wieder zu viel. Zeig mal was wirklich in der HTTP-IN node ankommt, ob das ein JSON ist?
Das ist total unschön und auch wieder mit function Nodes codieren - ist nicht toll. Die Filter sind doch alle die gleichen.
-
Ja, es sind JSON-Objekte:
-
Wenn Dein Request zum Beispiel so aussieht:
Also bei dir:http://<DeineIP>:1880/mobotix?Praxis=On
Dann bekommst Du bereits ein Objekt zurück:
Dann kann man als erstes das Objekt in eine skalare Nachricht zerlegen und den key in das topic schreiben: und dann kannst Du Deine payload Abprüfungen machen:
Du nimmst also eine Split Node und kopierst den Schlüssel da rein.
Du bekommst dann eine skalare Nachricht mit dem topic woher oder wofür das Kommando ist.
-
@mickym Nun machst Du den Filter der payload nur einmal egal für welches topic er ist.
-
@mickym DANKE