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

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

Vorheriges Thema - Nächstes Thema

KölnSolar

Hmmm,
leider gar nicht so einfach.  :'( Der Aufruf $cp = UPnP::ControlPoint->new erfolgt im define des devices. Zu diesem Zeitpunkt sind die Attribute noch gar nicht geladen.  >:(

@Reinerlein: Die Modifikation der ControlPoint.pm funktioniert aber(getestet mit AttrVal($hash->{NAME}, 'EnvPrefix', 's'));

@Dominik: Deshalb funktioniert auch die Übergabe des LogLevels nicht  >:( Und die beiden Zeilen   my @usedonlyIPs = split(/,/, AttrVal($hash->{NAME}, 'usedonlyIPs', ''));
  my @ignoredIPs = split(/,/, AttrVal($hash->{NAME}, 'ignoredIPs', ''));
machen irgendwie für mich gar keinen Sinn. :-\

Ich sehe nun 2 Optionen:
- nicht als Attribut, sondern als option beim device-define
- $cp = UPnP::ControlPoint->new(und abhängige Funktionsaufrufe) erst nach dem define UND dem Laden der Attribute ausführen.

Zur 2. Option fehlt mir aber das Wissen, wie/wo man das "richtig" einbauen würde. In die AttrFn ?

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Reinerlein

Hi Markus,

du hast natürlich Recht, da es in einer eigenen Sub stand, hatte ich das nicht gesehen.
Aber eigentlich ist das auch kein großes Ding.

- Den eigentliche Aufruf im Define rausmachen.

- Am Ende von Define:

InternalTimer(gettimeofday() + 1, 'DLNARenderer_DelayStart', $hash, 0);


- Dann noch die Sub anlegen:

sub DLNARenderer_DelayStart($) {
  my ($hash) = @_;

  DLNARenderer_setupControlpoint($hash);
  DLNARenderer_startDlnaRendererSearch($hash);
  readingsSingleUpdate($hash,"state","initialized",1);
}


Ob das jetzt ausreicht, oder ob noch mehr in die zeitlich verlagerte Sub verschoben werden muss, müsste man noch prüfen... das ist nur in Kladde :)

Grüße
Reiner

mumpitzstuff

Ich glaube für sowas gibts globale Events. Ich bin jetzt auch kein FHEM Experte, aber so ein Timer kann funktionieren, muss es aber nicht. Vermutlich ist man mit einem globalen Event auf der sicheren Seite. Siehe dazu auch:

https://wiki.fhem.de/wiki/DevelopmentModuleIntro#globale_Events

Reinerlein

Hi,

Timer werden erst nach "init_done" verarbeitet, und sind somit sicher nach dem fertigen Start von FHEM.

Das mit dem globalen Event geht natürlich auch. Da hier aber noch kein Code für Event-Verarbeitung enthalten ist, erschien es mir als größere Hürde :)

Grüße
Reiner

KölnSolar

Hallo Reiner,
ich hab es jetzt mal mit dem timer und der verzögerten "Definition" umgesetzt. Gegenüber Deinem Vorschlag hab ich lediglich das Attribut envPrefix genannt. Funktioniert soweit, zumindest in meinem Testsystem und produktiv mit mute/volume. Ich würde die Version hier veröffentlichen, wenn mir nicht beim Streaming im Prod-System ein Freeze von 30 Sek. aufgefallen wäre bzw. das Streaming nich funktioniert  :o
2018.04.26 18:00:57.568 5: Cmd: >{BlockingStart('809')}<
2018.04.26 18:00:57.572 5: Cmd: >{DLNARenderer_generateDidlLiteBlockingFinished('DLNA_4844f7aa62ab|http://192.168.178.50:8083/fhem/rss/mycallrss.jpg|')}<
2018.04.26 18:00:57.573 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
--- log skips    30.192 secs.
2018.04.26 18:01:27.765 5: DLNARenderer: AVTransport, SetAVTransportURI(0,http://192.168.178.50:8083/fhem/rss/mycallrss.jpg,) succeed.
2018.04.26 18:01:27.767 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2018.04.26 18:01:27.806 5: DLNARenderer: AVTransport, Play(0,1) succeed.


Ich geh dann mal auf die Suche....
Danke&Grüße
Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

schwatter

#545
Hallo zusammen,

hat jemand das Plugin mit Cocy auf  Enigma2 am laufen? Gefunden wird der Renderer bei mir nicht.
UpnpTester gibt folgendes aus:

+-+ cocy Media Renderer on vuduo2 (Device)
  |   
  |   Manufacturer: cocy
  |   FriendlyName: Media Renderer on vuduo2
  |   UDN: uuid:7013106a-707a-4568-ae58-b836db83a7e8
  |   DeviceType: urn:schemas-upnp-org:device:MediaRenderer:1
  |   ModelName: Media Renderer on vuduo2
  |


Internals:
   NAME       dlnadevices
   NR         140
   STATE      initialized
   TYPE       DLNARenderer
   UDN        0
   VERSION    v2.0.7
   READINGS:
     2018-04-26 19:40:12   state           initialized
   helper:
     caskeid    0
     caskeidClients
Attributes:
   acceptedUDNs uuid:7013106a-707a-4568-ae58-b836db83a7e8
   room       3. Wohnzimmer
   userattr   acceptedUDNs defaultRoom ignoreUDNs

frank

hast du an der richtigen stelle gesucht?
ZitatAfter about 2 minutes you can find all automatically created DLNA devices under "Unsorted".
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

schwatter

...jetzt macht es klick...danke. Ja, da issa  :P

KölnSolar

Ich bin dem Problem näher gekommen: Es funktioniert alles auf dem Samsung TV, also volume, mute, stream, play, on, off.
Lediglich das Streaming eines "on-demand"-Bildes http://192.168.178.xx:8083/fhem/rss/mypicturerss.jpg führt zu einem 30 Sekunden freeze, wenn das Bild auf dem SELBEN Server generiert wird. Da scheint sich also RSS mit dem DLNARender gegenseitig zu blockieren.  :(

@STV-User: Ihr könnt jetzt die attachte Version nutzen und bei der Definition des TV einfach für den optionalen DLNAClient den device-name des DLNA-Renderer-devices des TV angeben. Genauere Informationen findet Ihr in den STV-Threads.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

frank

hallo markus,
bei mir gibt es hin und wieder ein freeze, wenn rss zb beim generieren der dateien probleme hat. zb wenn rss ein bild aus dem internet einbinden soll und dabei auf das bild warten muss.

allerdings hat das noch keine 30s gedauert, eher 3s.
das wird dann eigentlich auch im log sichtbar.
nur mal so als hinweis.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

KölnSolar

Hi frank,
jede Info kann helfen  ;)
Es ist aber reproduzierbar 30 Sek. Irgendwo muss also ein timeout von 30 Sek. drin stecken. Nur wo und warum?  :-\ :-[ :-\
Werde das mit Detaildebugging rausfinden.  ;D Wäre ja schade, wenn RSS-Bilder nicht gingen, für die wir so gekämpft haben  ;)
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

frank

ich werde erst nächste woche testen können.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Fhemotto

#552
Hallo

Habe heute erfolgreich mit dem  DLNARenderer getestet.
F(8090) und M(6179) Serie.
Habe aber ein Problem mit meinem AVM FRITZ!MediaRenderer
Dies ist ein Repeater N/G von AVM, den ich seit Jahre mit dem  DLNAClient
erfolgreich im Einsatz habe.
Folgende Meldungen ( alles mit verbose5) im Log:
2018.04.27 19:29:08 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 19:29:08 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 19:29:11 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 19:29:26 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2018.04.27 19:29:26 5: DLNARenderer: AVTransport, SetAVTransportURI(0,http://avw.mdr.de/streams/284320-0_mp3_high.m3u,<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://avw.mdr.de/streams/284320-0_mp3_high.m3u</dc:title><upnp:album>http://avw.mdr.de/streams/284320-0_mp3_high.m3u</upnp:album><res protocolInfo="http-get:*:audio/x-mpegurl:DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000" size="149">http://avw.mdr.de/streams/284320-0_mp3_high.m3u</res></item></DIDL-Lite>) succeed.
2018.04.27 19:29:26 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.


Die Meldung 2018.04.27 19:29:08 3: DLNARenderer: handleOnce failed, junk '
' after XML element      kommt zyklisch immer wieder

Es wird zwar "succeed" gemeldet aber ich habe keine Reaktion am Empfänger

Nachtrag: Nach einem Neustart noch folgende Meldungen:

xxxx.xx.xx xx:xx:xx 5: ControlPoint: Accepted Search-Response: "CACHE-CONTROL: max-age=1800
DATE: Fri, 27 Apr 2018 18:00:11 GMT
EXT:
LOCATION: http://192.168.155.68:9197/dmr
SERVER: Samsung-Linux/4.1, UPnP/1.0, Samsung_UPnP_SDK/1.0
ST: urn:schemas-upnp-org:device:MediaRenderer:1
USN: uuid:4fd13ed5-55d3-449f-97bc-e9d4e963b485::urn:schemas-upnp-org:device:MediaRenderer:1
Content-Length: 0
BOOTID.UPNP.ORG: 2

"
2018.04.27 20:00:17 4: DLNARenderer: deviceAdded, [TV] Samsung 6 Series (50)
2018.04.27 20:00:17 1: 192.168.155.44:55000 reappeared (samsungTV)
xxxx.xx.xx xx:xx:xx 5: ControlPoint: Accepted Search-Response: "LOCATION: http://192.168.155.100:49200/MediaRendererDevDesc.xml
SERVER: FRITZ!WLAN Repeater N/G UPnP/1.0 AVM FRITZ!WLAN Repeater N/G 68.04.88
CACHE-CONTROL: max-age=1800
EXT:
ST: urn:schemas-upnp-org:device:MediaRenderer:1
USN: uuid:fa095ecc-e13e-40e7-8e6c-9CC7A60FA3AE::urn:schemas-upnp-org:device:MediaRenderer:1

"
2018.04.27 20:00:18 4: DLNARenderer: deviceAdded, AVM FRITZ!MediaRenderer
2018.04.27 20:00:18 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2018.04.27 20:00:18 5: DLNARenderer: AVTransport: urn:schemas-upnp-org:service:AVTransport:1 found. OK.
2018.04.27 20:00:18 5: DLNARenderer: RenderingControl: urn:schemas-upnp-org:service:RenderingControl:1 found. OK.
2018.04.27 20:00:18 5: DLNARenderer: RenderingControl: urn:schemas-upnp-org:service:RenderingControl:1 found. OK.
2018.04.27 20:00:18 4: DLNARenderer: SpeakerManagement unknown for DLNA_9CC7A60FA3AE.
2018.04.27 20:00:18 4: DLNARenderer: SessionManagement unknown for DLNA_9CC7A60FA3AE.
2018.04.27 20:00:19 1: Timeout for MilightBridge_DoPing reached, terminated process 2399
2018.04.27 20:00:19 3: BlockingCall for MilightBridge1 was aborted
xxxx.xx.xx xx:xx:xx 5: ControlPoint: Accepted Search-Response: "CACHE-CONTROL: max-age=1800
Date: Thu, 01 Jan 1970 02:05:56 GMT
EXT:
LOCATION: http://192.168.155.44:7676/smp_16_
SERVER: SHP, UPnP/1.0, Samsung UPnP SDK/1.0
ST: urn:schemas-upnp-org:device:MediaRenderer:1
USN: uuid:0bebc200-00c8-1000-87c7-0c8910b67f18::urn:schemas-upnp-org:device:MediaRenderer:1
Content-Length: 0

"
2018.04.27 20:00:20 4: DLNARenderer: deviceAdded, [TV]Samsung LED55
xxxx.xx.xx xx:xx:xx 5: ControlPoint: Accepted Search-Response: "CACHE-CONTROL: max-age=1801
DATE: Fri, 27 Apr 2018 18:00:16 GMT
EXT:
LOCATION: http://192.168.155.67:8888/upnp_descriptor_0
SERVER: Linux/2.6.33-rc4 UPnP/1.0 MediabolicUPnP/1.8.225
ST: urn:schemas-upnp-org:device:MediaRenderer:1
USN: uuid:82b03b99-3b3b-99b9-9032-99093bb9328b::urn:schemas-upnp-org:device:MediaRenderer:1

"
2018.04.27 20:00:22 4: DLNARenderer: deviceAdded, HT-R693
2018.04.27 20:00:22 1: PERL WARNING: Subscription request failed with error: 412 Invalid Timeout at ./FHEM/98_DLNARenderer.pm line 1366
2018.04.27 20:00:22 1: PERL WARNING: Subscription request failed with error: 412 Invalid Timeout at ./FHEM/98_DLNARenderer.pm line 1370
2018.04.27 20:00:22 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 20:00:23 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 20:00:23 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 20:00:24 3: DLNARenderer: handleOnce failed, junk '
' after XML element

2018.04.27 20:01:16 1: 192.168.155.67:60128 reappeared (Onkyo)


Vielen Danke schon mal für die Arbeit bisher.

KölnSolar

ZitatDies ist ein Repeater N/G von AVM, den ich seit Jahre mit dem  DLNAClient
erfolgreich im Einsatz habe.
Wie machst Du das ? Lt. upnptester kann meiner nur die Services aura und configd  ???

Ich hab die 30 sek. freeze näher eingegrenzt: Zeile 299 in HTTP.pm
             $self->SUPER::request($http_request)
Super, jetzt muss ich erst mal gucken was dieses SUPER bedeutet.. ::)

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Fhemotto

Hallo
Verstehe deine Frage nicht ganz.

Bin leider kein Experte, nutze den Repeater N/G für mein Internetradio oder auch für durchsagen wie ,,Waschmaschine fertig" im ganzen Haus als UKW Sender.
In einem DOIF z.B. set DLNAFritzRenderer stream http://stream.sunshine-live.de/live/mp3-192/stream.sunshine-live.de/play.m3u
Mit dem DLNAClient hat dies bisher gut geklappt.
Mit dem upnptester  habe ich auch schon geschaut und gestreamt, aber da fehlen mir die Kenntnisse was der  Repeater N/G können muss oder soll. Es geht mit dem DLNAClient und das ist mir wichtig.
Wenn du genauere Infos brauchst bitte schreiben (Services aura und configd  ?????).