Stören sich HMCCU und SONOS gegenseitig

Begonnen von Nobby1805, 03 Januar 2024, 23:19:01

Vorheriges Thema - Nächstes Thema

Nobby1805

Hallo,

ich habe im Homematic Forum etwas zu dem Thema geschrieben

https://forum.fhem.de/index.php?topic=136494.0

Gruß Nobby
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Nobby1805

#1
Ich habe hier lange nichts geschrieben ... war aber nicht untätig.

Ich habe mir eine Fhem - Testinstanz aufgebaut, bei der nur Sonos definiert ist (eigentlich sogar mehrere auf verschiedenen Rechnern) und auch verschiedene Perl-Strawberry-Versionen probiert. Nur Sonos heißt ohne Player, nur das Grundmodul wo ich dann Disbale von 1 auf 0 setze um die Erfkennung der Player zu starten.

Das Verhalten ist in jeder Kombination gleich ... von den 5 Sonos Devices werden mal alle, mal 2, mal 3 und sehr oft gar kein Device erkannt  >:(

Ich habe dann angefangen in das Sonos-Modul und dann in ControlPoint.pm weitere Logmeldungen einzubauen.

ControlPoint schreibt dann
####### nach send in _startSearch header= .M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
ST: urn:schemas-upnp-org:device:ZonePlayer:1
MX: 3


2024.01.29 19:55:02 0: SONOS1: ----------nach Subscription
das sieht, wenn ich die Dokumentation von UPnP bzw. SSDP richtig verstehe, genau so aus, wie es sein soll. Nur danach kommt dann nichts mehr bzw. nur unvollständig
Wenn es richtig läuft, dann kommt danach
2024.01.28 21:07:17 0: SONOS1: ----------nach Subscription
2024.01.28 21:08:10 0: SONOS1: ----------Discover-Callback
2024.01.28 21:08:10 0: SONOS1: ----------Discover-Event
2024.01.28 21:08:10 0: SONOS1: ------------RoomName: 'TV', SaveRoomName: 'TV', ModelNumber: 'S14', DisplayVersion: '15.11', SerialNum: '94-9F-3E-D0-54-82:8', IconURI: '/img/icon-S14.png', IconOrigPath: 'http://192.168.1.150:1400/img/icon-S14.png', IconPath: 'icoSONOSPLAYER_icon-S14.png'
2024.01.28 21:08:10 0: SONOS1: ------------Discover Sonosplayer 'TV' (S14) Software Revision 15.11 with ID 'RINCON_949F3ED0548201400_MR'

Dann habe ich Wireshark angeworfen um zu erkennen, ob die fehlenden Discoveries nicht geschickt werden oder beim Fhem-Rechner zwar ankommen aber nicht bei Fhem.  Sie werden nicht geschickt ... also ein Problem bei Sonos? Aber warum klappt es denn dann manchmal?

Dann fiel mir auf, das ich die von ControlPoint abgesendete Message nicht im Log finde  :o mehrfach versucht aber sie ist nicht da. Um eine Fehler oder eine Fehlkonfiguration von Wireshark zu prüfen, habe ich dann ein UPnP Tool gestartet ... da wird die M-SEARCH Message von Wireshark angezeigt und nach kurzer Zeit listet das Tool auch alle Sonos-Geräte auf.

Also wird die Message irgendwo in Fhem oder auf dem Weg von Fhem zum Ethernet-Adapter verloren.

ControlPoint macht:
    my $header = 'M-SEARCH * HTTP/1.1' . CRLF .
        'HOST: ' . SSDP_IP . ':' . SSDP_PORT . CRLF .
        'MAN: "ssdp:discover"' . CRLF .
        'ST: ' . $target . CRLF .
        'MX: ' . $self->{_maxWait} . CRLF .
        CRLF;

    my $destaddr = sockaddr_in(SSDP_PORT, inet_aton(SSDP_IP));
    send($self->{_searchSocket}, $header, 0, $destaddr);

print("####### nach send in _startSearch header= .$header\r\n");

Frage: weiß jemand wo send definiert ist? Gibt das keinen Status zurück oder wird der "nur" nicht geprüft?

Ich suche jetzt mal weiter ... für jeden Kommentar, Hinweis, Hilfe dankbar

Viele Grüße Norbert

Ich habe jetzt send in IO::Socket gefunden ...

aber da habe ich ein Verständnisproblem  :-[ sub send {

    @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])';
    my $sock  = $_[0];
    my $flags = $_[2] || 0;
    my $peer  = $_[3] || $sock->peername;

    croak 'send: Cannot determine peer address'
unless(defined $peer);

    my $r = defined(getpeername($sock))
    $r = defined(getpeername($sock))
? send($sock, $_[1], $flags)                ###<---- rekursiver Aufruf?
: send($sock, $_[1], $flags, $peer);        ###<---- rekursiver Aufruf?

    # remember who we send to, if it was successful
    ${*$sock}{'io_socket_peername'} = $peer
if(@_ == 4 && defined $r);

    $r;
}
Wo wird denn hier gesendet? und sind die beiden Zeilen die ich mit dem Kommentar ergänzt habe wirklich rekursive Aufrufe?

Vielleicht reicht hier auch meine Erfahrung mit Perl nicht aus  :-[
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

KölnSolar

Hallo Norbert,
lange nichts mehr mit gemacht, aber perlupnp ist ein "Sauzeug". Wenn im Netz etwas blockiert, blockiert es FHEM.
Ich vermute, Du hast Wifi-Probleme. :'(
Probier mal freezemon, ob Du die freezes erkennst.
Könntest auch mal meinen UPNPController einsetzen, um etwas zu loggen. Mit debugging. Wird vermutlich NICHT gleichzeitig mit dem SONOS-Modul laufen. (wär aber mal schön zu wissen ;) )
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

Nobby1805

Hallo Markus,
würde ich gerne mal testen: wo finde ich denn perlupnp?

Wenn ich "define UPNP_Controller UPNPController" eingebe kommt Unknown module UPNPController

Freezes habe ich keine (in der Fhem Instanz) ... es werden ja auch i.d.R. keine oder nur wenige Sonos-Devices gefunden  ;)

Grüße Norbert
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

KölnSolar

Hab ich doch verlinkt. perlupnp=Perlpaket für UPNP(von Reinerlein in FHEM f. SONOS "implementiert", enthält u.a. Controlpoint.pm)
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

Nobby1805

Hallo Markus,

bin ich blind? Ich benutze die Module von Reinerlein ... aber ControlPoint.pm steht bei mir unter \FHEM\lib\UpnP
OK ... anscheinend hat der Begriff "perlupnp Paket" verwirrt

Aber warum kann ich dann das define nicht machen? ... Oops, jetzt klappt es ... keine Ahnung was sich seit gestern Abend geändert hat ... aber auch hier finde ich nur 2 von 5 Sonos Devices in den Readings

Ich werde dann gleich mal auf die Debug-Version wechseln

Danke und Gruß Norbert
FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)

Nobby1805

Hallo Markus,

so, es kommt jetzt etwas.
Dein Modul gibt mit dem von mir eingebauten print in ControlPoint fast dasselbe aus als wenn es aus 00_SONOS aufgerufen wird, der Unterschied liegt in "ST: ssdp:all" bei dir und "ST: urn:schemas-upnp-org:device:ZonePlayer:1" bei Reinerlein. (aber das steht ja auch so in den Kommentaren des Moduls)

Nach dem Start dauert es einige Minuten, aber dann werden alle Sonos-Geräte in den Readings angezeigt.
Wenn ich debug auf 1 setzen auf verbose auf 3 ändert sich allerdings im Logging gar nichts  :( was mache ich denn da falsch?

Doch, wenn ich set subscripe (mit einem richtigen Parameter der akzeptiert wird) aufrufe dann kommt etwas im Logging und auch bei den Readings ändert sich etwas

2024.01.31 17:55:32.546 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.168.1.151_1400 event ServiceListVersion not yet implemented
Use of uninitialized value $1 in concatenation (.) or string at ./FHEM/98_UPNPController.pm line 419.
2024.01.31 17:57:44.534 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.168.1.151_1400-zz_1 event LastChange not yet implemented
Use of uninitialized value $1 in concatenation (.) or string at ./FHEM/98_UPNPController.pm line 419.

Was meinst du denn mit
Das service-reading hat folgende Inhalte:
ohne Aktion  - urn des services
subscribe:      - subscribed (nach set subscribe)
...
so ein Reading gibt es bei mir nicht


Und auch hier kann ich die abgeschickten Messages nicht mit Wireshark einfangen, keine Ahnung was hier passiert

Hast du weitere Tipps was ich machen könnte?

Danke und viele Grüße Norbert

FHEM-Featurelevel: 6.2   (fhem.pl:28227/2023-11-29) auf Windows 10 Pro mit Strawberry Perl 5.32.1.1-32bit
TabletUI: 2.7.15
IO: 2xHMLAN(0.965)|HMUSB2(0.967)