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

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

Vorheriges Thema - Nächstes Thema

Cruiser79

Zitat von: Loredo am 10 Dezember 2014, 10:44:22

Diese Meldungen sagen, dass dein Fernseher nicht die erwartete bzw. keine Rückmeldung auf diese Kommandos schickt. Um zu vermeiden, dass nicht funktionierende Kommandos unnützerweise an den TV geschickt werden und dessen Performance noch stärker belasten, werden die als fehlerhaft arbeitenden Kommandos zwischengespeichert und nicht mehr zugelassen bzw. automatisch verwendet.
Generell wird dabei so vorgegangen, dass eine Antwort auf das Kommando audio/volume dazu genutzt wird zu erkennen, ob der TV betriebsbereit ist. Alle weiteren Kommandos wie das Abfragen der Kanalliste etc werden erst dann geschickt. Dies scheint bei dir auch der Fall zu sein. Es wird aber eben erwartet, dass der TV, weil er ja online ist, dann auch eine Antwort darauf schickt. Tut er das nicht, verhält er sich eben falsch oder hat sonst irgend einen Fehler und das Modul verhindert dann, dass der TV noch mehr mit Anfragen überschüttet wird, die er dann ja offenbar nicht verarbeiten kann (oder aus welchem Grund auch immer er dann keine Antwort mehr liefert).


Bei gesetzten Attribut verbose=5 siehst du im Logfile, was genau der TV liefert (oder eben nicht).
Mir ist gerade für diese Problematik noch eine Idee gekommen. Die "älteren" Fernseher scheinen ja hier das Problem zu haben, das sie beim Anschalten erst einmal hochfahren müssen, bis sie voll ansprechbar sind. Auch zu sehen daran, das mein TV z.b. direkt nach dem Anschalten keine Fernbedienungsaktionen annimmt, oder diese erst mit Verzögerung ausführt.
Dadurch kommen solche Benutzer jetzt in das Dilemma, das das PHTV Modul zwar merkt, "audio/volume" geht, also hau ich alle weiteren Kommandos gleich auch raus. Das scheint dann diese Modelle zu überfordern und sie liefern nichts, oder dieses nicht schnell genug.
Meine Idee nun war, ob du nicht einbauen könntest, das man per Attribut einen Defaultsleep angeben kann, der nach der audio/volume-Fernseher-ist-an-Erkennung diese Zeit wartet, bis er die weiteren Abfragen stellt. Nach mehreren Sekunden sind dann ja auch die schwachbrünstigen Systeme soweit hochgefahren, das sie alle Anfragen ordentlich beantworten.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Loredo

Zitat von: Cruiser79 am 10 Dezember 2014, 11:19:17
Meine Idee nun war, ob du nicht einbauen könntest, das man per Attribut einen Defaultsleep angeben kann, der nach der audio/volume-Fernseher-ist-an-Erkennung diese Zeit wartet, bis er die weiteren Abfragen stellt. Nach mehreren Sekunden sind dann ja auch die schwachbrünstigen Systeme soweit hochgefahren, das sie alle Anfragen ordentlich beantworten.


Ich denke das ist ein guter Vorschlag. Ich schau mal, ob ich das über die Feiertage vielleicht einbaue. Viel Zeit hab ich dafür grad nicht übrig.
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

Cruiser79

Zitat von: Loredo am 10 Dezember 2014, 20:13:01

Ich denke das ist ein guter Vorschlag. Ich schau mal, ob ich das über die Feiertage vielleicht einbaue. Viel Zeit hab ich dafür grad nicht übrig.
Sehr schön, ich bin gespannt. Ich würde dann aber das sequentialQuery Attribute weiterhin drin lassen, damit man auch den langsamsten Philips TV noch genug Zeit gibt. Dann sollte ja jeder genug Einstellmöglichkeiten haben um seinen TV zum reagieren zu bekommen.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Loredo

#138
Anbei jetzt mal eine Version mit drippyFactor für die lahmarschigen Geräte  8)
Bitte mal ausprobieren, ob's hilft.
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

dirk.msc

Hallo Loredo,
vielen Dank für Deine Rückmeldung. Ich habe mir gerade mal die Farbumrechnung angeschaut und die Funktion wie folgt angepasst:

sub PHTV_rgb2hsv($$$) {
    my ( $r, $g, $b ) = @_;
    my ( $M, $m, $c, $h, $s, $v );

    $M = PHTV_max( $r, $g, $b );
    $m = PHTV_min( $r, $g, $b );
    $c = $M - $m;

    if ( $c == 0 ) {
        $h = 0;
    }
    elsif ( $M == $r ) {
        $h = ( 60 * ( ( $g - $b ) / $c ) % 360 ) / 360;
    }
    elsif ( $M == $g ) {
        $h = ( 60 * ( ( $b - $r ) / $c ) + 120 ) / 360;
    }
    elsif ( $M == $b ) {
        $h = ( 60 * ( ( $r - $g ) / $c ) + 240 ) / 360;
    }
    if ( $h < 0 ) {
        $h = $h + 1;
    }

    if ( $M == 0 || $m == 1 ) {
        $s = 0;
    }
    else {
        $s = $c / ( 1-abs($M+$m-1) );
    }
    $v = $M;

    Log3 undef, 5, "PHTV rgb2hsv: $r $g $b > $h $s $v";

    return {
        "h" => $h,
        "s" => $s,
        "v" => $v
    };
}


Ich müsste mal noch etwas weiter testen, wenn ich Zeit habe, aber so wie es ausschaut, ist damit das Problem mit den Fehlfarben gelöst. Es wäre also prima, wenn Du diesen Code in den nächsten TAG übernimmst.

Viele Grüße
  Dirk

Cruiser79

Zitat von: Loredo am 11 Dezember 2014, 12:41:19
Anbei jetzt mal eine Version mit drippyFactor für die lahmarschigen Geräte  8)
Bitte mal ausprobieren, ob's hilft.
Kann es leider erst morgen testen. Ich wollte aber meinen drippyFactor auf 20 Sekunden oder ähnliches setzen. Sehe ich das im Code richtig, das hier ein sleep der Sekunden gemacht wird, die ich per drippyFactor eingestellt habe? D.h. ein kompletter Sleep von FHEM für diese Zeit? Dürfte dann etwas unschön sein, weil damit dann ja gar nichts mehr geht, oder funktioniert FHEM trotzdem weiter?
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

DOCa Cola

schön :) werde den umrechnungscode später auch mal testen ob er bessere farbwerte produziert

ist es möglich, dass ich einer hue seite zwei lampen zuweise? wenn ich es richtig verstehe scheint es im moment nur möglich zu sein, eine 1:1 zuorndung einzurichten. Das Problem damit ist allerdings auch, dass ich im moment 5 HUE Lampen habe, mit der Lösung aber nur 3 Davon ansteuern kann.

eventuell könnte man das system auch ein wenig überdenken. In hambisync ist es so gelöst, dass man jeder hue lampe eine oder mehrere leds von mehreren seiten zuweisen kann. So kann man dort z.B auch einstellen, dass eine Lampe an der Decke nicht nur z.B die farben des oberen Randes nimmt, sondern verschiedene LEDs aller seiten. Umgesetzt wird das dort via JSON, was für FHEM so nicht brauchbar ist. Soll aber nur mal zur Veranschaulichung dienen:

    "4": {
        "left": [2],
        "right": [2],
        "top": [4, 5],

        "brightness": 1,
        "immersion": 10,
        "transition": 3
    }

Die Hue Lampe mit der ID von 4 (in FHEM wohl dann HUEDevice4) nimmt also Farbwerte von einer LED vom linken Ambilight Rand, eine vom rechten und zwei vom oberen Rand.
Vielleicht könnte man die Logik umbauen, damit sie sich an einzelnen Lampen orientiert.

Loredo

Zitat von: Cruiser79 am 11 Dezember 2014, 13:38:13
Kann es leider erst morgen testen. Ich wollte aber meinen drippyFactor auf 20 Sekunden oder ähnliches setzen. Sehe ich das im Code richtig, das hier ein sleep der Sekunden gemacht wird, die ich per drippyFactor eingestellt habe? D.h. ein kompletter Sleep von FHEM für diese Zeit? Dürfte dann etwas unschön sein, weil damit dann ja gar nichts mehr geht, oder funktioniert FHEM trotzdem weiter?


Das Kommando ist nicht blockierend.
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

Cruiser79

Zitat von: Loredo am 11 Dezember 2014, 13:39:04

Das Kommando ist nicht blockierend.
Sehr schön, habe gerade mir die Frage auch selbst beantwortet. http://forum.fhem.de/index.php?topic=27305.0 Dachte nur, man müsste extra etwas wie bei einem HTTP Aufruf (HttpUtils_NonblockingGet) aufrufen und auf das Ende von Sleep warten.
Dann steht meinem Test am WE ja nichts im Wege, schön das es doch schon so schnell mit der Umsetzung geklappt hat  :)
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Cruiser79

Zitat von: Cruiser79 am 11 Dezember 2014, 13:42:50
Sehr schön, habe gerade mir die Frage auch selbst beantwortet. http://forum.fhem.de/index.php?topic=27305.0 Dachte nur, man müsste extra etwas wie bei einem HTTP Aufruf (HttpUtils_NonblockingGet) aufrufen und auf das Ende von Sleep warten.
Dann steht meinem Test am WE ja nichts im Wege, schön das es doch schon so schnell mit der Umsetzung geklappt hat  :)
Oder doch nicht? Zu schnell gelesen? In dem Post sagt Rudolf doch: "FHEM-sleep gefolgt von einem Befehl startet dieses Befehl mit einem internen Timer,  ist also sowas wie ein at ohne Namen, und blockiert FHEM nicht. FHEM-sleep ohne ein FHEM-Befehl dahinter ist nichts anderes als ein perl-sleep, und blockiert FHEM. Man sollte die Finger davon lassen."
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Loredo

Zitat von: DOCa Cola am 11 Dezember 2014, 13:38:46
ist es möglich, dass ich einer hue seite zwei lampen zuweise? wenn ich es richtig verstehe scheint es im moment nur möglich zu sein, eine 1:1 zuorndung einzurichten.

Nein, das funktioniert auch jetzt. Einfach im jeweiligen Attribut (ambiHueLeft/ambiHueRight/ambiHueTop/ambiHueBottom) die einzelnen Hue-Devicenamen mit Leerzeichen trennen. Du kannst jeder Ambilight Seite eine beliebige Anzahl von Hue-Leuchten zuweisen. Für jedes Hue-Device kann dann wiederum durch die Trennung mit Doppelpunkt genauer spezifiziert werden, welche LEDs der Seite für die Farbberechnung des Hue-Gerätes verwendet werden sollen. Siehe Beispiele unter "Advanced Ambilight+HUE Control" in der Kommandoreferenz.
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

DOCa Cola

ah, super
Ja, in der Referenz sind so wie ich das sehe immer nur Beispiele für ein einzelnes HUEDevice drin. Deswegen nahm ich an, es geht auch nur mit einem.
Danke, werd ich nachher mal testen.

dirk.msc

Ich hätte mal noch ein paar Ideen:
1. Wenn ein TV so wie meiner keine LEDs oben und unten hat, könnte man doch automatisch einen Lichtwert aus den oberen bzw. unteren LEDs links und rechts berechnen und in die Datenstruktur packen. Auf diese Weise könnte man dann trotzdem Lampen zu top und bottom hinzufügen.

2. Ich würde Ambihue gern defaultmäßig aktivieren, damit es immer aktiv ist, wenn Lampen und TV an sind.

3. Die errechneten Helligkeitswerte sind immer recht dunkel. Ich hätte gern einen Korrekturregler zum heller bzw. dunkler drehen.

Loredo

#148

Zitat von: dirk.msc am 11 Dezember 2014, 17:23:26
1. Wenn ein TV so wie meiner keine LEDs oben und unten hat, könnte man doch automatisch einen Lichtwert aus den oberen bzw. unteren LEDs links und rechts berechnen und in die Datenstruktur packen. Auf diese Weise könnte man dann trotzdem Lampen zu top und bottom hinzufügen.


Ich glaube nicht, dass das sinnvoll ist. Denn gerade auf der langen Strecke oben und unten sind die Farben doch deutlich differenzierter. Sie über die Seiten zu emulieren würde dir nicht das von dir erwartete Ergebnis bringen. Im Zweifel wäre es eine völlige Fehlfarbe, wenn rechts und links gerade starke Unterschiede sind (mit Ausnahme der Tagesschau u.a. mal abgesehen  ;D ).


Zitat von: dirk.msc am 11 Dezember 2014, 17:23:26
2. Ich würde Ambihue gern defaultmäßig aktivieren, damit es immer aktiv ist, wenn Lampen und TV an sind.


Das löst du ganz einfach über FHEM Funktionen mit einem Notify Trigger. Dafür ist FHEM gemacht  ;)


Zitat von: dirk.msc am 11 Dezember 2014, 17:23:26
3. Die errechneten Helligkeitswerte sind immer recht dunkel. Ich hätte gern einen Korrekturregler zum heller bzw. dunkler drehen.


gibts es bereits, siehe Kommandoreferenz Beispiele "Advanced Ambilight+HUE Control --> to use default LED settings but only adjust their brightness to 50%". Brightness bedeutet Helligkeit.
Du müsstest den Helligkeitswert auch über 100 setzen können, dann wird verstärkt. Probier es mal aus.
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

Schlimbo

Hi Loredo,
ich habe vor einiger Zeit über das Problem mit der API bei den 2014er Android TVs berichtet:

http://forum.fhem.de/index.php/topic,21109.msg201743.html#msg201743

ich ersetze  momentan nach jedem Update die "1" durch "5" in der  70_PHTV.pm Date
von:  "$URL = "http://" . $address . ":" . $port . "/1/" . $service;"   
zu:    "$URL = "http://" . $address . ":" . $port . "/5/" . $service;

würde mich freuen, wenn du dafür ein attribut erstellen könntest, damit man über attr einstellen kann ob die "1" oder "5" verwendet werden soll.