Hallo Gemeinde,
seit einem FHEM neustart nervt mich folgender Fehler im Log:
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client> line 6.
Ich hab jetzt lange genug rumgelesen und gesucht, und es scheint das Sonos Modul zu sein... ?!
Wie kann ich das eingrenzen? Es wurde kein Update oder so gemacht, lediglich der PI wurde neu gestartet.
Gruß
Markus
Im Sonos Steuen Thread findest du 2 Lösungsansätze, ist ein Problem in IP.pm.
ist also wohl kein Problem das ich selbst loesen werde. Ich sehe davon ab in irgendwelchen perl modulen rumzuwurschteln ohne genau zu wissen was ich da tue.
Danke dennoch
So kompliziert ist das nicht. Bei mir trat der Fehler laut Meldung in einer Zeile in dieser Sub auf:
Zitat
sub new
{
my $class = shift;
my %arg = (@_ == 1) ? (PeerHost => $_[0]) : @_;
return $class->SUPER::new(%arg);
}
Jetzt einfach ein "no warnings" am Anfang der Funktion einfügen:
Zitat
sub new
{
no warnings;
my $class = shift;
my %arg = (@_ == 1) ? (PeerHost => $_[0]) : @_;
return $class->SUPER::new(%arg);
}
Wenn Du vorher ein Backup der Datei anlegst, dann kann eigentlich kaum was schief gehen. Als Editor kannst Du z.B. nano, joe oder vi bentzen...
8) danke, so kanns sogar ich ;D
EDITH: sieht gut aus :D thx!
Und warum behebt der Modulautor des Sonos Moduls das Problem nicht an der richtigen Stelle?
Irgendwo wird
- entweder versucht, mit einem falschen (unvollständigen) hash versucht, ein Objekt zu erzeugen, (vermutlich ein TCP-Socket oder was ähnliches)
- oder es wird versucht, einen hash fälschlicherweise dadurch zu "beseitigen", dass man ihm den value undef zuweist (%hasName ={undef})
Das sind jedenfalls die beiden häufigsten Fehler, die zu einer solchen Logausgabe führen.
Hallo betateilchen,
alle meine (und die des verwendeten UPnP-Moduls) Aufrufe zum Einrichten eines Sockets sind korrekt mit Pärchen befüllt (und zwar direkt, ohne Hashvariable).
Sonst würde es diesen Fehler ja auch immer geben.
Ich würde aber mal grob schätzen, dass von den rund 220 Nutzern des Moduls vielleicht 20 von diesem Fehler betroffen sind...
Ich wüsste jetzt nicht, was ich da machen könnte... sonst hätte ich das schon gemacht... Genauere Hinweise sind aber natürlich gerne Willkommen...
Grüße
Reinerlein
Bei mir kommt der Fehler nach dem Start von Fhem einige zig bis hundert male und dann ist Ruhe ...
Da ich eine andere Perl-Version verwende sieht die Fehlermeldung und die Codestelle etwas anders aus ... vielleicht hilft's das Problem einzukreisen
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 352, <$client> line 6.
sub new
{
my $class = shift;
my %arg = (@_ == 1) ? (PeerHost => $_[0]) : @_;
return $class->SUPER::new(%arg);
}
Edit: nee, war gelogen ;) die Codestelle sieht eigentlich identisch aus
Hallo Nobby1805,
vielleicht könntest du temporär mal dort eine Debugzeile einbauen, die das Array @_ ausgibt. Nach der Zeile mit dem "$class = shift;" und vor der Hashzuweisung...
Am Besten mit
use Data::Dumper;
Dumper(\@_);
Vielleicht kann man dort am Inhalt erkennen, was er eigentlich vorhat...
Grüße
Reinerlein
Hallo,
ich hatte das Problem auch
Zitat von: Torben am 04 Januar 2016, 21:47:35
mein ursprüngliches Problem habe ich durch eine neue Installation von Raspbian gelöst. Dabei habe ich anstatt jessie wieder wheezy genommen. Hier ist perl v5.14.2 im Einsatz und nun läuft es wieder.
Aus meiner Sicht lag es am Perl 5.20, das mit Raspbian Jessie ausgeliefert wird. Ich habe dann eine neue Wheezy-Installation mit Perl 5.14 genutzt, bei der ich ansonsten alles identisch installiert habe und dann gab es keine Fehlermeldungen mehr. Was aber der Kern des Problems ist, weiß ich auch nicht.
Gruß
Torben
Hallo Reinerlein,
Zitat von: Reinerlein am 22 Januar 2016, 23:54:40
vielleicht könntest du temporär mal dort eine Debugzeile einbauen, die das Array @_ ausgibt. Nach der Zeile mit dem "$class = shift;" und vor der Hashzuweisung...
Am Besten mit
use Data::Dumper;
Dumper(\@_);
Vielleicht kann man dort am Inhalt erkennen, was er eigentlich vorhat...
ich sehe nichts Zusätzliches :-[ muss ich das Loglevel verändern ?
Allerdings kamen jetzt deutlich weniger Meldungen ... kann es ein Timing-Problem sein ? Ich hänge mal den gesamten Log des Startzeitraums an
Current: "./FHEM/00_SONOS.pm", gPath: ""
2016.01.23 10:11:00.322 1: SONOS0: ./FHEM/00_SONOS.pm is listening to Port 4711
2016.01.23 10:11:07.447 1: SONOS2: IsAlive-Thread gestartet. Warte 120 Sekunden und pruefe dann alle 30 Sekunden...
2016.01.23 10:11:07.650 1: SONOS3: Restore-Thread gestartet. Warte auf Arbeit...
2016.01.23 10:11:07.869 2: SONOS1: Discover Sonosplayer 'BRIDGE' (ZB100) Software Revision 6.0 with ID 'RINCON_000E58E3988A01400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:10.088 2: SONOS1: SonosPlayer 'BRIDGE' (ZB100) with ID 'RINCON_000E58E3988A01400_MR' is already defined (as 'Sonos_BRIDGE') and will only be updated
2016.01.23 10:11:10.090 2: SONOS1: SonosPlayer 'BRIDGE' is now updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:10.150 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58E3988A01400_sub0000000056
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:10.249 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58E3988A01400_sub0000000057
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:10.375 2: SONOS1: Discover Sonosplayer 'Wohnzimmer' (ZP90) Software Revision 6.0 with ID 'RINCON_000E58A376D201400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:11.603 2: SONOS1: SonosPlayer 'Wohnzimmer' (ZP90) with ID 'RINCON_000E58A376D201400_MR' is already defined (as 'Sonos_Wohnzimmer') and will only be updated
2016.01.23 10:11:11.808 2: SONOS1: SonosPlayer 'Wohnzimmer' is now updated
2016.01.23 10:11:11.842 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001645
2016.01.23 10:11:11.869 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001646
2016.01.23 10:11:11.900 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001647
2016.01.23 10:11:11.932 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001648
2016.01.23 10:11:11.966 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001649
2016.01.23 10:11:11.993 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001650
2016.01.23 10:11:12.013 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001651
2016.01.23 10:11:12.030 2: SONOS1: AudioIn-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001652
2016.01.23 10:11:12.135 2: SONOS1: Discover Sonosplayer 'Schlafzimmer' (S1) Software Revision 6.0 with ID 'RINCON_000E58C1DE0A01400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:11:13.385 2: SONOS1: SonosPlayer 'Schlafzimmer' (S1) with ID 'RINCON_000E58C1DE0A01400_MR' is already defined (as 'Sonos_Schlafzimmer') and will only be updated
2016.01.23 10:11:13.532 2: SONOS1: SonosPlayer 'Schlafzimmer' is now updated
2016.01.23 10:11:13.551 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001320
2016.01.23 10:11:13.564 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001321
2016.01.23 10:11:13.580 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001322
2016.01.23 10:11:13.593 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001323
2016.01.23 10:11:13.607 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001324
2016.01.23 10:11:13.619 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001325
2016.01.23 10:11:13.649 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001326
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:20.369 2: SONOS1: Discover Sonosplayer 'Schlafzimmer' (S1) Software Revision 6.0 with ID 'RINCON_000E58C1DE0A01400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:21.869 2: SONOS1: SonosPlayer 'Schlafzimmer' (S1) with ID 'RINCON_000E58C1DE0A01400_MR' is already defined (as 'Sonos_Schlafzimmer') and will only be updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.118 2: SONOS1: SonosPlayer 'Schlafzimmer' is now updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.146 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001327
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.167 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001328
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.189 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001329
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.221 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001330
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.242 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001331
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.267 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001332
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.296 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001333
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:22.772 2: SONOS1: Discover Sonosplayer 'Schlafzimmer' (S1) Software Revision 6.0 with ID 'RINCON_000E58C1DE0A01400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.182 2: SONOS1: SonosPlayer 'Schlafzimmer' (S1) with ID 'RINCON_000E58C1DE0A01400_MR' is already defined (as 'Sonos_Schlafzimmer') and will only be updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.451 2: SONOS1: SonosPlayer 'Schlafzimmer' is now updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.481 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001334
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.515 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001335
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.539 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001336
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.559 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001337
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.578 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001338
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.598 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001339
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:24.616 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58C1DE0A01400_sub0000001340
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:51.728 2: SONOS1: Discover Sonosplayer 'Wohnzimmer' (ZP90) Software Revision 6.0 with ID 'RINCON_000E58A376D201400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:53.275 2: SONOS1: SonosPlayer 'Wohnzimmer' (ZP90) with ID 'RINCON_000E58A376D201400_MR' is already defined (as 'Sonos_Wohnzimmer') and will only be updated
2016.01.23 10:16:53.510 2: SONOS1: SonosPlayer 'Wohnzimmer' is now updated
2016.01.23 10:16:53.549 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001653
2016.01.23 10:16:53.569 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001654
2016.01.23 10:16:53.614 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001655
2016.01.23 10:16:53.632 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001656
2016.01.23 10:16:53.655 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001657
2016.01.23 10:16:53.673 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001658
2016.01.23 10:16:53.695 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001659
2016.01.23 10:16:53.713 2: SONOS1: AudioIn-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001660
2016.01.23 10:16:54.088 2: SONOS1: Discover Sonosplayer 'Wohnzimmer' (ZP90) Software Revision 6.0 with ID 'RINCON_000E58A376D201400_MR'
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:55.682 2: SONOS1: SonosPlayer 'Wohnzimmer' (ZP90) with ID 'RINCON_000E58A376D201400_MR' is already defined (as 'Sonos_Wohnzimmer') and will only be updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:55.950 2: SONOS1: SonosPlayer 'Wohnzimmer' is now updated
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:55.973 2: SONOS1: Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001661
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.015 2: SONOS1: Rendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001662
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.052 2: SONOS1: GroupRendering-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001663
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.075 2: SONOS1: ContentDirectory-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001664
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.101 2: SONOS1: Alarm-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001665
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.120 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001666
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.139 2: SONOS1: DeviceProperties-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001667
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
2016.01.23 10:16:56.158 2: SONOS1: AudioIn-Service-subscribing successful with SID=uuid:RINCON_000E58A376D201400_sub0000001668
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Odd number of elements in hash assignment at C:/Strawberry/perl/lib/IO/Socket/IP.pm line 358, <$client> line 6.
Gruß Nobby1805
Hi Nobby1805,
das ist komisch. Hast du auch einen Fhem Neustart gemacht?
Da wir ja nicht wissen, wo genau das Problem auftritt, reicht es nicht, nur das Modul neuzustarten...
Und kannst du nochmal die new-Sub posten, wie sie mit Debug Ausgabe jetzt aussieht?
Danke schonmal...
Grüße
Reiner
ja, ich habe Fhem komplett neu gestartet ... man sieht ja auch, dass sich die Zeilennummer in der Meldung verändert hat, jetzt 358 vorher 352
sub new
{
my $class = shift;
use Data::Dumper;
Dumper(\@_);
my %arg = (@_ == 1) ? (PeerHost => $_[0]) : @_;
return $class->SUPER::new(%arg);
}
Hi Nobby1805,
ich bin aber auch ein Dödel...
Ein Print wäre doch auch super, oder? :)
Die eine Zeile muss natürlich
print Dumper(\@_);
heißen...
Grüße
Reiner
Wenn ihr schon am debuggen seit,
evtl. ist der Hinweis von Andre welcher auf die http.pm statt ip.pm zeigt hilfreich: http://forum.fhem.de/index.php/topic,10033.msg259741.html#msg259741
Das war ja soweit ich wusste die etwas sauberere Lösung das Problem anzugehen statt es mit "no warnings" einfach zu ignorieren.
Hi Claudiu,
da war aber das Problem, dass dann irgendwas mit SSL nicht mehr ging...
Grüße
Reiner
Hi Reiner,
bei mir hab ich zumindest dadurch noch keine Probleme feststellen können.
Allerdings scheint das ja eher die Stelle zu sein wo etwas schief läuft statt in der IP.pm?
Und ob das sonst bei längerer Laufzeit besonders gut ist dass dieser Hash immer länger wird?
Gruß
Claudiu
Hi Reiner,
jetzt kommt gaaaanz viel ... ich hänge es mal als Datei an
Gruß Norbert
Hi,
ich habe mal ein bisschen rumgespielt (da merkt man schon, dass ich jahrelang nicht mehr mit perl programmiert habe) und gebe jetzt zusätzlich den Aufrufstack aus ...
wobei m.E. in IP das Problem nur "gemeldet" wird ... erzeugt wird es woanders
Gruß Norbert
PS zur "Reihenfolge" im Log ... zuerst der Dump, dann der Call-Stack und dann ggf. die Fehlermeldung
Ich habe mal versucht zu finden, wo SendTE eingetragen wird .. aber leider erfolglos :(
Weiß jemand, wofür SendTE steht ?
Ich gebe ja gerne zu, dass ich nicht völlig verstehe was dort gemacht wird ::) aber derartige Fehlersuche war immerhin viele Jahre mein Job ;)
Ich glaube, ich habe das Problem gefunden, es liegt im Modul FHEM/lib/UPnP/ControlPoint.pm
# We've found examples of where devices claim to do transfer
# encoding, but wind up sending chunks without chunk size headers.
# This code temporarily disables the TE header in the request.
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, SendTE => 0);
my $ua = LWP::UserAgent->new(timeout => 20);
m.E. werden hier ZWEI Werte gepushed
pop(@LWP::Protocol::http::EXTRA_SOCK_OPTS);
und hier wird nur einer wieder entfernt
Wenn ich das Pop zweimal ausführe dann sieht der Log nach einem Restart gut aus :D
PS das ganze passiert zweimal in dem Modul
Hi Norbert,
mensch, da ist man mal wegen Besuch verhindert, dann löst du das Ding einfach mal so :)
Was mich dabei trotzdem etwas wundert, ist der Umstand, dass es bei manchen Perl-Versionen geht, und manchmal nicht...
Ich würde jetzt kurz eine Anpassung schreiben, die den Inhalt des Arrays @LWP::Protocol::http::EXTRA_SOCK_OPTS untersucht, sich merkt, ob "SendTE" schon enthalten ist (und wie es gesetzt ist), es hinzufügt, oder überschreibt, und dann am Ende entsprechend wieder korrekt zurücksetzt.
Das erscheint mir am sichersten. Ich bin mir nämlich auch nicht sicher, was genau mit der Verbindung passiert, wenn es zweimal enthalten ist (einmal mit 0 und einmal mit 1)...
Es wird aber nicht mehr Heute fertig werden ;)
Grüße und Danke für die tolle Unterstützung,
Reiner
gibt´s hier schon was neues? Ich weiß einfach nicht, was ich noch machen kann...die Performance ist echt nicht so toll unter jessie, wenn perl am rackern und rödeln ist :o
Hallo DanielGab,
ich habe da was eingebaut, baue aber gerade noch an anderen Features (die ich vorher begonnen hatte), sodass ich das gerade nicht veröffentlichen kann...
Ansonsten ist weiter oben doch ein kleiner Workaround...
Grüße
Reiner
Wobei das weiter oben kein Fix ist, sondern nur die Warnungen nicht ins Log geschreiben werden. Performanceprobleme würde ich aber wohl auch an anderer Stelle suchen.
Zitat von: dev0 am 30 Januar 2016, 15:51:53
Wobei das weiter oben kein Fix ist, sondern nur die Warnungen nicht ins Log geschreiben werden. Performanceprobleme würde ich aber wohl auch an anderer Stelle suchen.
Nö, das http://forum.fhem.de/index.php/topic,47758.msg397586.html#msg397586 ist schon ein Workaround ;) man könnte dazu auch ein unsauberer Fix sagen ;D
Stimmt, ich hatte an meinen Beitrag viel weiter oben gedacht...
Hallo zusammen,
hierzu auch den Beitrag http://forum.fhem.de/index.php/topic,48483.msg401316.html#msg401316 (http://forum.fhem.de/index.php/topic,48483.msg401316.html#msg401316) beachten...
Grüße
Reiner
Hallo zusammen,
ich habe das gleiche Verhalten wie eingangs von Markus berichtet.
Haufenweise Einträge ala:
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 352, <$client> line 4.
Ich habe den Workaround versucht der hier im Thread beschrieden ist:
--> Modul FHEM/lib/UPnP/ControlPoint.pm editiert und pop ein zweites Mal ausgeführt.
sub _createDevice {
my $self = shift;
my $location = shift;
my $device;
# We've found examples of where devices claim to do transfer
# encoding, but wind up sending chunks without chunk size headers.
# This code temporarily disables the TE header in the request.
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, SendTE => 0);
my $ua = LWP::UserAgent->new(timeout => 20);
my $response = $ua->get($location);
my $base;
if ($response->is_success && $response->content ne '') {
($device, $base) = $self->parseDeviceDescription($response->content,
{Location => $location},
{ControlPoint => $self});
}
else {
carp("Loading device description failed with error: " .
$response->code . " " . $response->message);
}
pop(@LWP::Protocol::http::EXTRA_SOCK_OPTS);
############################################################################
###Workaround, call pop another time
###https://forum.fhem.de/index.php/topic,47758.msg397586.html#msg397586
############################################################################
pop(@LWP::Protocol::http::EXTRA_SOCK_OPTS);
if ($device) {
$device->base($base ? $base : $location);
if ($response->is_success && $response->content ne '') {
$device->descriptionDocument($response->content);
}
}
return $device;
}
Hat leider nicht funktioniert, bzw. keine Veränderung gebracht. :(
Ich habe jetzt die quick and dirty Variante gewählt und habe in IP.pm das "no warnings eingefügt" :o
Auch ich bin inzwischen von Wheezy auf Jessie gewechselt und habe somit perl:5.020002.
2016.04.07 14:11:40 0: Featurelevel: 5.7
2016.04.07 14:11:40 0: Server started with 499 defined entities (fhem.pl:11191/2016-04-05 perl:5.020002 os:linux user:fhem pid:15555)
Ferner bekomme ich folgenden Fehler beim Neustart, vielleicht hat es ja was miteinander zu tun.
Smartmatch is experimental at /opt/fhem/FHEM/00_SONOS.pm line 4377.
Current: "/opt/fhem/FHEM/00_SONOS.pm", gPath: ""
Zeile 4377ff
if ($pingType ~~ @SONOS_PINGTYPELIST) {
SONOS_Log $udn, 5, "PingType: $pingType";
} else {
SONOS_Log $udn, 1, "Wrong pingType given for '$udn': '$pingType'. Choose one of '".join(', ', @SONOS_PINGTYPELIST)."'";
$pingType = $SONOS_DEFAULTPINGTYPE;
}
Jemand einen Ansatz wie ich es lösen kann ohne auf Wheezy zurück zu gehen? Diesbezüglich habe ich nur den Thread von rapster und reinerlein von 2014 gefunden, dem kann ich aber keinen Lösungsansatz entnehmen und lese es so, als ob die damaligen Probleme gelöst wurden....
Danke für Eure Hilfe,
Marcel
Hallo zusammen,
manchmal ist es doch besser erstmal den Kopf anzustrengen.
Der Punkt "Smartmatch is experimental at /opt/fhem/FHEM/00_SONOS.pm line 4377." ist mir inzwischen klar. Welcome Jessie.
Ich habe nun via cpan das modul experimental geladen und die 00_SONOS.pm mit folgendem use erweitert:
######ms modified 2016.04.07######
#requires sudo cpan experimental
#################################
use experimental 'smartmatch';
Für mehr Informationen http://blogs.perl.org/users/mike_b/2013/06/a-little-nicer-way-to-use-smartmatch-on-perl-518.html (http://blogs.perl.org/users/mike_b/2013/06/a-little-nicer-way-to-use-smartmatch-on-perl-518.html).
Bleibt bei mir noch der Fehler/Warnung "Odd number of elements...." und "Current: "/opt/fhem/FHEM/00_SONOS.pm", gPath: """
Für gPath habe ich die 00_SONOS.pm nun wie folgt abgeändert, weil es wohl nur ne debugging Ausgabe war.
########################################################
# Verrenkungen um in allen Situationen das benötigte
# Modul sauber geladen zu bekommen..
########################################################
my $gPath = '';
BEGIN {
$gPath = substr($0, 0, rindex($0, '/'));
}
if (lc(substr($0, -7)) eq 'fhem.pl') {
$gPath = $attr{global}{modpath}.'/FHEM';
}
use lib ($gPath.'/lib', $gPath.'/FHEM/lib', './FHEM/lib', './lib', './FHEM', './');
###print 'Current: "'.$0.'", gPath: "'.$gPath."\"\n";
use UPnP::ControlPoint;
require 'DevIo.pm' if (lc(substr($0, -7)) eq 'fhem.pl');
Bleibt also nur noch der Fehler/Warnung "Odd number of elements...."
Für Ratschläge bin ich dankbar....
Gruß Marcel
Hallo Marcel,
das sollten alles Punkte sein, die bereits behoben sind. Welche Version des Moduls verwendest du?
Aktuell ist:
# $Id: 00_SONOS.pm 11082 2016-03-19 12:16:40Z rleins $
# $Id: 21_SONOSPLAYER.pm 11082 2016-03-19 12:16:40Z rleins $
# $Id: Common.pm 10759 2016-02-07 20:00:12Z rleins $
# $Id: ControlPoint.pm 10759 2016-02-07 20:00:12Z rleins $
Und die Ausgabe von gPath ist in einem von beiden Fällen gefüllt (es wird diesselbe Datei als Fhem-Modul und als eigenständiger Prozess verwendet)...
Und ja, es ist nur eine Info :)
Grüße
Reiner
Hallo Reiner,
danke für deine schnelle Antwort.
Jetzt bin ich auch verwirrt, ich habe augenscheinlich ne alte Version. Dabei habe ich fhem gestern noch auf den neuesten Stand gebracht. Irgendwie scheinen die Sonos Module nicht mitgeladen zu werden.
Ich hatte mir auch zwischenzeitlich mal die Dateien aus deinem Dev gezogen.
Habe es jetzt mal mit "update all" versucht, was mich zumindest schon mal bei der 00_Sonos.pm auf die richtige Spur bring.
$Id: 00_SONOS.pm 11082 2016-03-19 12:16:40Z rleins $
Kann ich irgendwie sicherstellen, dass die Abhängigkeiten auch aktualisiert werden?
Danke und Grüße,
Marcel
Hallo Reiner,
der Post von gestern hat sich erledigt. Ich war leider nur auf dem Sprung und konnte nicht mehr antworten.
Alle Module sind jetzt auf dem von Dir genannten Stand.
Versionsliste:
# $Id: Common.pm 10759 2016-02-07 20:00:12Z rleins $
# $Id: ControlPoint.pm 10759 2016-02-07 20:00:12Z rleins $
# $Id: 00_SONOS.pm 11082 2016-03-19 12:16:40Z rleins $
# $Id: 21_SONOSPLAYER.pm 11082 2016-03-19 12:16:40Z rleins $
So langsam bekomme ich die Meldungen in den Griff :-)
Danke noch einmal und ein schönes Wochenende,
Marcel