Neues Modul "PhilipsTV"

Begonnen von RalfP, 08 November 2022, 15:25:09

Vorheriges Thema - Nächstes Thema

RalfP

## PhilipsTV Version 0.2.17 ##################################################################

Habe einige Stresstests durchgeführt. Dabei sind noch ein paar kleine Änderungen eingeflossen, um fehlerhafte Antworten vom TV abzufangen.

Prototyping nach Tipp von CoolTux umgesetzt, vielen Dank dafür.

Timeouts für https Requests optimiert, sind jetzt Standard 2s. Ist bei Bedarf über Attr requestTimeout anpassbar. Bei mir läuft es mit 1s.

viel Spaß beim Testen
Ralf


## PhilipsTV Version 0.2.15 ##################################################################

Die Applications können jetzt gestartet werden.

MenuItems sind jetzt flexibler aufgebaut, schon aus dem Grund, das beim letzten Update der TV Software die Struktur sich verändert hatte. In der Hilfe habe ich einige Hinweise dazu, sonst gern nachfragen.
Hinweis: Nach dem Update der TV Software war auch eine neues Pairing notwendig. Philips hat wohl dabei alle Pairings gelöscht.

Die Readings ChannelName und ChannelNo bitte löschen. Die sind jetzt CurrentChannelName und CurrentChannelNo geworden.
Weitere Neuerungen können der Hilfe DE entnommen werden.

viel Spaß beim Testen
Ralf


## PhilipsTV Version 0.2.12 ##################################################################

Die Senderlistenverwaltung ist komplett umgebaut. Vielen Dank für die Rückmeldungen.

Die Readings ChannelName und ChannelNo bitte löschen. Die sind jetzt CurrentChannelName und CurrentChannelNo geworden.

Weitere Neuerungen können der Hilfe DE entnommen werden.

PS: sollte es beim ersten Start etwas hakeln mit UPnP, macht bitte ein RescanNetwork.

viel Spaß beim Testen
Ralf


## PhilipsTV Version 0.2.5 Beta ##############################################################

Das Thema mit der leeren Senderliste müsste erledigt sein.

Fehlermeldungen wie "401 Unauthorized" habe ich ins Loglevel 4 verbannt. Intern wird beim Auftreten dieser Antwort vom TV der Request wiederholt. Max 3x, bisher aber war nur eine Wiederholung erkennbar.

Für TV's ohne NotifyChange = http habe ich das Polling erweitert, schaut mal ob es funktioniert.

viel Spaß beim Testen
Ralf


## PhilipsTV Version 0.2.3 Beta ##############################################################

Auf Grund von Rückmeldungen habe ich das Modul ein wenig umbauen müssen. Leider konnte ich nicht mehr am UDN als eindeutige Kennung des Fernsehers festhalten und habe jetzt die IP-Adresse dafür benutzt.
Damit verändert sich aber auch der Name des Devices, welches neu angelegt wird.
Wer kein neues Pairing durchführen möchte, sollte sich vor dem Update deviceID und authKey notieren. Die Attr können dann gesetzt werden und die Verbindung sollte wieder etabliert werden können, wie vorher.

Zusätzlich wird jetzt per Polling der aktuelle Sender angezeigt. Auch ist eine Senderwahl möglich.

Last mal hören, ob es funktioniert. Wenn jemand zwei oder mehr Philips-Fernseher hat und diese als Device ordnungsgemäß angelegt werden - bitte mal melden, vielen Dank

viel Spaß beim Testen
Ralf


## PhilipsTV Version 0.1.8 Beta ##############################################################

Ich möchte euch gern ein neues Modul "PhilipsTV" vorstellen.

Es baut auf vielen Erfahrungen hier im Forum, wie auch meines MagentaTV Modules, betreffs Upnp, auf.

Das Ganze ist natürlich noch an mancher Stelle evtl. nicht ganz stabil, deshalb auch noch als Beta bezeichnet. Ich übernehme keinerlei Gewähr.

Getestet hab ich es mit einem 65OLED805/12.

Das Modul ist auf meinem Webaccount verfügbar und lässt sich wie folgt einbinden:
update all https://www.rp-dev.de/fhem/philipstv/controls_philipstv.txt
oder
update add https://www.rp-dev.de/fhem/philipstv/controls_philipstv.txt

define <name> PhilipsTV

Wenn ihr eure(n) Fernseher einschaltet, sollte diese(r) gefunden werden. Ein entsprechendes Device wird automatisch angelegt. Anschließend führt ihr das Pairing aus. Den Pin, der auf dem Ferseher angezeigt wird, gebt ihr dann ein. Ca. 1 Minute ist dafür Zeit. Anschließend sollten die Zugangsdaten vorhanden sein, welche mit Save config gespeichert werden können, da sie zusätzlich in einem Attr gespeichert werden.

Last mal hören, ob es bei euch funktioniert.

Ich habe mir das Modul gebaut, um automatisiert die Lippensynchronisierung bei HDMI immer wieder einzuschalten, was Philips leider bisher nicht hinbekommen hatte.
set TV_xxxxxxxxxx MenuItem AUDIO_OUT_DELAY 2

Habe noch einige Ideen, die ich noch versuchen werde umzusetzen. Bald gibt es ja wieder die Zeit zum basteln  ;)

viel Spaß
Ralf

dyna

Moin RalfP,

vielen Dank für das Modul. Funktioniert super.

Grüße
Jens

KölnSolar

Hallo Ralf,
Du kennst meine (noch nicht ausgereiften) Universalmodule zu upnp/dlna ?
Welche "Basis"-Perlfunktionalität setzt Du ein ?
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

RalfP

Hallo Markus,

ich glaube du hattest mich schon einmal vor längerer Zeit angesprochen, damals noch betreffs des MagentaTV Modules.
Auch diesmal habe ich die in Fhem integrierte Lösung von Reinerlein genutzt. Bin sogar besser zurechtgekommen als damals, da Philips sich mehr an Standards zu halten scheint. Leider beschränkt sich die Nutzungsmöglichkeit nur auf das Finden des Gerätes, sowie der Audio Einstellungen. Mehr scheint nicht umgesetzt. Hätte mir eine erweitertes Eventing schon gewünscht. Somit wird für weitere geplante Funktionen im Modul nur ein zusätzliches Pooling möglich sein  :-\

Grüße Ralf

KölnSolar

Hi Ralf,
Zitatich glaube du hattest mich schon einmal vor längerer Zeit angesprochen, damals noch betreffs des MagentaTV Modules.
Das kann gut sein.  :D Das MagentaTV hat aber mehr Funktionalität als DLNA, wenn ich mich recht entsinne.
ZitatLeider beschränkt sich die Nutzungsmöglichkeit nur auf das Finden des Gerätes, sowie der Audio Einstellungen.
Das sollte dann out-of-the-box mit meinem DLNAController auch funktionieren.
ZitatMehr scheint nicht umgesetzt.
Ob andere Services per UPnP unterstützt werden, würdest Du in meinem UPNPController sehen, der die Basis für den DLNAController ist und sämtliche UPnP services "listet". Nur bei DLNA-services findet ein Automatismus(2-stufiges Modul) statt.
ZitatAuch diesmal habe ich die in Fhem integrierte Lösung von Reinerlein genutzt.
Das ist ja der UPNP-Perl-Standard, auf dem ich auch aufsetze. Der macht nur leider in gewissen Konstellation auch gerne unsägliche freezes.  :'( Ich werde daher jetzt in den kalten Monaten eine Lösung ohne freezes erarbeiten.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

dyna

Hallo Ralf,

ich habe die bridge angelegt
define Philips_TV_Bridge PhilipsTV PHILIPS
attr Philips_TV_Bridge room Netz
attr Philips_TV_Bridge verbose 0
#   DEF        PHILIPS
#   FUUID      636f7a90-f33f-a551-37d9-a9897bca1d5f847b
#   NAME       Philips_TV_Bridge
#   NR         597
#   STATE      Upnp is running
#   SUBTYPE    PHILIPS
#   TYPE       PhilipsTV
#   VERSION    v0.1.8
#   eventCount 5
#   subscriptionURL <http://192.168.67.17:46557/eventSub>
#   READINGS:
#     2022-11-15 21:37:12   state           Upnp is running
#   helper:
#     pair:
#     upnp:
#   hmccu:
#
setstate Philips_TV_Bridge Upnp is running
setstate Philips_TV_Bridge 2022-11-15 21:37:12 state Upnp is running

es werden immer neue Geräte angelegt. Ich vermute, dass der Fernseher seine MAC ändert.


Philips_TV_Bridge
TV_0000000006D0
TV_0000000007D0
TV_000000001BCE
TV_000000007BCE
TV_00000000B6CF
TV_00000000F6CF
UPnPSocket_Philips_TV_Bridge
UPnPSocket_Philips_TV_Bridge_1900
UPnPSocket_Philips_TV_Bridge_46557


Eins dieser Geräte als Beispiel

define Philips_TV PhilipsTV TV 192.168.67.39 uuid:F00DBABE-AA5E-BABA-DADA-000000001CCE
attr Philips_TV authKey 1c67dffe776786c4dbfa3449e534f21c436d3bf173961e2f545e4cc97a172737
attr Philips_TV devStateIcon offline:control_home:on online:control_on_off:on standby:control_standby@red:on standby-keep:control_standby@red:on on:control_standby@gray:off set-online:refresh
attr Philips_TV deviceID h4BCTcbPNziYjsQ3ngkgGGBJafopdyw2
attr Philips_TV room Netz
attr Philips_TV verbose 0
attr Philips_TV webCmd :
#   CFGFN     
#   DEF        TV 192.168.67.39 uuid:F00DBABE-AA5E-BABA-DADA-000000001CCE
#   FUUID      6374e2ca-f33f-a551-822c-bdc117ba5763ba55
#   IP         192.168.67.39
#   MAC        00:00:00:00:1C:CE
#   NAME       Philips_TV
#   NR         8441
#   STATE      offline
#   SUBTYPE    TV
#   TYPE       PhilipsTV
#   UDN        uuid:F00DBABE-AA5E-BABA-DADA-000000001CCE
#   VERSION    v0.1.8
#   eventCount 24
#   system_WOLonETH Disabled
#   system_WOLonWifi Enabled
#   system_apiVersion 6.4.0
#   system_model 43PUS7304/12
#   system_pairingType digest_auth_pairing
#   upnp_deviceType urn:schemas-upnp-org:device:MediaRenderer:3
#   upnp_friendlyName 43PUS7304/12
#   upnp_location http://192.168.67.39:49153/nmrDescription.xml
#   upnp_modelName Philips TV DMR
#   READINGS:
#     2022-11-16 14:18:41   Mute            0
#     2022-11-16 14:18:54   Powerstate      On
#     2022-11-16 14:18:44   Storage         Mounted
#     2022-11-16 14:18:41   Volume          11
#     2022-11-16 14:18:07   authKey         1c67dffe776786c4dbfa3449e534f21c436d3bf173961e2f545e4cc97a172737
#     2022-11-16 14:18:07   deviceID        h4BCTcbPNziYjsQ3ngkgGGBJafopdyw2
#     2022-11-16 14:24:45   state           offline
#   helper:
#     lastResponse
#     storage    Mounted
#     commands:
#       ambilight  audio_adapt_brightness,audio_adapt_colors,audio_flash,audio_knight_rider_1,audio_knight_rider_2,audio_party,audio_random,audio_spectrum,audio_strobo,audio_vu_meter,color,color_cool_white,color_deep_water,color_fresh_nature,color_hot_lava,color_warm_white,off,on,video_comfort,video_game,video_natural,video_relax,video_standard,video_vivid
#       remote     adjust,ambilight_onoff,back,blue,channel_down,channel_up,confirm,cursor_down,cursor_left,cursor_right,cursor_up,digit_0,digit_1,digit_2,digit_3,digit_4,digit_5,digit_6,digit_7,digit_8,digit_9,dot,fast_forward,find,green,home,info,mute,next,online,options,pause,play,play_pause,previous,record,red,rewind,source,standby,stop,subtitle,teletext,viewmode,volume_down,volume_up,watch_tv,yellow
#     grant:
#       error_id   SUCCESS
#       error_text Pairing completed
#     network:
#       HASH(0x55dc8496e508)
#       HASH(0x55dc85232ff8)
#     notifychange:
#       system/storage/status Mounted
#       network/devices:
#         HASH(0x55dc8496e508)
#         HASH(0x55dc85232ff8)
#       powerstate:
#         powerstate On
#     on:
#       RUN        2
#     pair:
#       RUN        0
#       auth_key   1c67dffe776786c4dbfa3449e534f21c436d3bf173961e2f545e4cc97a172737
#       error_id   SUCCESS
#       error_text Authorization required
#       timeout    60
#       timestamp  110849
#     powerstate:
#       powerstate On
#     system:
#       api        6
#       port       1926
#       protokoll  https://
#       system:
#         country    Germany
#         deviceid_encrypted yYwBUEhT1XfJCm2Pee4T04AmPjr5sZSSxNCWSiRRDUU=
#
#         epgsource  broadcast
#         menulanguage German
#         model_encrypted lwiBcDzspMu1jxzs1Bpl+msP/hbLLORFaTMX7tfIdoU=
#
#         name       43PUS7304/12
#         nettvversion 9.0.0
#         notifyChange http
#         os_type    MSAF_2019_P
#         serialnumber_encrypted JTYexc6J/Mtuu4fA8H53PfwJesPhtENrr+9zQ6ag7tc=
#
#         softwareversion_encrypted fY5yYt+U2pSzZyWhiY1GvlAWnqpVF3Fgd44lrj3vKfDxnCGZW6DaaEv0V2zWBnYU
#
#         api_version:
#           Major      6
#           Minor      4
#           Patch      0
#         featuring:
#           jsonfeatures:
#             activities:
#               intent
#             ambilight:
#               LoungeLight
#               Hue
#               Ambilight
#               HueStreaming
#             applications:
#               TV_Apps
#               TV_Games
#               TV_Settings
#             channels:
#               preset_string
#             editfavorites:
#               TVChannels
#               SatChannels
#             inputkey:
#               key
#             mappings:
#               server_mapping
#             menuitems:
#               Setup_Menu
#             pointer:
#               not_available
#             recordings:
#               List
#               Schedule
#               Manage
#             textentry:
#               not_available
#           systemfeatures:
#             companion_screen true
#             pairing_type digest_auth_pairing
#             secured_transport true
#             tvsearch   intent
#             tvtype     consumer
#             content:
#               dmr
#               pvr
#     upnp:
#       STATE      2
#       keepalive  200
#     volume:
#       Master:
#         current    11
#         mute       0
#   hmccu:
#
setstate Philips_TV offline
setstate Philips_TV 2022-11-16 14:18:41 Mute 0
setstate Philips_TV 2022-11-16 14:18:54 Powerstate On
setstate Philips_TV 2022-11-16 14:18:44 Storage Mounted
setstate Philips_TV 2022-11-16 14:18:41 Volume 11
setstate Philips_TV 2022-11-16 14:18:07 authKey 1c67dffe776786c4dbfa3449e534f21c436d3bf173961e2f545e4cc97a172737
setstate Philips_TV 2022-11-16 14:18:07 deviceID h4BCTcbPNziYjsQ3ngkgGGBJafopdyw2
setstate Philips_TV 2022-11-16 14:24:45 state offline



Kann ich diese Anlage weiterer Geräte verhindern?

Grüße
Jens

KyleK

Hallo,

ich hab das Modul bei mir installiert und es scheint mit meinem Fernseher -- ein 55PUS7502/12 von 2017(?) -- recht gut zu funktionieren.

2 Sachen habe jedoch festgestellt:

1. Ich habe immer wieder im Log diese Fehlermeldung:

2022.11.16 14:10:49 2: myTV: <Read> socket UPnPSocket_myTV_1900 - handleOnce failed: Loading device description failed with error: 500 Can't connect to 192.168.178.87:36799 (Connection refused) (Location: http://192.168.178.87:36799/upnp/dev/f72ef643-67f0-4431-89bc-5f882f0347f7/desc)

Das ist nich die IP meines Fernsehers, sondern die eines FireTVs (der am Receiver hängt).
Warum versucht das Modul mit dem FireTV zu kommunizieren?

2. Die Ambilight-Befehle funktionieren bei mir nicht:
Wenn ich in der Liste unter "Ambilight" audio_vu_meter auswähle,
gibts eine Fehlermeldung im Log:

2022.11.16 14:26:42 1: TV_70af240fb88d: Error - 'audio_vu_meter' - Command not exist!


Laut code müsste das command ambilight_audio_vu_meter heißen, oder?
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

RalfP

Hallo,

erst einmal das, was ich schnell beantworten kann:

2022.11.16 14:10:49 2: myTV: <Read> socket UPnPSocket_myTV_1900 - handleOnce failed: Loading device description failed with error: 500 Can't connect to 192.168.178.87:36799 (Connection refused) (Location: http://192.168.178.87:36799/upnp/dev/f72ef643-67f0-4431-89bc-5f882f0347f7/desc)


Im PHILIPS Device (SUBTYPE = PHILIPS) kannst du unliebsame Upnp Teilnehmer per IP oder UDN ignorieren.

attr <name> ignoreIPs <IP>
Eine Liste (durch Kommas oder Leerzeichen getrennt) von IPs die ignoriert werden sollen.

Das andere muss ich mir mal anschauen  ???

Grüße Ralf

RalfP

Hallo,

Ambilight habe ich etwas stiefmütterlich behandelt, sorry. Habe den Fehler gefunden. Alle Ambilight Befehle sind betroffen. Wird in einer der nächsten Versionen bereinigt sein.

Für die, die ganz schnell eine Lösung haben möchten:

Zeile 886

PhilipsTV_Request($hash, $args[0]);


abändern in;

PhilipsTV_Request($hash, "ambilight_".$args[0]);


Vielen Dank für die Rückmeldung, hätte es selbst wohl erst viel später bemerkt, da ich selbst das Ambilight kaum verändere.

Grüße Ralf

RalfP

Hallo Jens,

:o das ist ja interessant. Die MAC Adresse entnehme ich der uuid (UDN). Die letzte Gruppe entspricht normalerweise der MAC, was ich dann auch für die eindeutige Bezeichnung des Device Namens nehme.

Kannst du mir mal die Upnp Beschreibungsdatei zukommen lassen?

Gib folgendes im Browser ein, wenn dein TV eingeschaltet ist:

http://192.168.67.39:49153/nmrDescription.xml


Schau auch mal ob <UDN> in der nmrDescription.xml sich bei dir wirklich ständig ändert. Wenn, dann wahrscheinlich wenn der TV aus- und eingeschaltet wurde.

Grüße Ralf

dyna

Moin Ralf,

die UDN ist jeweils verschieden, bisher haben sich sieben Einträge ergeben. Leider kann ich erst morgen weiter probieren.
Der Fernseher und ich wird sind zur Zeit nicht am gleichen Ort.

die XML-Datei habe ich angehangen.

Grüße
Jens

RalfP

Hallo Jens,

nicht schön, was Philips da macht  >:(  Ich lass mir etwas einfallen, eine Idee hab ich schon.

Grüße Ralf

RalfP

Hallo Jens,

ich habe Einiges umgebaut. Bitte probiere mal, ob es jetzt funktioniert mit den sich wechselnden UDN's. Ich habe es noch nicht zum automatischen Update eingestellt. Das Modul kannst du hier laden und musst es dann mal händisch austauschen. Evtl. vorher das alte Modul aus deiner Config löschen.
https://www.rp-dev.de/fhem/philipstv_beta/FHEM/70_PhilipsTV.pm

Ich nehme jetzt nicht mehr die UDN für den internen Betrieb des Moduls, sondern die IP. Die sollte ja auch eindeutig sein  ;) Eine IP pro Gerät. Die MAC Adresse hole ich mir jetzt aus den Netzwerkeinstellungen des Fernsehers. Ähnlich wie die Credentials, speichere ich die MAC dann in dem attr macAddress. Mit einem Save config gehts in die Configdatei und ist damit nach einem Reboot auch gleich wieder verfügbar, um dem Fernseher per WOL wieder einschalten zu können.

Du wirst auch bemerken, das der erzeugte Device Name jetzt die IP beinhaltet. Für mich wichtig, das ich erst einmal einen eindeutigen Namen erzeuge. Dieser kann dann später umbenannt werden.

Zwischenzeitlich hatte ich auch andere Dinge noch begonnen, wie z.B. das die Sender jetzt auswählbar sein sollten, wie auch der Aktuelle angezeigt wird. Dafür musste ich aber ein Pooling nun einbauen.
Ich bin mit den zusätzlichen Funktionen aber noch nicht ganz sauber. Wichtig wäre jetzt für mich zu wissen, ob ich mit der neuen Methode deinen Fall abdecken kann und mit dieser ab jetzt weiterarbeiten kann. Mit meinem TV funktioniert es sehr gut.

PS: Wenn jemand zwei oder mehr Philips-Fernseher hat und diese als Device ordnungsgemäß angelegt werden - bitte mal melden, vielen Dank

Grüße Ralf

dyna

Moin Ralf,

vielen Dank.
Ich habe das neue Modul getestet. Es wird nur ein Device angelegt und die Funktionalität ist auch gegeben. Einen ausführlichen Test mache ich morgen.

Grüße
Jens

dyna

#14
Moin Ralf,

mit dem neuen Modul funktiniert alles was ich brauche. Fehler in der Nutzung des TV habe ich nicht gefunden.
Nur umbenennen des aumatisch angelegten Devices geht manchmal nicht und bei der Zuweisung des attr room bekommt man keine Auswahl angezeigt.

Grüße
Jens