NEWS
Externes node-RED und ioBroker. Wie verbinden ?
-
@andre sagte in Externes node-RED und ioBroker. Wie verbinden ?:
@mickym Sehr konstruktiver Beitrag!
Ich glaube, dass es aktuell nicht geht kann man diesem Thread und dem Feature Request ganz gut entnehmen. Wollte nur sicherstellen, dass andere User, die Google bedienen können, (evtl. schneller) zur gleichen Erkenntnis gelangen... Weiß ehrlich gesagt nicht warum dich das jetzt getriggert hat..Na ich schaue jetzt diesem Beitrag nun schon eine Weile zu. Dass man alles irgendwie mit viel Aufwand betreiben realisieren kann ist ja klar. Das man sich darüber mokiert, wenn ich einfach schreibe es geht NICHT und sich nicht mal die Mühe macht zu begreifen WARUM nicht ist mir nicht klar.
Man recherchiert und sieht, dass dieser Feature Request seit 2020 offen ist, dann sollte es wohl einen Grund haben. Und gerade als Entwickler, sollte man vielleicht etwas hinter die Kulissen schauen.Im Prinzip hat @haus-automatisierung alles erklärt - warum es nicht geht und was man alles implementieren müsste, um eine Kommunikation herzustellen. (s. hier: https://forum.iobroker.net/post/1122336)
Die HA Nodes kommunizieren über websockets und teilweise ist selbst das nicht ausreichend - denn zum Erstellen von eigenen States benötigt man noch den Node-Red Companion. Klar kann man das alles selbst bauen, aber das ist halt ein vergleichsweise unverhältnismäßig hoher Aufwand.
Und ich habe erklärt, wie man mqtt eine Behelfsbrücke bauen kann oder von mir aus nutzt man die iobroker Node-red Instanz durch Bildung eines Web-servers eine Proxy-API - aber dann sieht man ja wie das läuft ....
Deswegen ist es einfacher nach dem 10. Posting zu schreiben: geht nicht!!!
Und wer das immer noch nicht glauben kann, der sollte sich lieber mit der Programmierung von eigenen Nodes und websocket Kommunikation und der entsprechenden Doku beschäftigen. Die ursprünlgiche Doku ist glaub schon längst veraltet.
Ich habe mich selbst mal an die Node-Programmierung mit socket-io gewagt: https://forum.iobroker.net/topic/41728/zugriff-auf-iobroker-via-soket-io
und habe sogar einen Minierfolg mit einer kleinen Node - die spätestens bei gleichzeitigem Zugriff Dein gesamte Node Red abschiesst versucht: https://forum.iobroker.net/post/578047Das hatte damals auch Gründe, weil die Wildcards nicht funktioniert haben. Aber selbst da habe ich schon gemerkt, dass es mir an Doku zur Websockets Kommunikation fehlt und ich nur diese Beispielanwendung von Ingo gefunden hatte: https://github.com/ioBroker/ioBroker.socketio/tree/master/example
Ich gebe aber auch zu, dass ich kein richtiger Entwickler (sondern nur beschränkten JS Code schreiben kann) und mir bei asynchroner Programmierung schon schwer tu, auch wenn ich das Prinzip an sich verstehe. Ich habe damals mit C++ und multithreating was unter Microsoft Visual Studio gemacht - aber sowie ich verstanden habe, kann NodeJS auf dem alles basiert kein echtes Mulitthreading und arbeitet deshalb mit dieses promises. Aber egal - ich bin KEIN Entwickler.
So und dann versteht man nicht, warum es einfacher ist, zu sagen: geht nicht!!! ???????????
Von einem Entwickler hätte ich da etwas mehr erwartet und ich bewundere @haus-automatisierung wegen der Geduld hier jemand zu erklären, dass es nicht geht, obwohl er es eigentlich schon erklärt hat. Die anderen Möglichkeiten über das interne NodeRed eine eigene API als Proxy aufzubauen oder mqtt zu nutzen, dass ist @Dreistein schon zu viel. Er stürzt sich nur auf den Hoffnungsschimmer, weil jemand anderes auch den Feature Request unterstüzt.
Wie gesagt, ich verstehe es - aber es ist halt nicht banal - und deshalb bleibe ich bei meinem "geht nicht" - und wer gut programmieren kann, sich in die Programmierung von Nodes zutraut. So schlimm ist das nicht - zumindest habe ich schon mal eine Node gemacht - und eine noch gültige websockets Verbindunge mit dem iobroker zustande bekommt, der kann ja mal im nächsten halben Jahr ein paar Nodes basteln. Im Prinzip müsste er ja nur eine Server Konfigurations Node basteln und dann die bestehenden Nodes darauf aufsetzen.
Lange Rede, kurzer Sinn: Ich weiß von was ich rede, wenn ich schreibe: Es geht nicht!!! - und ich habe mich verhältnis mäßig viel damit beschäftigt (wie man ja an dem anderen Thread den ich hier zitiert haben sieht). Vielleicht kann ja @andre als Entwickler sich das mal durchlesen und sich dann selbst daran setzen.
Nachtrag: Im Übrigen wurde seit damals vieles (bei mir waren die externen Nodes - nur mal ein Grund es zu probieren) in die nun existieren Nodes bereits eingebaut ist, was damals alles noch nicht möglich war (Wildcards, Ack Filter etc.)
-
@Dreistein Und wenn Du Geduld mitbringst und Dir mit dem NodeRed Adapter einen eigenen Node-Red Companion über die HTTP Schnittstelle zu basteln, da bin ich gerne mit dabei - aber nicht mit wo sind meine Nodes für den externen Zugriff.
Und wie gesagt auch bei den HA Nodes:
funktioniert dieser Teil zum Anlegen von Entitäten auch nur mit dem HA Node-Red Companion
und nicht mit der reinen websockets Kommunikation. -
Ich bin im übrigen auch dabei meine Flows zu überarbeiten und auch da kannst Du selbst durch Neustukturierung Deiner Flows viel erreichen, um Dein NodeRed flexibler und kompatibler an verschiedene Hausautomationssysteme anzupassen, wenn Du Deine Ein-, Ausgaben und reiner Verarbeitung sauber trennst. Als Bindeglied kannst Du wieder mqtt verwenden. Kleines Beispiel - wenn man mein NR Dashboard kennt, dann sieht ja die Übersichtsseite so aus:
Man kann also direkt auf das Dashboard (oder VIS, Jarvis etc) ausgeben oder eine mqtt Schicht dazwischen schalten, in dem man die Ausgaben ins mqtt schreibst
Und dann kann man sie dort rausholen
und sie dann auf der UI (NR-Dashbord, vis, Jarvis) ausgeben oder in states/Entitäten unterschiedlicher Systeme schreibt (iobroker, HA etc.)
Im Prinzip könnte man sich auch überlegen die ganzen I/O in eigene Flows zusammenzufassen, dann kann man sich überlegen ob man direkt in die states/Entitäten oder mqtt schreiben will und dann nur die Ausgabeflows entsprechend anpassen.
Und wie gesagt über die HTTP - WEB API von Node-Red kann man die iobroker Nodes selbst bilden, in dem man kleine Subflows schreibt. Ist alles nicht so schlimm - aber man muss halt mal selbst anfangen - und wie gesagt, ich bin bei so einem Projekt gerne dabei. Das einzige was man sich dann von @haus-automatisierung noch wünschen könnte, wäre eine iobroker-IN Node mit variablen Subscriptions (also über msg Properties) so wie es mit Javascript auch möglich ist.
-
@mickym Was geht denn mit dir ab? Schalt mal zwei drei Gänge runter. Ich weiß gar nicht warum du so eine Welle machst...
Hast du überhaupt gelesen was ich ursprünglich geschrieben habe???
@andre sagte in Externes node-RED und ioBroker. Wie verbinden ?:
Auf der Suche nach genau dieser Lösung bin ich auch hier vorbei gekommen: https://github.com/ioBroker/ioBroker.node-red/issues/124
Das ist der zugehörige Feature Request...MfG,
AndréFalls das nicht deutlich geworden ist nochmal für dich ausformuliert:
Ich habe in diesem Thread hier einen Link zum zugehörigen Feature Request dokumentiert. Fertig.
Dein:
@mickym sagte in Externes node-RED und ioBroker. Wie verbinden ?:geht nicht!!!
war schlicht fehl am Platz und absolut überflüssig. Es hat niemand danach gefragt. Und darüber hinaus kam das ganz schön patzig und aggressiv rüber...
Ich verstehe langsam echt nicht mehr was mit einigen Leuten hier im Forum verkehrt ist... Da willste für die Nachwelt dokumentieren und wirst dumm angemacht... Sorry dass ich hier das Wissen sinnvoll ergänzen wollte... Kommt nicht wieder vor...
MfG,
André -
@andre sagte in Externes node-RED und ioBroker. Wie verbinden ?:
@mickym Sehr konstruktiver Beitrag!
Wer ironisch meine Beiträge kommentiert, braucht sich über die Antwort nicht wundern. Damit ist das für mich hier gegessen.
-
@andre sagte in Externes node-RED und ioBroker. Wie verbinden ?:
Schalt mal zwei drei Gänge runter.
Bitte macht das alle beide!
@andre sagte in Externes node-RED und ioBroker. Wie verbinden ?:
Ich verstehe langsam echt nicht mehr was mit einigen Leuten hier im Forum verkehrt ist.
Ich fürchte: gar nichts!
Ich sehe die Ursache für einige Missverständnisse schlichtweg in Kommunikationsstörungen.
Jeder von euch beiden macht seine "Arbeit" hervorragend!
Jeder da wo er es kann.Bei der Kommunikation passiert dann das absolut menschliche: jeder sieht die Welt aus anderem Blickwinkel und versteht möglicherweise eine Aussage des anderen vollkommen falsch, frei nach dem Motto: der Empfänger bestimmt den Inhalt der Message!
egal was der Absender eigentlich meinte.@andre Sorry, dass ich dich jetzt zitiert habe. Das ist keine Wertung, die Worte passten jetzt nur!
und wehe ihr nutzt diese goldene Brücke jetzt nicht!
-
@mickym Die Frage ist ja eher, warum sich aktuell generell jemand die Mühe machen sollte, separate Nodes bereitzustellen. Aktuell gibt es zig Wege, ein externes Node-Red anzubinden
- simple api
- rest api (sogar mit subscriptions)
- mqtt
- …
Und das ist dann zu umständlich, aber man möchte auch nicht einfach den Node-Red-Adapter nutzen (was ja noch einfacher wäre).
Klar könnte ich ein paar Nodes für eine Verbindung per socketio programmieren. Aber wozu sollte ich mir den Aufwand machen?
Ich investiere auch zB viel Zeit in den Shelly-Adapter, und am Ende schreibst zB auch Du bei jeder Gelegenheit Beiträge, dass man das doch alles selber mit MQTT machen sollte und den Adapter gar nicht braucht. Genauso wenig braucht man nach der Argumentation ja ioBroker-Nodes, welche über socketio kommunizieren.
-
@haus-automatisierung Ich weiß nicht, ob da was in den falschen Hals gekommen ist. Ich wollte eigentlich nur sagen, dass es eben ziemlich Aufwand ist - und hab auch nicht gesagt, dass Du oder sonst jemand solch einen Aufwand betrieben sollst. Ich wollte eigentlich im Gegenteil das Ganze hier nur abkürzen und Dich eigentlich unterstützen und klar stellen, dass ich das schon mal versucht habe und dass das alles andere als banal ist.
-
@mickym Ich hab doch nur gefragt, warum sich jemand die Arbeit machen sollte, da es genügend Wege gibt.
Besonders kompliziert wäre das nicht zu implementieren, aber man müsste halt Doku dafür schreiben, Support bieten usw.
-
@haus-automatisierung Ich hab doch nur gefragt, warum sich jemand die Arbeit machen sollte, da es genügend Wege gibt.
Na ich bin dazu nicht in der Lage.
Wenn man quasi eine ServerNode hätte auf der die iobroker Nodes aufsetzen könnten, dann hätte man halt wie gewünscht eine Möglichkeit wie in HA die iobroker Nodes in einer separaten NodeRed Instanz zu nutzen. Ggf. müsste sich die Doku ja gar nicht ändern wenn man in die iobroker Nodes dann einfach einen iobroker Server definieren wie in den HA Nodes auch.
Man kann dann halt NodeRed auch als SingleInstanz out of the box verwenden und ggf. sogar beide HA Systeme damit bedienen. Wie gesagt die HA Nodes erlauben ja auch einen externen Zugriff direkt ohne mqtt, http etc. - wie gesagt muss alles nicht sein. In Proxmox könnte man dann auch NodeRed als eigenen Container ausserhalb von HA oder iobroker laufen lassen.
Wenn Du im Übrigen meinst dass ich Deine Arbeit mit dem Shelly Adapter gering schätze - auch wenn ich den halt nicht nutze oder daraufhinweise, dass es auch andere Möglichkeiten gibt, dann tut mir das leid.
Wie gesagt ich schätze Dich sehr auch was Du hier im NodeRed Umfeld machst und wenn ich hier mit meinen Posts auch bei Dir einen schlechten Eindruck hinterlassen habe, dann tut es mir leid - und dann ziehe ich mich aus dem Thread nun wirklich ein für alle mal zurück.
-
@mickym sagte in Externes node-RED und ioBroker. Wie verbinden ?:
und dann ziehe ich mich aus dem Thread nun wirklich ein für alle mal zurück.
Quatsch!
wie geschrieben können Missverständnisse immer mal pasieren.
Da wird dann sachlich drüber gesprochen und dann sollte alles wieder gut sein. -
@haus-automatisierung sagte in Externes node-RED und ioBroker. Wie verbinden ?:
Naja Du brauchst ja nur eine http-In Node. Dort kommen alle abonnierten Nachrichten an. Oder Du müsstest für jeden State eine eigene URL anlegen (finde ich etwas nervig).
Hast du das mal erfolgreich probiert? Ich kann auf einer Callback-Adresse jeweils nur einen State abonnieren. Wenn ich mehrere States mit der selben Callback-Adresse abonniere, "gewinnt" immer der zuletzt abonnierte State, die anderen bleiben bei Änderungen stumm.