Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Torben,

es ist definitiv ein Fehler im Perl selbst. Ich persönlich finde die Lösung unter http://forum.fhem.de/index.php/topic,45336.msg372142.html#msg372142 am Besten (wenn sie hilft), da sie in der Funktionalität selbst Nebenwirkungsfrei ist.

Das Auskommentieren der Zeile funktioniert wohl mit SSL bei anderen Verbindungen dann nicht mehr...

Das ganze hat aber nichts mit Zugriffsrechten auf Datein zu tun...

Grüße
Reiner

Torben

Hallo Reiner,

vielen Dank für die rasche Antwort. Leider hilft das Auskommentiern nicht. Ich vermute, dass es ein etwas anderes Problem in Perl ist, weil sich der Workaround auf IP.pm line 352 bezieht und bei mir der Fehler in IP.pm line 109 steckt. Das müsste dann folgende Funktion sein:
sub new
{
   my $class = shift;
   my %arg = (@_ == 1) ? (PeerHost => $_[0]) : @_;
   return $class->SUPER::new(%arg);
}


Gruß
Torben

justme1968

die lösung mit dem abstellen der warnung sollte man noch mal genauer prüfen. als ich das damals debuggt habe ist mir aufgefallen das der hash der die meldung produziert bei jedem aufruf länger wurde und zum teil mehrere hundert falsche einträge hatte. das passiert beim auskommentieren nicht mehr.


@Torben: schau mal ob du mehrere perl versionen (oder IP.pm versionen) installiert hast und gerade die falsche editierst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Torben

Hallo Andre,

in /usr/share/perl/5.20 gibt es bei mir keinen Ordner LWP. Den gibt es nur in /usr/share/perl5/
Daher dachte ich auch schon, dass es mit diesen zwei verschiedenen Perl-Versionen zusammenhängen könnte. Ich habe aber keine Ahnung, was ich tun könnte...

Gruß
Torben

Ralli

Zitat von: justme1968 am 31 Dezember 2015, 09:39:20
das passiert beim auskommentieren nicht mehr.

Allerdings führt das wohl dann dazu, dass bspw. mit dem Modul FRITZBOX die Kommunikation zur Fritzbox nicht mehr korrekt funktioniert.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

m0urs

Da häng ich mich doch auch mal mit einer anderen Meldung dran, die mir nach jedem Update die Logdatei vollmüllt:

ZitatLoading device description failed with error: 200 OK at ./FHEM/00_SONOS.pm line 3591 thread 1.

Als Abhilfe ändere ich jedes Mal folgendes ab:

Datei: /opt/fhem/FHEM/lib/UPnP/ControlPoint.pm

Change ELSE zu ELSIF:

  # **URS** : "else" zu "elsif ( $response->code ne '200' )" geändert, wg. SONOS Fehlermeldung
    elsif ( $response->code ne '200' ) {
        carp("Loading device description failed with error: " .
             $response->code . " " . $response->message);
    }

Beim Update denkt FHEM aber immer, die Datei hat sich geändert und ändert sie wieder zurück.

Ich würde sagen, diese Änderung ist unkritisch, denn wenn ein Error Code 200 zurückkommt, ist das ja kein Error sondern eher eine Erfolgsmeldung. Daher muss auch keine Meldung ausgegeben werden. Seht ihr das auch so? Wenn ja, wer ist Herr über diese Datei und könnte das ggf. mal in die offizielle version übernehmen?

Reinerlein

Hallo m0urs,

ich passe das mal an...

Grüße
Reiner

justme1968

@Torben: lass mal ein find / -name LWP bzw. find / -name  IP.pm laufen. fhem neu gestartet hattest du aber ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Torben

Hallo Andre,

find / -name LWP liefert
pi@raspberrypi:/ $ sudo find / -name LWP
/usr/share/perl/5.20.2/CPAN/LWP
/usr/share/perl5/LWP

allerdings gibt es in dem Verzeichnis die http.pm nicht:
pi@raspberrypi:/usr/share/perl/5.20.2/CPAN/LWP $ ls
UserAgent.pm

und find / -name  IP.pm liefert
pi@raspberrypi:/ $ sudo find / -name  IP.pm
/usr/share/perl/5.20.2/IO/Socket/IP.pm
/opt/fhem/contrib/statistics/lib/Geo/IP.pm

Die Datei in der auskommentiert werden soll LWP/Protocol/http.pm gibt es nur im Verzeichnis perl5:
pi@raspberrypi:/ $ sudo find / -name http.pm
/usr/share/perl5/LWP/Protocol/http.pm
/usr/share/perl5/Regexp/Common/URI/http.pm
/usr/share/perl5/URI/http.pm


Gruß
Torben

CQuadrat

#2349
Zitat von: CQuadrat am 25 Dezember 2015, 23:33:09
Hallo Reinerlein,

mein Log läuft mit folgenden Meldungen voll:

Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
2015.12.25 23:30:28.676 3: SONOS0: Connection accepted from localhost:37020
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
2015.12.25 23:30:58.684 3: SONOS0: Connection accepted from localhost:37029
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
2015.12.25 23:31:28.692 3: SONOS0: Connection accepted from localhost:37039
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
Loading device description failed with error: 400 URL must be absolute at ./FHEM/00_SONOS.pm line 3734 thread 1
2015.12.25 23:31:58.699 3: SONOS0: Connection accepted from localhost:37059


Hast Du einen Tipp für mich, wo das herkommt?


Danke und Gruß

Christoph


Hat denn niemand eine Idee dazu?
Da ich etwas am Entwickeln bin, ist es echt nervig, wenn das Log unnötig mit nichtgewollten Medlungen geflutet wird.

Nachtrag: Ich nutze recht intensiv den nicht mehr angeboteten Sonos-Dock-Connector; kann es daran liegen, dass der vielleicht nicht zu 100% unterstützt wird?
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

Reinerlein

Hi Christoph,

das kann schon sein. Du könntest mal eine zusätzlich Fehlermeldung in der Datei ControlPoint.pm (im Ordner lib/UPnP) einbauen.
Such mal nach dem String "Loading Device description" (bei mir in Zeile 283), und füge mal folgende zusätzliche Ausgabe davor ein:

carp('400-URL-Absolute-Error! Location: "'.$location.'", Content: "'.$response->content.'"') if ($response->code == 400);
Das muss aber davor sein...

Damit erhältst du jetzt eine Ausgabe des relevanten Parameters und der inhaltlichen Antwort vom Player dazu.
Dann mal schauen, was da rauskommt. Das kann länger sein (oder auch nicht :) )...

Grüße
Reiner

forum-merlin

Hallo Leute! "a guads neues wünsch ich!"

kurze Frage...
Ich habe seit kurzem auch ein paar Sonos Devices, sind auch eingebunden, und laufen schonmal ganz net in FHEM.
Jetzt wollte ich die Sprachausgabe einbasteln, und hatte erst ein paar kleine Fehler.
Dann auf Seite 153 dieses Threads habe ich gesehen dass sich was an der Google TTS URL verändert hatte und habe dann auch noch das Update ausgeführt. Die URL passt jetzt neben anderen Dingen auch in der 00_SONOS.pm die sonst noch gefixt wurden. Danke dafür an den Entwickler!


Aber...
Wie es scheint lässt Google seit ein paar Tagen keine "maschinellen" Requests mehr zu.
Ich habe auch externe Quellen gefunden die das berichten. (Link kann nachgereicht werden wenn gewünscht)
Es wird bei mir hier wenn ich die URL teste die händische Eingabe von einer Zeichenkette benötigt damit man da scheinbar weiterkommt bis die Ausgabe dann erfolgt.

In FHEM bekomme ich beim Player einfach nur einen 503er
"LastActionResult     Speak0: MP3-Creation ERROR during downloading: 503 Service Unavailable"


Kann das jemand bestätigen oder widerlegen?
Geht die Sprachausgabe bei Euch noch? Was gibt es ggf. für alternativen?

Danke und Gruß

der merlin



FHEM 5.8 auf RasPi3; CULv3-868; RFXtrx433; HM-Sec-SC-2; HM-CFG-LAN; HM-LC-Bl1-FM; HM-CC-RT-DN; HM-ES-PMSw1-Pl; HM-LC-Sw4-DR; Hunter Ventile; 8ch Relais; ENIGMA2; ONKYO_AVR; SONOS; Harmony; telegram; HM-PB-6-WM55; GPIO; HM-Sen-MDIR-O; HM-SEC-SD; HM-LC-Dim1L-Pl-3;

Reinerlein

Hi Merlin,

ich habe das gerade bei mir getestet, und bei mir klappt die Durchsage noch.
Es kann auch sein, dass es nach einer gewissen Menge an Anfragen von deiner IP nicht mehr funktioniert. Das kannst du ja testen, indem du deine Internet-Verbindung mal neu aufbauen läßt...

Was du auf jeden Fall tun solltest, ist den Cache im Modul für die Sprachdurchsagen zu aktivieren. Dann werden bei wiederholter Verwendung desselben Textes keine Anfragen mehr an Google gesendet, sondern diese aus dem (Fhem-)lokalen Cache bedient.
Dazu gibt es auch einige Hinweise im Wiki: http://www.fhemwiki.de/wiki/SONOS#Zusammenfassung_der_Spracheinrichtung

Grüße
Reiner

CQuadrat

Zitat von: Reinerlein am 03 Januar 2016, 12:53:19
Hi Christoph,

das kann schon sein. Du könntest mal eine zusätzlich Fehlermeldung in der Datei ControlPoint.pm (im Ordner lib/UPnP) einbauen.
Such mal nach dem String "Loading Device description" (bei mir in Zeile 283), und füge mal folgende zusätzliche Ausgabe davor ein:

carp('400-URL-Absolute-Error! Location: "'.$location.'", Content: "'.$response->content.'"') if ($response->code == 400);
Das muss aber davor sein...

Damit erhältst du jetzt eine Ausgabe des relevanten Parameters und der inhaltlichen Antwort vom Player dazu.
Dann mal schauen, was da rauskommt. Das kann länger sein (oder auch nicht :) )...

Grüße
Reiner

Hallo Reiner,

leider kommt da nicht mehr im Log.

Viele Grüße
Christoph
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

Reinerlein

Hi Christoph,

du hast aber sicher den SubProzess neugestartet?
Also entweder Fhem komplett neustarten, oder am Sonos-Device (nicht am Playerdevice) das disable-Attribut auf "1" setzen, ein paar Sekunden warten, und wieder löschen...

Grüße
Reiner