Neues Modul PHTV für Philips Fernseher (inkl. Ambilight)

Begonnen von Loredo, 06 März 2014, 22:09:17

Vorheriges Thema - Nächstes Thema

JoeALLb

Das wäre natürlich der Hammer,  wenn man da auch (später mal)  Sensorenwerte oder Zustände auf das Fernsehgerät "Beamen"  könnte....
Wenn ich was helfen/testen kann,  bitte einfach melden. Tolle Arbeit.

Gesendet von meinem Xperia Pro mit Tapatalk

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Sturi2011

Hallo,

ich habe da noch 2 Vorschläge oder Fragen:

1. es wäre schön, wenn es eine Möglichkeit gäbe die Helligkeit der HUEs zu beeinflussen eventuell über einen Faktor pro Hue ähnlich der Auswahl der LED

2. Wäre es möglich und macht es Sinn den Intervall von zu verkürzen? Wenn ich das richtig gelesen habe steht er auf 0,2 - vielleicht ein zus. Attribut?

Gruß Andreas

Loredo

Zitat von: Sturi2011 am 10 März 2014, 20:48:52
1. es wäre schön, wenn es eine Möglichkeit gäbe die Helligkeit der HUEs zu beeinflussen eventuell über einen Faktor pro Hue ähnlich der Auswahl der LED


Das ist vorgesehen, geht aber erst, wenn ich zuverlässig die HSV/HSB Farbwerte wieder zurück in RGB Werte umgerechnet kriege. Aktuell funktioniert die Formel dafür nicht (daher fehlen auch noch die Kommandos pct und bri, um die Helligkeit des Ambilight anzupassen).


Zitat von: Sturi2011 am 10 März 2014, 20:48:522. Wäre es möglich und macht es Sinn den Intervall von zu verkürzen? Wenn ich das richtig gelesen habe steht er auf 0,2 - vielleicht ein zus. Attribut?


ambiHueLatency habe ich gerade eingebaut. Da es allerdings extrem auf die Performance geht, die Latenz noch niedriger einzustellen, bleibt es jedem selbst überlassen, ob seine Hardware das kann.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: JoeALLb am 10 März 2014, 06:03:02
Das wäre natürlich der Hammer,  wenn man da auch (später mal)  Sensorenwerte oder Zustände auf das Fernsehgerät "Beamen"  könnte....


Das wird wahrscheinlich nie der Fall sein. Ich habe bisher keine Dokumentation gefunden, wie genau auf Netzwerkebene die Framebuffer/Voodoo Kommunikation aussieht. Auch habe ich keine Perl Library für Framebuffer finden können.


Zitat von: JoeALLb am 10 März 2014, 06:03:02Wenn ich was helfen/testen kann,  bitte einfach melden.


Du kannst helfen, DirectFB over Voodoo in Perl zu implementieren ;-)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

JoeALLb

Kann es sein, dass disabled=1 nicht funktioniert? (obwohl es angeboten wird?)
Habe dies gesetzt, nachdem das Modul ja mit meinem Gerät nicht zu funktionieren scheint und bekomme in den Logdateien einige Timeout-Meldungen.
Werde das Device vermutlich einfach löschen :-(
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Loredo

Zitat von: JoeALLb am 11 März 2014, 12:06:22
Kann es sein, dass disabled=1 nicht funktioniert? (obwohl es angeboten wird?)
Habe dies gesetzt, nachdem das Modul ja mit meinem Gerät nicht zu funktionieren scheint und bekomme in den Logdateien einige Timeout-Meldungen.


Das Attribut heißt auch "disable" und muss auf 1 gesetzt werden, damit die Abfragen deaktiviert werden.

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

JoeALLb

Sorry, habs nur falsch abgetippt.
Ich habe es so in der Weboberfläche auf 1  gesetzt, und die Abfragen wurden weiterhin ins Log geschrieben.
Ich habe das Device zwischenzeitlich gelöscht, da ich es nicht benutzen kann, könnte aber nochmal versuchen, ob ich dies reproduzieren kann?!

Bezüglich den DirectFB - Entwicklung: Leider kann ich das nicht, bin kein Programmierer. Werde aber mal die Beispiele
auf
http://sourceforge.net/apps/mediawiki/jointspace/index.php?title=Remote_Applications_Development
ansehen, die angeblich auch mit 2k10-Geräten funktionieren müssten.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Sturi2011

#52
Hallo,

eventuell ist hier in der Schleife für die Kanalliste (warum 81?) auch noch was abzufangen?

ZitatUse of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.
Use of uninitialized value in concatenation (.) or string at /opt/fhem/FHEM/70_PHTV.pm line 274.

Eventuell sollte noch ein Hinweis in die Commandref, wie die LEDs Für das Ambilight gezählt werden.

Gruß Andreas

Sturi2011

Hi,

Farbfindung das hatte ich soweit zum testen:


sub getPhilipsTvAmbiHue($)
{
  my $deviceName = shift;
  my $rgbStr = PhilipsTV_GetValue("/1/ambilight/processed", $deviceName);
  my $json = JSON->new;
  my $data = $json->decode($rgbStr);
  return $data;
}

sub AmbiHue()
{
for (my $i=0; $i <= 300; $i++) {
my $data = getPhilipsTvAmbiHue("192.168.0.21");
my $X = 1.076450 * $data->{layer0}->{right}->{0}->{r} - 0.237662 * $data->{layer1}->{right}->{0}->{g} + 0.161212 * $data->{layer1}->{right}->{0}->{b};
my $Y = 0.410964 * $data->{layer0}->{right}->{0}->{r} + 0.554342 * $data->{layer1}->{right}->{0}->{g} + 0.034694 * $data->{layer1}->{right}->{0}->{b};
my $Z = -0.010954 * $data->{layer0}->{right}->{0}->{r} - 0.013389 * $data->{layer1}->{right}->{0}->{g} + 1.024343 * $data->{layer1}->{right}->{0}->{b};
Log 3, "xyz".$X.$Y.$Z;

my $xyx = $X / ($X + $Y + $Z);
my $xyy = $Y / ($X + $Y + $Z);
my $sxyx = sprintf "%.4f", $xyx;
my $sxyy = sprintf "%.4f", $xyy;

Log 3, "xyx".$sxyx;
Log 3, "xyy".$sxyy;
fhem ("set HUEDevice1 on : xy ".$sxyx." ".$sxyy);
}
}


frei nach:

http://wiki.gamesmaster-hamburg.de/index.php?title=Home-Entertainment_with_Speech#Realisierung_3

Gruß Andreas

Loredo

Zitat von: Sturi2011 am 11 März 2014, 18:43:31
eventuell ist hier in der Schleife für die Kanalliste (warum 81?) auch noch was abzufangen?

Eventuell sollte noch ein Hinweis in die Commandref, wie die LEDs Für das Ambilight gezählt werden.

Fixed und erweitert (Zählweise hat sich geändert, startet jetzt bei 1).

Zitat von: Sturi2011 am 11 März 2014, 20:58:32
Farbfindung das hatte ich soweit zum testen:

Ich habe auch sehr viel geschaut, alle haben falsch gerechnet. Letztendlich haben sehr viele die Zahlengrößen für HSV und HSB durcheinander gebracht und daher kam nie das raus, was herauskommen sollte bzw. ließ sich nicht in die jeweils andere Richtung wieder korrekt zurück rechnen. Das dauert, bis man sich das selbst richtig zusammengestrickt hat...



Neue Version 1.2.0:


       
  • ambiHue Performance maßgeblich verbessert
  • ambiHue nutzt für die Farbe jetzt standardmäßig den Mittelwert aus der mittleren LED und deren beiden Nachbarn
  • ambiHue Custom Settings für LED(s), Sättigung und Helligkeit
  • Neue Kommandos hue, sat, bri
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Sturi2011

Hi,

sehr schön - aber gibt es einen Grund warum ambiHueDelay rausgeflogen ist?

Gruß Andreas

Loredo

Zitat von: Sturi2011 am 12 März 2014, 19:11:43
sehr schön - aber gibt es einen Grund warum ambiHueDelay rausgeflogen ist?



Es ist überflüssig.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Sturi2011

Hallo Julian,

gefühlt machen die HUEs nun Sprünge und hängen nach...das war in der vorherigen Version runder.

Gruß Andreas

RadioJames

Hallo Loredo,

eine Frage zum Verständnis. Ist es richtig, dass die Kommunikation deines Moduls mit dem Philips TV ausschließlich auf diesem JSON Dings beruht?

Ich hatte am Anfang des Threads noch große Augen, da es hieß, JOINTSPACE / Netzwerk. Ich habe einige der C-Besipiele der Philips JOINTSPACE Seite mal ausprobiert. Mein Fernseher ist allerdings aus der 2010 Serie und unterstützt daher kein JSON.
There are 10 kind of people. Those who understand binary and those who don't.

Loredo

Zitat von: RadioJames am 13 März 2014, 18:21:47
eine Frage zum Verständnis. Ist es richtig, dass die Kommunikation deines Moduls mit dem Philips TV ausschließlich auf diesem JSON Dings beruht?


Ja.


Zitat von: RadioJames am 13 März 2014, 18:21:47Ich hatte am Anfang des Threads noch große Augen, da es hieß, JOINTSPACE / Netzwerk. Ich habe einige der C-Besipiele der Philips JOINTSPACE Seite mal ausprobiert. Mein Fernseher ist allerdings aus der 2010 Serie und unterstützt daher kein JSON.


Die JSON Schnittstelle ist teil von JointSpace, aber wie du richtig sagst eben erst bei neueren Versionen ab 2011.
FHEM ist in Perl geschrieben. C Bibliotheken muss man in Perl nachbauen, was zumeist ein riesiger Aufwand ist. Dafür sehe ich aber keine Notwendigkeit, zumal mir den Aufwand niemand bezahlt und ich es für mich selbst nicht brauche. Zu guter Letzt bin ich auch kein Entwickler, weshalb es für mich vertane Zeit wäre, mich damit zu befassen, denn ich bräuchte vermutlich ein Vielfaches der Zeit, die ein professioneller Entwickler benötigen würde.
Ich habe Spaß daran Protokolle auf Netzwerkebene grundlegend nachzubauen. Das wäre etwas, wo ich mich dran gewagt hätte, um eine rudimentäre Unterstützung hin zu bekommen (schon allein wegen des erweiterten Feature Sets, was für mich selbst das einzig interessante wäre). Für die Funktion auf Netzebene finde ich allerdings keine Dokumentation und eine Analyse per Wireshark nebst Quellcode Analyse der C Bibliotheken ist mir zu aufwändig. Ich denke das leuchtet ein, ich brauche diese Funktion für mich selbst eben nicht zwingend.

Zitat von: Sturi2011 am 12 März 2014, 20:11:09
gefühlt machen die HUEs nun Sprünge und hängen nach...das war in der vorherigen Version runder.



Ich bastel da noch weiter.
Aktuell stand im Fokus, dass die Performance so gut wie möglich wird, damit nach Möglichkeit eine Synchronizität mit dem Ambilight nahezu erreicht wird (eben wie bei der Original App). Das ist mir auch gelungen, allerdings zeigt es sich, dass die Entfernung der Bridge zu den Leuchten dabei dann auch Relevant wird. Das ist wohl das, was du gerade erlebst. Die Befehle werden aktuell sehr schnell (bei mir ~7-11 Mal pro Sekunde; die Steigerung zur alten Version beträgt hier etwa 150% zur alten Version) ausgelesen und an die Bridge übertragen. Philips selbst sagt sie empfehlen maximal 10 pro Sekunde. Entweder also ist die Bridge damit überfordert, die Befehle in dieser Anzahl an deine Bulbs zu senden oder aber die Entfernung (und damit der Funkempfang) sind so weit, dass die Bulbs nicht jeden Befehl richtig bekommen und es wird ruppig. Ich überlege noch, mit welchen Stellschrauben ich das verflüssige. Es gibt Ideen, aber es braucht Zeit die alle auszuprobieren und zu schauen, wie die einzelnen Parameter sich auswirken. Da ich das alles in meiner ohnehin knapp bemessenen Freizeit mache, kann ich nicht sagen, wie lange das dauern wird.
Eine Möglichkeit ist die simple künstliche Verzögerung für das Abfrage-Interval der Bridge (aka ambiHueLatency Attribut) wieder mit aufzunehmen. Das empfinde ich allerdings als eine eher suboptimale Lösung. Ich kann auch leider gerade nichtmals mit dem Verhalten der Original-App vergleichen, weil sie seit einem Firmware Update des TV (oder der App selbst, keine Ahnung) nicht mehr funktioniert (Voodoo Fehler, ich bin wohl nicht der einzige...).


Es gilt auch noch zu berücksichtigen, dass man das Ambilight am TV ja auch noch entsprechend mehr dynamisch und weniger dynamisch gekoppelt mit mehr Helligkeit und weniger Helligkeit einstellen kann. Damit beeinflusst man auch schon das Verhalten im PHTV Modul und dem ambiHue Modus.


Was meiner Ansicht nach momentan bei mir sehr gut funktioniert ist, wenn ich das Ambilight auf sehr dynamisch und hohe Helligkeit einstelle und dann Musikvideos abspiele (meine Bridge steht inzwischen statt im Flur direkt im Wohnzimmer). Die Veränderungen werden nahezu synchron an die HUE Lampen übertragen und bringen wirklich einen bombastischen Effekt. Was es jetzt noch auszuloten gilt ist, wie man das ganze angenehm bei z.B. einer Talkshow Sendung mit einbringt, bei der es nicht so viele Veränderungen gibt und wo die häufige Abfragefrequenz wohl manchmal zu Fehlern/Ausläufern führt. Wo ich gerne hinkommen würde ist, dass trotz der hohen Abfragefrequenz ein angenehmer Effekt sowohl bei ruhigen Sendungen als auch bei schnellen Bildschnitten entsteht. Das ist die Herausforderung und in der Ambilight+Hue App von Philips steckt meiner Ansicht nach mehr Intelligenz drin, als man auf den ersten Blick vermuten mag. Ich möchte auch gar nicht die App 1zu1 nachbauen, sie reagierte für mich auch nicht immer ideal. Mein Ziel ist eigentlich ein Verhalten, dass noch besser und gleichzeitig noch flexibler einstellbar ist. Es soll eben nur nicht notwendig sein, dass man an den Einstellungen etwas verändern muss, nur weil man ein Musikvideo oder eine Talkshow anschaut. Eine einmalige Justierung auf die lokalen Gegebenheiten und Vorzüge sollte ausreichen. Dabei spielen für mich technisch eigentlich wie gesagt dann auch nur die Abstände zwischen der Bridge und den Bulbs sowie der Anzahl der zu versorgenden Bulbs eine Rolle.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER