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

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

Vorheriges Thema - Nächstes Thema

oldscout

Hallo,
ich habe mir auch mal das DLNARenderer Modul angeschaut. Cool Sache. Leider stürzt fhem komplett ab, wenn ich einen Renderer (hier Windows Mediaplayer Win7) mit "next" ansteuere.
Hier der Logeintrag:

Undefined subroutine &main::DLNARenderer_upnpCallAVTrasnport called at ./FHEM/98_DLNARenderer.pm line 811.

Und offensichtlich ist das ein Tippfehler..... kommt gleich mehrfach vor Version 2.0.1.
Habe es korrigiert. Aber offensichtlich versteht der Mediaplayer kein next, previous....


FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, FritzDect 200, HMLAN, HMUSB, Arduino Uno, ESP8266, Enigma2, FB7490, MySql-DB,TP-Link HS100, RaspiCCU

FranzB94

Hi!

Auch von mir vielen Dank für das Modul. Die UPnP-Quellen werden im geamten Netzwerk erkannt. Wenn man von der Oberfläche die Lautstärke reguliert, so funktioniert das auch. Wenn ich aber in der Detaildarstelltung (Device Overview) die Lautstärke ändern, so tut sich nichts. Will ich mit "set" einen anderen Parameter verändern, dann stürz fhem ab. Leider habe ich leine Fehlermeldung im Moment. Ich muss mal anders loggen. Hat vielleicht jemand eine Erklärung?.

Danke Franz

dominik

@MattG, vielen Dank für den Patch!! Habe diesen soeben eingechecked. Ist dann wohl morgen per Update verfügbar.

@Brockmann, ich gehe dem nochmals genauer nach. Es scheint mir so, als ob die Devices im Single Mode mit "Play()" angesteuert werden möchten und im Multiroom Mode dann per "SyncPlay()".

@oldscout, bitte mit Version 2.0.2 nochmals prüfen. Das wurde mit dem Patch von MattG korrigiert.

@FranzB94, kannst du mir sagen welchen "set" Command du ausgeführt hast? Wenn es pauseToggle/next/prev war, dann bitte mit der Version 2.0.2 morgen nochmals prüfen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

FranzB94

#408
@dominik: Ja genau die von Dir angeführten "set <name> next, play" etc. waren der Auslöser! Ich werde gleich mal updaten und probieren. Danke

Edit: Nach den erfolgten Update werden play, next etc. ohne Absturz ausgeführt! Danke. Probleme habe ich bei dem Befehl "speak" (hatte ich vorher vergessen zu erwähnen). Da sagt fhem immer: "DLNARenderer: speak requires 1 parameter." Lt. commandref ist aber aber kein Parameter notwendig: set <name> speak "This is a test. 1 2 3."
Vielleicht kannst du dazu mal was schreiben.

Edit2: Leider habe ich noch weitere Probleme:
- Ich habe einen WLAN Streaming Adapter von MEDION MD 86672. Dieser wird auch erkannt, allerdings läßt sich die Lautstärke nicht regulieren. Den absoluten fehler habe ich aber wohl gemacht, indem ich das Teil einen anderen Stream wiedergeben lassen wollte. der Stream wird zwar angezeigt, aber seitdem kommt aus dem NF-Ausgang nichts mehr ;), auch nicht nach Neuinitialisierung.
- Was mich auch irritiert: Wenn ich das DLNA Renderer-Device abschalten will mit "set HomeDLNA off" dann erfolgt nur die Meldung "DLNARenderer: Currently searching for device.."  Die gleiche Meldung erscheint auch bei einem "set HomeDLNA on".

dominik

Beim speak Befehl musst du auch die Hochkomma mit angeben. Die Hochkomma führen dazu, dass es als 1 Argument interpretiert wird.
set <name> speak "This is a test."

Bzgl. MD86672, verstehe ich dich richtig, dass auch ein komplett Reset des Devices die Probleme nicht behebt? Wenn die Meldung "DLNARenderer: Currently searching for device.." kommt, dann wurde das Device noch nicht gefunden.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

kalle86

ZitatBeim speak Befehl musst du auch die Hochkomma mit angeben. Die Hochkomma führen dazu, dass es als 1 Argument interpretiert wird.
set <name> speak "This is a test."
Habe ich gemacht, der Denon springt zwar auf den anspiel modus um es wird aber kein Sound wiedergegeben...

Das sagt meine Logfile dazu:
Zitat2016.09.14 20:29:24 2: DLNARenderer: XML formatting error:
not well-formed (invalid token) at line 19, column 107, byte 890 at /usr/lib/perl5/XML/Parser.pm line 187
, <Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportState val="NO_MEDIA_PRESENT"/>
    <TransportStatus val="OK"/>
    <PlaybackStorageMedium val="NONE"/>
    <RecordStorageMedium val="NOT_IMPLEMENTED"/>
    <PossiblePlaybackStorageMedia val="NONE,NETWORK"/>
    <PossibleRecordStorageMedia val="NOT_IMPLEMENTED"/>
    <CurrentPlayMode val="NORMAL"/>
    <TransportPlaySpeed val="1"/>
    <RecordMediumWriteStatus val="NOT_IMPLEMENTED"/>
    <CurrentRecordQualityMode val="NOT_IMPLEMENTED"/>
    <PossibleRecordQualityModes val="NOT_IMPLEMENTED"/>
    <NumberOfTracks val="1"/>
    <CurrentTrack val="1"/>
    <CurrentTrackDuration val="0:00:00"/>
    <CurrentMediaDuration val="0:00:00"/>
    <CurrentTrackMetaData val=""/>
    <CurrentTrackURI val="http://denon.vtuner.com/setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2EFAFE&id=62597"/>
    <AVTransportURI val="http://denon.vtuner.com/setupapp/denon/asp/func/dynamOD.asp?ex45v=0005CD2EFAFE&id=62597"/>
    <AVTransportURIMetaData val=""/>
    <NextAVTransportURI val=""/>
    <NextAVTransportURIMetaData val=""/>
    <CurrentTransportActions val=""/>
  </InstanceID>
</Event>
2016.09.14 20:29:24 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/98_DLNARenderer.pm line 300.

FranzB94

Hi dominik!
Zitat von: dominik am 14 September 2016, 19:45:54
Beim speak Befehl musst du auch die Hochkomma mit angeben. Die Hochkomma führen dazu, dass es als 1 Argument interpretiert wird.
set <name> speak "This is a test."

Bzgl. MD86672, verstehe ich dich richtig, dass auch ein komplett Reset des Devices die Probleme nicht behebt? Wenn die Meldung "DLNARenderer: Currently searching for device.." kommt, dann wurde das Device noch nicht gefunden.

Danke für die Rückmeldung. Das mit den Hochkommata werde ich ausprobieren. Ich werde mir auch mal die pm ansehen und das Zusammenspiel mit den DLNA-Geräten. Ich hatte gestern nur die Panik, wiel kein Ton mehr zu hören war. Mit der fernbedienung lies sich das Teil aber wiederbeleben. Danke

dominik

@kalle86, kannst du bitte nochmals mit verbose 5 den Fehler reproduzieren und diesen Log Output posten:
DLNARenderer: Received event: ...
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

FranzB94

Hi dominik: Ich war zwar nicht angesprochen, erlaube mir aber mal meinen Log-Auszug (5) hier auch einzustellen:

2016.09.17 14:07:26 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2016.09.17 14:07:27 5: DLNARenderer: AVTransport, SetAVTransportURI(0,http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=Dies ist ein Test,) succeed.
2016.09.17 14:07:27 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2016.09.17 14:07:27 5: DLNARenderer: AVTransport, Play(0,1) succeed.

Aus dem Lautsprecher kommt leider kein Ton.

kalle86


dominik

@Brockmann, SyncPlay ist nun gefixed :) Update sollte dann morgen verfügbar sein.

@FranzB94, kalle86, könnt ihr mal diese URL per Stream setzen:
set <name> stream http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=Dies ist ein Test
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

kalle86

Hey Dominik,
die url wird mir kurz im Display vom Denon angezeigt und darauf folgt dann gleich "Server Error"
Bei Verbose5 wird folgendes angezeigt:
2016.09.18 19:10:47 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2016.09.18 19:10:47 5: DLNARenderer: AVTransport, SetAVTransportURI(0,http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=test,<DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/"><item id="-1" parentID="parent" restricted="1"><upnp:class>object.item.audioItem.musicTrack</upnp:class><dc:title>http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=test</dc:title><upnp:album>http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=test</upnp:album><res protocolInfo="http-get:*:audio/mpeg:DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="3744">http://translate.google.com/translate_tts?tl=en&client=tw-ob&q=test</res></item></DIDL-Lite>) succeed.
2016.09.18 19:10:47 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2016.09.18 19:10:47 5: DLNARenderer: AVTransport, Play(0,1) succeed.
2016.09.18 19:10:47 4: DLNARenderer: Received event: $VAR1 = 'LastChange';
$VAR2 = '<Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportState val="TRANSITIONING"/>
    <CurrentTransportActions val="Stop"/>
  </InstanceID>
</Event>';

2016.09.18 19:10:47 4: DLNARenderer: $VAR1 = {
          'Event' => {
                     'xmlns' => 'urn:schemas-upnp-org:metadata-1-0/AVT/',
                     'InstanceID' => {
                                     'CurrentTransportActions' => {
                                                                  'val' => 'Stop'
                                                                },
                                     'TransportState' => {
                                                         'val' => 'TRANSITIONING'
                                                       },
                                     'val' => '0'
                                   }
                   }
        };

2016.09.18 19:10:47 4: DLNARenderer: Update reading transportState with TRANSITIONING
2016.09.18 19:10:47 4: DLNARenderer: Received event: $VAR1 = 'LastChange';
$VAR2 = '<Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportStatus val="OK"/>
  </InstanceID>
</Event>';

2016.09.18 19:10:47 4: DLNARenderer: $VAR1 = {
          'Event' => {
                     'xmlns' => 'urn:schemas-upnp-org:metadata-1-0/AVT/',
                     'InstanceID' => {
                                     'TransportStatus' => {
                                                          'val' => 'OK'
                                                        },
                                     'val' => '0'
                                   }
                   }
        };

2016.09.18 19:10:47 4: DLNARenderer: Update reading transportStatus with OK
2016.09.18 19:10:48 4: DLNARenderer: Received event: $VAR1 = 'LastChange';
$VAR2 = '<Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportStatus val="OK"/>
  </InstanceID>
</Event>';

2016.09.18 19:10:48 4: DLNARenderer: $VAR1 = {
          'Event' => {
                     'xmlns' => 'urn:schemas-upnp-org:metadata-1-0/AVT/',
                     'InstanceID' => {
                                     'TransportStatus' => {
                                                          'val' => 'OK'
                                                        },
                                     'val' => '0'
                                   }
                   }
        };

2016.09.18 19:10:48 4: DLNARenderer: Update reading transportStatus with OK
2016.09.18 19:10:48 4: DLNARenderer: Received event: $VAR1 = 'LastChange';
$VAR2 = '<Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
  <InstanceID val="0">
    <TransportStatus val="ERROR_OCCURRED"/>
    <TransportState val="STOPPED"/>
    <CurrentTransportActions val="Play,Next,Previous"/>
  </InstanceID>
</Event>';

2016.09.18 19:10:48 4: DLNARenderer: $VAR1 = {
          'Event' => {
                     'xmlns' => 'urn:schemas-upnp-org:metadata-1-0/AVT/',
                     'InstanceID' => {
                                     'CurrentTransportActions' => {
                                                                  'val' => 'Play,Next,Previous'
                                                                },
                                     'TransportStatus' => {
                                                          'val' => 'ERROR_OCCURRED'
                                                        },
                                     'TransportState' => {
                                                         'val' => 'STOPPED'
                                                       },
                                     'val' => '0'
                                   }
                   }
        };

2016.09.18 19:10:48 4: DLNARenderer: Update reading transportState with STOPPED
2016.09.18 19:10:48 4: DLNARenderer: Update reading transportStatus with ERROR_OCCURRED

FranzB94

@Dominik: Ich habe deinen Vorschlag http://translate.google.com/translate_tts?tl=[b]en[/b]&client=tw-ob&q=Dies ist ein Testmit 3 Geräten ausprobiert. Der ALDI WS 552/SA9800 sagt keinen Muks. Der ALDI WLAN-ADAPTER MMD86672 sagt, keine Verbindung und MD87180 zuckt auch nicht. Eventuell ist auch Google mit dem tl=en und dem folgenden deutschen Text überfordert? Ich muss mich mit den Geräten nochmal viel intensiver auseinendersetzen, da ich dein Modul so klasse finde.   

Brockmann

Zitat von: FranzB94 am 19 September 2016, 10:26:12
@Dominik: Ich habe deinen Vorschlag http://translate.google.com/translate_tts?tl=[b]en[/b]&client=tw-ob&q=Dies ist ein Testmit 3 Geräten ausprobiert. Der ALDI WS 552/SA9800 sagt keinen Muks. Der ALDI WLAN-ADAPTER MMD86672 sagt, keine Verbindung und MD87180 zuckt auch nicht. Eventuell ist auch Google mit dem tl=en und dem folgenden deutschen Text überfordert? Ich muss mich mit den Geräten nochmal viel intensiver auseinendersetzen, da ich dein Modul so klasse finde.
Du kannst in den Device-Attributen die Sprache auf DE umstellen.
Ich habe bei den Peaqs festgestellt, dass die bei Speak den Anfang der Wiedergabe verschlucken. Vermutlich dauert es einfach etwas, bis der Lautsprecher bereit ist. Aber die Streamwiedergabe beginnt trotzdem schon. Ist ein Problem des Gerätes, aber beim normalen Streaming stört das ja auch nicht weiter. Nur bei speak hört man eben allenfalls das Ende bzw. der Text muss lang genug sein, damit man überhaupt etwas hört. Macht man den Text hingegen zu lang, streikt Google und antwortet nicht. Ist alles etwas hakelig.

FranzB94

Zitat von: Brockmann am 19 September 2016, 10:37:07
Du kannst in den Device-Attributen die Sprache auf DE umstellen.

Danke für Deine Antwort. Verwirrend ist dabei, dass ein Attribut "ttsLanguage" existiert, aber in 'Device specific help' nicht aufgeführt wird. Auch aus Deinem Hinweis wird nicht klar: soll man da DE, Deutsch oder wie eintragen. Ich vergleiche mittlerweile die beiden Module 98_DLNARenderer.pm und 98_Text2Speech.pm um mich da ranzutasten. Das Modul 98_Text2Speech.pm ist ja schon älter und die Sprachausgabe mittels Google funktioniert einwandfrei. Dazu kommt das unterschiedliche DLNA-Verhalten der verschiedenen geräte.