NEWS
Zugriff auf iobroker via soket.io
-
@apollon77 Ehrlich gesagt weiß ich nicht Recht wie man ein Issue als Feature Request erstellt. Ich hab jetzt mal ein Issue erstellt. Sorry für meine Unkenntnis.
Wenn das so richtig war - einfach ein Issue zu erstellen, dann kann ich ja das Hauptziel (s. nächstes Posting) entsprechende in Textform formulieren.
-
@rewenode Nun ehrlich gesagt, weiß ich nicht wie das geht - was Du gemacht hast. Kannst Du mal den ganzen Flow zum Importieren posten? Wie sprichst Du in der function Node die socket.io Schnittstelle an? Ich schaffe das nicht mit Boardmitteln.
Meine Idee war genau so was als Node zu realisieren, so dass ich in eine "iobroker In" Node mit diesen Wildcards arbeiten kann.
So dass man in einer iobroker In-Node mindestens so arbeiten kann:
ein Traum von mir wäre mit mehreren Sternchen zu arbeiten - analog dem "mqtt + Wildcard" also zum Beispiel so
Bislang kann nur der List Node mit * arbeiten, aber der abonniert keine Themen und ich polle deshalb:
Warum ich das Ganze machen - auch hier nochmal grafisch dargestellt:
Also wenn Du mir den ganzen Flow zur Verfügung stellen kannst, wie Du mit diesen Wildcards auf der socket-io Schnittstelle Datenpunkte abonnierst, wäre mir schon sehr geholfen. Dann spare ich mir vielleicht den ganzen Aufwand.
Wie kommuniziert Deine function Node mit iobroker? Ich bin mir fast sicher - dass ich mir mit Deiner function Node den Aufwand spare - und ich glaube das würde vielen helfen.
und dann halt noch die Masterfrage - wie bzw kommen denn die Values der "Subscripten" Objekte bei Änderungen auch automatisch rein? Bzw. kommen die einfach dann aus der Function Node raus? -
@mickym sagte in Zugriff auf iobroker via soket.io:
Ich hab jetzt mal ein Issue erstellt. Sorry für meine Unkenntnis.
kein Problem, alles korrekt
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Also wenn Du mir den ganzen Flow zur Verfügung stellen kannst, wie Du mit diesen Wildcards auf der socket-io Schnittstelle Datenpunkte abonnierst, wäre mir schon sehr geholfen. Dann spare ich mir vielleicht den ganzen Aufwand.
Na, du wolltest es ja nicht anders;-)
Sei gewarnt, das ist nur aus der Hüfte geschossen und eigentlich nicht zur Nachnutzung gedacht.
Also im Prinzip bist du ja schon den selben Weg gegangen wie ich.
Bei mir läuft das ganze zwar in deinem NR-Docker-Container, sollte aber in jedem eigenständigem NR ebenfalls funktionieren.- unter NR Socken.io < 3.0 installieren. Bei mir: 2.2.0
- beiliegende conn.js ins NR Verzeichnis kopieren. Achtung hab nur die offensichtlichen Sachen geändert. Und im Flow nur subscribe/unsunscribe/getstate implementiert und getestet.
- connection im Flow anpassen. Habs zum test leider hart kodiert.
servConn.init({ name: 'node-red.' + node.id, // optional - default 'vis.0' connLink: 'http://192.168.99.119:8084', // 8084 optional URL of the socket.io adapter socketSession: '' }, {
- settings.json anpassen. Bei mir:
... functionGlobalContext: { io:require('socket.io-client'), servConn:require('./conn.js') }, ...
Dann in in den Change-nodes ggf die patterns anpassen.
Sollen mehrere Objecte abboniert werden, muss das nächste Objekt nach payload.suscribePatter[1] usw.Melde dich, wenn du nicht klar kommst
-
@apollon77
Hallo - Danke erst mal für die Rückmeldung. Dann ist ja alles gutIch habe mir mal die ganzen offenen Issues angeschaut und eines gefunden , was bereits als Enhancement deklariert ist und ähnliche Anforderungen hat, aber in meinen Augen kann man es noch erweitern,
Schau mal, ob Euch das so langt als Beschreibung: https://github.com/ioBroker/ioBroker.node-red/issues/30
oder soll ich ein eigenes Issue machen und mein Beschreibung, die ich dort als Kommentar hinterlassen habe, nochmal als neues Issue aufmachen?
-
@mickym ein Traum von mir wäre mit mehreren Sternchen zu arbeiten - analog dem "mqtt + Wildcard" also zum Beispiel so
Also bei mir geht das problemlos mit dem ioBroker_In node.
Nachtrag, sehe grad, du willst mehrere Wildcards im String. Das hab ich nicht getestet.
-
@rewenode Ganz lieben Dank! - Es ist ja schon mal toll, dass es da jemand in der Community gibt, der die gleiche Idee hat, um ein Problem zu lösen- Inzwischen habe ich ja auch bissi Erfahrung gesammelt.
Ich melde mich, wenn ich Fragen habe bzw. nicht zurecht komme.
Nun muss ich mir das ganze aber erst mal genau anschauen und versuchen zu verstehen.
Ich sehe gerade bei Dir geht das mit der inNode - dann muss ich mal sehen, ob ich ein anderes Problem habe.
-
@rewenode Hmm dann verstehe ich das alles nicht - dann muss es wohl an irgendeiner Konfig liegen - bei mir kommt da nichts raus - ich habe es sogar mal wie Du eben mit dem Xiaomi Würfel probiert - aber auch da tut sich nichts:
Es kommt bei mir einfach nichts an:
Es ändert auch nichts ob ich das Object oder nur den value in der IN Node eintrage.
Ich sehe allerdings einen Unterschied in Deinem Screenshot - als ob ich eine ganz andere Version habe????
Oder liegt das an Deinem Browser (Safari - denke ich mal )
Wobei ich gerade sehe - das Debug Fenster zeigt doch einen ganz anderen Output (von Alexa) und nichts von Deinem Würfel ??????????????
-
@mickym sagte in Zugriff auf iobroker via soket.io:
oder soll ich ein eigenes Issue machen und mein Beschreibung, die ich dort als Kommentar hinterlassen habe, nochmal als neues Issue aufmachen?
Überleg dir wie du es haben wollen würdest ... kann ich dir so grad nicht sagen. wenns passt machs rein sonst extra issue
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Oder liegt das an Deinem Browser (Safari - denke ich mal )
Also, da scheint etwas anderes bei dir im Argen zu sein.
Gerade getestet mit Safari und Chrome.
Alias-Objekt, das originale Object und Alle Objekte mit 2 Wildcards bringen alle das gleiche Ergebnis.
-
@rewenode Ehrlich gesagt, weiß ich nicht was. An der Adapterkonfig kann es eigentlich nicht liegen:
Das Einzige was ich geändert habe, ist die Projektfunktion aktiviert zu haben und dafür die Konvertierung in Strings deaktiviert zu haben.
Ich hab die Konvertierung mal wieder rein genommen - aber das ändert nichts.
@apollon77 Irgendeine Idee - was an meinem Node-Red schief sein könnte und warum das bei mir nicht geht, die Wildcards bei @rewenode schon. Dann brauche ich nämlich auch kein Issue für ein Enhancement aufmachen. Dann hat mein System ja nur irgendein Fehler.
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Das Einzige was ich geändert habe, ist die Projektfunktion aktiviert zu haben und dafür die Konvertierung in Strings deaktiviert zu haben.
Sieht eigentlich im Prinzip aus wie bei mir.
Teste doch mal Wildcards bei Nicht-mqtt-Objekten. Irgendwo muss man ja anfangen ;-(
-
@rewenode Du bist so Klasse!!!!
Auch wenn ich nicht weiß, warum meine lokaler NodeRed Adapter mit den iobroker-in Nodes solche Probleme macht mit den Wildcards-
Aber ich habe noch eine Standalone Node Red Installation auf meinem Windows 10 Rechner laufen und da klappt Dein Flow schon mal ausgezeichnet - da kann man noch einiges draus machen.
Super STARK!
und hast Du toll gemacht, dass man gleich im iobroker sieht mit welcher Node man verbunden ist.
-
@rewenode Ich habs doch wie Du siehst auch mit den zigbee.0.*.rotate_angle genauso wie Du versucht! Das klappt nicht - aber Dein socket-io ZUgang der passt.
Wenn ich nur wüsste wo man bei meinem Node-Red Adapter sonst anfangen könnte zu suchen - bei mir klappt das ja schon seit Anfang an nicht. An der Hardware kann es ja eigentlich nicht liegen und mein Log- im iobroker ist super sauber, wenn ich nicht selbst irgendwelche Dummheiten anstelle. Und die iobroker-Nodes bekomme ich ja nur über den Adapter geliefert.
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Ich habs doch wie Du siehst auch mit den zigbee.0.*.rotate_angle genauso wie Du versucht! Das klappt nicht - aber Dein socket-io ZUgang der passt.
Ja, da bin ich auch ratlos. Na da hast du ja mit socket.io wenigstens eine Alternative bis der eigentliche Fehler mal gefunden ist.
-
@rewenode Wahrscheinlich werde ich dazu auch ein Issue aufmachen - dann ist das halt ein Bug - auch wenn es bei Dir funktioniert. Aber dann muss man immer noch rausfinden, warum es bei mir nicht geht. Wie gesagt die Nodes kommen ja mit dem Adapter - also kann es ja nicht mehr an irgendwelchen Flows und Datenpunkten liegen, zudem ich ja sogar auch die gleichen Zigbee Datenpunkte - und auch noch vom gleichen Gerät genommen habe.
Ja ich mach in jedem Fall an der socket.io Schnittstelle weiter. Danke nochmals!
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Wenn ich nur wüsste wo man bei meinem Node-Red Adapter sonst anfangen könnte zu suchen - bei mir klappt das ja schon seit Anfang an nicht.
Letztlich bleibt eigentlich nur, das node zu debuggen um zu schauen was da wo ankommt und wie umgesetzt wird.
Aber das ist nicht so einfach, da habe ich schon einiges an Zeit investiert und dann für mich eine halb-gare Frickellösung gebastelt.
Aber da du an den Adapter-Quellcode rankommst, spricht ja nichts dagegen an interessanten Stellen Log-Ausgaben für die Konsole zu implementieren.
Sonst stocherst du ewig im Nebel. -
@rewenode OK damit finde ich vielleicht raus, was die Ursache ist. Wenn es aber ein Bug in der Node ist, werde ich das sicherlich nicht selbst beheben können, das muss dann sowieso der Adapterentwickler machen. Zudem es wahrscheinlich schwerer ist den Code zu verstehen, als wenn ich sowas selber mache. Ich bin auch noch nicht der Javascript Entwickler, dass mir das alles so leicht fällt.
-
@mickym sagte in Zugriff auf iobroker via soket.io:
Wenn es aber ein Bug in der Node ist, werde ich das sicherlich nicht selbst beheben können, das muss dann sowieso der Adapterentwickler machen.
Ja, das stimmt schon. Aber was soll man als Entwickler machen, wenn es (scheinbar) überall geht, nur bei einem nicht und man das auch nicht nachvollziehen kann;-(
@mickym sagte in Zugriff auf iobroker via soket.io:
Ich bin auch noch nicht der Javascript Entwickler, dass mir das alles so leicht fällt.
Ich leider auch nicht, deshalb tue ich mich auch so schwer, mein Gefrickel weiterzugeben
-
@rewenode Du bist trotzdem schon weiter bei der Programmierung - jedenfalls hast Du mir toll geholfen und nun kann ich da weitermachen.
Ich habe das Ganze Problem ja mal hier angehängt - mach dann aber wahrscheinlich noch ein Neues Issue auf.
https://github.com/ioBroker/ioBroker.node-red/issues/30
Zumindest sieht man daran, dass es 2018 - ok ist super alt - auch nicht gegangen ist. Sonst hätte dieser @Osrx seine Lampen mit "lamp.*" auslesen können.
Ja, das stimmt schon. Aber was soll man als Entwickler machen, wenn es (scheinbar) überall geht, nur bei einem nicht und man das auch nicht nachvollziehen kann;-(
Also ich hatte auch mal einen Fehler im backit-up Adapter und da konnte mir der Entwickler super weiterhelfen und hat den Fehler auch im Code gefunden.Da kam dann auch raus, dass es daran lag, dass ich ein lokales Backup gemacht habe usw. ..
Jedenfalls hat man da was dann zum Debuggen eingebaut - dass man es im Log sieht. Ich wüsste ja nicht mal, wo ich im Code suchen müsste.
Ich habe es gerade nochmal auf einem fast jungfräulichen Projekt nochmals versucht und den node-red Adapter auf debug gestellt - aber da kommt auch nichts bzw. raus:
node-red.0 2021-02-03 20:16:43.755 debug (7110) system.adapter.admin.0: logging true node-red.0 2021-02-03 20:15:39.043 debug (7110) system.adapter.admin.0: logging false node-red.0 2021-02-03 20:09:17.106 debug (7110) system.adapter.admin.0: logging true node-red.0 2021-02-03 20:09:05.971 debug (7110) 3 Feb 20:09:05 - [info] Gestartete geänderte Nodes node-red.0 2021-02-03 20:09:05.970 debug (7110) 3 Feb 20:09:05 - [info] Modifizierte Nodes werden gestartet node-red.0 2021-02-03 20:09:05.967 debug (7110) 3 Feb 20:09:05 - [info] Geänderte Nodes gestoppt node-red.0 2021-02-03 20:09:05.967 debug (7110) 3 Feb 20:09:05 - [info] Modifizierte Nodes werden gestoppt
Die Shellies aktualisieren ihre Datenpunkte im Minutentakt.
Das Einzige was ich finde - wenn ich den Node-Red Adapter auf Debug stelle ist, dass er irgendwie nach Datenpunkten sucht, die es tatsächlich nicht bzw. nicht mehr gibt.
node-red.0 2021-02-03 20:19:24.404 debug (7110) State "logic.states.occupancy" does not exist in the ioBroker node-red.0 2021-02-03 20:19:24.283 debug (7110) State "logic.states.occupancy" does not exist in the ioBroker node-red.0 2021-02-03 20:19:24.214 debug (7110) State "logic.states.illuminance" does not exist in the ioBroker node-red.0 2021-02-03 20:19:24.191 debug (7110) State "logic.states.occupancy" does not exist in the ioBroker
Allerdings kann ich alle Nodes durch suchen - ich finde keine Node noch den String auch wenn ich die ganze flows.json durchsuche!