FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Bootscreen am 23 Februar 2016, 23:53:55

Titel: Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 23 Februar 2016, 23:53:55
Moin moin,

da ich in den letzten Tagen mein Ambilight mit Hyperion wieder aufgebaut habe und mir die Idee kam, warum lasse ich nicht mein Ambilight blinken wenn ein Anruf eingeht oder es an der Tür klingelt oder oder oder, habe ich mich dran gemacht und ein Hyperion Modul geschrieben.
Da es mein erstes Modul ist bitte ich um ein wenig Nachsicht und bin über jeden Verbesserungsvorschlag dankbar =)

Mit dem Modul kann man die Farbe einstellen oder Effekte starten. Man kann diese auch zeitlich begrenzen.
Der Hyperion Server muss dazu den JSON Server aktiviert haben.

Define
    define <name> Hyperion <IP oder HOSTNAME> <PORT>

Set <required> [optional]

Get

Attributes

Readings

Ich hoffe der ein oder andere kanns auch gebrauchen. Sollten Probleme auftreten sagt Bescheid, kann zwar nicht garantieren das ich mich sofort drum kümmer, aber ich versuchs zeitnah hinzubekommen.

Changelog:
# V 0.1.0 2016-02-23  -  initial beta version
# V 0.1.1 2016-02-23  -  fixed commandref formating
# V 0.2.0 2016-02-24  -  fixed effect_g not loaded after reload
#                        changed attribute effects, no underscore required anymore
#                        added error handling for unsupported commands
#                        optimized some code
#                        removed duplicated and unnecessary code
# V 0.3.0 2016-02-25  -  added readings
# V 0.4.0 2016-03-06  -  added off command (testing)
#                        fixed delete old hash->last_command
# V 0.4.1 2016-03-06  -  fixed concatenation of duration to priority
#                        changed version numbers

Girhub:
https://github.com/Bootscreen/fhem_hyperion

Gruß Bootscreen
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 24 Februar 2016, 10:45:56
Hallo Bootscreen,

coole Idee, v.a. das Ganze auch gleich Zeitlich bregrenzt zu machen :)
Werd ich die Tage mal ausprobieren.

Gruß,
Kuzl
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: kjmEjfu am 24 Februar 2016, 20:25:04
Kann ich auch auslesen, ob Hyperion gerade von Kodi (oder einem anderen Hyperion-Client) angesteuert wird?

Wäre halt irgendwie unschön, wenn man das Ambilight blinken lassen will, aber das gerade vom TV genutzt wird.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 24 Februar 2016, 22:09:26
Nein, das geht leider nicht. Dazu bietet hyperion selbst auch keine möglichkeit. Aber du müsstest die Priorität niedriger setzen können als die von XBMC/KODI, ich glaub das müsste 1000 sein, dann wird selbst wenn du einen Effect startest er nicht angezeigt.

Und der Punkt unschön ist immer Ansichtssache, ich z.B. will es genau so haben. Ich will ja auch beim Fernseh schauen das Telefon mitbekommen auch wenn ich es nicht hören kann ^^
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 25 Februar 2016, 09:28:18
Hab die letzten 2 Tage noch ein wenig dran gearbeitet:

Changelog:
# V 0.20 2016-02-24  -  fixed effect_g not loaded after reload
#                       changed attribute effects, no underscore required anymore
#                       added error handling for unsupported commands
#                       optimized some code
#                       removed duplicated and unnecessary code
# V 0.30 2016-02-25  -  added readings
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: kjmEjfu am 25 Februar 2016, 20:24:35
Zitat von: Bootscreen am 24 Februar 2016, 22:09:26
Und der Punkt unschön ist immer Ansichtssache, ich z.B. will es genau so haben. Ich will ja auch beim Fernseh schauen das Telefon mitbekommen auch wenn ich es nicht hören kann ^^

sollte auch nicht negativ gemeint sein :-)

Aber dann kann man es ja über die Priorität regeln. Prima.
Danke für das Modul
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 25 Februar 2016, 22:00:41
sorry, beim zweitem mal lesen klang es auch härter als es gemeint war.

Ich hab mich nochmal versucht schlau zu machen, bei dem V4L2 Grabber müsste es gehen da man dort die Priority in der config angeben kann. Hier müsste die Priority also höher sein als die in der config.
Bei XBMC/Kodi wird es wohl nicht klappen, zumindest klappte es bei mir nicht, da ich die Priority niederiger angeben musste als XBMC/Kodi sonst wurde mir gar nichts angezeigt. Hier müsste man also XBMC/Kodi noch in FHEM einrichten und dann in dem Script welches den Effekt starten soll prüfen ob der Playstatus nicht played ist.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 26 Februar 2016, 07:50:30
Hallo Bootscreen,

ich glaube Kodi hat Priorität 1500 oder 1000, eins von beiden.  Wenn du es in FHEM entsprechend einstellst, sollte es eigentlich gehen.
Ansonsten kannst du auch in der config Kodi komplett ausschalten und es über das Kodi-Plugin machen. Da kann man die Priorität selbst einstellen.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 02 März 2016, 08:23:19
Habs gestern installiert, funktioniert soweit wunderbar, danke :)
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 06 März 2016, 10:55:35
Grundsätzlich funktioniert das Modul bei mir, aber ich kann weder die Farben setzen noch die Effekte.
Im Log finde ich nur das hier:

2016.03.06 10:51:58 1: PERL WARNING: Use of uninitialized value in numeric gt (>) at ./FHEM/98_Hyperion.pm line 163.


Irgendeine Idee? Danke im Voraus!
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 06 März 2016, 15:38:53
hy,

ich glaub ich weiß wo der Fehler ist, lade gleich ne neue Version hoch. Teste die mal und stell wenns nicht geht Verbose auf 5 und poste mal deinen Log.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 06 März 2016, 15:48:13
Zitat von: Bootscreen am 06 März 2016, 15:38:53
hy,

ich glaub ich weiß wo der Fehler ist, lade gleich ne neue Version hoch. Teste die mal und stell wenns nicht geht Verbose auf 5 und poste mal deinen Log.

Cool teste heute Abend direkt!
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 06 März 2016, 15:53:22
So, neue Version ist online
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 06 März 2016, 19:15:06
Zitat von: Bootscreen am 06 März 2016, 15:53:22
So, neue Version ist online

Hi Oliver,

der Fehler ist weg, allerdings funktioniert die Version immer noch nicht.

2016.03.06 19:13:28 4: WEB_192.168.1.33_58626 GET /fhem?cmd={ReadingsVal(%22hyperion%22,%22clear%22,%22%22)}&XHR=1; BUFLEN:0
2016.03.06 19:13:28 5: Cmd: >{ReadingsVal("hyperion","clear","")}<
2016.03.06 19:13:28 4: name: /fhem?cmd={ReadingsVal(%22hyperion%22,%22clear%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:28 4: Connection accepted from WEB_192.168.1.33_58627
2016.03.06 19:13:28 4: WEB_192.168.1.33_58627 GET /fhem?cmd={AttrVal(%22hyperion%22,%22room%22,%22%22)}&XHR=1; BUFLEN:0
2016.03.06 19:13:28 5: Cmd: >{AttrVal("hyperion","room","")}<
2016.03.06 19:13:28 4: name: /fhem?cmd={AttrVal(%22hyperion%22,%22room%22,%22%22)}&XHR=1 / RL:29 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:28 4: WEB_192.168.1.33_58626 GET /fhem?XHR=1&inform=type=status;filter=hyperion;since=1457288007;fmt=JSON&fw_id=23&timestamp=1457288008275; BUFLEN:0
2016.03.06 19:13:30 4: WEB_192.168.1.33_58627 GET /fhem?cmd={ReadingsVal(%22hyperion%22,%22effect_g%22,%22%22)}&XHR=1; BUFLEN:0
2016.03.06 19:13:30 5: Cmd: >{ReadingsVal("hyperion","effect_g","")}<
2016.03.06 19:13:30 4: name: /fhem?cmd={ReadingsVal(%22hyperion%22,%22effect_g%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:31 4: Connection closed for WEB_192.168.1.33_58626: EOF
2016.03.06 19:13:31 4: WEB_192.168.1.33_58627 POST /fhem&detail=hyperion&dev.sethyperion=hyperion&cmd.sethyperion=set&arg.sethyperion=effect_g&val.sethyperion=Knight_rider; BUFLEN:0
2016.03.06 19:13:31 5: Cmd: >set hyperion effect_g Knight_rider<
2016.03.06 19:13:31 4: hyperion: set effect: '{"effect":{"name":"Knight rider"},"command":"effect","priority":5000}'
2016.03.06 19:13:31 4: WEB_192.168.1.33_58627 GET /fhem?detail=hyperion&fw_id=; BUFLEN:0
2016.03.06 19:13:31 4: name: /fhem?detail=hyperion&fw_id= / RL:2803 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:31 4: WEB_192.168.1.33_58627 GET /fhem?cmd={ReadingsVal(%22hyperion%22,%22clear%22,%22%22)}&XHR=1; BUFLEN:0
2016.03.06 19:13:31 5: Cmd: >{ReadingsVal("hyperion","clear","")}<
2016.03.06 19:13:31 4: name: /fhem?cmd={ReadingsVal(%22hyperion%22,%22clear%22,%22%22)}&XHR=1 / RL:21 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:31 4: Connection accepted from WEB_192.168.1.33_58634
2016.03.06 19:13:31 4: WEB_192.168.1.33_58634 GET /fhem?cmd={AttrVal(%22hyperion%22,%22room%22,%22%22)}&XHR=1; BUFLEN:0
2016.03.06 19:13:31 5: Cmd: >{AttrVal("hyperion","room","")}<
2016.03.06 19:13:31 4: name: /fhem?cmd={AttrVal(%22hyperion%22,%22room%22,%22%22)}&XHR=1 / RL:29 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.03.06 19:13:31 4: WEB_192.168.1.33_58627 GET /fhem?XHR=1&inform=type=status;filter=hyperion;since=1457288010;fmt=JSON&fw_id=24&timestamp=1457288011672; BUFLEN:0


EDITH: Eben ist mir aufgefallen, dass er nach dem Set Kommando mit dem Effekt noch ein "set effect clear" schickt. Das sollte doch nicht sein, oder?
Titel: Antw:Neues Modul für Hyperion Server
Beitrag 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.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 06 März 2016, 20:51:43
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Bootscreen am 06 März 2016, 22:11:22
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.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 06 März 2016, 22:42:52
Mache ich aber heute Abend nicht mehr...mache ich morgen und schon einmal vielen lieben Dank für deine Hilfe!
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: P.A.Trick am 07 März 2016, 20:01:22
Perfekt es klappt nun alles! Super Danke für deine Mühe und die tolle Arbeit!
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: lising am 13 März 2016, 16:15:37
Hallo,
das Modul läuft bei mir auf Anhieb einwandfrei - vielen Dank!
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 13 Mai 2016, 07:51:01
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: pjakobs am 04 Juni 2016, 08:40:08
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: pjakobs am 04 Juni 2016, 09:38:58
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:

"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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 05 Juni 2016, 13:23:12
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: dev0 am 06 Juni 2016, 06:55:54
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?
Titel: Antw:Neues Modul für Hyperion Server
Beitrag 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?
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 06 Juni 2016, 10:37:23
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:

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.
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 06 Juni 2016, 19:47:04
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag 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?
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 07 Juni 2016, 19:29:53
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
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Spezialtrick am 07 Juni 2016, 22:35:28
Die Skripte habe ich sehr wohl gefunden, allerdings funktionieren sie nicht so wie gewollt.

Ich habe wie bereits erwähnt eingerichtet, dass der Cubietruck per ssh auf den Pi zugreifen kann:

root@cubietruck:~# su -s /bin/bash -c 'ssh root@192.187.188.68 'uptime'' fhem
22:14:42 up 24 min,  2 users,  load average: 0.38, 0.84, 0.75


Außerdem habe ich unter /opt/hyperion/config/ das Skript hyperion_SatTV_aktivieren.sh hinterlegt:


#!/bin/sh
killall hyperiond
sleep 1
sudo kodi-send -a "Notification(Hyperion Info,Ambilight für internen Sat-Tuner aktiviert,7000,http://powerpi.de/wp-content/uploads/powerpi/powerpi_ambi_thumb_hdmi.jpg)"
sudo /opt/hyperion/bin/hyperiond.sh /opt/hyperion/config/hyperion.config.SatTV.json
</dev/null >/dev/null 2>&1 &


Nun sollte ich das Skript so

su -s /bin/bash -c 'ssh root@192.187.188.68 'sudo /opt/hyperion/config/hyperion_SatTV_aktivieren.sh'' fhem

ausführen könne, was auch funktioniert. Leider nur mit diesem Fehler:

root@cubietruck:~# su -s /bin/bash -c 'ssh root@192.187.188.68 'sudo /opt/hyperion/config/hyperion_SatTV_aktivieren.sh'' fhem
No passwd entry for user '/opt/hyperion/config/hyperion_SatTV_aktivieren.sh'
root@cubietruck:~#


Lokal kommt es leider auch zu Fehlern:

root@Pi:~# sudo /opt/hyperion/config/hyperion_SatTV_aktivieren.sh
sudo: kodi-send: command not found
sudo: /opt/hyperion/bin/hyperiond.sh: command not found


Wenn ich das .sh auch dem Befehl lösche, scheint es zu funktionieren, leider komme ich nur mit crtl+c aus dem Skript heraus, das auch Hyperion beendet:

root@Pi:~# sudo /opt/hyperion/bin/hyperiond /opt/hyperion/config/hyperion.config.SatTV.json
Application build time: Feb 27 2016 12:33:50
QCoreApplication initialised
Selected configuration file: /opt/hyperion/config/hyperion.config.SatTV.json
ColorTransform 'default' => [0; 89]
Device configuration:
{
"colorOrder" : "rbg",
"name" : "MyPi",
"output" : "/dev/spidev0.0",
"rate" : 250000,
"type" : "ws2801"
}

Creating linear smoothing
Created linear-smoothing(interval_ms=33;settlingTime_ms=150;updateDelay=0
Effect loaded: Cinema brighten lights
Effect loaded: Cinema dim lights
Effect loaded: Knight rider
Effect loaded: Blue mood blobs
Effect loaded: Cold mood blobs
Effect loaded: Full color mood blobs
Effect loaded: Green mood blobs
Effect loaded: Red mood blobs
Effect loaded: Warm mood blobs
Effect loaded: Police Lights Single
Effect loaded: Police Lights Solid
Effect loaded: Rainbow mood
Effect loaded: Rainbow swirl fast
Effect loaded: Rainbow swirl
Effect loaded: Random
Effect loaded: Running dots
Effect loaded: System Shutdown
Effect loaded: Snake
Effect loaded: Sparks Color
Effect loaded: Sparks
Effect loaded: Strobe blue
Effect loaded: Strobe Raspbmc
Effect loaded: Strobe white
Effect loaded: Color traces
Effect loaded: UDP listener
Effect loaded: X-Mas
Initializing Python interpreter
Hyperion created and initialised
run effect Rainbow swirl fast on channel 0
Black border threshold set to 0.1 (26)
DETECTION MODE:default
Boot sequence(Rainbow swirl fast) created and started
XBMC video checker created and started
Json server created and started on port 19444
Proto server created and started on port 19445
V4L2 width=720 height=576
V4L2 pixel format=YUYV
Black border threshold set to 0.1 (26)
DETECTION MODE:default
V4L2 grabber signal threshold set to: {25,25,25}
V4L2 grabber started
V4l2 grabber created and started
XBMC Connection error (0)
BORDER SWITCH REQUIRED!!
CURRENT BORDER TYPE: unknown=0 hor.size=0 vert.size=0
V4L2 grabber stopped
effect finished
V4L2 grabber started
XBMC Connection error (0)


Zitat von: DeeSPe am 07 Juni 2016, 19:29:53
Ich hoffe das hilft Dir weiter, eine fertige Lösung werde ich nicht präsentieren.

Das brauchst du nicht, aber vllt. kannst du trotzdem helfen.  :)
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 07 Juni 2016, 23:16:54
Ist ein Berechtigungsproblem!
Dann führe das auf dem Pi nicht als user fhem aus  (den es ja sicherlich eh nicht auf dem Pi gibt) sonder als user pi, der sollte ja bereits die Berechtigungen haben das ausführen zu dürfen. Oder läuft Kodi unter einem anderen Benutzer? Das musst Du individuell mal checken. Es liegt auf jeden Fall an den Berechtigungen.

Wenn die Dateiberechtigungen für User pi auf "/opt/hyperion/bin/hyperiond.sh" und "/opt/hyperion/config/hyperion.config.SatTV.json" erteilt sind, dann sollte das ohne sudo laufen. Falls der entsprechende Kodi User (pi oder what ever) auf dem Pi in der Liste der sudoers steht und keine speziellen Berechtigungen auf die Dateien hat, dann muss eben mit sudo aufgerufen werden.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Spezialtrick am 09 Juni 2016, 10:52:25
Ich bin inzwischen einen Schritt weiter gekommen und kann die Quellen über die entsprechenden Skripte, die auf dem Pi liegen, vom Cubietruck aus per ssh mit folgendem exemplarischem Befehl umschalten:

su -s /bin/bash -c 'ssh pi@192.187.188.68 '/opt/hyperion/config/hyperion_SatTV_aktivieren.sh'' fhem

So sieht das Skript selbst aus:

#!/bin/sh
sudo killall hyperiond
sleep 1
kodi-send -a "Notification(Hyperion Info,Ambilight für internen Sat-Tuner aktiviert,7000,http://powerpi.de/wp-content/uploads/powerpi/powerpi_ambi_thumb_hdmi.jpg)"
/opt/hyperion/bin/hyperiond /opt/hyperion/config/hyperion.config.json
</dev/null >/dev/null 2>&1 &


In Fhem habe ich einen dummy

define Ambilight dummy
attr Ambilight setList state:Sat,Kodi,Hdmi
attr Ambilight webCmd state


und das dazugehörige Doif

define Ambilight.Quellenautomatik doif ([Ambilight:state] eq "Sat") ({system ("su -s /bin/bash -c 'ssh pi@192.187.188.68 '/opt/hyperion/config/hyperion_SatTV_aktivieren.sh'' fhem");;return undef}) DOELSEIF ([Ambilight:state] eq "Kodi") ({system ("su -s /bin/bash -c 'ssh pi@192.187.188.68 '/opt/hyperion/config/hyperion_kodi_aktivieren.sh'' fhem");;return undef}) DOELSEIF ([Ambilight:state] eq "HDMI") ({system ("su -s /bin/bash -c 'ssh pi@192.187.188.68 '/opt/hyperion/config/hyperion_kodi_aktivieren.sh'' fhem");;return undef}) DOELSEIF ([Ambilight:state] eq "Test") ({system ("su -s /bin/bash -c 'ssh pi@192.187.188.68 'uptime'' fhem");;return undef})

erstellt. In Fhem kann ich die Quellen leider nicht umschalten. Habe ich einen Fehler im doif?
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 13 Juni 2016, 07:54:26
Zitat von: Spezialtrick am 06 Juni 2016, 10:33:56
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?

Du kannst beide Quellen gleichzeitig laufen lassen. Dabei Kodi mit einer höheren Priorität als das Signal per HDMI. In Kodi musst du einstellen, dass das Ambilight nur benutzt wird, wenn auch was abgespielt wird (also nicht im leerlauf).

Dann wird im Normalfall immer HDMI benutzt und wenn Kodi etwas abspielt, automatisch Kodi.

Viele Grüße,
Kuzl
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 13 Juni 2016, 11:36:37
@Spezialtrick: Sorry, mit DOIF kenne ich mich überhaupt nicht aus, bei mir läuft alles über notify(s).

Aufgrund meiner Erwartungen und Wünsche an dieses Modul habe ich mich nun entschlossen das Modulcoden zu lernen, das Modul von Bootscreen als Vorlage zu nehmen (DANKE @Bootscreen) und es größtenteils neu zu schreiben.
Heute Abend werde ich noch ein paar Tests mit dem neuen Modul von mir machen und noch kleine Optimierungen einfließen lassen. Danach kann ich es bei vorhandenem Interesse gern hier zum Download anbieten.

Was wird sich ändern?
Das Modul "merkt" sich nun immer den zuletzt eingestellten Modus (mode) im Reading "previous_mode". Bei "set <name> on" bzw. wenn toggle=on wird dann der letzte Modus mit der zuletzt eingestellten Farbe/Effekt wiederhergestellt.

Was ich noch umsetzen möchte?

Verbesserungsvorschläge und Wünsche sind sehr willkommen.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 14 Juni 2016, 07:13:37
Hätte noch den Wunsch, das gain bzw. value => Helligkeit
setzen zu können. Evtl auch Zeitlich begrenzt

Am Abend wenn alle anderen Lichter aus ist, ist das ansonsten einfach zu Hell.

Viele Grüße,
Kuzl
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 14 Juni 2016, 09:57:44
Zitat von: Kuzl am 14 Juni 2016, 07:13:37
Hätte noch den Wunsch, das gain bzw. value => Helligkeit
setzen zu können. Evtl auch Zeitlich begrenzt

Am Abend wenn alle anderen Lichter aus ist, ist das ansonsten einfach zu Hell.

Viele Grüße,
Kuzl

Guter Vorschlag, werde versuchen das zu berücksichtigen. Sollte aber generell machbar sein.

Ansonsten ist das neue Modul so gut wie fertig. Habe gestern Abend allerdings noch herausgefunden dass man in der aktuellen Version vom Hyperion Server den Status abfragen kann und werde das noch mit einbauen. Damit soll der Status beim define dann automatisch abgerufen werden und ein konfigurierbares Pollen wird auch Einzug halten. In der aktuellen Hyperion Server Version sind auch einige neue Effekte dazu gekommen.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Spezialtrick am 14 Juni 2016, 10:00:51
Zitat von: DeeSPe am 13 Juni 2016, 11:36:37
@Spezialtrick: Sorry, mit DOIF kenne ich mich überhaupt nicht aus, bei mir läuft alles über notify(s).

Verbesserungsvorschläge und Wünsche sind sehr willkommen.


Dann fragte ich mal im Doif Forum nach.

Im Prinzip könntest du meine Quellen "Umschaltfunktion" auch in das neue Modul aufnehmen. :)
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 14 Juni 2016, 10:23:08
Zitat von: Spezialtrick am 14 Juni 2016, 10:00:51
Im Prinzip könntest du meine Quellen "Umschaltfunktion" auch in das neue Modul aufnehmen. :)

Das hatte ich tatsächlich schon überlegt, allerdings steuert das Modul den JSON Server von Hyperion.
Um Hyperion mit einer anderen Konfiguration neuzustarten müsste es auf die Shell Ebene heruntergehen, was dementsprechend wieder eine manuelle Konfiguration vom User abverlangen würde (Pfad zu Hyperion, Pfad zu den config(s) und dann noch die jeweiligen config(s) selbst). Bei remote Systemen müsste auch noch der Username und das Passwort für den SSH Login hinterlegt werden, von der entsprechenden Konfiguration des remote Systems mal abgesehen. Alles in Allem zu viel Konfiguration für ein Modul (meine Meinung). Wenn das jemand haben möchte, muss es eben irgendwie selbst  konfiguriert werden (auch meine Meinung).

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 14 Juni 2016, 23:57:11
Hier nun das Ergebnis meiner bisherigen Bemühungen, ich hoffe Bootscreen nimmt es mir nicht übel dass ich mich als Perl Newbie an seinem Modul vergangen habe:

Ein völlig überarbeitetes Modul!
Dazu ist es auch eventuell nötig Hyperion selbst auf die letzte Version zu bringen.
Aktuell ist V1.03.0, welche ich auch zur Erstellung dieses Moduls verwendet habe.

Was sich geändert hat und was das Modul schon kann:

Was das Modul (noch) nicht kann bzw. wo es noch Schwierigkeiten gibt und was noch verbessert werden soll:

Das Device wird so definiert:
define <name> Hyperion <IP oder Hostname> <Port> [<Interval>]

Also für den auf dem selben Host laufenden Hyperion Server z.B.:
define wz_TVLicht Hyperion localhost 19444

Oder mit experimentellem Polling alle 10 Sekunden z.B.:
define wz_TVLicht Hyperion localhost 19444 10

Entwickelt und getestet habe ich mit den tagesaktuellen Versionen von FHEM, Hyperion Server und Hyperion Remote für iOS. Der Hyperion Server läuft bei mir auf dem selben System wie FHEM, somit konnte ich nur über localhost testen, aber es sollte für remote Systeme genau so gut funktionieren.

Würde mich sehr freuen wenn das Modul von dem ein oder anderen mal getestet wird.

Viel Spaß damit.

Gruß
Dan

P.S. Kritik bzw. Rat- und Vorschläge sind gern willkommen.


17.6.2016 UPDATE 2

Habe soeben noch die setExtension integriert so dass nun auch on/off-for-timer, on/off-till und on/off-till-overnight zur Verfügung stehen


17.6.2016 UPDATE

Ich habe nochmal massiv am Modul gearbeitet.
Deshalb heute ein riesiges Update:

#                       latest Development by DeeSPe
#
# Changelog
#
# V 0.6.1 2016-06-17  - integrated setExtensions to set on/off-for-timer, on/off-till and on/off-till-overnight
#
# V 0.6.0 2016-06-17  - BIG UPDATE
#                       now everything what's available via JSON will be represented by a reading
#                       now every possible setting (complete color calibration) is now available with set <name> <reading name> <value>
#                       now the active effect will also be recognized and saved as reading while get <name> update
#                       this module can now act like a fully featured remote app for every available kind color calibration
#                       resolved the priority issue, now the default priority is 0 to be able to override the settings of the Hyperion remote app
#                       renamed reading version to build_version
#                       polling is much more robust now
#                       polling or manual get <name> update will refresh all important readings
#                       off and clearall will now be recognized more robust (see bug)
#                       moved attr effects to reading effects
#                       removed get <name> loadEffects, available effects will now be written to reading effects automatically while polling or manual get <name> update
#                       new command set <name> clear <priority> to clear a specific priority channel
#                       [bug]: I found a bug (and reported it: https://github.com/hyperion-project/hyperion/issues/701) in the Hyperion JSON server - if you set rgb to a fully saturated color (like FF0000 or FF00FF) the state will be recognized as off because the serverinfo then doesn't contain the color value
#
# V 0.5.2 2016-06-14  - get <name> update (will also be called once when defining device) now gets the version of Hyperion, the list of effects, active rgb value or if an effect is active (which effect is not recognized yet, so the previous will be set), also state off and clearall are not yet recognized so the readings will not be updated
#                       implemented getting current state and experimental polling (get <name> update will be called periodically)
#
# V 0.5.1 2016-06-13  - colorpicker now always shows the current rgb value
#
# V 0.5.0 2016-06-12  - rewritten most of the modul
#                       changed almost every reading and set
#                       during define now set suggested attributes for alias,devStateIcon,homebidgeMapping,icon,webCmd
#                       state now always shows the current state





29.6.2016 UPDATE
Modul komplett neu entwickelt und in neuem Thema verfügbar:
https://forum.fhem.de/index.php/topic,55112.0.html
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: urmel86 am 17 Juni 2016, 13:45:12
Zitat von: DeeSPe am 14 Juni 2016, 23:57:11
Entwickelt und getestet habe ich mit den tagesaktuellen Versionen von FHEM, Hyperion Server und Hyperion Remote für iOS. Der Hyperion Server läuft bei mir auf dem selben System wie FHEM, somit konnte ich nur über 127.0.0.1 testen, aber es sollte für remote Systeme genau so gut funktionieren.

Würde mich sehr freuen wenn das Modul von dem ein oder anderen mal getestet wird.

Moin DeeSPe,

habe deine Version grade mal installiert und kann sagen, dass soweit alles läuft. Hyperion läuft bei mir auf nem extra PI, das haut auch hin. Feste RGB Werte und alle Effekte funktionieren wunderbar. Nur den Ambilight Modus kann ich zur Zeit nicht testen. HDMI Splitter und Videoconverter fehlen noch :(

Gruß Marco
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 17 Juni 2016, 13:51:19
Zitat von: urmel86 am 17 Juni 2016, 13:45:12
Moin DeeSPe,

habe deine Version grade mal installiert und kann sagen, dass soweit alles läuft. Hyperion läuft bei mir auf nem extra PI, das haut auch hin. Feste RGB Werte und alle Effekte funktionieren wunderbar. Nur den Ambilight Modus kann ich zur Zeit nicht testen. HDMI Splitter und Videoconverter fehlen noch :(

Gruß Marco

Dankeschön für's Testen und zurückmelden.

Habe soeben nochmal ein riesiges Update für das Modul in meinem Beitrag oben (https://forum.fhem.de/index.php/topic,49808.msg462202.html#msg462202) veröffentlicht.

Nun ist über das Modul alles möglich was die Hyperion Remote App(s) auch können.

Viel Spaß mit der neuen Version.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 17 Juni 2016, 14:58:01
Soeben noch ein kleines Update 0.6.1 hochgeladen (https://forum.fhem.de/index.php/topic,49808.msg462202.html#msg462202) mit dem nun auch set on/off-for-timer, on/off-till und on/off-till-overnight zur Verfügung stehen.

Werd mal noch schauen mit der Quellenumschaltung.
Den Grabber kann man per JSON nicht beeinflussen, aber eventuell fällt mir doch noch eine gute Shell Lösung ein.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 20 Juni 2016, 09:40:35
Seit dem Wochenende arbeite ich an einer komplett neuen Version des Moduls.
Es wird einige Veränderungen geben, z.B.:

Falls jemand noch Wünsche oder eventuell eine Idee hat wegen der SSH Geschichte, dann bitte bei mir melden.

Vielen Dank.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Spezialtrick am 24 Juni 2016, 21:55:16
Zitat von: DeeSPe am 20 Juni 2016, 09:40:35
Quellenumschaltung für Hyperion auf dem lokalen System (Neustart von Hyperion mit anderer Konfig). Danach überlege ich mir wie man das zusätzlich über SSH machen kann.


Ich freue mich total, dass du versuchst meine Anforderung mit in das neue Modul einzubauen. :)

Vielen Dank dafür!  :)
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: Kuzl am 24 Juni 2016, 23:00:39
Hallo,

gibts eine möglichkeit, ähnlich wie bei den setextentions oder bei den effekten einen Zeitraum für das Gain anzugeben?
würde das gerne nur tämporär ändern können.

Ansonsten - VIELEN DANK! funktioniert wunderbar

EDIT: Ok ist den Aufwand nicht Wert- ich änder das einfach über ein AT wieder zurück.

Gruß,
Kuzl
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 29 Juni 2016, 00:47:12
Zitat von: Kuzl am 24 Juni 2016, 23:00:39
Hallo,

gibts eine möglichkeit, ähnlich wie bei den setextentions oder bei den effekten einen Zeitraum für das Gain anzugeben?
würde das gerne nur tämporär ändern können.

Ansonsten - VIELEN DANK! funktioniert wunderbar

Das geht leider bei den Transformationen nicht. Dort gibt es keine Dauer die man übergeben kann.
Und BITTE, gerne. Ich habe gerade Spaß am Perl Coden lernen und dabei noch ein (hoffentlich) tolles Modul auf die Beine zu stellen.


Zitat von: Kuzl am 24 Juni 2016, 23:00:39
EDIT: Ok ist den Aufwand nicht Wert- ich änder das einfach über ein AT wieder zurück.

Das ist eine Möglichkeit! Eine weitere wäre (so mache ich es):
Ich habe alles über LightScene konfiguriert. Per Notify überwache ich dann die LightScene und dann gibt es ein jeweils entsprechendes set valueGain auf das Ambilight für unterschiedliche Helligkeitswerte im Wohnzimmer.

BTW: Das neue und erweiterte Modul ist fast fertig. Es fehlt noch eine Funktion und dann gebe ich mal eine erste Beta Version zum Testen heraus. Die Quellenumschaltung für lokale und remote Hosts wird auch mit dabei sein.

Gruß
Dan
Titel: Antw:Neues Modul für Hyperion Server
Beitrag von: DeeSPe am 29 Juni 2016, 19:02:10
Eine erste Version des völlig neu geschriebenen Moduls ist nun verfügbar (inklusive Quellenumschaltung).
Dafür habe ich ein komplett neues Thema aufgemacht.

Zu finden ist es nun hier:
https://forum.fhem.de/index.php/topic,55112.0.html

Würde mich freuen wenn das Modul mal jemand testet und Feedback gibt.

Gruß
Dan