Neuentw. Modulpaket zu UPnP: Controller, Device, DLNA(Renderer-Ersatz)

Begonnen von KölnSolar, 15 Februar 2021, 19:29:49

Vorheriges Thema - Nächstes Thema

KölnSolar

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

mumpitzstuff

#256
Hmm ich habe jetzt Debug auf 1 gesetzt, aber viel mehr sieht man nicht. Zumindest kann ich nicht erkennen was das für ein Device sein soll. Ohne IP oder sonstige Infos kann ich da gar nicht weiter forschen. Die Firmware Angabe scheint aber auf ein SIRD Device hinzudeuten: ir-mmi.ref.ven6.5p-jupiter6.5s

2022.04.05 22:52:14 5: UPNPController: UPNPSocket-UPNP_Controller-1900, received message on port 1900 starting handleOnce
UpnP Logging: ControlPoint.pm: Received xml-response is: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta name="viewport" content="width=520, maximum-scale=2.0">
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="stylesheet" href="css/base/style-screen.css" type="text/css" media="screen">
<link rel="stylesheet" href="css/base/style-handheld.css" type="text/css" media="handheld">
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/jsbn.js"></script>
<script type="text/javascript" src="js/prng4.js"></script>
<script type="text/javascript" src="js/rng.js"></script>
<script type="text/javascript" src="js/rsa.js"></script>
<script type="text/javascript" src="common-1.0.3.js"></script>
<title>Internet Radio 2.14</title>
</head>

<body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
<div id="header">
<div class="aside">
<div id="input_ip_line" class="new_line">
<label id="main_ip" for="input_ip" class="line_title">IP:</label>
<input id="input_ip" class="line_input" type="text" tabindex="1" maxlength="15" />
</div>
<div class="new_line">
<label id="main_password" for="input_pin" class="line_title">PIN:</label>
<input id="input_pin" class="line_input" type="text" tabindex="2" maxlength="4" />
</div>
<div class="new_line">
<label id="main_language" for="input_language" class="line_title">Language:</label>
<select id="input_language" class="line_input" tabindex="3">
<option value="en">English</option>
</select>
</div>
</div>
</div>
<ul id="main_navigation">
</ul>
<div id="content">
</div>
<div id="footer">
<span id="footer_firmware">Firmware:</span>
<span class="netRemote_sys_info_version">ir-mmi.ref.ven6.5p-jupiter6.5s</span>
</div>
<div id="popup_background" class="disable">
<div class="center_box">
<p id="popup_message">Please wait...</p>
</div>
</div>
</body>
</html>

2022.04.05 22:52:14 3: UPNPController: UPNPSocket-UPNP_Controller-1900, handleOnce failed, mismatched tag 'head'



Ich habe jetzt mal ein größeres Logfile angehangen. Die 3 Sird Geräte haben folgende Namen: "WOHNZIMMER", "KUECHE" und "SIRD". Wenn du danach suchst, findest du die relevanten Einträge.

PS: Okay ich habe jetzt gefunden wie man die Daten bekommt. Und zwar wenn ich im Browser einfach eine IP eines der 3 Geräte angebe, dann kommt genau diese Webseite bzw. der HTML Code im Firefox sieht genauso aus. Genauer gesagt kommt die Seite entweder von WOHNZIMMER oder KUECHE, nicht jedoch von dem SIRD Gerät im Bad. Hier sähe die HTML Siete minimal anders aus. Komischerweise scheinen sich die beiden Geräte aber auch vernünftig zu melden (siehe Log). Naja vielleicht setze ich Verbose einfach auf 0 und dann sollte hoffentlich Ruhe sein.

KölnSolar

#257
Morjen,
Zitatich habe jetzt Debug auf 1 gesetzt
es hat aber leider nicht funktioniert.  :'( Guck nochmal hier. Da siehst Du, dass alle Logzeilen DEBUG enthalten. Keine Ahnung warum das nicht geklappt hat.  :-\
ZitatOhne IP oder sonstige Infos kann ich da gar nicht weiter forschen.
Da hast Du recht. Aber mit debug sehen wir genau das. Während normalerweise mit der Logzeile ...handleonce" die Verarbeitung an das Paket perlupnp weitergereicht wird, auf das ich keinen Einfluss habe(begrenzt), wird bei debug die Verarbeitung(read, Prüfung IP, Output des read buffers) im Modul gemacht.

ZitatNaja vielleicht setze ich Verbose einfach auf 0 und dann sollte hoffentlich Ruhe sein.
Fänd ich nur die zweitbeste Lösung. Besser ist ja für die SIRDs festzustellen, was da genau geschickt wird, um es dann zu ignorieren oder korrigieren.
Zitatwenn ich im Browser einfach eine IP eines der 3 Geräte angebe, dann kommt genau diese Webseite bzw. der HTML Code
Was darauf schließen lässt, dass in LOCATION die presence-URL und nicht die description-URL steht.


Lösch mal Deinen Anhang. Steht ja ne Menge "Persönliches" drin. In der  /opt/fhem/FHEM/lib/UPnP/ControlPoint.pm könntest Du die Modifikation auch wieder  zurückbauen.

Ich guck jetzt nochmal in Dein Log, denn dort sehen wir auch die Antworten der devices. Allerdings auf dem search-port.....

Grüße
Markus

Edit: Ich glaub ich habs. Guck mal ab Zeile 1227 in Deinem Log. Da melden sich offensichtlich 2 SIRDs mit IP:80/device und eins ohne das Unterverzeichnis als LOCATION. Im Browser eingegeben siehst Du dann die html-Seiten. DANACH erst kommen die korrekten Antworten auf den search-request mit der LOCATION IP:8080/dd.xml. Mit denen werden dann auch die readings im UPNPController und die DLNA-devices angelegt.

Ich guck mal genauer, wie ich die "falschen"  Nachrichten sinnvoll ignoriere.

Edit2: Spontan ist der Unterschied, dass die xml's auch mit .xml enden. Aber das muss ja nicht immer so sein(bei jeglichen UPNP Geräten). Über die debug-Ausgabe sehen wir vielleicht noch andere "Merkmale".  :-\
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

KölnSolar

#258
So, ich hab mich dazu entschlossen nicht das suffix abzufragen, sondern den Inhalt auf den regexp xml. Attached die angepasste Controlpoint.pm. Wenn der Controlpoint neu angelegt wird(define, modify, attr "ignoredIPs"   || "usedonlyIPs" || "envNamespace" || "envPrefix")  UND verbose auf level 5 gesetzt ist, erfolgt auch eine entsprechende Log-Meldung perlupnp: ControlPoint: Invalid xml device description in location: URL_of_location
Dieser verbose level lässt sich auch NUR wieder durch eine Neuanlage des Controlpoints(s.o.) aufheben !

Wir haben ja auch noch das Problem, dass die subscription nicht richtig funktioniert. Hier müssten wir mit der debug option testen, denn die sollte bereits aussagekräftige Informationen liefern(Im Debug-Modus können die verbose level aller drei UPNP-devices auf 3 bleiben, da debug immer mit level 3 logged.)
Wenn der UPNPController sich im debug-Modus befindet, kannst Du einfach die subscription mit irgendeinem Deiner SIRD-device-services ausführenset DeinUPNPController subscribe DeineIP_Port-zs-AVTransport
Danach das attr debug wieder löschen, um das Log nicht weiter zuzumüllen.  ;)

Ich bin mal gespannt...

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

mumpitzstuff

Sry ich bin grad etwas in Stress und hatte kaum Zeit. Jetzt wollte ich mich dem Thema noch einmal widmen, verstehe aber irgendwie nur Bahnhof. Die ControlPoint muss ich doch jetzt nicht irgendwie anlegen oder? Das ist doch letztendlich nur die Library die deine Module verwenden. Soll ich jetzt alles was ich in Richtung UPNP im System finde löschen und alles neu anlegen?

KölnSolar

kein Thema. Ist ja nur Hobby..
Du musst die Controlpoint.pm nur in ihr Verzeichnis kopieren und danach shutdown/restart zur Aktivierung.

Alles andere bezieht sich auf die FHEM devices: das vom User definierte UPNPController device und seine 2 vom Modul erzeugten Hilfsdevices.
Mit Controlpoint ist in dem Zusammenhang dann das zentrale Perl-Objekt gemeint, das mit define initial erzeugt wird. Eigenschaften können zur Laufzeit nicht verändert werden, sondern nur zerstört und mit geänderten Eigenschaften das Perl-Objekt Controlpoint wieder neu aufgebaut werden.
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

mumpitzstuff

#261
Hmmm tut mir leid aber ich habe jetzt alle Versuche abbrechen müssen. Irgendwie macht jetzt mein Radio im Bad Probleme beim Wlan Empfang. Jetzt muss ich erst einmal raus bekommen, was da genau los ist. Um Probleme mit Upnp auszuschliessen, habe ich das vorsorglich erst einmal gekillt. Ist aber vrmutlich nur ein dummer Zufall, das es jetzt ausgefallen ist, aber ich will erst mal alle möglichen Fehlerquellen ausschliessen.

PS: Vermutlich war die Ursache ein nicht richtig eingestecktes Kabel einer elektrischen Zahnbürste. Die damit verbundenen Störungen haben das WLAN des Radios anscheinend sehr stark beeinflusst. Muss das jetzt trotzdem erst mal verdauen. Melde mich dann noch mal mit einem neuen Versuch.

KölnSolar

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

mumpitzstuff

Ich habe übrigens ganz vergessen zu schreiben, das ich alles noch mal aufgesetzt habe im Debug Modus und habe laufen lassen, das Problem mit dem ,,Head" Fehler konnte ich aber nicht mehr reproduzieren.

romakrau

Hallo Markus,
ich versuche einen Renderer neu aufzusetzen nachdem das alte System abgestürzt war. Ich erhalten folgendes Ergebnis:

2022.06.30 07:08:39 1: reload: Error:Modul 98_UPNPController deactivated:
Attempt to reload UPnP/ControlPoint.pm aborted.
Compilation failed in require at ./FHEM/98_UPNPController.pm line 69.
BEGIN failed--compilation aborted at ./FHEM/98_UPNPController.pm line 69.

2022.06.30 07:08:39 0: Attempt to reload UPnP/ControlPoint.pm aborted.
Compilation failed in require at ./FHEM/98_UPNPController.pm line 69.
BEGIN failed--compilation aborted at ./FHEM/98_UPNPController.pm line 69.


Die Module sind alle geladen:
sudo apt-get install libsoap-lite-perl libparse-http-useragent-perl liblwp-protocol-https-perl libxml-libxml-perl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
liblwp-protocol-https-perl is already the newest version (6.10-1).
libparse-http-useragent-perl is already the newest version (0.42-1).
libsoap-lite-perl is already the newest version (1.27-1).
libxml-libxml-perl is already the newest version (2.0134+dfsg-2+b1).
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.

Bin mal wieder hilflos. Kannst Du mir weiterhelfen.
Gruß
Roman

romakrau

Nachdem ich das Perl Modul XML::Parser::Lite neu installiert habe läuft der UPnPController und bringt folgenden Output:

Internals:
   FD         31
   FUUID      62bd3c5a-f33f-e93f-b6f9-4fc8cdd6d8b2cf57
   NAME       UPNPC
   NR         326
   NTFY_ORDER 50-UPNPC
   STATE      initialized
   TYPE       UPNPController
   UDN        0
   VERSION    v0.0.4
   eventCount 1
   READINGS:
     2022-06-30 08:09:41   192.168.187.152_7678-UDN uuid:fd4d42fa-3e58-4d8c-bd0d-d7d85936fe79
     2022-06-30 08:09:41   192.168.187.152_7678-friendlyName [TV] TV Wohnzimmer
     2022-06-30 08:09:41   192.168.187.152_7678-location http://192.168.187.152:7678/nservice/
     2022-06-30 08:09:41   192.168.187.152_7678-manufacturer Samsung Electronics
     2022-06-30 08:09:41   192.168.187.152_7678-modelDescription Samsung DTV RCR
     2022-06-30 08:09:41   192.168.187.152_7678-modelName UE43RU7459UXZG
     2022-06-30 08:09:41   192.168.187.152_7678-modelNumber 1.0
     2022-06-30 08:09:41   192.168.187.152_7678-presence online
     2022-06-30 08:09:41   192.168.187.152_7678-zs-dial urn:dial-multiscreen-org:service:dial:1
     2022-06-30 08:09:41   192.168.187.152_9119-UDN uuid:6168fae4-f74b-4250-a2bb-9e8914f9aeab
     2022-06-30 08:09:41   192.168.187.152_9119-friendlyName [TV] TV Wohnzimmer
     2022-06-30 08:09:41   192.168.187.152_9119-location http://192.168.187.152:9119/screen_sharing
     2022-06-30 08:09:41   192.168.187.152_9119-manufacturer Samsung Electronics
     2022-06-30 08:09:41   192.168.187.152_9119-modelDescription Samsung TV ScreenSharing
     2022-06-30 08:09:41   192.168.187.152_9119-modelName UE43RU7459UXZG
     2022-06-30 08:09:41   192.168.187.152_9119-modelNumber AllShare1.0
     2022-06-30 08:09:41   192.168.187.152_9119-presence online
     2022-06-30 08:09:41   192.168.187.152_9119-zs-ScreenSharingService urn:samsung.com:service:ScreenSharingService:1
     2022-06-30 08:09:41   192.168.187.152_9197-UDN uuid:346874c9-6d82-4326-bdad-cf3def287dc0
     2022-06-30 08:09:41   192.168.187.152_9197-friendlyName [TV] TV Wohnzimmer
     2022-06-30 08:09:41   192.168.187.152_9197-location http://192.168.187.152:9197/dmr
     2022-06-30 08:09:41   192.168.187.152_9197-manufacturer Samsung Electronics
     2022-06-30 08:09:41   192.168.187.152_9197-modelDescription Samsung TV DMR
     2022-06-30 08:09:41   192.168.187.152_9197-modelName UE43RU7459UXZG
     2022-06-30 08:09:41   192.168.187.152_9197-modelNumber AllShare1.0
     2022-06-30 08:09:41   192.168.187.152_9197-presence online
     2022-06-30 08:09:41   192.168.187.152_9197-zs-AVTransport urn:schemas-upnp-org:service:AVTransport:1
     2022-06-30 08:09:41   192.168.187.152_9197-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
     2022-06-30 08:09:41   192.168.187.152_9197-zs-RenderingControl urn:schemas-upnp-org:service:RenderingControl:1
     2022-06-30 08:16:06   state           initialized
   helper:
Attributes:
   envNamespace <undef>
   envPrefix  s
   usedonlyIPs 192.168.187.152
   userattr   acceptedUDNs defaultRoom envNamespace envPrefix ignoreUDNs


Wie definiere ich denn jetzt den DLNA_Controller?

Gruß
Roman

Edit: Welche ist denn meine UDN ?

EDIT2: Nach mehreren Neustarts klappt es auch bei mir. Etwas hakelig aber es klappt.

romakrau

Hallo Markus,
ich habe mal wieder Probleme mit dem neuen DNLA-Renderer Ersatz. Folgende Fehlermeldung habe ich erhalten und denk das dies mein periodisches Problem mit der Routine readingsBulkUpdateIfChanged sein könnte:

2022.10.19 13:04:23 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4992.
2022.10.19 13:04:23 1: stacktrace:
2022.10.19 13:04:23 1:     main::__ANON__                      called by fhem.pl (4992)
2022.10.19 13:04:23 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/98_UPNPController.pm (635)
2022.10.19 13:04:23 1:     main::UPNPController_parent         called by ./FHEM/98_UPNPController.pm (588)
2022.10.19 13:04:23 1:     main::UPNPController_addedDevice    called by ./FHEM/98_UPNPController.pm (499)
2022.10.19 13:04:23 1:     main::UPNPController_discoverCallback called by ./FHEM/98_UPNPController.pm (474)
2022.10.19 13:04:23 1:     main::__ANON__                      called by FHEM/lib/UPnP/ControlPoint.pm (1068)
2022.10.19 13:04:23 1:     UPnP::ControlPoint::Search::deviceAdded called by FHEM/lib/UPnP/ControlPoint.pm (427)
2022.10.19 13:04:23 1:     UPnP::ControlPoint::_deviceAdded    called by FHEM/lib/UPnP/ControlPoint.pm (548)
2022.10.19 13:04:23 1:     UPnP::ControlPoint::_receiveSSDPEvent called by FHEM/lib/UPnP/ControlPoint.pm (238)
2022.10.19 13:04:23 1:     UPnP::ControlPoint::handleOnce      called by ./FHEM/98_UPNPController.pm (255)
2022.10.19 13:04:23 1:     (eval)                              called by ./FHEM/98_UPNPController.pm (254)
2022.10.19 13:04:23 1:     main::UPNPController_Read           called by fhem.pl (3961)
2022.10.19 13:04:23 1:     main::CallFn                        called by fhem.pl (782)
2022.10.19 13:04:23 3: DLNAController: DLNA_cf3def287dc0 address changed; services initially subscribed


Ich blicke langsam nicht mehr durch in den Verschiedenen Versionen und Modulen in den Antworten die Du gegeben hast. Gibt es einen Thread indem jeweils die neuste Version hinterlegt ist. Idealerweise mit den Sub-Moduleln z.B. ControlPoint.pm usw..

Gruß
Roman

KölnSolar

Hi Roman,
die aktuellsten Versionen hängen ja an den ersten Posts. Alles andere sind irgendwelche Zwischenversionen, um individuellen Problemen auf den Grund zu gehen und dann die Module zu verbessern. Die "Basis"(ControlPoint.pm etc.) wird ja mit FHEM ausgeliefert.

ZitatFolgende Fehlermeldung habe ich erhalten
Die ist ja nicht wirklich ein Problem.
Zitatmein periodisches Problem mit der Routine readingsBulkUpdateIfChanged
müsstest Du etwas näher beschreiben
Grüße Markus
@all: Der Herbst ist da. Und dann nehmen wir wieder Fahrt mit den Modulen auf.... ;)
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

MichaelT

Hallo Markus,

zur Info: Ich habe meine peaq SMN300 rausgeworfen. Durch sporadische Verbindungsproblem der Renderer habe ich immer wieder Probleme bekommen.
Ich bin nun auf SONOS umgestiegen.

Also kann ich dir keine neuen Infos mehr bzgl. Multiroom geben.

Aber trotzdem Danke nochmal für dein Einsatz bei der Problemfindung.

Gruß
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

KölnSolar

Hallo Michael,
ZitatIch bin nun auf SONOS umgestiegen.
Die könnten wir ja auch testen. ;D
Für die SONOS gibt's ja Reiners Modul(sehr umfangreich mit vielen Zusatzfunktionen), das setzt ja auch auf dem perl-Paket auf. Also auch die freeze-Thematik. Und Reiner hat sich "zurück gezogen".

Wenn ich wieder Muße habe, werde ich mir wahrscheinlich das perl-Paket zur Brust nehmen und auf "ohne freezes" umbauen. Dann müsste das Sonos-Modul getestet werden.  ;)

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