Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Hyperion Adapter

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Hyperion Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • ruhigundrelaxed
      ruhigundrelaxed last edited by

      Wieso geht das nicht? Einfach eine 2. Hyprioninstanz starten und zu dieser forwarden.

      In meiner aktuellen Konfiguration laufen aktuell 3 Hyperioninstanzen bei denen die ws2812b via Arduino und usb laufen. (jeweils [12x12]144 leds) eine Hyperioninstanz die über einen esp8266 seine Daten bekommt (meine iolykta, gibts n thread hier im forum zu) mit [12x12]144 leds. Eine Instanz mit 508 leds, die über einen teensy gefüttert wird, eine instanz die 6 rgb hues antreibt. Testweise hab ich auch mal einen Sphero als Leuchtmittel eingebunden. (da ist dann aber beim Probieren der Akku gestorben) ausserdem habe ich noch ca. 250 leds an meinem Fernseher /htpc hängen, dessen hyperiond dann ausserdem zu den anderen instanzen forwarded. Läuft weitestgehend ruckelfrei und synchron über alle instanzen. (bis auf die hues) bunt gemischt. 4x arduino via rs232 @500kps, teensy via rs232 @20mps, iolykta (esp8266) via wifi udp, hues über wifi tcp->bridge.

      Also für deinen "usecase":

      Du legst 2 Konfgurations Files an.

      Der 1. File beinhaltet deine ws280x Konfiguration. (Mit LED Layout)

      Die Ports sind dann (default): 19444 und 19445 für json bzw. proto

      Der 2. File beinhaltet deine "udpraw" Konfiguration. Dort legst du im Layout für jede deiner Yeelight LEDs eine LED an.

      Die Ports sind hier dann (z.B.): 19446 und 19447

      Nun trägst du in File 1 die Ports aus File 2 als forwards ein:

       "forwarder" :
              {
                      "proto": [ "127.0.0.1:19447" ],
                      "json" : [ "127.0.0.1:19446" ]
              },
      
      

      Nun startest du die beiden Instanzen jeweils mit hyperiond /pfad/zum/configfile.conf

      Autostart: mal den passenden systemd service file suchen -> kopieren -> anpassen

      Was noch fehlt, währe der Code um die Hyperion UDP Nachrichten in ioBroker States zu verwandeln. Aber denn könnte ich ja bauen…

      Performanter und imho einfacher umzusetzen, dann aber jedoch weniger flexibel wäre die Variante, die Hyperion UDP Nachrichten direkt an die Yeelights zu senden. Aber das hat dann nix mehr mit iobroker zu tun...

      Ich habe das mal für 1762 leds (ws2812b) auf nem raspi gemacht, der dann udp daten direkt über den stripe ausgegeben hat. Hier mal meine (noch fehlerhafter) "proof-of-concept" python code:

      `#!/usr/bin/env python3
      """
      Hyperion Proxy
      """
      import itertools
      import socket
      import time
      from neopixel import *
      
      # LED strip configuration:
      LED_COUNT      = 1762      # Number of LED pixels.
      LED_PIN        = 18      # GPIO pin connected to the pixels (18 uses PWM!).
      #LED_PIN        = 10      # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
      LED_FREQ_HZ    = 800000  # LED signal frequency in hertz (usually 800khz)
      LED_DMA        = 10      # DMA channel to use for generating signal (try 10)
      LED_BRIGHTNESS = 255     # Set to 0 for darkest and 255 for brightest
      LED_INVERT     = False   # True to invert the signal (when using NPN transistor level shift)
      LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
      
      # the buffer for receiving incoming messages
      BUFFER_SIZE = 4096
      
      def receive_next(sock):
          "Repeatedly tries receiving on the given socket until some data comes in."
          print("Waiting to receive data...")
          while True:
              try:
                  return sock.recvfrom(BUFFER_SIZE)
              except socket.timeout:
                  print("No data received yet: retrying.")
                  pass
      
      def receive_and_send_one(sock):
          input_data, addr = receive_next(sock)
          message = input_data
          for i in xrange(0,len(message),3):
             red = ord(message[i])
             green = ord(message[i+1])
             blue = ord(message[i+2])
             print("(" + str(red) + "," + str(green) + "," + str(blue) + ")" )
             strip.setPixelColor(i,Color(red,green,blue))
          strip.show()
      
      def start():
          "Runs the server."
          sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
          sock.settimeout(5) # seconds
          sock.bind(("0.0.0.0",33333))
          print("Listening...")
          try:
              for i in itertools.count(1):
                  receive_and_send_one(sock)
          finally:
              print("Shutting down.")
              sock.close()
      
      if __name__ == "__main__":
          strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
          strip.begin()
          start()` 
      
      Gruß[/i]
      
      1 Reply Last reply Reply Quote 0
      • M
        malsbier last edited by

        Hallo,

        ich bekomme den Adapter nicht zum laufen, habe ich alles richtig gemacht? Anbei die Screenshots

        ioBroker 3.4.7

        Hyperion Adapter 0.0.9

        Cloud connection 2.6.2

        Der Cloud Adapter funtioniert mit anderen Geräten einwandfrei.

        Ich habe im Cloudadapter ein Smart Gerät angelegt und dafür das Hyperion Object LightSwitch benutzt und als Fernseher benannt, Alexa findet dieses auch, aber sie sagt, Fernseher unterstützt das nicht.

        Wenn ich als Object ein Effect wähle, funtioniert es, daher dachte ich, ich muss als role ein Button definieren, doch da kommt das gleiche heraus, bis auf, dass wenn ich den Button im ioBroker anklicke, meine LEDs weiß leuchten und mit clear ( nicht clear all !!!) gehen diese wieder aus.

        Kann mir jemand bitte weiterhelfen, danke. 😄
        2493_instanzen.png
        2493_instanzen2.png
        2493_unbenannt1.png

        1 Reply Last reply Reply Quote 0
        • M
          mrcutter last edited by

          Hallo maisbier,

          was ist denn dein Ziel? Was möchtest du mit dem Sprachbefehl aktivieren/erreichen?

          Ich bin zwar frischer Anfänger hier auf dem Board und irgendwie auch in dem Thema, habe mich aber die letzten Tage mit dem Adapter ein bisschen näher beschäftigt…nutzerseitig.

          Herzliche Grüße

          Cutter

          1 Reply Last reply Reply Quote 0
          • M
            malsbier last edited by

            Hey, sorry für die späte Antwort, habe schon aufgegeben.

            Ich habe momentan noch die HAbridge laufen, diese simuliert eine HUE bridge, dort wird auf den Sprachbefehl

            "Alexa, schalte TV Grün an" das ein Script ausgelöst, das hyperion sagt, mach die LEDs grün, nur brauch man so für jede Farbe ein eigenes Script.

            Der Hyperion Adapter soll das gleiche machen, nur einfacher und auch dimmbar, Effekte wären auch schön.

            Läuft es bei dir?

            Ich habe auch die neueste Version des Adapters ausprobiert, ohne Erfolg.

            1 Reply Last reply Reply Quote 0
            • M
              moeff last edited by

              @ruhigundrelaxed:

              Wenn daran Interesse besteht, dann bitte ich darum mal eine "Wunschliste" zu erstellen. `

              Hi,

              ist das noch aktuell? Danke erst einmal für deinen Adapter zum Schreiben auf den hyperion. Ich hätte riesiges Interesse auch Werte zu lesen, bzw ab zugreifen. Um Lampen mit einen bestehenden hyperion Ambilight zu steuern.

              Wunschvorstellung. Definition von welcher LED bis zu welcher LED rechts/links/oben/unten läuft, eventuell auch abgestufter. Aber für den Anfang reicht sicher die 4er Unterteilung. Hier einen Mischwert erzeugen und im iobroker Adapter Hexadezimal (#FF0000) zu schreiben. Danach kann man per Script Hues/Yeelights/whatever mit dem Wert betanken. Wichtig wäre hier sicher auch ne Timing-Einstellung um die Lampen nicht zu überfordern.

              edit:

              Was mir noch einfällt. Ich habe immer wieder bei keinem Eingangssignal, den bekannten "Farbverlauf", hier würde mich interessieren ob ich irgendwie automatisieren kann, das bei diesem Bild/Signallosigkeit alle LED's ausgehen?

              Grüße Marco

              1 Reply Last reply Reply Quote 0
              • E
                eMd last edited by

                Hallo,

                bin noch neu, aber ich habe den adapter installiert, läuft einwandfrei!

                Nun leuchtet 10sek lang Knight Rider Effekt wenn jemand anruft ^^

                Vielen Dank dafür!

                1 Reply Last reply Reply Quote 0
                • ruhigundrelaxed
                  ruhigundrelaxed last edited by

                  Wow. Das hier hab ich voll verpasst. Sry. Danke für die PN moeff. Wie kann ich helfen?

                  1 Reply Last reply Reply Quote 0
                  • ruhigundrelaxed
                    ruhigundrelaxed last edited by

                    ok. Hatte den Ansatz bisher mangels Interesse aufgegeben. Ich hab den hyperion-client Adapter hier im Rohbau. Was noch fehlt ist der Part: welches hyperion hyperion light steuert welches iobroker teil. Und wie soll es das tun. Eine config Page oder halt ein config file muss her, wo man dies definiert. Da kann man dann auch ein wenig logik reinpacken. Dies nochmal durch event zu jagen und über js adapter die Umrechnung zu erledigen würde so auch gehen. Förderlich für die Latenz ist das nicht. Erste tests mit 2 hues haben so ca. 2fps mit starkem "jitter" bis zu 1 sek gegeben. (Direkt client Adapter -> setforeignstate im hue adapter, ohne virtuellen state und js adapter) War mir zu langsam…

                    Hab dann mal die hues direkt an hyperion rangeschraubt. War ähnlich lahm. Für mich unbrauchbar. Zigbee scheint hier der limitierende Faktor zu sein.

                    Könnt ihr sowas trotzdem brauchen?

                    @moeff: Der Farbverlauf ist der startup effekt den du in der hyperion config einstellen kannst. Kann das sein, das bei "kein signal" der hyperiond abbügelt? Was meinst du mit: "kein signal"? Oder: Du hast via hyperion adapter einen effekt gesetzt und dein tv (oder was auch immer hyperiond füttert) hat eine höhrere priorität. Sobald dein tv aufhört daten zu liefern, läuft wieder der Effekt. Ein clear all sollte dann dein Problem lösen.

                    @moeff: zu deinem Ansatz die led`s runterzumischen: das gehört in die hyperiond config. Hyperion macht ja genau das. Es bildet dein hochauflösendes Bild auf eine beliebig definierte kleinere Zielauflösung ab. Ein nachträgliches aggregieren der pixel in iobroker ist unnötig.

                    1 Reply Last reply Reply Quote 0
                    • ruhigundrelaxed
                      ruhigundrelaxed last edited by

                      @malsbier

                      Sry, dass ich das verpasst habe. Klar läuft das. Bis auf die tatsache, das immer die Helligkeit auf 100% geht. Dazu ist mir bisher nix kluges eingefallen. Hier mal n Video.: https://youtu.be/SlkrtXXg3Ac

                      1 Reply Last reply Reply Quote 0
                      • M
                        moeff last edited by

                        @ruhigundrelaxed:

                        @moeff: Der Farbverlauf ist der startup effekt den du in der hyperion config einstellen kannst. Kann das sein, das bei "kein signal" der hyperiond abbügelt? Was meinst du mit: "kein signal"? Oder: Du hast via hyperion adapter einen effekt gesetzt und dein tv (oder was auch immer hyperiond füttert) hat eine höhrere priorität. Sobald dein tv aufhört daten zu liefern, läuft wieder der Effekt. Ein clear all sollte dann dein Problem lösen.

                        @moeff: zu deinem Ansatz die leds runterzumischen: das gehört in die hyperiond config. Hyperion macht ja genau das. Es bildet dein hochauflösendes Bild auf eine beliebig definierte kleinere Zielauflösung ab. Ein nachträgliches aggregieren der pixel in iobroker ist unnötig.

                        Hi,

                        danke für die ausführliche Antwort. Mein HDMI Splitter sendet dieses Signal, wenn kein Eingangsignal anliegt. Wenn man irgendwo definieren könnte, wenn "dieses Bild" gesendet wird = LED's aus. Der Starteffekt ist bekannt, aber nicht gemeint 😉

                        Was ich mir für einen hyperion Adpater wünschen würde ist folgendes, Bilder sagen mehr als 1000 Worte:

                        https://www.youtube.com/watch?v=BCIRJhc-JHE

                        bzw hier https://www.youtube.com/watch?v=4bpcFC7AJX0

                        eventuell ist iobroker auch am ende unnötig als "handler". Man könnte sicher auch direkt vom raspi (mit hyperion) die werte an Hue oder Yeelight übergeben. Aber da geht dann wieder zigbee Problematik los, dafür würde ich den iobroker eigentlich guten "handler" für alles nutzen.

                        Grüße Marco

                        1 Reply Last reply Reply Quote 0
                        • ruhigundrelaxed
                          ruhigundrelaxed last edited by

                          Ja, so ähnlich habe ich das auch hinbekommen. Aber sieht auf den Videos fetter aus als in real weil: Es wurden Videos mit langsamen farb und kontrast änderungen gewählt. Das input lag ist somit weniger sichtbar. Aber schau mal genau hin. Sowohl lag, als auch jitter sind vorhanden. Bei starken helligkeits und kontraständerungen (quasi alles was geschnitten wurde), fällt dies aber total auf und nervt. Ausserdem wurde hier hyperion direkt als quelle benuzt. Also ohne iobroker als proxy. Da kommt dann noch der iobroker lag hinzu. Ausserdem können die hues einen command, der ihnen sagt zwischen 2 farben zu faden. Hyperion nutzt das. Der hue adapter auch? Also: Deine Videos stellen ein optimales setup unter optimalen Bedingungen dar. Wir können nur langsamer sein.

                          Edit: Kann man super sehen, wenn man die hues mit den ws2812 vergleicht. Hues hängen teilweise mehr als 1 sek.

                          1 Reply Last reply Reply Quote 0
                          • M
                            malsbier last edited by

                            @ruhigundrelaxed:

                            @malsbier

                            Sry, dass ich das verpasst habe. Klar läuft das. Bis auf die tatsache, das immer die Helligkeit auf 100% geht. Dazu ist mir bisher nix kluges eingefallen. Hier mal n Video.: https://youtu.be/SlkrtXXg3Ac `

                            Hey, danke für die Rückmeldung, meine Frage ist, habe ich im iobroker alles richtig konfiguriert, da es ja leider nicht funktioniert. Siehe Screenshots.

                            Danke

                            1 Reply Last reply Reply Quote 0
                            • ruhigundrelaxed
                              ruhigundrelaxed last edited by

                              Jo. Da stimmt was nicht mit deiner Zuordnung der Funktionen und Räume.

                              Deinem State fehlen die Datenpunkte. So muss es aussehen:

                              298_deko.jpg

                              298_objects.jpg

                              Bitte drann denken, dass da noch der Bug / die Eigenart vorhanden ist, dass die Helligkeit immer auf 100% umgerechnet wird. Du musst also mit 2 Kommandos erstmal Farbe einstellen und dann Helligkeit runter regeln. (Wie im Video.) Also der Farbwinkel (hue) stimmt aber level.dimmer nicht. Ich habe den Fehler noch nicht gefunden. Eigentlich erwarte ich, das die Farben,wenn sie vom cloud adapter kommt die werte für: sat > 0 und lum < 100 erhält. Denn beides, entwerder sat = 0 oder lum = 100 bedeuten für mein Verständniss Weiss. (FFFFF)

                              Ich habe mir extra n Set hues zugelegt um zu lernen wie genau die das machen und warum das bei dem Hue Adapter funktioniert. Bin aber noch nicht dazu gekommen.

                              Gruß

                              1 Reply Last reply Reply Quote 0
                              • ruhigundrelaxed
                                ruhigundrelaxed last edited by

                                > Nun leuchtet 10sek lang Knight Rider Effekt wenn jemand anruft ^^

                                Hatte ich auch mal. Über den Fritzbox Adapter. Hatte da noch n Fehler drinn, dass er den Effekt nicht 10 Sekunden sondern genau so lange wie das Telefonat gedauert hat lief. Das hat dann, da diese Installation meine Küchenarbeitsplatte beleuchtet, so derart für Verstimmung zuhause gesorgt, das ich es ganz sein lassen musste. :?

                                1 Reply Last reply Reply Quote 0
                                • ruhigundrelaxed
                                  ruhigundrelaxed last edited by

                                  Ok. Some news. Ich habe mal den client-adapter wie weiter oben beschrieben mal sowiet weiterentwickelt, dass ich erste Tests fahren konnte.

                                  Zum testen habe ich eine Bestehende Hyperion Konfiguration mit 144 leds ausprobiert. Und siehe da: ioBroker hat ein limit von 200 state changes pro 3 sekunden. Wenn man dieses limit reißt, verhällt sich ioBroker recht eigenartig. (Unsubscribe from all states, except system's, because over 3 seconds the number of events is over 200 (in last second 0))

                                  Aber 144 Leds ist ja auch ein Overkill. Eher realistisch sind da 2 - 3.

                                  Problematischer ist da eher der "jitter" also die variabilität der Latenz.

                                  Leider bin ich heute erst spät zuhause, um diese Spielerei mal in action zu sehen.

                                  Aber ich befürchte, das dies langsam sein wird. Ich werde berichten…
                                  298_hyperion_client.jpg

                                  https://youtu.be/DRvOHgiBOlY

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    moeff last edited by

                                    Hi,

                                    das geht ja schneller als gedacht!

                                    Ich würde mich zum Testen bereitstellen! Wenn du den Adapter per git frei gibst. Wichtig wäre eben noch eine Mischung zu Scripten, LED1-20 = Mischfarbe, LED 21-50, Mischfarbe etc., dass kann man sicher auch selber scripten.

                                    Zum Test kann man ja erstmal mit einer LED arbeiten. Wichtig wäre wirklich zwecks Jitter und Latenz klar zu kommen und vor allem auch natürlich den iobroker nicht zu überlasten.

                                    Grüße Marco

                                    1 Reply Last reply Reply Quote 0
                                    • ruhigundrelaxed
                                      ruhigundrelaxed last edited by

                                      Hab ich ja schon verworfen. Warum soll ich in iobroker mischen, wenn hyprion das viel schneller und besser kann. Dieses Feature würde ich lieber aus dem Adapter raus lassen. Wer es unbedingt braucht, kann sich das ja über den js adapter bauen.

                                      Aber eigentlich ist das nur verschwendete Energie.

                                      Du setzt einen 2. hyperiond mit genau der Anzahl der Lampen auf, für welche du auch einen State setzen willst. Also 2 oder 3 in meinem Beispiel halt 144. In der Config kannst du dann prima Einstellen, auf welchen Bildbereich welcher "State" also im Hyperion jargon welches "light" steuert. All das mischen macht dann hyperiond. Diese Instanz, also dieser 2. hyperion daemon wird dann über deine "zentrale" hyperion instanz gefüttert…. Ich mach das hier mit n paar Hyperions...

                                      298_hyperion.jpg

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        moeff last edited by

                                        jo mal wieder an der falschen Stelle angefangen 😉

                                        1 Reply Last reply Reply Quote 0
                                        • ruhigundrelaxed
                                          ruhigundrelaxed last edited by

                                          Hab ich ja schon verworfen. Warum soll ich in iobroker mischen, wenn hyprion das viel schneller und besser kann. Dieses Feature würde ich lieber aus dem Adapter raus lassen. Wer es unbedingt braucht, kann sich das ja über den js adapter bauen.

                                          Aber eigentlich ist das nur verschwendete Energie.

                                          Du setzt einen 2. hyperiond mit genau der Anzahl der Lampen auf, für welche du auch einen State setzen willst. Also 2 oder 3 in meinem Beispiel halt 144. In der Config kannst du dann prima Einstellen, auf welchen Bildbereich welcher "State" also im Hyperion jargon welches "light" steuert. All das mischen macht dann hyperiond. Diese Instanz, also dieser 2. hyperion daemon wird dann über deine "zentrale" hyperion instanz gefüttert…. Ich mach das hier mit n paar Hyperions...

                                          298_hyperion.jpg
                                          298_ps.jpg
                                          298_hyperion_conf.jpg

                                          Edit:

                                          Das Timing hat nun absolut prio. Mann kann zwar die fps in der hyperion config begrenzen, macht man dort aber einen Fehler dan DOS´ed man iobroker. In der Form aktuell nur zum experimentieren geeignet.

                                          Edit2:

                                          Sry wegen doppelpost. Das Forum hatte sich verschluckt.

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            moeff last edited by

                                            Der hyperion.client ist doch aber ein komplett anderer Adapter als dein hyperion Adapter ? stehe auf dem Schlauch, den willst du nicht veröffentlichen?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            786
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            24
                                            95
                                            16086
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo