98_DLNARenderer.pm (UPnP) (zuvor 98_DLNAClient.pm)

Begonnen von dominik, 04 August 2015, 20:23:38

Vorheriges Thema - Nächstes Thema

oxident

#345
Gerne. Habe Verbose auf 5 gesetzt (dlnadevice und spezifisches Device) und es kommt dann leider auch nur

4: DLNARenderer: RenderingControl, SetVolume(0,Master,10) does not exist.

Nützt Dir das etwas?

UPDATE: Bei einem Neustart kommt noch

2016.06.14 23:10:33 3: DLNARenderer: handleOnce failed, Can't use string ("
<Event xmlns = "urn:schemas-"...) as an ARRAY ref while "strict refs" in use at FHEM/lib/UPnP/ControlPoint.pm line 482.

dominik

Probier bitte das mal aus...
use UPnP::ControlPoint;

my %bla = ();
my $cp = UPnP::ControlPoint->new(SearchPort => 0, SubscriptionPort => 0, MaxWait => 30, UsedOnlyIP => \%bla, IgnoreIP => \%bla);
$cp->searchByType('urn:schemas-upnp-org:device:MediaRenderer:1', \&Discover_Callback);
$cp->handle();

sub Discover_Callback($$$) {
  my ($search, $device, $action) = @_;

  print "DEVICE: ".$device->friendlyName()."\n";

  if($device->friendlyName() eq "DEVICENAME") {
    my $upnpService = $device->getService('urn:schemas-upnp-org:service:RenderingControl:1');
    if($upnpService->getAction("SetVolume")) {
      print "SetVolume exists.\n";
    } else {
      print "SetVolume method does not exist.\n";
    }
    my $upnpServiceCtrlProxy = $upnpService->controlProxy();
    $upnpServiceCtrlProxy->SetVolume(0, "Master", 20);
  }
}


Die Fehlermeldung in deinem Post sagt nämlich aus, dass kein SetVolume existiert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

oxident

Hmm, komisch. Läuft durch:

DEVICE: bnetz
SetVolume exists.

... und danach per UPnPTest verifiziert. GetVolume liefert korrekterweise 20.

dominik

#348
Das ist jetzt eigenartig. Teste bitte mal die Version anbei, hab noch etwas Debug Output rein gemacht. Verbose für das Modul bitte auf 5 setzen damit auch alles angezeigt wird.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

oxident

Okay, es scheint sich zu bessern. SetVolume wird vom Device nun korrekt ausgeführt (Gegencheck durch UPnPTester)!
Die aktuelle Lautstärke wird in FHEM jedoch trotzdem mit 0 angegeben.
Im Log steht nun folgendes:

2016.06.18 01:27:41 3: DLNARenderer: Created device DLNA_4C0FC71DC147_1_0_000_888_382 for bnetz
2016.06.18 01:27:42 2: DLNARenderer: XML formatting error: File does not exist: <Event xmlns = "urn:schemas-upnp-org:metadata-1-0/AVT/">
<InstanceID val="0">
<RelativeTimePosition val="00:00:00"/>
</InstanceID>
</Event> at ./FHEM/98_DLNARenderer.pm line 1170.
, <Event xmlns = "urn:schemas-upnp-org:metadata-1-0/AVT/">
<InstanceID val="0">
<RelativeTimePosition val="00:00:00"/>
</InstanceID>
</Event>
2016.06.18 01:27:42 3: DLNARenderer: handleOnce failed, Can't use string ("
<Event xmlns = "urn:schemas-"...) as an ARRAY ref while "strict refs" in use at FHEM/lib/UPnP/ControlPoint.pm line 482.

Wobei mir generell auffällt, dass der eigentliche Devicename bei diesem Gerät nicht ganz dem "Muster" meiner anderen Geräte entspricht. Scheinbar wird hier die komplette UUID übernommen: DLNA_4C0FC71DC147_1_0_000_888_382
Bei den anderen Devices wird nur der hintere Teil übernommen: DLNA_002261EE0F56

Aber das ist bestimmt nicht relevant, oder?

dominik

Super, zumindest schon mal einen Schritt weiter.

Der längere Device Name liegt an der "chinesischen" UUID ;) Jetzt stimmt nur noch was nicht mit der Event Verarbeitung. Ich werde noch paar Log Meldungen einbauen und stell dann eine neue Version zum Testen ein. Irgendwie bekommen wir das noch zum Laufen!
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

oxident


dominik

@oxident, stell bitte das verbose Attribute auf 5 im Module. Mir fehlt da eine Ausgabe im Log "DLNARenderer: Received event: ...". Die bräuchte ich unbedingt um zu sehen was überhaupt ankommt.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

oxident

#353
Hmm, das habe ich direkt nach dem Anlegen eigentlich erledigt. Sowohl beim "Master"-Device, als auch bei dem automatisch erstellten Device für die China-Birne. Andere Ausgaben erscheinen aber leider nicht...

UPDATE:
Also es erscheint beim Setzen der Lautstärke nur folgendes:

2016.06.18 19:33:06 1: PERL WARNING: Loading device description failed with error: 500 read timeout at ./FHEM/98_DLNARenderer.pm line 213
2016.06.18 19:36:45 5: DLNARenderer: RenderingControl: urn:schemas-upnp-org:service:RenderingControl:1 found. OK.
2016.06.18 19:36:45 5: DLNARenderer: RenderingControl, SetVolume(0,Master,42) succeed.

dominik

Probier es nochmal neu anzulegen, das "Loading device description failed..." sollte nicht kommen. Nach dem SetVolume müsste dann ein Event im Log angezeigt werden.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Jack_n

Hallo,

bin ganz neu im Thema FHEM aber mir schwirren schon massig Ideen im Kopf herum :-)

Falls der Beitrag hier falsch ist bitte ich die Admins ihn umzuhängen.

Ich habe einen DENON AVR, der im Display sehr schön die Infos's zB. von getaggten MP3 Dateien anzeigt.
Ich würde dieses Display gerne für Meldungen von FHEM "missbrauchen".

Die Idee ist auf dem Rechner eine leere MP3 abzulegen mit Länge ca. 10 - 15 Sek.
Die Datei wird dann zB mit mid3v2 mit den Infos getagged die ich am Display vom Denon ausgeben möchte (zB. Anruf von 0176666666 Max Muster).
Jetzt noch mit dem 98_DLNARenderer an den Denon schieben und ich müsste die Info auf dem Display haben, oder ?

Ginge das?

Vielen Dank und viele Grüße
Joachim

dominik

Hallo Joachim,

deine Idee hört sich realisierbar an. Wenn du die Datei jetzt schon am DENON AVR mit dem DLNARenderer wiedergeben kannst, dann steht ja einem Proof of Concept mit manuell taggen nichts mehr im Wege.

Gruß,
Dominik
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Update im 1. Post...

v2.0.0 RC5 - 20160614
- BUGFIX: support events from devices with wrong serviceId
- BUGFIX: fix perl warning on startup
- BUGFIX: fix error if LastChange event is empty

Unterstützung gesucht für...
- Commandref DE
- Commandref EN
- FHEM Wiki Artikel (http://www.fhemwiki.de/)

Würde mich freuen wenn mich jemand bei den Tätigkeiten unterstützen könnte um die Funktionalitäten ordentlich zu dokumentieren. Sobald das getan ist, werde ich das Modul im offiziellen SVN aufnehmen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Jack_n

Hallo Dominik,

mein Problem ist dass ich sehr wenig mit FHEM gearbeitet habe bisher.

Ich werde mal von Hand eine MP3 taggen und dann an den Denon schicken.

Wenn das klappt brauch ich aber Euch Cracks...

Viele Grüße
Joachim

oxident

Danke für die neue Version!
Bei mir erscheint im Log nun folgendes:

2016.06.23 20:57:30 3: DLNARenderer: DLNA Renderer v2.0.0 RC5
2016.06.23 20:57:30 3: DLNARenderer: Created device DLNA_4C0FC71DC147_1_0_000_888_382 for bnetz
2016.06.23 20:57:30 2: DLNARenderer: XML formatting error: File does not exist: <Event xmlns = "urn:schemas-upnp-org:metadata-1-0/AVT/">
<InstanceID val="0">
<RelativeTimePosition val="00:00:00"/>
</InstanceID>
</Event> at ./FHEM/98_DLNARenderer.pm line 1171.
, <Event xmlns = "urn:schemas-upnp-org:metadata-1-0/AVT/">
<InstanceID val="0">
<RelativeTimePosition val="00:00:00"/>
</InstanceID>
</Event>

Bringt Dich das irgendwie weiter?
Es geht noch um die China-Birne mit der komischen ID ;-)