Neues Modul für Hyperion Server

Begonnen von Bootscreen, 23 Februar 2016, 23:53:55

Vorheriges Thema - Nächstes Thema

P.A.Trick

Zitat von: Bootscreen am 06 März 2016, 20:13:32
hmmm.... mach mal ein "set hyperion effect_g Knight_rider; list hyperion" und zeig das Resultat. Ich schau dann nochmal, kann aber nich verssrprechen das es noch heute abend was wird.

Internals:
   DEF        192.168.1.43 19444
   IP         192.168.1.43
   NAME       hyperion
   NR         20
   PORT       19444
   STATE      started infinity
   TYPE       Hyperion
   Readings:
     2016-03-06 20:51:20   last_command    {"effect":{"name":"Knight rider"},"command":"effect","priority":5000}
     2016-03-06 20:51:20   last_duration   0
     2016-03-06 20:51:20   last_priority   500
     2016-03-06 20:51:20   last_result     {"success":true}
     2016-03-06 20:51:20   last_type       effect
     2016-03-06 20:51:20   last_value      Knight rider
     2016-03-06 20:51:20   state           started infinity
Attributes:
   effects    Knight rider,Blue mood blobs,Cold mood blobs,Full color mood blobs,Green mood blobs,Red mood blobs,Warm mood blobs,Police Lights Single,Police Lights Solid,Rainbow mood,Rainbow swirl fast,Rainbow swirl,Snake,Strobe blue,Strobe Raspbmc,Strobe white,test,UDP listener,X-Mas
   room       Hyperion
   verbose    5
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Bootscreen

Hab den Fehler gefunden, das Problem war das die Duration von 0 an die Priority angehängt wurde. Hab ne neue Version hochgeladen, nun sollte es gehen.

Teste bitte nochmal und gib dann Rückmeldung.
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

P.A.Trick

Mache ich aber heute Abend nicht mehr...mache ich morgen und schon einmal vielen lieben Dank für deine Hilfe!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

P.A.Trick

Perfekt es klappt nun alles! Super Danke für deine Mühe und die tolle Arbeit!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

lising

Hallo,
das Modul läuft bei mir auf Anhieb einwandfrei - vielen Dank!

Kuzl

Hallo,

könntest du noch eine Möglichkeit einbauen, das Gain - also die Helligkeit - über eine Dauer zu setzen?
Ich würde nämlich gerne wenn ich einen Film schaue das Ambilight etwas "dezenter" haben.
Ansonsten könntest du das Modul sogar zuminderst unter contrib einchecken.

Viele Grüße,
Kuzl

pjakobs

ich bin immer wieder beeindruckt, da suchst Du eine Möglichkeit, irgendein Ding zu steuern und - natürlich hat schon jemand ein FHEM Modul geschrieben. Großartig!

Was mir auffällt: es gibt die Möglichkeit, hyperion abzuschalten, aber einschalten hab ich nicht gefunden - also in der Form dass danach dann wieder die TV Edgelight Funktion (bei mir via V4L grabber) aktiv ist - hab ich da was übersehen?

pj

pjakobs

kurzes Update:
Ich habe das hyperion Modul als "ambilight" in fhem eingebunden (der Name ist komplett zufällig gewählt, jede Ähnlichkeit mit einem kommerziellen Produkt ist absolut zufällig)
Um nun das ganze von meiner Hausautomations-Zentrale aus schalten zu können habe ich folgendes in meine TabletUI Konfiguration eingebunden:

<header>Ambilight</header>
         <div data-type="button"
             data-device="ambilight"
             data-get="last_type"
             data-get-on="((?!off))"
             data-get-off="off"
             data-set-on="effect Cinema_brighten_lights 1000 850"
             data-set-off="off"
             data-icon-off="fa-volume-off"
             data-icon-on="fa-volume-up"
             data-color="#505050">
         </div>


Die Idee:

  • ein Schalter, der das Ambilight an und aus schaltet (funktioniert)
  • die Farbe des Schalters sollte den Zustand reflektieren (funktioniert nicht, wenn andere Quellen das Ambilight an und aus schalten)
  • wenn nach dem Einschalten eine Videoquelle (v4l, Priorität 800) anliegt, soll diese nach der Animation wiedergegeben werden (funktioniert imho nicht)

"last_type" lässt sich leider nicht mit
get ambilight last_type
sondern nur mit
{ReadingsVal("ambilight", "last_type", "")}
auslesen - ich bin mir da nie sicher, wann in fhem was funktioniert, und ob das vielleicht irgendwie im Modul gelöst werden muss.
Liegt es möglicherweise daran, dass TabletUI das data-get nicht sieht?

und die wirklich wichtige Frage: das setting effect hat einen Timing Parameter,
a) sind das Milisekunden wie in hyperion?
b) was passiert danach? wird der Prozess mit der nächst niedrigeren Priorität aktiviert? Sollte ich also 750 statt 850 angeben?

Grüße

pj

DeeSPe

#23
Hallo Bootscreen und Gemeinschaft,

erst mal recht herzlichen Dank für die Umsetzung dieses Moduls.
Bin heute durch Zufall drüber gestolpert. Hatte stattdessen bisher noch einen Dummy und die entsprechende Funktion in der 99_MyUtils.pm um das über Hyperion-Remote zu steuern. Das lief soweit auch ganz gut. Das ganze über den JSON Server zu steuern gefällt mir allerdings wesentlich besser.
Leider bin ich mit dem Modul noch nicht 100%ig zufrieden, vielleicht ist es ja möglich an der ein oder anderen Stelle noch Verbesserungen mit einfliessen zu lassen. Mit dem Modulcoden kenne ich mich leider nicht aus, so dass ich nur mein Feedback und Wünsche/Erwartungen hervorbringen kann.

Zum einen mal meine Wünsche/Erwartungen:
Meines Erachtens sollte sich das Modul einigermaßen standardkonform verhalten, dass heißt zum einen sollten sich die Farben über entsprechende set Kommandos setzen lassen. Z.B.: "set Hyperion rgb FF0000", statt "set Hyperion color FF0000".
Dann sollte auch "state" den wirklich aktuellen Status widerspiegeln, bei mir steht da immer nur "started infinity". Ich habe Hyperion in ein "structure room" eingebunden, und somit ist der Status von dem structure immer "undefinded", da im "state" nicht "off" steht, obwohl "off" gesetzt wurde. Ich prüfe aber eben für einen Bewegungsmelder genau dieses structure und erhalte falsche Ergebnisse.
Wenn ich dann "set Hyperion rgb FF0000" absetzte erwarte ich auch dass das in "state" wiederzufinden ist (also "state rgb FF0000"), wird z.B. für LightScene benötigt.
Im Idealfall gäbe es auch noch entsprechende Readings für "rgb" und "effect" statt oder zusätzlich zu "last_value".

Zur Priorität würde ich sagen dass die "state" Geschichte auf jeden Fall Einzug halten sollte, eben damit man mit diesem vernünftig arbeiten kann. Alles andere wäre "nice to have".

Stelle mich gerne zum Testen zur Verfügung und gebe auch gern weiteres Feedback.

Vielen Dank im Voraus.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

dev0

Zitat von: DeeSPe am 05 Juni 2016, 13:23:12
Zum einen mal meine Wünsche/Erwartungen:
...
Meines Erachtens sollte sich das Modul einigermaßen standardkonform verhalten
...
Dann sollte auch "state" den wirklich aktuellen Status widerspiegeln
...
Wenn ich dann "set Hyperion rgb FF0000" absetzte erwarte ich auch dass
...
Zur Priorität würde ich sagen dass die "state" Geschichte auf jeden Fall
...
damit man mit diesem vernünftig arbeiten kann.

So wie sich Dein Beitrag liest, ist Deine Erwartungshaltung einfach nur respektlos gegenüber dem Autor.
Wie kommst Du darauf, dass "rgb" standardkonform ist und "color" nicht?

Spezialtrick

Es passt zwar nicht ganz zum Modul selbst, aber ich frage trotzdem mal:

Hat jemand von euch geschafft, einen automatischen Quellenwechsel (ggf. über Fhem) für Hyperion zu realisieren, also einen automatischen Wechsel der Config, je nachdem, ob ein Signal per HDMI, Intern oder per Kodi zugespielt wird?
FHEM - Debmatic - Zigbee2MQTT - Homekit

DeeSPe

#26
Zitat von: dev0 am 06 Juni 2016, 06:55:54
So wie sich Dein Beitrag liest, ist Deine Erwartungshaltung einfach nur respektlos gegenüber dem Autor.
Wie kommst Du darauf, dass "rgb" standardkonform ist und "color" nicht?

Das ist überhaupt nicht respektlos.

Ich habe:

  • begrüßt,
  • mich beim Modulautor bedankt,
  • Wünsche/Erwartungen geäußert,
  • mich zum Testen und für weiteres Feedback angeboten und
  • mich ein weiteres Mal im Voraus bedankt!

Ich denke ich habe mich sehr freundlich verhalten und nur auf etwaige Missstände hingewiesen.
Meines Erachtens ist das hier unter anderem ein Developer Forum (Codeschnipsel) und da sollte konstruktive Kritik erlaubt, nein sogar erwünscht sein.
Entschuldige bitte wenn ich Deiner Meinung nach dem Modulautor nicht genug lobgepriesen habe.

Nun aber zum Eigentlichen:
Viele andere Module bauen eben auf diese Standardkonformität auf. Ich habe etliche Lichter in FHEM eingebunden und alle lassen sich über "set <Name> rgb <Hex>" steuern, was hier leider nicht funktioniert. Somit ist das Modul innerhalb eines"structure" oder einer "LightScene" im Moment nicht wirklich zu gebrauchen.

Es wäre toll wenn diese kleinen Änderungen in das Modul einfließen würden.

Vielen Dank im Voraus.

Gruß
Dan

P.S. Das "state" reading ist u.A. auch für die Einbindung in HomKit wichtig.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Zitat von: Spezialtrick am 06 Juni 2016, 10:33:56
Es passt zwar nicht ganz zum Modul selbst, aber ich frage trotzdem mal:

Hat jemand von euch geschafft, einen automatischen Quellenwechsel (ggf. über Fhem) für Hyperion zu realisieren, also einen automatischen Wechsel der Config, je nachdem, ob ein Signal per HDMI, Intern oder per Kodi zugespielt wird?

Das sollte doch gar nicht so schwierig sein.
Einfach einen dummy erstellen und im entsprechenden notify oder doif einen Shell-Kommando absetzen oder Shell-Skript aufrufen welches Hyperion mit der entsprechenden Konfig neu lädt.
Natürlich muss der User fhem auch die entsprechenden Berechtigungen im Linux System bekommen um das Skript oder den Befehl auszuführen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Spezialtrick

Die Schwierigkeit bei mir ist, dass Fhem auf einem Cubietruck läuft und Kodi mit Hyperion auf einem Pi.

Ich habe es aber inzwischen hinbekommen, den Pi über den Cubietruck Remote per ssh zu steuern.

Hast du zufällig entsprechenden Shell-Skripte, um Hyperion mit einer anderen Config zu starten?
FHEM - Debmatic - Zigbee2MQTT - Homekit

DeeSPe

Zitat von: Spezialtrick am 07 Juni 2016, 16:39:10
Die Schwierigkeit bei mir ist, dass Fhem auf einem Cubietruck läuft und Kodi mit Hyperion auf einem Pi.

Ich habe es aber inzwischen hinbekommen, den Pi über den Cubietruck Remote per ssh zu steuern.

Hast du zufällig entsprechenden Shell-Skripte, um Hyperion mit einer anderen Config zu starten?

Also darüber solltest Du doch gestolpert sein bei der Hyperion Einrichtung.

Mit folgendem Code in FHEM:
{ sytem ("sudo killall hyperiond;; sleep 1;; sudo /storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json") }
kannst Du Hyperion stoppen und mit bestimmter config wieder neu starten (Pfade müssen natürlich angepasst werden), so kannst Du einfach jede beliebige andere config laden. In der Datei /etc/sudoers muss das Skript hyperiond.sh für den User fhem erlaubt werden, sonst hat der User fhem keine Rechte das Skript mit sudo auszuführen. So sollte es zumindest theoretisch funktionieren. Hyperion habe ich auf diese Weise bei mir nicht eingebunden da bei mir kein Kodi läuft, sondern alles über extern vom Grabber kommt.

Ich hoffe das hilft Dir weiter, eine fertige Lösung werde ich nicht präsentieren.

Viel Spaß beim Basteln.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe