Neues Modul "PhilipsTV"

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

Vorheriges Thema - Nächstes Thema

wowogiengen

Hallo,
bei mir zickt fhem rum, wenn ich mit
define WohnzimmerTV PHTV 192.168.188.40 120versuche auf meinen Fernseher zuzugreifen. Das geht soweit, dass fhem komplett abstürzt und ich es nur noch zum laufen kriege, wenn ich WohnzimmerTV  wieder lösche oder mit dem disable-attribut ausschalte.

Gibt es hierfür eine Lösung, oder wo sollte ich anfangen zu suchen?

Viele Grüße
Wolfgang

benedikt-wue

Moin...
habe seit wenigen Tagen den 55PUS8007 bei mir stehen und der MUSS natürlich in mein bestehendes FHEM mit rein :-)
Leider funktioniert das
weder mit
define TV PhilipsTvnoch mit
define TV PhilipsTv TV 192.168.188.163Beim ersten startet er wohl erfolgreich den Upnp, aber das war's dann auch, kein Parking - Code oder sonstwas
Beim zweiten zeigt er den TV zwar als online an, aber sämtliche set- oder get-Andorderungen funktionieren nicht...
Die weiter oben angegebenen Seiten mit den Ports 1926 und 1925 werden nicht gefunden... Bin etwas ratlos und würde das Modul sehr sehr gerne nutzen, daher wäre ich für Tips sehr dankbar... Schönen Nachmittag an alle

wowogiengen

#107
Hallo,
ich habe es geschafft, dass das Modul läuft (nachdem ich einige Perl-Module nachinstallieren musste), aber mein TV wird wohl nicht erkannt?

hier das Device:

Internals:
   DEF        PHILIPS
   FUUID      6466669c-f33f-a625-4857-d5115208446c363a
   NAME       TVWohnzimmer
   NR         211
   STATE      succesfull setup of Upnp Search
   SUBTYPE    PHILIPS
   TYPE       PhilipsTV
   VERSION    v0.2.17
   subscriptionURL <http://192.168.188.8:43623/eventSub>
   READINGS:
     2023-05-18 20:29:01   state           succesfull setup of Upnp Search
   helper:
     pair:
     upnp:
Attributes:
   expert     1
   room       PhilipsTV
   usedonlyIPs 192.168.188.40
   verbose    5

Ich habe auch die IP-Adresse explizit angegeben, unter der er gefunden wird...

Hier noch die XML-Datei vom TV:
<root>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Philips TV</friendlyName>
<manufacturer>Philips</manufacturer>
<manufacturerURL>http://www.philips.com</manufacturerURL>
<modelDescription>UPnP Media Renderer 1.0</modelDescription>
<modelName>NMR</modelName>
<modelNumber>1.0</modelNumber>
<modelURL>http://www.philips.com/</modelURL>
<serialNumber>12345</serialNumber>
<UDN>uuid:F00DBABE-SA5E-BABA-DADA188ED5593FC1</UDN>
<UPC>12345</UPC>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<height>48</height>
<width>48</width>
<depth>24</depth>
<url>CP_logo_0.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<height>120</height>
<width>120</width>
<depth>24</depth>
<url>CP_logo_1.png</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<height>48</height>
<width>48</width>
<depth>24</depth>
<url>CP_logo_2.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<height>120</height>
<width>120</width>
<depth>24</depth>
<url>CP_logo_3.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<controlURL>upnp/control/RenderingControl1</controlURL>
<eventSubURL>upnp/event/RenderingControl1</eventSubURL>
<SCPDURL>nmrRenderingControl.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<controlURL>upnp/control/ConnectionManager1</controlURL>
<eventSubURL>upnp/event/ConnectionManager1</eventSubURL>
<SCPDURL>nmrConnectionManager.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<controlURL>upnp/control/AVTransport1</controlURL>
<eventSubURL>upnp/event/AVTransport1</eventSubURL>
<SCPDURL>nmrAVTransport.xml</SCPDURL>
</service>
</serviceList>
<presentationURL>http://www.philips.com</presentationURL>
<dlna:X_DLNADOC>DMR-1.50</dlna:X_DLNADOC>
</device>
<pcrc:X_PhilipsCRC>4114338860</pcrc:X_PhilipsCRC>
</root>

benedikt-wue

So, nach weiterer Recherche musste ich feststellen, dass mein TV offensichtlich kein JointSpace beherrscht, was Voraussetzung für dieses Modul bzw auch pylips wäre... die Eingabe des Codes 564 687 722(3) im Live - Tv - Modus brachte jedenfalls nicht das gewünschte Label und somit entfällt das Modul wohl für mich, da der TV über die angebebenen Port 1925 bzw 1926 nicht erreichbar ist... Sehr sehr schade... sollte noch jemand das oben genannte TV - Model haben und eine Möglichkeit gefunden haben, darf er / sie sich gerne melden :-)

sam50

Hallo
Bekomme jetzt plötzlich im Log laufend diesen Fehler
75PUS8536: Error while HTTP requesting URL:http://192.168.1.150:1925/6/system - no JSON data!

sam50

Hi
So wie es aussieht ist kein Zugriff mehr über Port 1925 mehr möglich. Auch beim Aufruf der Seite kommen keine Daten mehr. Vermutlich hat das letzte Update dies geändert.

gent

Hi Was mache ich wenn ich das im Log sehe, nachdem ich alle anderen libs schon geladen habe

2023.07.04 21:07:45.888 0:  Attempt to reload UPnP/ControlPoint.pm aborted.
Compilation failed in require at ./FHEM/70_PhilipsTV.pm line 89.
BEGIN failed--compilation aborted at ./FHEM/70_PhilipsTV.pm line 89.

LG von gent
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

RalfP

Hallo gent,

schau mal, hatte ich schon mal beantwortet:

Zitat von: RalfP am 29 Januar 2023, 17:02:11Hallo Martin,

Die ControlPoint.pm benötigt aber auch noch Perl Pakete. Evtl. fehlt dir eines davon, welches du dann nachinstallierten musst:

use Carp;
use IO::Socket::INET;
use Socket;
use IO::Select;
use HTTP::Daemon;
use HTTP::Headers;
use LWP::UserAgent;
use Time::HiRes qw(usleep gettimeofday);

Aus der Hilfe von ControlPoint.pm
Since the UPnP architecture leverages several existing protocols such
as TCP, UDP, HTTP and SOAP, this module requires several Perl modules
that implement these protocols. These include
L<IO::Socket::INET|IO::Socket::INET>,
L<LWP::UserAgent|LWP::UserAgent>,
L<HTTP::Daemon|HTTP::Daemon> and
C<SOAP::Lite> (L<http://www.soaplite.com>).

Grüße
Ralf

Grüße
Ralf

RalfP

Hallo sam50,

klingt nicht gut, vor allem wenn es schon mal funktioniert hat. Ich prüfe diese Ports und API Versionen zu Beginn:
my @ports = (1925,1926);
my @apiVersions = (6,5,1);

Mein Androide TV von 2019 meldet sich auf:
          'api' => 6,
          'protokoll' => 'https://',
          'port' => '1926',

Alle anderen TV's habe ich kaum getestet, da ich leider keinen anderen hab. Ein Tipp noch, schalte mal expert auf 1, dann kannst du ein get SystemRequest evtl. durchführen. Was dann angezeigt wird, ist das, was gefunden wurde.

Du kannst auch dir dir URL in allen Varianten mal zusammenbauen und testen: Protocol://IP:Port/apiVersion/system

Grüße
Ralf

sam50

Hallo RalfP
Sorry für die späte Antwort, habe deine Mail erst gerade gelesen.
Also ich bekomme folgende Antwort auf den 'Get System Request'
'stored data:
{
          'system' => {}
        };
''
Auf Port 1926 kann ich mich mit authKey + deviceID einloggen und bekomme folgende Antwort:

{"notifyChange":"http","menulanguage":"German","name":"75PUS8536\/12","country":"Germany","serialnumber_encrypted":"x\/JbBMpagq48sSkXfrHE3CZoa\/+ikNpTuwRWUuatfHk=\n","softwareversion_encrypted":"JsovY+PLIHzJh1QV7b25sycz05boavBzBA04Do\/xSHyzo2ZiyuP1p+IEv1En\/ZdL\n","model_encrypted":"lAgzoTdTYCrARss7CJlOkUxAWbM3rjf7T\/VaKtTeog0=\n","deviceid_encrypted":"B\/b3O829mqHlBzx549AMVbXbGybUaS2DPp5mTTcC5PE=\n","nettvversion":"10.0.0","epgsource":"no_epg","api_version":{"Major":6,"Minor":1,"Patch":0},"featuring":{"jsonfeatures":{"editfavorites":["TVChannels","SatChannels"],"recordings":["List","Schedule","Manage"],"ambilight":["LoungeLight","Hue","Ambilight","HueStreaming"],"menuitems":["Setup_Menu"],"textentry":["not_available"],"applications":["TV_Apps","TV_Games","TV_Settings"],"pointer":["not_available"],"inputkey":["key"],"activities":["intent"],"channels":["preset_string"],"mappings":["server_mapping"]},"systemfeatures":{"tvtype":"consumer","content":["dmr","pvr"],"tvsearch":"intent","pairing_type":"digest_auth_pairing","secured_transport":"true","companion_screen":"true"}},"os_type":"MSAF_2019_P"}

Was auch etwas seltsam ist, wenn ich beide Device (UPNP + Endgerät) lösche und neu installiere , wird auf dem TV nicht mehr nach dem PIN gefragt sondern er wird sofort gefunden und wie zuvor eingebunden.
Grüße Peter

sam50

Hallo RalfP
Ich habe mal noch ein UPNP search mit Verbose 5 durchgeführt und bekomme folgende Antwort:


2023.07.12 10:51:07.233 5: ControlPoint: Receive Search-Response: "CACHE-CONTROL: max-age=1800
DATE: Wed, 12 Jul 2023 08:51:04 GMT
EXT:
LOCATION: http://192.168.1.150:49153/nmrDescription.xml
SERVER: Linux2.6/0.0 UPnP/1.0 PhilipsIntelSDK/1.4 DLNADOC/1.50
X-User-Agent: redsonic
ST: urn:schemas-upnp-org:device:MediaRenderer:3
USN: uuid:F00DBABE-AA5E-BABA-DADA-0ccafb0c3a8b::urn:schemas-upnp-org:device:MediaRenderer:3
CONTENT-LENGTH: 0

"
2023.07.12 10:51:07.233 5: ControlPoint: Accept Search-Response...
2023.07.12 10:51:07 5: Smarttv: <discoverCallback> device 75PUS8536/12 192.168.1.150 uuid:F00DBABE-AA5E-BABA-DADA-0ccafb0c3a8b deviceAdded
2023.07.12 10:51:07 5: Smarttv: <addedDevice> called
2023.07.12 10:51:07 5: Smarttv: <getAllTVs> called
2023.07.12 10:51:07 4: Smarttv: <addedDevice> initial subscription service AVTransport for 75PUS8536
2023.07.12 10:51:07 4: Smarttv: <addedDevice> initial subscription service ConnectionManager for 75PUS8536
2023.07.12 10:51:07 4: Smarttv: <addedDevice> initial subscription service RenderingControl for 75PUS8536
2023.07.12 10:51:07 3: 75PUS8536: current status during the Upnp search response - online
2023.07.12 10:51:07 3: 75PUS8536: state of UPnP - online


Das sieht doch so aus als wäre der TV bereit ?

RalfP

#116
Hallo Peter,

ja, wobei UPnP ich nur zum Ermitteln der IP Adresse verwende, wie auch für die Steuerung der Lautstärke. Alles Andere erfolgt über die API.

Was ich nun nicht verstehen, das du den SystemRequest mit authKey + deviceID nur machen kannst. Der SystemRequest ist ja eigentlich dazu da, um herauszubekommen, ob eine Authentifizierung notwendig ist z.B.: "pairing_type":"digest_auth_pairing". Bei eingeschaltetem Fernseher, sollten einer der o.g. Links möglich sein und dir genau die Antwort geben, wie du oben gezeigt hast.

Evtl. kannst du im TV Device das Logging auf verbose 5 setzen, expert auf 1 und das "get SystemRequest" nochmals ausführen.
Hier siehst du als Beispiel, bei ausgeschaltetem Fernseher, die 6 Versuche die ich starte, um die Systeminfo zu bekommen.
2023.07.11 18:47:18 3: PhilipsTV: get TV_192168276 SystemRequest
2023.07.11 18:47:18 5: TV_192168276: <SystemRequest> called
2023.07.11 18:47:18 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1925/6/system send:
## Content ###########
---
2023.07.11 18:47:20 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1925/6/system - Error - 500 Can't connect to 192.168.2.76:1925 (Connection timed out)
2023.07.11 18:47:20 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1925/5/system send:
## Content ###########
---
2023.07.11 18:47:21 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1925/5/system - Error - 500 Can't connect to 192.168.2.76:1925 (No route to host)
2023.07.11 18:47:21 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1925/1/system send:
## Content ###########
---
2023.07.11 18:47:23 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1925/1/system - Error - 500 Can't connect to 192.168.2.76:1925 (Connection timed out)
2023.07.11 18:47:23 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1926/6/system send:
## Content ###########
---
2023.07.11 18:47:24 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1926/6/system - Error - 500 Can't connect to 192.168.2.76:1926 (No route to host)
2023.07.11 18:47:24 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1926/5/system send:
## Content ###########
---
2023.07.11 18:47:26 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1926/5/system - Error - 500 Can't connect to 192.168.2.76:1926 (Connection timed out)
2023.07.11 18:47:26 5: TV_192168276: <SystemChangeRequest> URL:http://192.168.2.76:1926/1/system send:
## Content ###########
---
2023.07.11 18:47:28 4: TV_192168276: Error while HTTP requesting URL:http://192.168.2.76:1926/1/system - Error - 500 Can't connect to 192.168.2.76:1926 (No route to host)

Bin mal gespannt, wie es bei dir aussieht, wenn dein Fernseher eingeschaltet ist.

Ein Tipp mal noch: Nimm deinen Fernseher mal vom Strom. Netzstecker mal ein paar Minuten abziehen. Als ich mit der Schnittstelle experimentierte, hatte sich manchmal diese beim Fernseher "aufgegangen".

Grüße
Ralf

sam50

Hallo Ralf

Hier das Ergebnis mit Verbose 5 und Expert 1.:
--- 192.168.1.150 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.555/0.555/0.555/0.000 ms
2023.07.13 19:53:46 5: TV_1921681150: <SystemRequest> called
2023.07.13 19:53:46 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1925/6/system send:
## Content ###########
---
2023.07.13 19:53:46 5: TV_1921681150: <SystemRequest> URL:http://192.168.1.150:1925/6/system get HTTP returned:
## Response ##########
$VAR1 = bless( {
                 '_headers' => bless( {
                                        'content-type' => 'application/json; charset=UTF-8',
                                        'access-control-allow-origin' => '*',
                                        'client-peer' => '192.168.1.150:1925',
                                        '::std_case' => {
                                                          'access-control-allow-origin' => 'Access-Control-Allow-Origin',
                                                          'client-response-num' => 'Client-Response-Num',
                                                          'client-peer' => 'Client-Peer',
                                                          'client-date' => 'Client-Date'
                                                        },
                                        'client-date' => 'Thu, 13 Jul 2023 17:53:46 GMT',
                                        'date' => 'Thu, 13 Jul 2023 17:53:45 GMT',
                                        'accept-ranges' => 'bytes',
                                        'server' => 'Restlet-Framework/2.3.12',
                                        'client-response-num' => 1,
                                        'content-length' => '0'
                                      }, 'HTTP::Headers' ),
                 '_msg' => 'OK',
                 '_rc' => 200,
                 '_request' => bless( {
                                        '_headers' => bless( {
                                                               'user-agent' => 'Fhem'
                                                             }, 'HTTP::Headers' ),
                                        '_method' => 'GET',
                                        '_content' => '',
                                        '_uri_canonical' => bless( do{\(my $o = 'http://192.168.1.150:1925/6/system')}, 'URI::http' ),
                                        '_uri' => $VAR1->{'_request'}{'_uri_canonical'}
                                      }, 'HTTP::Request' ),
                 '_protocol' => 'HTTP/1.1',
                 '_content' => ''
               }, 'HTTP::Response' );

## Data ##############

## Content-Type ######
application/json
## Content-length ####
0

2023.07.13 19:53:46 1: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1925/6/system - no JSON data!
2023.07.13 19:53:46 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1925/5/system send:
## Content ###########
---
2023.07.13 19:53:46 4: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1925/5/system - Error - 404 Not Found
2023.07.13 19:53:46 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1925/1/system send:
## Content ###########
---
2023.07.13 19:53:46 4: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1925/1/system - Error - 404 Not Found
2023.07.13 19:53:46 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1926/6/system send:
## Content ###########
---
2023.07.13 19:53:48 4: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1926/6/system - Error - 500 read timeout
2023.07.13 19:53:48 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1926/5/system send:
## Content ###########
---
2023.07.13 19:53:50 4: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1926/5/system - Error - 500 read timeout
2023.07.13 19:53:50 5: TV_1921681150: <SystemChangeRequest> URL:http://192.168.1.150:1926/1/system send:
## Content ###########
---
2023.07.13 19:53:52 4: TV_1921681150: Error while HTTP requesting URL:http://192.168.1.150:1926/1/system - Error - 500 read timeout
2023.07.13 19:53:52 3: TV_1921681150: system request unsuccessful!
2023.07.13 19:53:52 5: TV_1921681150: <isPairingNecessary> called
2023.07.13 19:53:52 4: TV_1921681150: <GetStatus> state of Upnp: found - state of STATE: online

sam50

Hallo Ralf
Noch etwas , also der SystemRequest funktioniert auch ohne AuthKey + deviceID und ich bekomme die Antwort. Außerdem habe ich den TV stromlos gemacht wie empfohlen , leider hat sich nichts geändert.
Das Problem ist doch scheinbar das keine oder leere Antwort auf dem Port 1925 kommt.

RalfP

Hallo Peter,

kannst du mal https://192.168.1.150:1926/6/system (Protokoll https) ausprobieren im Browser. Kommt da eine Antwort?

Grüße
Ralf