Closed Cosmicbase closed 3 years ago
Kannst du den Fehler dokumentieren, indem du das Loglevel auf Debug stellst und den Fehler reproduzierst?
Hier ist der log. Adapter stürzt ab sobald die Helligkeit verstellt wird.
hyperion_ng.0 2021-01-29 16:03:25.377 info (12464) setup finished
hyperion_ng.0 2021-01-29 16:03:25.293 info (12464) create effects
hyperion_ng.0 2021-01-29 16:03:25.145 info (12464) read out priorities finished
hyperion_ng.0 2021-01-29 16:03:25.143 info (12464) create priorities
hyperion_ng.0 2021-01-29 16:03:24.883 info (12464) create priorities
hyperion_ng.0 2021-01-29 16:03:24.601 warn (12464) This value will not be set in future versions. Please report this to the developer.
hyperion_ng.0 2021-01-29 16:03:24.601 warn (12464) State value to set is invalid for hyperion_ng.0.0.priorities.0-COLOR.value: The state contains the forbidden properties HSL, RGB!
hyperion_ng.0 2021-01-29 16:03:24.598 info (12464) create priorities
hyperion_ng.0 2021-01-29 16:03:24.327 info (12464) read out Adjustments finished
hyperion_ng.0 2021-01-29 16:03:23.831 info (12464) read out components finished
hyperion_ng.0 2021-01-29 16:03:23.099 info (12464) socket is connected
hyperion_ng.0 2021-01-29 16:03:22.919 info (12464) create Control Parameter
hyperion_ng.0 2021-01-29 16:03:22.861 info (12464) starting. Version 0.1.10 in /opt/iobroker/node_modules/iobroker.hyperion_ng, node: v14.15.1, js-controller: 3.1.6
host.Raspi4T 2021-01-29 16:03:21.461 info instance system.adapter.hyperion_ng.0 started with pid 12464
host.Raspi4T 2021-01-29 16:02:51.441 info Restart adapter system.adapter.hyperion_ng.0 because enabled
host.Raspi4T 2021-01-29 16:02:51.441 info instance system.adapter.hyperion_ng.0 terminated with code 0 (NO_ERROR)
hyperion_ng.0 2021-01-29 16:02:50.845 info (12337) Terminated (NO_ERROR): Without reason
hyperion_ng.0 2021-01-29 16:02:50.842 info (12337) terminating
hyperion_ng.0 2021-01-29 16:02:50.833 error at processImmediate (internal/timers.js:461:21)
hyperion_ng.0 2021-01-29 16:02:50.833 error at Immediate.
Wenn ich in der vorgegebenen Instanz 0 die Helligkeit unter Adjustments überschreiben will kommt es zum Crash. Ich versteh es einfach nicht. Ich kann alle Farben und Effekte auswählen. Aber ich finde das Verstellen der Helligkeit nur unter Adjustments, was aber glaube ich nicht die richtige ist. Das ist ja die fest eingestellte G Helligkeit der LEDs.
Muss aber auch sagen das ich insgesamt 3 Instanzen habe. Instanz 0 First Led Hardware Instance Instanz 1Lampe Instanz 2 Bilderrahmen
Instanz 1 und 2 werden über Esp8266 angesteuert.
Bitte um Hilfe. Wo finde ich den Datenpunkt für das stufenlose verstellen der Helligkeit? Wird die Helligkeit etwa über den RGB Wert gesteuert?
Also eigentlich ist der Wert unter Adjustments der richtige Wert. Für die einzelnen Effekte und Colors kann man diese bei hyperion nicht extra einstellen.
Kannst ja nochmal einen LOG posten. Bitte.
Ich habe den Bug behoben, welcher bei dem neusten js-Controller zu abstürzen führt.
Meine in Hyperion eingestellte Helligkeit im meiner First Led Hardware Instance ist 85%
Ich wollte jetzt z.B. ein Blau mit 10% Helligkeit simulieren und habe die 85 mit 10 überschrieben. Dabei stürzt der Adapter ab und startet anschließend neu. Und weil ich mir in der Vis Farb Buttons angelegt habe und einen Schieberegler für die Helligkeit wäre es super wenn ich die Buttons regeln kann.
hyperion_ng.0 | 2021-01-31 22:10:57.439 | info | (30050) Connection closed |
---|---|---|---|
hyperion_ng.0 | 2021-01-31 22:09:57.564 | info | (30050) setup finished |
hyperion_ng.0 | 2021-01-31 22:09:57.432 | info | (30050) create effects |
hyperion_ng.0 | 2021-01-31 22:09:57.272 | info | (30050) read out priorities finished |
hyperion_ng.0 | 2021-01-31 22:09:57.271 | info | (30050) create priorities |
hyperion_ng.0 | 2021-01-31 22:09:56.996 | info | (30050) create priorities |
hyperion_ng.0 | 2021-01-31 22:09:56.719 | info | (30050) create priorities |
hyperion_ng.0 | 2021-01-31 22:09:56.439 | info | (30050) read out Adjustments finished |
hyperion_ng.0 | 2021-01-31 22:09:55.923 | info | (30050) read out components finished |
hyperion_ng.0 | 2021-01-31 22:09:55.164 | info | (30050) socket is connected |
hyperion_ng.0 | 2021-01-31 22:09:54.946 | info | (30050) create Control Parameter |
hyperion_ng.0 | 2021-01-31 22:09:54.913 | info | (30050) starting. Version 0.1.10 in /opt/iobroker/node_modules/iobroker.hyperion_ng, node: v14.15.1, js-controller: 3.1.6 |
hyperion_ng.0 | 2021-01-31 22:09:22.741 | info | (29884) Terminated (NO_ERROR): Without reason |
hyperion_ng.0 | 2021-01-31 22:09:22.739 | info | (29884) terminating |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at processImmediate (internal/timers.js:461:21) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at Immediate. |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at HyperionNg.emit (events.js:315:20) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at HyperionNg.onStateChange (/opt/iobroker/node_modules/iobroker.hyperion_ng/main.js:614:34) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at Hyperion_API.setAdjustment (/opt/iobroker/node_modules/iobroker.hyperion_ng/hyperion_API.js:216:20) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at require (internal/modules/cjs/helpers.js:88:18) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at Module.require (internal/modules/cjs/loader.js:952:19) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at Function.Module._load (internal/modules/cjs/loader.js:725:27) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15) |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | - /opt/iobroker/node_modules/iobroker.hyperion_ng/main.js |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | - /opt/iobroker/node_modules/iobroker.hyperion_ng/hyperion_API.js |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | Require stack: |
hyperion_ng.0 | 2021-01-31 22:09:22.709 | error | (29884) Error: Cannot find module 'type-of-is' |
hyperion_ng.0 | 2021-01-31 22:09:22.702 | error | - /opt/iobroker/node_modules/iobroker.hyperion_ng/main.js |
hyperion_ng.0 | 2021-01-31 22:09:22.702 | error | - /opt/iobroker/node_modules/iobroker.hyperion_ng/hyperion_API.js |
hyperion_ng.0 | 2021-01-31 22:09:22.702 | error | Require stack: |
hyperion_ng.0 | 2021-01-31 22:09:22.702 | error | (29884) unhandled promise rejection: Cannot find module 'type |
Der stürzt ab, weil er eine zusätzliche Biblothek nicht findet, welche ich nutze um zu bestimmen, welches Adjustment geändert wurde. Ich schaue heute abend mal, ob ich die Abhängigkeiten in meinem Adapter richtig definiert habe.
Das sind ja super Neuigkeiten. Also mein Iobroker läuft sauber und auch Hyperion läuft super. Habe in diesem Bezug mehrere Hyperion 9 PRs probiert, sowie die Hauptversion. Bei allesamt stürzt der Hyperion Adapter ab. Aber eben nur wenn ich die Helligkeit verstellen will. Und eben diese Helligkeit wo im Adapter hinterlegt ist, ist die Grundhelligkeit meiner Instanz. Ich dachte mir das es noch einen anderen Datenpunkt geben muss. Die Grundhelligkeit will ich ja nicht dauerhaft ändern. Wenn ich ein Blau an Hyperion sende möchte ich wie es auch in der Hyperion App möglich ist stufenlos die Helligkeit der jeweiligen Farbe ändern. Vielleicht müssen noch Abhängigkeiten mit dem Adapter zusammen installiert werden...
Habe jetzt die Abhängigkeiten hoffentlich richtig gemacht. Mir ist das nicht aufgefallen, weil ich einen Adapter laufen habe, welcher diese installiert hat. Bei npm steht die Bibliothek jetzt als Abhängigkeit drin.
Im schlimmsten Fall Adapter ganz löschen und neu installieren.
So weit klappt es mit dem verstellen der Helligkeit sehr gut. Nur leider überschreibt er die Helligkeit der Instanz dauerhaft. Wenn ich jetzt im Adapter eine statische Farbe in der Helligkeit von 85 auf 20 % verstelle und anschließend ausschalte und meinet wegen den USB Grabber zum Grabben des Fire TV 4 Sticks aktiviere, hat mein TV Bild auch 20%. Dies ist natürlich nicht beabsichtigt, denn meine TV Wiedergabe habe ich eigentlich im Hyperion Web Interface auf 85% gestellt siehe Bild. Wenn ich im Adapter von 85 auf 20% ändere werden LEDs dunkler, aber der Wert 85% ändert sich im WebIf nicht und bleibt gleich. Muss der Adapter nach dem clear von einer Farbe dem Hyperion eine default Helligkeit von 85% wieder zurückgeben oder bzw. die 85% gar nicht überschreiben? Das dann wie wenn ich nur was ausführe aber nicht überschreibe.
Oder wird die Helligkeit einer statischen Farbe nur über einen RGB Wert geschickt. Zum Beispiel ein Dunkelblau (dunklere LEDs) wie Hellblau (hellere LEDs). Damit hätte ja das Adjustment der Instanz nichts mehr viel zu tun.
Wie in dem Screenshot zu sehen ist unten ein Helligkeitsregler in der Hyperion App. Mit dem kann ich die Helligkeit einer Farbe ändern. Diese Helligkeit überschreibt nicht meine 85% der Instanz. Vielleicht weißt du was ich meine. Wenn du willst können wir auch über WhatsApp eine Conversation führen. Vielleicht macht es das ein wenig leichter...
Ja ich glaube du hast recht.
Ich habe für die Programmierung des Adapters mir darüber keine Gedanken gemacht, und erstmal stumpf die API von Hyperion abgearbeitet.
Für mich sieht es auch so aus, als würde die APP über die Helligkeit die RGB Werte ändern. Wenn man das kurz bei einem Farbrad testet, dann ergibt sich der Farbton aus dem Verhältnis von RGB und die Helligkeit ist der absolut value zwischen 0 und 255.
Dann sollte das obere Symbol die Sättigung sein, welche nach kurzer Recherche ein bissle anders berechnet wird.
Wenn das Prinzip so funktioniert, sollte es im Prinzip nicht die "reale" Helligkeit beeinflussen, sondern nur die gefühlte.
Das könnte man im Prinzip in den Adapter implementieren. Das dauert nur, weil ich aktuell wenig Zeit habe.
Ich habe das alles nicht ausprobiert, weil den adapter nur dafür verwende das Ambilight an und auszuschalten. Es scheinen aber sehr viele Leute Hyperion zur allgemeinen Ansteuerung von Lampen zu verwenden.
Gut das du weißt was ich meine. Zumindest hast du den Adapter schon mal up to Date was Abstürze anbelangt. Diese Helligkeit über den RGB Wert wäre eine Tolle Sache. So kann ich über einen Schieberegler oder Farbrad die Farben je nach Geschmack Smooth machen. Wäre toll wenn das kurzfristig möglich wäre. Gerne würde ich den Adapter im Hyperion Forum publizieren. Ich bin doch schon einige Jahre aktives Mitglied und einer der wenigen die Hyperion und WLed aktiv in ioBroker nutze.
Und wenn man die Helligkeit via Schieberegler in der App bedient wird kein Effekt geändert und auch keine Instanz-Helligkeit, sondern nur die Farbhelligkeit.
Ich frag mal kurz einer der Devs im Forum ob das Zitat: Wenn man das kurz bei einem Farbrad testet, dann ergibt sich der Farbton aus dem Verhältnis von RGB und die Helligkeit ist der absolut value zwischen 0 und 255.
so stimmt.
Hier die Antwort von @Paulchen-Panther vom Hyperion Forum.
Antwort: Wie die App das berechnet kann ich dir nicht sagen. Die ist closed source. Es wird ein color command an Hyperion gesendet. Also RGB Werte. Korrekt: Der Schieberegler darüber ist Sättigung.
Du kannst den Adapter gerne publizieren.
Die Frage an sich ist, wie man diese Funktionalität in dem Adapter umsetzt, zwecks Datenpunkte.
Folgender Vorschlag:
Unter Control gibt es zwei zusätzliche Datenpunkte. Einmal Farbe Helligkeit und Sättigung. Wenn eine Farbe über RGB gesetzt wird, werden diese Werte berechnet und aktualisiert.
Der Wert bei setColorRGB wird zukünftig nicht mehr resettet, sondern bleibt stehen.
Wenn die Helligkeit oder die Sättigung geändert wird, werden die RGB Werte aktualisiert, aber erstmal nicht nach Hyperion geschickt, um das ganze zu entprellen. Sondern, durch auslesen und neu setzen der RGB Werte die Übertragung an Hyperion ausgelöst.
Dabei wird noch nicht berücksichtigt, wenn die Instanz, welche Farbe da eingestellt ist. Dies kann man aber nachpflegen.
Das wäre in Summe recht schnell umzusetzen. Die Frage ist, ob das für den Nutzer brauchbar ist. Kann das nicht sagen, weil ich es nicht nutze.
Ich glaube in der App wird der HSL Farbraum verwendet. Die Variante kann man auch fahren.
Farbwert H, Sättigung S, Lightness L
OK und wie kann ich die HSL Variante nutzen? Musst du hierfür die Datenpunkte von RGB nach HSL ändern? 2 zusätzliche Datenpunkte würden auch helfen. Je nach dem was du für sinnvoll hältst.
Bin gleich fertig. Funktioniert schon, muss noch die Doku schreiben.
Die HSL Datenpunkte kommen hinzu. Wenn diese geändert werden, wird setColorRGB überschrieben und dann es an Hyperion geschickt. War recht simple.
Online
Werde es nachher testen. Danke für die schnelle Entwicklung.
Also meine ersten Tests per Direkteingabe im Adapter waren positiv. 👍
Weitere Infos erhaltet ihr hier https://www.hyperion-project.org/threads/hyperion-ng-in-iobroker-einbinden-und-steuern.10498/.
Hallo,
gerne ich will ich meine Erfahrungen mitteilen und so bei der Entwicklung des Adapters unterstützen.
Meine Platform:
Hyperion (NG) 9.0 Plattform: Raspbian OS RAM: 1.8 GB Node.js: v14.15.1 NPM: 6.14.8 Kernel: Linux 5.4.83-v7l+ PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian
Leider schmiert mir der Adapter in ioBroker ab sobald ich unter Adjustment die Helligkeit verstelle. Bitte um Hilfe!
Gruß, Markus