Neues Modul für Hyperion Server

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

Vorheriges Thema - Nächstes Thema

Bootscreen

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]

  • clear löscht alle Farben und Effekte
  • color <RRGGBB> [Dauer] [Priorität] sendet die Farbe in RGB Hex Format mit optionaler Dauer und Priorität
  • color_g sendet die Farbe in RGB Hex Format aus dem Colorpicker
  • effect <Effekt> [Dauer] [Priorität] startet den Effekt (Leerzeichen müssen durch Unterstriche ersetzt werden, siehe dazu 'get <name> effectList') mit optionaler Dauer und Priorität
  • effect_g startet den Effekt aus der Dropdown Liste
  • loadEffects Lädt die Effekte aus dem Attribut effects in die Dropdown Liste für effect_g
  • off Schaltet das Licht aus indem es die Farbe auf schwarz setzt

Get

  • effectList holt eine Liste von Effekten vom Hyperion Server und speichert diese im Attribut effects

Attributes

  • effects Liste von Effekten für die Dropdown Liste effect_g
  • duration Standard Dauer, wenn nicht gesetzt ist die Dauer unendlich
  • priority Standard Priorität, wenn nicht gesetzt ist die Priorität 500
  • verbose 4 aktiviert einige Logeinträge

Readings

  • state

    • success: wenn get oder set clear erfoglreich
    • started infinity: wenn set effect oder color ohne Dauer gestartet
    • started: wenn set effect oder color mit Dauer gestartet
    • finished: wenn set effect oder color mit Dauer beendet
  • last_result zeigtdie letzte Antwort von hyperion
  • last_command zeigtden zuletzt gesendeten Befehl
  • last_type zeigtden zuletzt gesendeten Typ
  • last_value zeigtden zuletzt gesendeten Typ-Parameter
  • last_duration zeigtden zuletzt gesendete Dauer
  • last_priority zeigt den zuletzt gesendete Priorität

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
Gruß
Oliver

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

Kuzl

Hallo Bootscreen,

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

Gruß,
Kuzl

kjmEjfu

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.
Migriere derzeit zu Home Assistant

Bootscreen

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 ^^
Gruß
Oliver

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

Bootscreen

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
Gruß
Oliver

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

kjmEjfu

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
Migriere derzeit zu Home Assistant

Bootscreen

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.
Gruß
Oliver

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

Kuzl

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.

Kuzl

Habs gestern installiert, funktioniert soweit wunderbar, danke :)

P.A.Trick

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!
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

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.
Gruß
Oliver

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

P.A.Trick

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!
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

Gruß
Oliver

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

P.A.Trick

#13
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?
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

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.
Gruß
Oliver

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