73_MPD.pm, cmd error : Das Argument ist ungültig

Begonnen von Brandensittich, 26 Oktober 2018, 15:14:10

Vorheriges Thema - Nächstes Thema

Brandensittich

Hallo und guten Tag zusammen,

seit einem Update, welches ich im September gemacht habe funktioniert das 73_MPD.pm Modul bei mir nicht mehr. Davor hat es viele Monate hervorragend funktioniert.

MPD ist wie folgt eingebunden:define Radio MPD 192.168.1.200
attr Radio userattr appcontrol
attr Radio devStateIcon play:rc_PLAY:stop stop:rc_STOP:play pause:rc_PAUSE:pause
attr Radio fm_type 1
attr Radio group Radio
attr Radio icon it_radio
attr Radio loadPlaylists 1
attr Radio player mpd
attr Radio room Schlafzimmer
attr Radio titleSplit 1
attr Radio unknown_artist_image /fhem/icons/1px-spacer
attr Radio volumeStep 2


Folgende Zeilen erscheinen im Log:2018.10.26 14:59:12 1: Including fhem.cfg
2018.10.26 14:59:15 3: Radio, Device defined.
2018.10.26 14:59:23 0: Featurelevel: 5.9
2018.10.26 14:59:23 0: Server started with 145 defined entities (fhem.pl:17613/2018-10-24 perl:5.020002 os:linux user:fhem pid:1130)
2018.10.26 14:59:28 2: Radio, cmd error : Das Argument ist ungültig
2018.10.26 14:59:28 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/73_MPD.pm line 976.
2018.10.26 14:59:33 2: Radio, cmd error : Das Argument ist ungültig
2018.10.26 14:59:38 2: Radio, cmd error : Das Argument ist ungültig
2018.10.26 14:59:38 3: Radio, error loading music -> Das Argument ist ungültig
(Das Logfile habe ich gekürzt. Wenn mehr Infos notwendig sind würde ich diese nachreichen)

In der Weboberfläche steht der "STATE" auf "error".
Hat jemand eine grundsätzliche Idee was das Problem sein könnte?

Besten Dank und einen schönen Tag!
Christian

Wzut

FHEM kann keine Verbindung zu mpd Dienst auf 192.168.1.200 aufbauen.
Entweder läuft dort der mpd gar nicht oder die Ziel IP 192.168.1.200 ist falsch.
Wenn FHEM und mpd auf dem gleichen System laufen würde ich als IP immer 127.0.0.1 benutzen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Brandensittich

Das triift beides nicht zu.

MPD läuft auf dem Zielrechner und die IP ist korrekt.
Ich kann mich vom FHEM Rechner auch via MPC auf das Ziel verbinden.

pi@fhem:~ $ mpc -h 192.168.1.200
WDR 2 Suedwestfalen aktuell, Westdeutscher Rundfunk Koeln: Rostock - Nürnberg 0:0
[playing] #1/2 674:26/0:00 (0%)
volume: 52%   repeat: off   random: on    single: off   consume: off
pi@fhem:~ $


Und es hat vir dem Fehler auch länger als ein Jahr problemlos funktioniert.
Was bedeutet denn überhaupt ,,Das Argument ist ungültig"?

Wzut

Das ist der Perl Rückgabewert beim Versuch eine tcp Verbindung aufzubauen, es gibt nur eine Stelle im Modul wo der Fehler erzeugt wird :
my $sock = IO::Socket::INET->new(
    PeerHost => $hash->{HOST},
    PeerPort => $hash->{PORT},
    Proto    => 'tcp',
    Timeout  => $hash->{TIMEOUT});

if (!$sock)
{
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,"state","error");
  readingsBulkUpdate($hash,"last_error",$!);
  readingsBulkUpdate($hash,"presence","absent"); # MPD ist wohl tot :(
  readingsEndUpdate($hash, 1 );
  Log3 $name, 2 , "$name, cmd error : ".$!;
  return $!;
}


Ich kenne den Fehler eigentlich nur für den Fall das in $hash->{HOST} ein Hostname statt einer IP steht der aber nicht durch DNS aufgelöst werden kann.
Poste doch bitte mal ein list von deinem Radio, dann sieht man zumindest die aktuellen Werte von HOST, PORT und TIMEOUT
oder auch wenn du es dir zutraust setze unterhalb von
Log3 $name, 2 , "$name, cmd error : ".$!;
noch
Log3 $name, 2 , "$name, cmd error : ".$@;
oder tausche alle $! gegen $@ , vllt wird die Fehlermeldung dann etwas klarer.
Nach der Änderung bitte das reload 73_MPD oder shutdown restart nicht vergessen.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Brandensittich

Vielen Dank für Deine Unterstützung! Es handelte sich tatsächlich um ein lokales Netzwerkproblem in meinem System, welches ich mit Deinen Hinweisen identifizieren und lösen konnte.
Die Software arbeitet korrekt und das Problem hat sich erledigt. Danke nochmal!

Wzut

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Brandensittich

#6
Es war ein klassisches OSI Layer 8 Problem. In der FHEM-Konfig habe ich eine IP-Adresse angegeben, beim Testen in der Linux Shell habe ich einen Hostnamen verwendet, der jedoch zu einer ganz anderen IP-Adresse aufgelöst wurde. MPC funktionierte damit. Ich hatte nur nicht bemerkt, dass die IP-Adresse in der Konfig eine andere war als in der Linux Shell. Durch Abschaltung der Systeme bei einem physischen Umzug der Geräte haben diese nach dem ersten Boot eine neue IP-Adresse vom DHCP-Server bekommen...
Du hast also vom Grundsatz her Recht gehabt und ich wollte es nicht wahrhaben... Asche auf mein Haupt.  :'(