Autor Thema: Neuentw. Modulpaket zu UPnP: Controller, Device, DLNA(Renderer-Ersatz)  (Gelesen 8695 mal)

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Ausgehend von der Fragestellung
UPnP - Simple Service Discovery Protocol (SSDP) als Basismodul
hat sich ergeben, dass der Fragesteller gerne ein Modul hätte, mit welchem sich ein upnp-device in FHEM anlegen lässt. Durch meine Kenntnis(u. nicht völlige Zufriedenheit) mit dem DLNARenderer habe ich als Ziele für eine Neuentwicklung definiert:

1. FHEM-Modulpaket, welches sowohl Controllerfunktionen, als auch Devicefunktion bereitstellt
2. das Thema UPnP in/mit FHEM für user transparenter zu machen. Also quasi einen sniffer bereitzustellen u. wesentliche Funktionen von UPnP in einem Modul umzusetzen
3. wir haben ein paar Module, die das fremde Perlpaket perlupnp (SONOS,DLNARenderer,entertainTV) oder Net::UPnP(YAMAHA_MC) nutzen. Ein gleichzeitiger Einsatz der nutzenden Module ist nicht möglich.
4. Zumindest das Paket perlupnp blockiert FHEM. Daher eine sinnvolle "Entzerrung" von "technischer" UPnP-Funktionalität u. anwenderspezifischen Funktionalitäten in separate Module.
5. Neue Funktionalität(z.B. DLNA-Control von Mediaservern(SONOS hat das glaub ich eingebaut) oder weitere actions des services RenderingControl.......)

Der Weg zum Ziel:
- es gibt kein Perl-Paket, welches umfassend und non-blocking UPnP unterstützt--> das Paket perlupnp hat noch die umfassendste Funktionalität, ist aber blockierend-->perlupnp nutzen;evtl. später non-blocking "umbauen"
- Das physische Modul UPNPController(Physisch bedeutet in FHEM ein device, welches sich in der einen Richtung um die Kommunikation mit der physischen Hardware kümmert, und in der anderen die Kommunikation zu einem logischen Modul, welches die Anwenderfunktionaltät liefert) ist entstanden, um die technischen Kernfunktionalitäten von UPnP in FHEM abzubilden
- Ebenso das Modul UPNPDevice, um in FHEM ein UPnP-device anzulegen.
- Ein 1. logisches Modul, DLNAController, welches in einem 1. Schritt dem Anwender in Verbindung mit UPNPController die selbe Funktionalität wie der DLNARenderer bietet

Die einzelnen Module des aktuellen Entwicklungsstands und ggfs. "Zubehör" findet Ihr unter folgenden Posts attached.
Da ich selber nur eine begrenzte Anzahl von devices habe, seid bitte vorsichtig in der Nutzung. Möglichst in einer Testumgebung, aber zumindest immer darauf gefasst, dass FHEM abstürzt oder looped !!! Alles ist bisher in einem Betastatus mit Fokus auf technische Funktionalität(ohne freezes, Abstürze.... ;))

Modulbeschreibungen u. Quellcode:
UPNPController - Basismodul (notwendig für logische Module wie DLNAController)
UPNPDevice - UPnP-device in FHEM(Basismodul nicht notwendig;keine user-Funktionalität)
DLNAController - logisches Modul für DLNA; to control Renderer-devices; Basismodul mandatory


« Letzte Änderung: 25 April 2021, 20:05:28 von KölnSolar »
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
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Neuentw. UPNPController - UPnP: Controller
« Antwort #1 am: 15 Februar 2021, 19:30:10 »
UPNPController

Das Herz des Modulpakets. Es öffnet 3 Ports für die UPnP-Kommunikation mit dem lokalen Netzwerk. Der Searchport wird mit dem vom User definierten device verbunden.
Bei der Definition werden 2 weitere FHEM-devices automatisch für die beiden anderen Ports angelegt. Sie heißen "UPNPSocket-"userdevicename"-"PortNo(Portno.=1900,random) und liegen im room=hidden. Diese beiden devices sollten niemals von user-Seite verändert werden. Abstürze sind sonst vorprogrammiert !!!!

Das Modul nutzt das Paket perlupnp, welches wir tw. bereits in FHEM/lib/UPnP liegen haben.

Das device wird ohne weitere Parameter definiert, z.B. define UPNP_Controller UPNPController
Mit der Definition wird ein search-request im lokalen Netzwerk mit searchterm=ssdp:all gesendet. Dies bewirkt, dass sämtliche eingehenden UPnP-Notify-messages akzeptiert/verarbeitet werden. Dies passiert aber erst dann, wenn sich ein device gem. UPnP-Standard irgendwann periodisch meldet. Soll heißen, es dauert bis alle devices erstmalig erkannt wurden. Etwas beschleunigen kann man es, indem man z.B. den set-Befehl searchterm mit dem Parameter upnp:rootdevice ausführt. Damit werden alle Rootdevices aufgefordert sich sofort zu melden(tun aber nicht alle). Die searchterms werden zwar nur einmalig gesendet, allerdings wird jede (periodisch) eingehende message eines devices gegen die searchterms geprüft. Daher fiel auch die Wahl auf ssdp:all als initialem searchterm. Wer das beenden möchte kann den stopSearch-Befehl mit dem Parameter des searchterms benutzen. Mit etwas UPnP-Know-How können auch andere searchterms z.B. für bekannte services benutzt werden.

Die gefundenen devices werden als readings angelegt. Dabei wird jedes device durch den readingname IP_Port repräsentiert. Attribute des devices werden 1:1 übernommen u. als readings mit entsprechender Bezeichnung angelegt. Die Services eines devices werden mit devicereadingname-zs-service angelegt. Evtl. vorhandene children mit devicereadingname-zz. Die Syntax mit z hat keine Bedeutung u. dient nur der Sortierung. Bei einer FritzBox lässt sich so z.B. die Hierarchie von devices u. services gut erkennen. Mit verbose=5 sollte umfangreich gelogged werden, so dass man quasi eine Dokumentation der im Netzwerk vorhandenen UPnP-devices erhält. Manche physische devices haben mehrere logische UPnP-devices. Werden sie unter demselben Port angesprochen, so erfolgt eine entsprechende Durchnummerierung IP_Port_x.

Die weitere Funktionalität ist subscribe/unsubscribe. Dahinter steckt, dass der Controller sich bei dem device bzw. service anmeldet u. zukünftig mit events versorgt werden möchte, das device also Statusmeldungen aussendet, die dann im Controller empfangen u. verarbeitet werden. Die subscription muss periodisch erneuert werden(renewal). Das macht das Modul automatisch. Als Parameter für den subscribe/unsubscribe-Befehl ist der vollständige readingname des services einzutragen. Am einfachsten per Copy&Paste.

Das service-reading hat folgende Inhalte:
ohne Aktion   - urn des services
subscribe:      - subscribed (nach set subscribe)
                     - subscription committed, timeout x(nach erfolgreicher subscription)
                      - SID, leasetime, property (nach event)
                      - subscription failed (im Fehlerfall)
                      - subscribed but offline (nach Abmeldung durch das device)
unsubscribe: - unsubscribed

Jedes device hat genau ein zusätzliches presence-reading, welches durch das Modul erzeugt wird. Grundsätzlich anhand der alive/byebye Meldungen eines devices. Ein Sonderfall ist, dass das device z.B. Stromausfall kein byebye aussenden konnte. Dann verbleibt der presence-Status "online". Wurde ein service des devices subscribed, dann wird beim nächsten renewal-Versuch der subscription(also bis zu 30min. !) in den offline-Status versetzt.

Über die Attribute usedonlyIPs, ignoredIPs,acceptedUDNs,ignoredUDNs lässt sich der Umfang der devices einschränken(UDN = Unique Device Name eines devices). Die Einschränkungen per UDN funktionieren nur beim define des Controllers.

Die interne Kommunikation zwischen physischem(UPNPController) und logischem Modul(z.B. DLNAController) erfolgt nach dem FHEM-typischen 2-Stufenmodell(dispatch, iowrite, assignIO)

Autocreate-Mechanismus: devices, für die ein logisches Modul existiert, werden per autocreate automatisch angelegt. Erkennung erfolgt anhand der Services.

Changelog
-----------
06.05.21
minor changes

25.04.21 version v0.0.2
new initialization after change of attributes: ignoredIPs, usedonlyIPs, envNamespace, envPrefix
(readings stay untouched)

31.03.21
some bug fixing

13.03.21
postprocessing of services SesssionManagement and SpeakerManagement(Multiroom) added
subscription process changed and optimized(new state possible: subscription committed, timeout x; meaning: device has confirmed subscription with timeout x; no event received so far)
- timeout of each device/service answer is saved
- internal timer runs each minute to check wether a subscription has to be renewed
some bug fixing

27.02.21(13 Downloads)
FHEM restart problem solved
Internal administration by unique UDN instead of IP/Port; automatically deletes no longer used IP/Port readings for devices w. changed IP/Port; 
set delreadings - delete readings - be careful in usage !!!
optimization of presence state and services readings
« Letzte Änderung: 06 Mai 2021, 21:27:19 von KölnSolar »
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

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Neuentw. UPNPDevice - UPnP: Device
« Antwort #2 am: 15 Februar 2021, 19:30:25 »
UPNPDevice

diese Modul ist vorerst nur wenig interessant, da es eher für andere Entwickler gedacht ist, die ein "virtuelles" UPnP-device in FHEM erstellen möchten.

zusätzliche Voraussetzungen
- die Datei DeviceManager.pm muss in den Pfad …/FHEM/lib/UPnP kopiert werden
- eine xml-Datei im fhem-Pfad(nicht fhem/FHEM !!!) ist notwendig. Im Standard ist der filename "description.xml". Per attribut file übersteuerbar. Der Pfad mit path.

Das device muss in der beschreibenden xml-Datei mit seinen Eigenschaften und Attributen gem. den UPnP-Standards beschrieben/definiert werden.
Definition für z.B. SMA SEMP
define  UPNPSEMP UPNPDevice
Mit dem define wird ein Hilfsdevice "UPNPSocket-devicename"-"Port für den notification port im room hidden angelegt.  Dieses device sollte niemals von user-Seite verändert werden. (Möglicherweise wird zukünftig dieses Hilfsdevice entfallen und die Funktionalität direkt im device realisiert)
Für das ebenfalls durch perlupnp erzeugte socket für port 1900 wird vorerst kein device angelegt, um evtl. Konflikte zu vermeiden.
Services und somit auch subscrption und events werden vorerst nicht unterstützt, da für den bisher einzigen use case SMA SEMP nicht notwendig.

Neben der Öffnung der ports wird das device in seiner Funktion gestartet. Es sendet NOTIFY-broadcast-messages an Port 1900. Gleichzeitig wird der 30min-heartbeat(advertising) zu dessen Wiederholung gestartet.

Mit dem Modul lassen sich dann folgende Aktionen ausführen:
- start - zum starten des devices
- stop - zum stoppen des devices
- advertise - zum zusätzlichen Aussenden einer NOTIFY alive message (passiert per heartbeat periodisch alle 30min.)

ACHTUNG: Nutzt man UPNPController u. UPNPDevice gemeinsam in einer FHEM-Instanz, sollte man im UPNP-Controller tunlichst die IP ausschließen. Sonst kommt es zu fürchterlichen 20s-freezes, deren Ursache ich noch nicht ausgemacht habe.

« Letzte Änderung: 16 Februar 2021, 07:34:52 von KölnSolar »
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

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Neuentw. DLNAController UPnP/DLNA - DLNARenderer-Ersatz
« Antwort #3 am: 15 Februar 2021, 19:30:40 »
DLNAController

benötigt ein UPNPController-device als IODev

Zusätzlich sind die Perlpakete ◾SOAP::Lite, ◾LWP::Simple, ◾XML::Simple, ◾XML::Parser::Lite, ◾LWP::UserAgent zu installieren in Debian mit
sudo apt-get install libsoap-lite-perl libparse-http-useragent-perl liblwp-protocol-https-perl(Wer bereits SONOS oder DLNARenderer einsetzt hat auch diese Pakete bereits installiert)
Edit: Neues Perlpaket notwendig: sudo apt-get install libxml-libxml-perl (XML::LibXML)

devices werden über das UPNPController-Modul per autocreate automatisch angelegt. devicename entspricht dem dortigen readingname. room entspricht dem room für neue devices.
(eine manuelle Anlage eines devices ist weder notwendig, noch empfohlen !!!)

Bisher hat das Modul die Funktionalität des DLNARenderers. Multiroom(caskeid) ist mangels Hardware nicht richtig implementiert. Tester sind gerne gesehen.

Unterstützt werden also ein Teil des services RenderingControl(mute,volume) u. AVTransport(Abspielen einer Medienkonserve)

Das Modul selber blockiert nicht im Gegensatz zum DLNARenderer. Wohl aber noch der UPNPController. Dort ist bisher lediglich das blockierende Verhalten beim subscription-renewal(genau wie in meiner inoffiziellen Version des DLNARenderers) beseitigt. Infos über freezes bitte melden. Ich selber habe keine nennenswerten freezes in meinem Produktivsystem.

Attached die aktuelle Version. Die heißt aber noch DLNAManager. Diesen Namen wollte ich im Ursprung vergeben, glaube aber mittlerweile, dass DLNAController besser ist.

Changelog
-----------
06.05.21
new method to parse xml-events
installation of package libxml required: sudo apt-get install libxml-libxml-perl
UPNPController version of same date required

31.03.21(11 downloads)
some bug fixing

13.03.21
Multiroom support added; should be the same functionality as known by DLNARenderer
automatic subscription of DLNA services after definition
extensive tests with WindowsMediaplayer(more details about functionality)
some bug fixing

27.02.21(13 Downloads)
FHEM restart problem solved
Modulname changed as proposed
unique UDN as define parameter(you shouldn't care, since define will be done by autocreate)
« Letzte Änderung: 17 Mai 2021, 08:06:55 von KölnSolar »
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

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
DLNA(Renderer-Ersatz) Umsteiger
« Antwort #4 am: 15 Februar 2021, 19:30:52 »
Bisher habt Ihr das DLNARenderer-Modul genutzt. Ein Umstieg ist relativ einfach. Sollte vorerst sicherheitshalber(obwohl es bei mir produktiv läuft) in einem Testsystem vollzogen werden.

Download der beiden Module aus Post #1 u. #3 in Euer Modulverzeichnis. Am besten löscht Ihr dann zuerst alle DLNARenderer-devices. Insbesondere das Master-device u. die 3 Socketdevices im room hidden. Dann legt Ihr mit define EuerDevicename UPNPControllerdas neue Masterdevice an. Insbesondere für Samsung-devices mit den selben Attributen wie bei DLNARenderer. Sinnvoll ist nach der vollständigen Definition ein save/shutdown/restart. Nach einer Weile seht Ihr im device EuerDevicename eine Übersicht aller UPnP-devices in Eurem Netzwerk nach IP/Port sortiert. Im room hidden findet Ihr 2 socket-"Hilfsdevices".

DLNA-devices wurden per autocreate(sofern wie bei den meisten Installationen aktiviert)automatisch im room des autocreate-Attributs device_room mit define DLNA_UDNdesDevices DLNAController UDNdesDevices IP_Portangelegt. Nun nur noch die Attribute(wie zuvor) ergänzen u. Ihr könnt das device wie gehabt nutzen.

SamsungAV-Nutzer müssen in SamsungAV-devices zusätzlich noch den DLNARenderer-devicename durch DLNA_UDNdesDevices ersetzen.

Thats it.
« Letzte Änderung: 27 Februar 2021, 10:39:27 von KölnSolar »
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

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Hallo KölnSolar,

habe DLNAController definiert - Teufel-Lautsprecher werden gefunden - soweit so gut

Neustart von FHEM = System tot

2021.02.20 12:44:23 2: UPNPController: UPNP Controller v0.0.1 started
Can't call method "services" on an undefined value at ./FHEM/98_UPNPController.pm line 947, <$fh> line 81.

vg Jens

fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Hallo Jens,

sorry. Hatte noch keine Zeit die kleine Änderung von hiereinzubauen u. attachen.

Entweder selber einbauen oder aufs update warten.

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

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Hallo Markus,

ich hab

Zitat
die kleine Änderung von hier einzubauen

eingebaut und nach einen FHEM-Neustart sind die Devices auch alle da.
Es dauert aber 8min bis sie von "offline" auf "online" wechseln und somit bedienbar sind.
fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
das ist ok.
Zitat
Mit der Definition wird ein search-request im lokalen Netzwerk mit searchterm=ssdp:all gesendet. Dies bewirkt, dass sämtliche eingehenden UPnP-Notify-messages akzeptiert/verarbeitet werden. Dies passiert aber erst dann, wenn sich ein device gem. UPnP-Standard irgendwann periodisch meldet. Soll heißen, es dauert bis alle devices erstmalig erkannt wurden. Etwas beschleunigen kann man es, indem man z.B. den set-Befehl searchterm mit dem Parameter upnp:rootdevice ausführt. Damit werden alle Rootdevices aufgefordert sich sofort zu melden(tun aber nicht alle).

Und  bei nicht-DLNA ist das ja auch egal, da es kein logisches Modul gibt. Bei DLNA werde ich dann beim device-define ein search auf die udn machen, so dass es schnell  den aktuellen Status wiederspiegelt.

Welche services haben die Teufel denn ?
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

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Zitat
Welche services haben die Teufel denn ?

??? Kopf kratz, was meinst du damit? Kann ich die irgendwie abfragen?
fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Meinst du eventuell das hier:

beim physischen Device:

<root>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Speaker Kueche #2</friendlyName>
<modelDescription>Digital Media Player</modelDescription>
<UDN>uuid:f9e8fd48-3e69-4b28-b388-d92cbcef7d80</UDN>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icons/teufel-48.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>32</width>
<height>32</height>
<depth>24</depth>
<url>/icons/teufel-32.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/rendercontrol.xml</SCPDURL>
<controlURL>/RenderingControl/ctrl</controlURL>
<eventSubURL>/RenderingControl/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/connectmanager.xml</SCPDURL>
<controlURL>/ConnectionManager/ctrl</controlURL>
<eventSubURL>/ConnectionManager/evt</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/avtransport.xml</SCPDURL>
<controlURL>/AVTransport/ctrl</controlURL>
<eventSubURL>/AVTransport/evt</eventSubURL>
</service>
<service>
<serviceType>
urn:schemas-raumfeld-com:service:RaumfeldGenerator:1
</serviceType>
<serviceId>urn:raumfeld-com:serviceId:RaumfeldGenerator</serviceId>
<SCPDURL>/feldgenerator.xml</SCPDURL>
<controlURL>/RaumfeldGenerator/ctrl</controlURL>
<eventSubURL>/RaumfeldGenerator/evt</eventSubURL>
</service>
</serviceList>
<manufacturer>Lautsprecher Teufel GmbH</manufacturer>
<manufacturerURL>https://www.teufel.de/</manufacturerURL>
<modelName>Teufel One M</modelName>
<modelNumber>1</modelNumber>
<serialNumber>x:y:z</serialNumber>
<raumfeld:protocolVersion>16351</raumfeld:protocolVersion>
<raumfeld:hardwareType>21</raumfeld:hardwareType>
</device>
</root>

beim virtuellen Device:

<root>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<X_DLNACAP>playcontainer-0-1</X_DLNACAP>
<friendlyName>Kueche</friendlyName>
<modelDescription>Virtual Media Player</modelDescription>
<modelName>Teufel One M</modelName>
<UDN>uuid:f97f36f9-abcf-4987-9727-c15eda14def4</UDN>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icons/teufel-48.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>32</width>
<height>32</height>
<depth>24</depth>
<url>/icons/teufel-32.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/RenderingService.xml</SCPDURL>
<controlURL>/RenderingService/Control</controlURL>
<eventSubURL>/RenderingService/Event</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>TransportService.xml</SCPDURL>
<controlURL>/TransportService/Control</controlURL>
<eventSubURL>/TransportService/Event</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>ConnectionManager.xml</SCPDURL>
<controlURL>/ConnectionManager/Control</controlURL>
<eventSubURL>/ConnectionManager/Event</eventSubURL>
</service>
</serviceList>
<manufacturer>Lautsprecher Teufel GmbH</manufacturer>
<manufacturerURL>https://www.teufel.de/</manufacturerURL>
<modelNumber>1</modelNumber>
<serialNumber>x:y:z</serialNumber>
<raumfeld:protocolVersion>16351</raumfeld:protocolVersion>
<raumfeld:hardwareType>21</raumfeld:hardwareType>
</device>
</root>
fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Zitat
Kopf kratz, was meinst du damit? Kann ich die irgendwie abfragen?
Zitat
Die gefundenen devices werden als readings angelegt. Dabei wird jedes device durch den readingname IP_Port repräsentiert. Attribute des devices werden 1:1 übernommen u. als readings mit entsprechender Bezeichnung angelegt. Die Services eines devices werden mit devicereadingname-zs-service angelegt.
Aber die xml-Datei beantwortet es mir auch  :D
Der urn:raumfeld-com:serviceId:RaumfeldRaumfeldGenerator:1ist herstellerspezifisch. Guck mal, was die entsprechende SCPDURL ausspuckt, ob es interessante actions oder events gibt.
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

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Hallo Markus,

die <SCPDURL>/feldgenerator.xml</SCPDURL> spuckt das aus:

<scpd>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<serviceStateTable>
<stateVariable sendEvents="yes">
<name>TransportControlButtons</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
</scpd>

vg Jens
fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline Newbie

  • Full Member
  • ***
  • Beiträge: 212
Anbei mal eine Übersicht was der UPNP-Controller an Readings auflistet:

    xx.x.x.xx_51626-UDN uuid:f97f36f9-abcf-4987-9727-c15eda14def4
    xx.x.x.xx_51626-friendlyName Kueche,Schlafzimmer
    xx.x.x.xx_51626-location http://xx.x.x.xx:51626/f97f36f9-abcf-4987-9727-c15eda14def4.xml
    xx.x.x.xx_51626-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_51626-modelDescription Virtual Media Player
    xx.x.x.xx_51626-modelName Teufel One M
    xx.x.x.xx_51626-modelNumber 1
    xx.x.x.xx_51626-presence online
    xx.x.x.xx_51626-zs-AVTransport SID: uuid:44b110d0-e7a3-4a0a-8197-e36001eae8c0 timeout: 300 property: LastChange
    xx.x.x.xx_51626-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    xx.x.x.xx_51626-zs-RenderingControl SID: uuid:97a1845d-f708-4e77-be52-2a4efe60ac31 timeout: 300 property: LastChange
   
    xx.x.x.xx_52207-UDN uuid:f9e8fd48-3e69-4b28-b388-d92cbcef7d80
    xx.x.x.xx_52207-friendlyName Speaker Kueche #2
    xx.x.x.xx_52207-location http://xx.x.x.xx:52207/f9e8fd48-3e69-4b28-b388-d92cbcef7d80.xml
    xx.x.x.xx_52207-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_52207-modelDescription Digital Media Player
    xx.x.x.xx_52207-modelName Teufel One M
    xx.x.x.xx_52207-modelNumber 1
    xx.x.x.xx_52207-presence online
    xx.x.x.xx_52207-zs-AVTransport SID: uuid:55ba7b01-16cf-45b2-aaf6-3794a9567eb7 timeout: 300 property: BufferFilled
    xx.x.x.xx_52207-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    xx.x.x.xx_52207-zs-RaumfeldGenerator urn:schemas-raumfeld-com:service:RaumfeldGenerator:1
    xx.x.x.xx_52207-zs-RenderingControl SID: uuid:5c0de44c-7b14-48e2-bdc7-fa8a586a9d0d timeout: 300 property: LastChange
   
    xx.x.x.xx_52778-UDN uuid:eb57db8a-b475-4e3f-879b-1f8d314e1401
    xx.x.x.xx_52778-friendlyName Raumfeld MediaServer
    xx.x.x.xx_52778-location http://xx.x.x.xx:52778/eb57db8a-b475-4e3f-879b-1f8d314e1401.xml
    xx.x.x.xx_52778-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_52778-modelName Teufel One M
    xx.x.x.xx_52778-modelNumber 1
    xx.x.x.xx_52778-presence online
    xx.x.x.xx_52778-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    xx.x.x.xx_52778-zs-ContentDirectory urn:schemas-upnp-org:service:ContentDirectory:1
   
    xx.x.x.xx_54841-UDN uuid:5470b1a7-c6c7-48a0-bc86-8a48cac5dbdc
    xx.x.x.xx_54841-friendlyName Raumfeld ConfigDevice
    xx.x.x.xx_54841-location http://xx.x.x.xx:54841/5470b1a7-c6c7-48a0-bc86-8a48cac5dbdc.xml
    xx.x.x.xx_54841-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_54841-modelName Teufel One M
    xx.x.x.xx_54841-modelNumber 1
    xx.x.x.xx_54841-presence online
    xx.x.x.xx_54841-zs-ConfigService urn:schemas-raumfeld-com:service:ConfigService:1
   
    xx.x.x.xx_55354-UDN uuid:85c93a10-d169-42c2-8e93-ecdd0724707e
    xx.x.x.xx_55354-friendlyName Schlafzimmer
    xx.x.x.xx_55354-location http://xx.x.x.xx:55354/85c93a10-d169-42c2-8e93-ecdd0724707e.xml
    xx.x.x.xx_55354-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_55354-modelDescription Virtual Media Player
    xx.x.x.xx_55354-modelName Teufel One M
    xx.x.x.xx_55354-modelNumber 1
    xx.x.x.xx_55354-presence offline
    xx.x.x.xx_55354-zs-AVTransport subscribed but offline
    xx.x.x.xx_55354-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    xx.x.x.xx_55354-zs-RenderingControl subscribed but offline
   
    xx.x.x.xx_58281-UDN uuid:063f7a0f-b90e-4754-824a-9eb5d62c163d
    xx.x.x.xx_58281-friendlyName Teufel Raumfeld Device
    xx.x.x.xx_58281-location http://xx.x.x.xx:58281/063f7a0f-b90e-4754-824a-9eb5d62c163d.xml
    xx.x.x.xx_58281-manufacturer Lautsprecher Teufel GmbH
    xx.x.x.xx_58281-modelName Teufel One M
    xx.x.x.xx_58281-modelNumber 1
    xx.x.x.xx_58281-presence online
    xx.x.x.xx_58281-zs-SetupService urn:schemas-raumfeld-com:service:SetupService:1
   
    aa.a.a.aa_37134-UDN uuid:faa2efcd-f7b3-48f6-a075-82ef5800789d
    aa.a.a.aa_37134-friendlyName UGW4
    aa.a.a.aa_37134-location http://aa.a.a.aa:37134/rootDesc.xml
    aa.a.a.aa_37134-manufacturer Ubiquiti, Inc.
    aa.a.a.aa_37134-modelDescription Debian router
    aa.a.a.aa_37134-modelName Debian router
    aa.a.a.aa_37134-modelNumber e221
    aa.a.a.aa_37134-presence online
    aa.a.a.aa_37134-zs-L3Forwarding1 urn:schemas-upnp-org:service:Layer3Forwarding:1
    aa.a.a.aa_37134-zz uuid:faa2efcd-f7b3-48f6-a075-82ef5800789e
    aa.a.a.aa_37134-zz-UDN uuid:faa2efcd-f7b3-48f6-a075-82ef5800789e
    aa.a.a.aa_37134-zz-friendlyName WANDevice
    aa.a.a.aa_37134-zz-location http://aa.a.a.aa:37134/rootDesc.xml
    aa.a.a.aa_37134-zz-manufacturer MiniUPnP
    aa.a.a.aa_37134-zz-modelDescription WAN Device
    aa.a.a.aa_37134-zz-modelName WAN Device
    aa.a.a.aa_37134-zz-modelNumber 20210129
    aa.a.a.aa_37134-zz-presence online
    aa.a.a.aa_37134-zz-zs-WANCommonIFC1 urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1
    aa.a.a.aa_37134-zz-zz uuid:faa2efcd-f7b3-48f6-a075-82ef5800789f
    aa.a.a.aa_37134-zz-zz-UDN uuid:faa2efcd-f7b3-48f6-a075-82ef5800789f
    aa.a.a.aa_37134-zz-zz-friendlyName WANConnectionDevice
    aa.a.a.aa_37134-zz-zz-location http://aa.a.a.aa:37134/rootDesc.xml
    aa.a.a.aa_37134-zz-zz-manufacturer MiniUPnP
    aa.a.a.aa_37134-zz-zz-modelDescription MiniUPnP daemon
    aa.a.a.aa_37134-zz-zz-modelName MiniUPnPd
    aa.a.a.aa_37134-zz-zz-modelNumber 20210129
    aa.a.a.aa_37134-zz-zz-presence online
    aa.a.a.aa_37134-zz-zz-zs-WANIPConn1 urn:schemas-upnp-org:service:WANIPConnection:1
   
    yy.y.y.yy_49692-UDN uuid:70d5b346-9b22-4e75-965b-3cedf880e531
    yy.y.y.yy_49692-friendlyName Teufel Raumfeld Device
    yy.y.y.yy_49692-location http://yy.y.y.yy:49692/70d5b346-9b22-4e75-965b-3cedf880e531.xml
    yy.y.y.yy_49692-manufacturer Lautsprecher Teufel GmbH
    yy.y.y.yy_49692-modelName Teufel One S
    yy.y.y.yy_49692-modelNumber 1
    yy.y.y.yy_49692-presence online
    yy.y.y.yy_49692-zs-SetupService urn:schemas-raumfeld-com:service:SetupService:1
   
    yy.y.y.yy_59448-UDN uuid:df6f32d1-1569-465b-8329-a14b6c788fa5
    yy.y.y.yy_59448-friendlyName Speaker Schlafzimmer
    yy.y.y.yy_59448-location http://yy.y.y.yy:59448/df6f32d1-1569-465b-8329-a14b6c788fa5.xml
    yy.y.y.yy_59448-manufacturer Lautsprecher Teufel GmbH
    yy.y.y.yy_59448-modelDescription Digital Media Player
    yy.y.y.yy_59448-modelName Teufel One S
    yy.y.y.yy_59448-modelNumber 1
    yy.y.y.yy_59448-presence online
    yy.y.y.yy_59448-zs-AVTransport SID: uuid:8629a29c-89c0-42c0-9e0a-8584df170c70 timeout: 300 property: BufferFilled
    yy.y.y.yy_59448-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    yy.y.y.yy_59448-zs-RaumfeldGenerator urn:schemas-raumfeld-com:service:RaumfeldGenerator:1
    yy.y.y.yy_59448-zs-RenderingControl SID: uuid:9c372e41-99fe-4569-887f-572ac12cddeb timeout: 300 property: LastChange
   
    zz.z.z.zz_54066-UDN uuid:0fee29da-3ea9-49bb-9902-a736a18ffd15
    zz.z.z.zz_54066-friendlyName Teufel Raumfeld Device
    zz.z.z.zz_54066-location http://zz.z.z.zz:54066/0fee29da-3ea9-49bb-9902-a736a18ffd15.xml
    zz.z.z.zz_54066-manufacturer Lautsprecher Teufel GmbH
    zz.z.z.zz_54066-modelName Teufel One S
    zz.z.z.zz_54066-modelNumber 1
    zz.z.z.zz_54066-presence online
    zz.z.z.zz_54066-zs-SetupService urn:schemas-raumfeld-com:service:SetupService:1
   
    zz.z.z.zz_55693-UDN uuid:fedf2043-eac0-49e1-82ed-6ac78b34f79d
    zz.z.z.zz_55693-friendlyName Speaker Schlafzimmer  #3
    zz.z.z.zz_55693-location http://zz.z.z.zz:55693/fedf2043-eac0-49e1-82ed-6ac78b34f79d.xml
    zz.z.z.zz_55693-manufacturer Lautsprecher Teufel GmbH
    zz.z.z.zz_55693-modelDescription Digital Media Player
    zz.z.z.zz_55693-modelName Teufel One S
    zz.z.z.zz_55693-modelNumber 1
    zz.z.z.zz_55693-presence online
    zz.z.z.zz_55693-zs-AVTransport SID: uuid:7ebd3594-b649-4549-8d4d-977eeed1d02e timeout: 300 property: LastChange
    zz.z.z.zz_55693-zs-ConnectionManager urn:schemas-upnp-org:service:ConnectionManager:1
    zz.z.z.zz_55693-zs-RaumfeldGenerator urn:schemas-raumfeld-com:service:RaumfeldGenerator:1
    zz.z.z.zz_55693-zs-RenderingControl SID: uuid:1fa6884b-08fa-4699-90d4-c621ef9a25c0 timeout: 300 property: LastChange

fhem-6.0 (configDB+DbLog)  auf ODROID-XU4

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5185
Hi Jens, erst mal danke fürs Testen u. die Mühe beim Info liefern.
Zitat
spuckt das aus:
Ist arg dünn. Keine actions, 1 event. Ich spekuliere bei einem Tastendruck. :-\ Nicht so wirklich spannend für ein Modul.

Bist Du Teufelhändler ?  :o ;D Ich bin wohl Hinterweltler, da mir TVs, ein dot u. ne alte B&O mit Lautsprechern genügen.  ;D
hier http://xx.x.x.xx:58281/063f7a0f-b90e-4754-824a-9eb5d62c163d.xml könnte es was interessantes für ein Modul geben.

Wechseln die Ports bei den Teufeln ? Und hast Du evtl. dadurch doppelte Einträge ?(Das ist auch noch sone Baustelle. Selbst die IPs könnten sich ja ändern)

Grüße Markus

Edit: Der timeout von 300 ist interessant kurz. Müsste eigentlich beim subscription renewal zu Fehlern(412 - precondition failed) im Log führen(verbose=4).
« Letzte Änderung: 21 Februar 2021, 16:38:21 von KölnSolar »
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

 

decade-submarginal