NEWS
bshb - Rollladensteuerung mit yhka Homekit
-
Ja cool.
Ich denke, ich probiere mehrere Herangehensweisen mal aus. Zum einen werde ich versuchen, die Dachfensterpaare auf Szenen umzulegen und so den Traffic Richtung KLF200 reduzieren.
Zum anderen probiere ich die Velux Nodes mal aus. Evtl. macht der Adapter ja auch unnötig Traffic und überfordert so das KLF200.
Und als 3. baue ich die Delay Nodes ein.Wenn das alles nichts hilft, versuche ich einen einen Reboot mit der Catch Node. Das funktioniert allerdings nicht mehr, wenn das KLF200 schon abgestürzt ist. Ich bin mir auch gar nicht sicher, ob der Adapter crashed oder das KLF200 selbst. Meistens kann ich den Adapter morgens manuell neu starten. Das heißt ja, dass das KLF200 funktioniert. Evtl. ist resettet es sich selbst nach einiger Zeit?
Ich könnte einen regelmäßigen Reboot per Adapter auslösen oder einfach über meinen smarten Zwischenstecker einmal am Tag das KLF200 vom Strom trennen. Diese Reboots finde ich aber nicht so optimal, weil der Status im IQcontrol manchmal nicht mehr richtig ist.
-
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
Ich denke, ich probiere mehrere Herangehensweisen mal aus. Zum einen werde ich versuchen, die Dachfensterpaare auf Szenen umzulegen und so den Traffic Richtung KLF200 reduzieren.
Ja das ist sicher eine gute Idee - und dann kannst Du ja immer noch entscheiden.
Wenn das alles nichts hilft, versuche ich einen einen Reboot mit der Catch Node. Das funktioniert allerdings nicht mehr, wenn das KLF200 schon abgestürzt ist. Ich bin mir auch gar nicht sicher, ob der Adapter crashed oder das KLF200 selbst. Meistens kann ich den Adapter morgens manuell neu starten. Das heißt ja, dass das KLF200 funktioniert. Evtl. ist resettet es sich selbst nach einiger Zeit?
Entweder so - sprich man wartet oder mit den Velux Nodes hast DU ja auch immer die Möglichkeit zu prüfen, ob Dein KLF200 arbeitet. Sprich wenn innerhalb einer bestimmten Zeitspanne keine Antwort kommt, dann Reboot.
Wenn sich das Ding so aufhängt, dass es sich gar nicht mehr ansprechen lässt, dann würde ich - falls es ein smarter Zwischenstecker ist nicht zeitgesteuert - sondern dann genau in diesem Fall die Steckdose ein und ausschalten. Also keine Zeitschaltuhr - sondern smart (z. Bsp. Shelly plug S) oder so. Man musst halt ggf. einen Zähler einbauen - so dass bei einem Netzproblem nicht gleich dauern geschaltet wird oder andere Sicherheitsmaßnahmen ergreifen.Ich könnte einen regelmäßigen Reboot per Adapter auslösen oder einfach über meinen smarten Zwischenstecker einmal am Tag das KLF200 vom Strom trennen. Diese Reboots finde ich aber nicht so optimal, weil der Status im IQcontrol manchmal nicht mehr richtig ist.
Wenn Du das dann nicht zeitgesteuert, sondern ereignisgesteuert machst, dann weißt Du über Deinen Flow ja BEscheid und kannst die Zustände neu auslesen und dann in iQuontrol übernehmen.
-
Um zum Beispiel zu überprüfen, ob Dein Gateway noch reagiert oder um zu Überprüfen, ob Dein Gateway busy ist, kannst Du ja ebenfalls die API verwenden. Weiß nicht ob das mit dem Adapter geht ...
Damit Könnte man zum Beispiel generell überprüfen, dass nur dann was geschickt wird, wenn Gateway State =2 und Idle
-
Ich habe noch einmal eine andere Frage an Dich, bevor ich die nächsten Schritte mache. Ich habe die Current und Remaining Nodes erfolgreich an Datenpunkte hängen können. Die Statusmeldungen werden minütlich an die Datenpunkte ausgelesen.
Den Target State bekomme ich aber nicht gesetzt. Der davor geschaltete Datenpunkt springt richtig von 100 auf 0 um. Aber die Target Node reagiert nicht. Sie steht immer noch auf 100. Woran kann das liegen?
-
@sascho Ehrlich gesagt verstehe ich es nicht ganz - wenn eine Velux Node nicht reagiert bin ich ja erst mal überfragt - da ich es nicht nachvollziehen kann. Eine Target-Wert Node hat ja in meinen Augen auch keinen Status.
OK - vielleicht weiß ich welche Node Du meinst - ist das denn auch so eingestellt?
steht send value auf target?
ist der node index korrekt?
und hast Du es vorne erst mal mit einer Inject Node versucht und Zahl versucht?
hast du bei dem Adapter - das alles in Strings umgewandelt wird - ausgeschaltet?
prüf mal mit einer Debug Node - direkt an Deiner iobroker IN Node - dass auch eine Zahl rauskommt.In einem der Vorpostings konntest Du doch das Target setzen - was ist der Unterschied?
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
Hi, ich habe Deine Vorschläge mal umgesetzt und konnte tatsächlich die Current Position auslesen und die Target Position setzen. Leider ist das Ganze noch nicht stabil. Ich bekomme immer noch Fehlermeldungen - evtl. ist das KFL200 oder der Motor überlastet:
-
Also, ich habe gerade mal einen komplett neuen Container mit nur Node Red + der Velux Nodes angelegt.
Wenn ich per Inject Node 0, 100 eingebe, funktioniert es. Das sieht man daran, dass bei Remaining 40 erscheint und nach 40 Sekunden Current = Target ist.
Was nicht funktioniert, die Inject Node vor den Datenpunkt zu hängen und dann die Velux Node anzusprechen. Dann passiert erst gar nichts, und dann kommt manchmal die Fehlermeldung. Die Fehlermeldung kann nicht mehr mit dem KLF200 Adapter zusammenhängen, da dieser nie im Container installiert wurde. Ich vermute, die Velux Nodes verwenden die gleiche Bibliothek.
Btw, ich habe in den Red Node Einstellungen die Konvertierung auf String Werten abgestellt. Es kommen also Numbers bei der Velux Node an. Auch mit Stringwerten, übernimmt die Velux Target Node den Wert nicht. Falls wir es nicht so hinbekommen, kann man die Inject nodes auch triggern? Alternativ über die API Node gehen?In der Velux Node habe ich noch das Topic ergänzt:
-
@sascho Also ob Adapter und Nodes die gleiche Bibliothek zugreifen, glaube ich noch nicht 100% - schau mal ob Du wie gesagt unter /opt/iobroker/iobroker-data/node-red/node_modules die gleiche Bibliothek noch mal hast. Ich glaube es noch nicht so ganz.
Ehrlich gesagt ist mir immer noch nicht klar, warum es sich mit einer Inject Nodes anders als bei einer iobroker-IN Node handelt - ausser natürlich, dass das topic verwirren könnte. Manchmal kommen die Ideen beim Schreiben und Nachdenken gleichzeitig.
Also Du kannst über einen Datenpunkt natürlich eine ChangeNode verwenden - da würde ich aber erst mal keine payload setzen, sondern das topic löschen - das wäre mE der wesentliche Unterschied zwischen der iobroker-In Node und der Inject Node.
Also erst mal eine Change Node zwischen der iobroker IN und der Velux Node - in der Du das topic löschst:
Wenn das nicht hilft müsste man mal versuchen, das ganze Nachrichtenobjekt nochmal neu zu erstellen, falls das ein Problem ist. In diesem Fall müsstest Du eine function Node dazwischen schalten mit folgendem Code:
var value=msg.payload; msg={payload:value}; return msg;
Also erst mal topic löschen - da die Velux Node ja das Topic auswertet:
Und wenn da der Pfad von userdata Punkt drinsteht - wird das ggf. die Ursache sein, warum die velux Node verwirrt ist.
Alternativ kannst auch zwischen den iobroker-In NOde und der Velux Node eine Change NOde setzen in der Du das topic explizit setzt:
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
Was nicht funktioniert, die Inject Node vor den Datenpunkt zu hängen und dann die Velux Node anzusprechen. Dann passiert erst gar nichts, und dann kommt manchmal die Fehlermeldung.
Wie gesagt ich glaube das es an dem Topic liegt. Interessant ist auch dass da steht, das die KLF nur 2 Verbindungen erlaubt - deshalb kommt es wohl leicht zu den Engpässen, insbesondere wenn die nicht mehr getrennt werden.
-
Du hattest Recht mit dem Topic, wenn die Change node das Topic löscht funktioniert es ohne Probleme:
Bin ich erleichtert
Wo wären den der Pfad zu finden, nach dem ich gucken soll?
Wenn das jetzt noch heute Abend noch gut klappt, dann nehme ich mein Produktivsystem wieder online und probiere es mal in dem Set-up aus!
-
-
@sascho über den neuen Admin findest das nicht.
Du musst halt in Deinem Container schauen - ob in diesem Verzeichnis die KLF200 API noch installiert ist:
oder natürlich auf der Kommandozeile:
cd /opt/iobroker/iobroker-data/node-red/node_modules
dann
ls -la | more
dann mit Enter durchscrollen
hier sehe ich dann das alles Node-Typen die ich mit dem Pallettenamanger installiert habe - deswegen gehe ich davon aus, dass hier dann auch ein Verzeichnis velux-klf200-api exisitieren müsste.
drwxrwxr-x+ 8 iobroker iobroker 4096 18. Jul 00:43 node-disk-info drwxrwxr-x+ 3 iobroker iobroker 4096 16. Nov 2020 node-fetch drwxrwxr-x+ 5 iobroker iobroker 4096 29. Mär 03:59 node-persist drwxrwxr-x+ 3 iobroker iobroker 4096 14. Mai 18:26 node-red-contrib-bigtimer drwxrwxr-x+ 5 iobroker iobroker 4096 16. Jul 15:52 node-red-contrib-buffer-parser drwxrwxr-x+ 3 iobroker iobroker 4096 16. Jul 15:53 node-red-contrib-cron-plus drwxrwxr-x+ 4 iobroker iobroker 4096 4. Dez 2019 node-red-contrib-crypto-js drwxrwxr-x+ 4 iobroker iobroker 4096 1. Feb 2021 node-red-contrib-eztimer drwxrwxr-x+ 2 iobroker iobroker 4096 5. Dez 2020 node-red-contrib-fs-ops drwxrwxr-x+ 4 iobroker iobroker 4096 5. Feb 2021 node-red-contrib-harmony-websocket drwxr-xr-x+ 4 iobroker iobroker 4096 18. Jul 00:43 node-red-contrib-homekit-bridged drwxrwxr-x+ 6 iobroker iobroker 4096 29. Mär 03:59 node-red-contrib-light-scheduler drwxrwxr-x+ 6 iobroker iobroker 4096 16. Nov 2020 node-red-contrib-moment drwxrwxr-x+ 3 iobroker iobroker 4096 18. Jul 00:44 node-red-contrib-os drwxrwxr-x+ 3 iobroker iobroker 4096 17. Aug 01:16 node-red-contrib-tail-file drwxrwxr-x+ 6 iobroker iobroker 4096 18. Jul 00:42 node-red-contrib-ui-time-scheduler drwxrwxr-x+ 4 iobroker iobroker 4096 18. Jul 00:42 node-red-dashboard drwxrwxr-x+ 4 iobroker iobroker 4096 18. Jul 00:42 node-red-node-email drwxrwxr-x+ 4 iobroker iobroker 4096 29. Mär 03:56 node-red-node-feedparser
Unter meiner Windows-Testinstallation von NodeRed finde ich nach Installation der velux Nodes - diese beiden Verzeichnisse:
Wenn das alles stabil klappt - ich drück Dir die Daumen - dann kannst ja auch ein bisschen mit dem valuetype spielen.
Manchmal muss man halt auch nur exakt lesen - siehe markierte Textstelle! - aber wie gut, dass Du es mit der Inject Node und der iobroker-In Node versucht hast - so konnte man sich über die Unterschiede auf die Lösung des Problems kommen.
Damit kann man dann vielleicht sogar - das Fenster von einer bestehenden Position um einen bestimmten Prozentsatz verändern
Das topic in eine ChangeNode würde dann so aussehen:id und name musst halt eingeben - der Wert kommt weiterhin über die payload Deiners Datenpunktes.
Hier mal die Change Node zum Import:
So würde ich das mal sehen, um die Beschreibung umzusetzen. Aber schau erst mal ob es so stabil läuft, dann kannst immer noch sehen, ob Du hier mit den Möglichkeiten rumspielen möchtest. Name und ID sind auch optional (also brauchst nicht angeben, wenn Du das in der Node schon spezifizierst), weil Du das wahrscheinlich schon in der Velux NOde angibst. Man kann aber durch das variable Topic aber auch mit weniger Nodes auskommen, da das topic ja die Einstellungen in der Node überschreibt, aber das kann man immer noch später optimieren.
Aber erst muss mal alles stabil sein.
Daumen drück!
-
Stabil laufen wäre jetzt erst einmal mein Hauptziel :-). Ich habe gestern mal alles auf Velux Nodes umgestellt - also pro Fenster 1x Current, 1x Remaining, 1x Target. Dadurch musste ich ziemlich oft die Red Node Flows neu deployen. Das hat wohl das KLF200 überfordert. Ich bekomme seitdem nur noch diese Fehlermeldungen:
23 Aug 11:33:36 - [error] [velux-connection:6e3b4717.7b2e68] Velux Error: tcp errorError: connect ECONNREFUSED 192.168.178.6:51200 at TLSSocket.velux.errorCallback (/opt/iobroker/node_modules/velux-klf200-api/lib/net.js:171:19) at TLSSocket.emit (events.js:314:20) at emitErrorNT (internal/streams/destroy.js:92:8) at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) at processTicksAndRejections (internal/process/task_queues.js:84:21)Ich vermute, ich müsste es jetzt vom Strom trennen und neu booten da es sich aufgehängt hat. Gefühlt kriegt es den Reset manchmal nach ein paar Stunden selbst hin. Ob die API Node jetzt noch funktionieren würde, weiß ich nicht.
Ob ich Nodes sparen kann - keine Ahnung. Selbst wenn ich Scenes einsetze, habe ich noch 5 Scenes x 1 Current/1x Remaining/1x Scene.
Mir ist auch nicht klar, ob weniger Nodes besser wären, da ja alle über eine API Einstellung laufen.
Ich würde Ende der Woche erst mal schauen, ob ich die Scenes eingerichtet bekomme.
Evtl. kann man ja auch Remaining und Current über eine Node auslesen (All Values). -
Wie komme ich eigentlich in die Pfadstruktur von Docker bzw. buanet iobroker? Deinen Befehl direkt im terminal einzugeben gibt nur ein Fehler:
Du hast so etwas wie einen Ordner Browser offen. So etwas würde ich mir auch gerne einrichten.
-
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
Stabil laufen wäre jetzt erst einmal mein Hauptziel :-). Ich habe gestern mal alles auf Velux Nodes umgestellt - also pro Fenster 1x Current, 1x Remaining, 1x Target. Dadurch musste ich ziemlich oft die Red Node Flows neu deployen. Das hat wohl das KLF200 überfordert. Ich bekomme seitdem nur noch diese Fehlermeldungen:
Nun das heiß erst mal, dass es mit einer Node stabil gelaufen ist. Ich gehe mal davon aus, dass Du beim deployen zumindest nur die geänderten Nodes deployest - wenn nicht - vielleicht hilft das ja auch schon etwas.
Mir ist auch nicht klar, ob weniger Nodes besser wären, da ja alle über eine API Einstellung laufen
Nun auch wenn es über eine API läuft, so könntest Du über das Topic ja verscheiden KLF Nodes ansprechen. Mit theoretisch einer Node - kannst Du den Nachrichtenfluß ggf. über die Delay Node bremsen.
Evtl. kann man ja auch Remaining und Current über eine Node auslesen (All Values).
Auch das ist mE eine gute Idee.
Oder generell eben, wie ich mit dem API aufruf prüfen, ob die KLF idle und ready ist und ggf. zumindest alles was Schreiben betrifft - blockieren, solange KLF nicht ready.
-
Ja, die API Node würde ich auch gerne mal in Gang setzen. Aber ich habe das gleiche Problem wie der Themenersteller hier. Man bekommt nur ein schwarzes Dropdown in der Velux API:
https://github.com/PLCHome/node-red-contrib-velux/issues/11
Ich muss wahrscheinlich in die Konfiguration ändern, bevor ich hier? den Befehl:
eingeben kann:
Dazu müsste ich aber in die Container Ordnerstruktur kommen.
-
@sascho sagte in bshb - Rollladensteuerung mit yhka Homekit:
Wie komme ich eigentlich in die Pfadstruktur von Docker bzw. buanet iobroker? Deinen Befehl direkt im terminal einzugeben gibt nur ein Fehler:
Du hast so etwas wie einen Ordner Browser offen. So etwas würde ich mir auch gerne einrichten.
Da kann ich leider nicht helfen, da ich nicht mit Docker oder VMs arbeite.
Das ist bei mit der verpönte Raspberry Desktop.
-
@sascho Schreib doch mal gar nichts in die API Node und versuch doch nur mal über die Inject Nodes API Befehle abzusetzen.
Ich habe Dir ja mal den Reboot gepostet - und hier mal zusätzlich die Statusabfrage:
-
@sascho Aber nochmal, wenn das mit den Nodes keine gute Idee ist oder zu kompliziert - dann bleib doch bei Deiner Adapterlösung. Das mit dem anhand des Logs die KLF neu zu starten, wie Du es ursprünglich vorhattest ist dann vielleicht doch einfacher.
-
Ich teste das mit den Inject Nodes mal heute Abend. Aber ich glaube das KLF200 ist jetzt nicht mehr über die api erreichbar.
Ich hatte heute Nacht das Testsystem mit den 3 Velux nodes online. Dies bekommt auch keine Verbindung mehr.
Das heißt ab einem gewissen Punkt muss man das KLF200 per smartem Zwischenstecker vom Netz trennen um einen reboot zu initiieren. Das würde sehr wahrscheinlich nicht mehr über den Adapter oder die api Node klappen, da die api down ist.
Ich würde das über den von Dir oben beschriebenen Weg machen.Bleibt aber noch die Frage warum das KLF200 einfriert. Ich vermute Überlastung. Da würde ich mal testen ob die Velux nodes im Normalbetrieb besser arbeiten als der Adapter. Vorteil wäre, dass sie nicht wie der Adapter dauerhaft abschalten wenn das KLF200 nicht erreichbar ist.
Ich glaube wir sind auf einem guten Weg auch wenn es viel try und error ist. -
@sascho Wie gesagt, über den API Call kannst Du ja den Status abrufen. Falls dann keine Antwort kommt, dann die Steckdose (smarten Zwischenstecker) schalten:
Hier kannst Du halt über die Steckdose (Zwischenstecker) direkt reagieren anstelle von Logs, wenn das KLF200 nicht mehr erreichbar ist:
Diese 3 Nodes kannst Du Dir generell auch als Subflow speichern, dann hast Du alles in einer Node und kannst diese als timeout Node für alle Nodes verwenden, wo Du nach einer bestimmten Zeit eine Antwort erwartest. Statt on und off kannst natürlich auch true und false verwenden, je nachdem was Du halt für Deine Steckdose brauchst.
-
Hi!
also ich konnte den Hardware Reset am KLF200 jetzt machen und die Velux Nodes funktionieren - so lala. Ich habe die Beobachtung gemacht, dass ich immer nur einen Befehl geben kann, dann warten muss bis sich der Status aktualisiert hat und dann den nächsten Befehl geben kann. Auch das klappt nicht immer und es erscheinen diese Fehler im Log:
Ich habe jetzt nur noch die Hoffnung, die Anzahl der Nodes durch die Verwendung von Szenen für das Target und die All Values Node für die Current Values zu reduzieren.
Kannst du spontan sagen, wie ich so einen Payload zerlege und in Datenpunkt ausgebe?
Wenn das alles nicht hilft, muss ich wohl zurück auf den Adapter gehen und mir mit der Reboot Funktionalität behelfen :-(.