JSON: push statt pull

  • Hi deespe,
    Bzgl. Status, quellenumschaltung, schau dir mal das webinterface von hyperion.ng an. Dann bekommst ne vorstellung was in zukunft gehen wird. Du kommst via json an so ziemlich alles ran. Z.b. auch an wertebereiche von parameter. (Hint: schau dir mal die schema files an)
    Wie schon erwähnt wurde, ist die anpassung deines moduls an die ng version noch nicht ratsam.


    Thx für deine bemühungen um hyperion+fhem


    Bzgl aktuellem problem ist das aus dev sicht gerade etwas unpraktisch, da in ng der starteffekt, die statusausgabe via json und die prioritäten geändert wurden. Wahrscheinlich wirds in .ng besser laufen. Meine Motivation/Ressourcen im alten code zu buddeln ist eher gering. Ich schau mir das thema mal in .ng an ....
    Lg, rp

  • Ich habe es gerade so probiert:
    {"effect":{"name":"Knight rider","args":{"speed":2.0}},"command":"effect","priority":0}


    Es kam auch {"success":true} aber der Effekt wurde nicht eingeschaltet.


    Gruß
    Dan


    Muss mich revidieren! Es klappt doch wie gewünscht.
    Die aktive Effekterkennung klappt dann natürlich nicht mehr so wie vorher, darum war der aktuelle Status falsch in meinem Modul.
    Habe das nun entsprechend umgebaut/erweitert und nun funktioniert es auch.
    Nun kann man in FHEM beim Einstellen eines Effekts als letzten Parameter noch die Effekt Args als JSON String mit übergeben und der Effekt wird entsprechend geändert.
    Toll, bin begeistert!



    Thx für deine bemühungen um hyperion+fhem


    Bzgl aktuellem problem ist das aus dev sicht gerade etwas unpraktisch, da in ng der starteffekt, die statusausgabe via json und die prioritäten geändert wurden. Wahrscheinlich wirds in .ng besser laufen. Meine Motivation/Ressourcen im alten code zu buddeln ist eher gering. Ich schau mir das thema mal in .ng an ....
    Lg, rp


    Bitte gerne für die Bemühungen! :)


    Bezüglich "Motivation/Ressourcen im alten code zu buddeln", das habe ich mir schon gedacht.
    Schade, da es in V1.03.1 noch zu funktionieren schien.


    Ich schaue mir demnächst mal .ng an.


    Da es leider noch keine Roadmap für .ng muss ich mir nun irgendetwas mit dem falsch erkannten Status in V1.03.2 ausdenken wie ich dass abfangen könnte. Ohne manuellen Setzen eines Attributes vom User wird es aber nicht gehen. Eine konkrete Idee habe ich leider noch nicht, da sich der Zustand je nach geladener Konfig Datei ändern kann. :(


    Gruß
    Dan

  • Ich schau mir heut abend mal nen diff zwischen .1 und .2 an, wenns was aufälliges gibt machen wir nen fix. Ich werd dann auch schauen ob in ng das besser funzt.


    Damit wir nich karrierte elefanten suchen, kannst du mir genau die schritte zur reproduktion geben? Am besten via hyperion-remote


    Wegen push: ich wär ja für nen kleines python script welches auf localhost hyperion befragt und bei änderung dieses an gewünschte targets pushed. Netzwerk verkehr auf localhost ist nicht so tragisch.


    Wir könnten das script zu hyperion packen ....


  • Im Prinzip gibt es keine wirklichen Schritte zur Reproduktion.
    Ich habe den V4L2 Grabber im Einsatz mit Starteffekt. Nach dem Starteffekt geht Hyperion bei mir aus, müsste also "activeLedColor":[0,0,0] sein. Ist aber "activeLedColor":[]. Somit für mich nicht von einem clearall zu unterscheiden.
    Bei einem anderen User mit Kodi Grabber geht Hyperion nach dem Start direkt auf clearall, activeLedColor und priority sehen identisch zu meinen Werten aus obwohl es ein anderer Status ist.
    Ich hoffe ich konnte das verständlich erklären.


    Heute habe ich noch weiter am FHEM Modul gefeilt. In der aktuellen Testversion ist es möglich Custom-Effects als JSON-String in einem Attribut anzulegen. Diese Effekte erscheinen dann ganz normal im Dropdown für die Effekte und können somit ganz leicht aktiviert werden.


    Gruß
    Dan


  • Wegen push: ich wär ja für nen kleines python script welches auf localhost hyperion befragt und bei änderung dieses an gewünschte targets pushed. Netzwerk verkehr auf localhost ist nicht so tragisch.


    Wir könnten das script zu hyperion packen ....


    Das wäre ja der blanke Wahnsinn!!!!


    Gruß
    Dan

  • Ja hab jetzt auch gesehen, das da nur mein commit bzgl smoothing drin ist. Daher wirds da keinen fix geben


    In .ng hab ich den ganzen startcode umgebaut, daher wärs gut wenn du dir .ng anschaust ....


    Hier noch ein paar infos zur prio logik:


    Im hyperion ist es so das wenn nichts aktiv ist automatisch die farbe auf schwarz, also gesetzt wird.
    Von der logic sollte also [] nur kommen wenn ein effekt oder grabber aktiv ist.
    Beim v4l gibts noch die besonderheit, das sich dieser deaktivieren kann (wenn z.b. der usb grabber kein input hat).
    Wenn v4l inactive wird, dann wird die nächste prio angezeigt, z.b. ne farbe, nen effekt, ein anderer grabber - oder wenn das alles nich is, dann color schwarz.


  • Im hyperion ist es so das wenn nichts aktiv ist automatisch die farbe auf schwarz, also gesetzt wird.
    Von der logic sollte also [] nur kommen wenn ein effekt oder grabber aktiv ist.


    Wenn dem so wäre, gäbe es meinerseits nichts zu meckern! :(


    Wie oben beschrieben schaltet mein Hyperion nach dem Starteffekt aus/auf schwarz. activeLedColor bleibt aber leer und ist somit nicht vom clearall zu unterscheiden. Setze ich manuell danach auf aus/schwarz, wird activeLedColor richtig angezeigt. Nur nach dem Neustart von Hyperion ist der Status im JSON aber eben teilweise falsch.


    Gruß
    Dan

  • Das setzen einer Farbe (0,0,0) und "off" sind 2 unterschiedliche Dinge.
    Du setzt eine Farbe und damit ist Hyperion nicht "off"
    Hyperion hat praktisch keinen "off" Zustand den du wirklich filtern kannst und das ist dein Problem.


    Wenn wir aber gerade bei Thema sind, möchte ich nochmal etwas einwerfen wegen .ng
    auch an @redPanther @Paulchen-Panther


    Beibehalten von activeEffect und activeColor?
    Ich weiß gerade nicht einmal, ob das mit der source selection noch so super funktioniert, zumal man den activeEffect und activeColor nicht wirklich irgendwo zuweißen kann (sofern er sich nicht ändert mit der gewählten source)
    Oder ob man gleich beide Informationen an dieser Stelle einstampft (color und effect) und dafür die Informationen in den priority weiter ausbaut (lesbar ohne regexp auf owner oder ähnliches). Bei der Gelegenheit könnte man gleich nen origin einbauen... um es quasi zu vollenden.


    Erweiterung/Änderung der priority
    origin : AndroidApp
    owner : User
    type : color
    value : #h55df9f, duration
    priority : 200
    duration : 5000


    origin : Webinterface
    owner : User
    type : effect
    value : effect name, effect values duration
    priority : 250
    duration : 0


    origin : System
    owner : System
    type : dispmanx
    value : null //oder nicht vorhanden
    priority : 800
    duration : 0 //oder nicht vorhanden



    origin : HyperionScreenCap
    owner : User
    type : proto@192.168.0.20
    value : null // oder nicht vorhanden
    priority : 900
    duration :


    Dann kann man da schön durch loopen und alles abgreifen was interessant ist. ein if type=color/effect würde einen weiterleiten zu value.
    PS. Die duration kann man dann gleich aus der Liste nehmen und sicherstellen, dass sie in "value" verfügbar ist. Denn kein grabber wird je eine duration setzen bzw da werden teilweise Werte ausgegeben, woher auch immer.
    // Ja, das fügt nochmal hier und da code hinzu der nicht 100%ig nötig ist, dafür haben wir dann eine Schnittstelle mit ordentlicher Ausgabe.

  • Das setzen einer Farbe (0,0,0) und "off" sind 2 unterschiedliche Dinge.
    Du setzt eine Farbe und damit ist Hyperion nicht "off"
    Hyperion hat praktisch keinen "off" Zustand den du wirklich filtern kannst und das ist dein Problem.


    Ich denke ich habe mich da falsch ausgedrückt.
    Mit off/aus meine ich natürlich Farbe schwarz.
    Welchen Zustand hat denn Hyperion aus Deiner Sicht nachdem der Starteffekt durchgelaufen ist und es dann alle LEDs ausschaltet? M.E. sollte das in ein activeLedColor:[0,0,0] resultieren, oder? Welche Möglichkeit hätte ich sonst den realen Status zu ermitteln?


    Logisch war es mir bisher so:
    aktiver Effekt = activeEffects:[.............]
    aktive Farbe = activeLedColor:[...,...,...]
    aus/schwarz = activeLedColor:[0,0,0]
    clearall = kein activeEffects und kein activeLedColor


    Ich möchte auch nicht ganz bezweifeln dass sich mir Eure Logik gezüglich der verschiedenen Status bisher nicht zu 100% erschlossen hat. o_O


    Gruß
    Dan

    • Offizieller Beitrag

    Jetzt muss ich mich aber auch mal dazu gesellen. ;)
    Dein Problem ist ganz einfach zu lösen. Die JSON RPC übermittelt ja die "activeLEDColor" info.
    In dieser steht geschrieben (Screenshot):



    Wenn du diese "wenn-dann Anweisung" entfernst, sollte dein Problem gelöst sein. :biggrin:
    https://github.com/hyperion-pr…ClientConnection.cpp#L555

  • Jetzt muss ich mich aber auch mal dazu gesellen. ;)
    Dein Problem ist ganz einfach zu lösen. Die JSON RPC übermittelt ja die "activeLEDColor" info.
    In dieser steht geschrieben (Screenshot):



    Wenn du diese "wenn-dann Anweisung" entfernst, sollte dein Problem gelöst sein. :biggrin:
    https://github.com/hyperion-pr…ClientConnection.cpp#L555


    Klingt logisch. Vom Datum her würde das auch genau zur V1.03.2 passen!
    Leider bin ich nicht in der Lage (und ich denke die User im FHEM Forum auch nur bedingt) das selbst zu fixen und neu zu kompilieren.


    Gruß
    Dan

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!