Neuentw. Modulpaket zu UPnP: Controller, Device, DLNA(Renderer-Ersatz)

Begonnen von KölnSolar, 15 Februar 2021, 19:29:49

Vorheriges Thema - Nächstes Thema

DerTom71

Hallo KölnSolar,

ich habe das Modul ausprobiert. Jede Menge Devices werden gefunden, nur mein Denion AVR-4306 nicht. Folgendes im Log  (debug=1,verbose=5):

IP: 192.168.x.x on port 1900 but method is not NOTIFY, method is M-SEARCH

Keinerlei weitere Einträge im LOG und ein Reading (debug=0) wird dafür nicht angelegt.
Bevor ich da jetzt weiter probiere: Bedeutet "method is M-SEARCH" das dieses vom Modul nicht unterstütz wird?


KölnSolar

ZitatIP: 192.168.x.x on port 1900 but method is not NOTIFY, method is M-SEARCH
Ist das die message(die IP) des Denon ? Mach Dir keinen Kopf über die method.
Wenn der Denon upnp kann, dann müsste er sich spätestens mit einem physischen Wiedereinschalten melden und readings zur ip angelegt werden.
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

DerTom71

Ich habe jetzt die u.a. Readings. Ich bekomme aber kein UPNPDevice per autocreate angelegt.
Wenn ich einen subscribe mache ist anschließend das Device offline.

192.168.123.21_8080-UDN uuid:00000000-0000-0000-0000-0005CD1378A9
192.168.123.21_8080-friendlyName Network Audio
192.168.123.21_8080-location http://192.168.123.21:8080/description.xml
192.168.123.21_8080-manufacturer DENON
192.168.123.21_8080-modelDescription AV SURROUND RECEIVER
192.168.123.21_8080-modelName AVR-4306
192.168.123.21_8080-modelNumber 4306
192.168.123.21_8080-presence online
192.168.123.21_8080-presentationURL http://192.168.123.21:80/
192.168.123.21_8080-zs-AVTransportServiceID urn:schemas-upnp-org:service:AVTransport:1
192.168.123.21_8080-zs-BcoWaaRemoteControlServiceID urn:schemas-upnp-org:service:BcoWaaRemoteControl:1
192.168.123.21_8080-zs-ConnectionManagerServiceID urn:schemas-upnp-org:service:ConnectionManager:1
192.168.123.21_8080-zs-HtmlPageServiceID urn:schemas-upnp-org:service:HtmlPageHandler:1
192.168.123.21_8080-zs-RenderingControlServiceID urn:schemas-upnp-org:service:RenderingControl:1

Bin erstmal wieder zurück auf das alte Modul 98_DLNARenderer.

KölnSolar

Da scheint der Denon etwas besonderes zu machen. Deinen services-readings ist immer das suffix "ServiceID" angehangen. Bei den anderen devices nicht, oder ?(Du kannst z. B. mal zum Vergleich den WindowsMediaplayer auf einem PC starten)
Dadurch fehlt die Voraussetzung, dass der Denon als DLNA-device erkannt wird.
ZitatIch bekomme aber kein UPNPDevice per autocreate angelegt.
Wenn ich einen subscribe mache ist anschließend das Device offline.
Mach doch bitte mal das subscribe bei verbose=5. Dann sehen wir etwas mehr.
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

DerTom71

Stimmt. Gegenüber den anderen Service-Readings ist das beim Denon immer um das Suffix ServiceID ergänzt.
Der Denon AVR-4306 ist von 2006. (Letzte Firmware aus 2008, somit 15 Jahre alt und unverwüstlich)
Wahrscheinlich ist da nicht alles so wie es heute sein sollte.

2023.02.20 17:37:05.623 4: UPNPController: discovery message of Network Audio with UDN: uuid:00000000-0000-0000-0000-0005CD1378A9 action: deviceAdded
2023.02.20 17:37:05.623 5: UPNPController: UPNP_Controller: alive-notify message device uuid:00000000-0000-0000-0000-0005CD1378A9 received
2023.02.20 17:37:05.623 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 found. Check for processing
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 will be controlled with 192.168.123.21_8080
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 has service with serviceId: RenderingControlServiceID
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 has service with serviceId: ConnectionManagerServiceID
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 has service with serviceId: AVTransportServiceID
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 has service with serviceId: HtmlPageServiceID
2023.02.20 17:37:05.624 5: UPNPController: UPNP_Controller: device uuid:00000000-0000-0000-0000-0005CD1378A9 has service with serviceId: BcoWaaRemoteControlServiceID
2023.02.20 17:38:16.133 4: UPNPController: subscribe: reading  192.168.123.21_8080-zs-AVTransportServiceID, uniquedevice 192.168.123.21_8080, service AVTransportServiceID
2023.02.20 17:38:16.234 5: UPNPController: AVTransportServiceID: urn:upnp-org:serviceId:AVTransportServiceID found. OK.
2023.02.20 17:38:16.244 5: UPNPController: warning: Carp, Subscription request failed with error: 412 Precondition Failed at ./FHEM/98_UPNPController.pm line 894.
2023.02.20 17:38:16.244 4: UPNPController: discovery message of Network Audio with UDN: uuid:00000000-0000-0000-0000-0005CD1378A9 action: deviceRemoved
2023.02.20 17:38:16.245 5: UPNPController: UPNP_Controller: byebye-notify message device 192.168.123.21_8080 received
2023.02.20 17:38:16.253 5: UPNPController: UPNP_Controller: empty event offline found
2023.02.20 17:38:16.254 5: UPNPController: warning: main, Use of uninitialized value $msg in index at ./FHEM/98_UPNPController.pm line 1051.
2023.02.20 17:38:16.254 5: UPNPController: warning: main, Use of uninitialized value $msg in index at ./FHEM/98_UPNPController.pm line 1051.
2023.02.20 17:38:16.254 3: UPNPController: UPNP_Controller: uniqueDeviceName 192.168.123.21_8080 event offline not yet implemented
2023.02.20 17:38:16.254 4: UPNPController: UPNP_Controller: uniqueDeviceName 192.168.123.21_8080 event details: $VAR1 = undef;
2023.02.20 17:38:16.254 3: UPNPController: subscription for service AVTransportServiceID of device 192.168.123.21_8080 failed:

martinp876

Hi - ich bin an einem Modul zu Steuerung der Soundanlagen interessiert - also UPnP - sollte da passen.
Was möglich ist verstehe ich noch nicht .. werde es einmal ausprobieren.
Das Modul hört sich vielversprechend and - ich versuche es nun einzuschätzen...

Ich haben nun den Controller eingerichtet - und erst einmal erschlägt er mich mit Details. Es stellt sich mir den Frage, ob das notwendig ist oder nur meiner Unwissenheit geschuldet.
Das Modul hat über nacht (wie lange muss man warten, wie lange dauert ein Scan?) einiges gefunden - u.a. auch die sicher wesentlichen Geräte. Aber auch Powerline Module von AVM.
Nun kann man Module ausblenden per Attribut - finde ich sehr gut.
1) könnte man das Ausblenden per dropdown machen? Mir ist nicht klar, wie man eine Liste eingibt. Komma getrennt, semikolon, leerzeichen,... Bei Dropdown der vorhandenen Devices ist alles erledigt.
2) wenn ich IPs eingeben kann ich nicht erkennen, dass diese verschwunden sind. Werden die Readings gelöscht? Das halte ich für unabdingbar, wenn es denn erfolgreich war.
3) die Liste der Readings ist endlos - und enthält jede Menge Infos. Welche davon sind wirklich relevant, damit sie der User lesen kann? Könnte man diese auch verstecken, unsichtbar machen? Und mit einem "getInfo" sichtbar machen bspw?

Ok, ich meckere an non-operational Details herum - schon klar. Mein Problem ist schlicht, das sich nicht erkennen kann, was relevant ist. m.E. für den einfachen Nutzer und die Einfache Nutzung unabdingbar. Kann man da etwas machen?

Bei den Kommandos bis sich somit noch nicht angekommen - also das Abspielen eines Streams von der FB auf die Stereoanlage. Das ist ja nun einmal das erste Ziel.

martinp876

Nun arbeite ich mich vor. Bei subscribe und unsubscribe wünsche ich mir ebenso eine drop down Liste.  Sollte doch einfach zu realisieren sein. Und macht das Leben so viel einfachen.
Die Liste aller subscriptions kann man auch sehen?

KölnSolar

Hallo Martin,
freut mich, dass Du das Modulpaket testest.

Der UPNPController ist das Herzstück und im Gegensatz zu unseren vielen anderen Modulen nicht für eine operative, regelmäßige Nutzung gedacht. Die sollen mehr oder weniger nur einen erstmaligen Eindruck zu den devices und deren services liefern. Zusätzlich ggfs. Infos zum Debugging.

Zu Deinen Fragen:
1) Man könnte. Ich nicht.  ??? Ich sehe wie zuvor erläutert auch nicht den Bedarf diesen Aufwand zu betreiben.
2) Nein. Kann ja sein, dass man sie nur operativ ausschließen möchte. Will man sie aber verschwinden lassen, kann man set delreadings nutzen.
3) Quasi wie 1). Es ist nichts wirklich relevant. Alles aber nötig, für einen Überblick: devices mit services

Letztendlich ist es wie z.B. ein CUL nur ein IODevice

ZitatSteuerung der Soundanlagen
Das ist der augenblicklich wesentliche Aspekt des Modulpakets. Nämlich die 2. Modulstufe: der DLNAController. devices mit DLNA-Funktionalität werden per autocreate automatisch mit wenigen readings  ;)  angelegt.

ZitatBei den Kommandos bis sich somit noch nicht angekommen - also das Abspielen eines Streams von der FB auf die Stereoanlage. Das ist ja nun einmal das erste Ziel
Weil Du Dich zu sehr mit dem UPNPController beschäftigst, anstatt den DLNA devices.
Welche Soundanlagen ? Was stellst Du Dir unter Steuerung vor ? Die Möglichkeiten von DLNA sind sehr begrenzt.

ZitatBei subscribe und unsubscribe wünsche ich mir ebenso eine drop down Liste
Das passiert automatisch für DLNA devices.

Ich versuche es mal anders. Der UPNPController ist für Profis, die in die Tiefen des UPNP hinabsteigen möchten. Der DLNAController die Anwendung für jedermann. Niemand muss Ingenieur sein, um Auto zu fahren. Der Autofahrer kann, muss aber nicht die Technik verstehen.

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

martinp876

Hallo Markus,
Ok, dann ist es nichts für mich... denke ich.
Wenn es ein Modul gibt welches meine geforderten Funktionen zufriedenstellend erfüllt nutze ich dies.
De facto muss ich von einer Quelle den stream auf einem Player wiedergeben. Dazu kommt einschalten, Lautstärke,...
Ein click muss zur Wiedergabe eines radiosenders reichen, also Favorit function, all incl. .
Was mich sowieso beunruhigt ist deine Warnung an den Hidden entities zu spielen. Alles ok, aber dass es zum Systemabsturz kommen kann hört sich fragile an.
Also vielen Dank,  ist wohl nix für mich
Gruß Martin

KölnSolar

Hi Martin,
ZitatDe facto muss ich von einer Quelle den stream auf einem Player wiedergeben. Dazu kommt einschalten, Lautstärke,
Das kann, bis auf on/off, der DLNAController.
ZitatEin click muss zur Wiedergabe eines radiosenders reichen, also Favorit function, all incl. .
Das eher nicht.
ZitatWas mich sowieso beunruhigt ist deine Warnung an den Hidden entities zu spielen. Alles ok, aber dass es zum Systemabsturz kommen kann hört sich fragile an.
Ist mehr die Warnung die Finger von den devices zu lassen, damit ich nicht unnötig nach vermeintlichen Fehlern suchen muss. Es wird halt ein perl-"Fremdpaket" genutzt. Wer weiß wie es reagiert, wenn z.B. eins dieser devices gelöscht wird.
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

martinp876

Nun, UPnP und DLNA sind nicht mein Ziel sondern ein Werkzeug, der Weg. Ich würde mich gern darum  drücken es in der Tiefe zu verstehen,  ich würde es gerne anwenden.
Eines der yamaha Module habe ich genau in diese Richtung gepimpt. 
Am Ende will ich fernsteuern.  Primär streamen.
Also wie beschrieben am Ausgabegerät eine Ausgabe starten, stoppen.
Komfortabel ist es am Ende erst, wenn es mit wenigen clicks (eigentlich darf es nur einer sein) einen meiner Favoriten auszugeben.
Dazu braucht es natürlich mehr
. Quelle manuell suchen und starten
. Aktuelle Quelle als Favorit ablegen
. Favorit starten
. Gerät startet wenn ein Favorit ausgegeben werden soll
. Lautstärke, Mute,... selbstredend.

Übersichtliche Darstellung,  einfache Bedienung... was sonst. Kein tippen von Eingabe,  drop down und select list wo immer möglich.

Das ist das Ziel von Automatisierung - was sollte es anderes sein?
Alles andere ist für nerds oder noch der Weg zum Ziel.
Für weniger kann ich auch eine externe Fernbedienung nutzen

KölnSolar

#281
Hi Martin,
ich verstehe Dich. Sehe FHEM aber weniger in der Ecke von KlickiBunti ein Entertainement device zu steuern. Aber Entertainment devices zu nutzen, um, wie bei mir, wenn es klingelt ein Bild auf den TV zu streamen, oder bei Anruf die Details des Anrufers oder die Info über einen wie auch immer gearteten "Alarm"...

Nichtsdestotrotz bin ich offen so etwas im DLNAController unterzubringen. Aber überhaupt keinen Plan, wie so etwas umsetzbar ist. Welches FHEM-Modul könnte dazu als Vorlage dienen ? Dein gepimptes Yamaha-Modul oder irgendein offizielles ?

Grüße Markus

Edit: Übrigens ist die Entwicklung hier eher dafür gedacht das Framework für andere Module zu liefern. So setze ich z.B. mit meinem Samsung-Modul darauf auf. Als Endanwender benutzt Du also nur das herstellerspezifische Modul. Hintergrund: Mehr als das, was Du technisch betrachtet möchtest, bietet DLNA nicht. Die einzelnen Hersteller nutzen aber weitere Techniken, um App unabhängig die Steuerung der gesamten Funktionalität zu nutzen. So nutzt meines Wissens auch mindestens eins der Yamaha-Module DLNA, aber auch andere Technologien. Bedauerlicherweise kocht für den DLNA-Part in FHEM jeder sein eigenes Süppchen, anstatt auf dem hier in der Entwicklung befindlichen Framework aufzusetzen. Vielleicht ist es ja auch ein Weg, dass wir beide Dein gepimptes Yamaha-Modul entsprechend umbauen und den, sofern vorhanden, individuellen DLNA-Part aus dem Modul entfernen.
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

martinp876

Also: klar will ich alles :) . Alle Feature und ein Knopf Bedienung.  Also mal sehen.

Grundsätzlich wünsche ich mir ein stabiles, robustes Modul welches sich an Standards hält. Deine Einschätzung zu fhem Modulen teile ich und bedaure es ebenso.

Ein backend Modul ist kein grundsätzliches Problem. Allerdings will kaum jemand sein UPnP auf mehreren Ebenen konfigurieren.  Also ein basistreiber wäre schon cool. Am besten läuft er im Hintergrund.  Ich will ihm möglichst nicht sehen. Ein background Service welcher von frontend Treiber angesteuert wird. Und alle Module nutzen ihn. In fhem wird das wohl ein Traum bleiben.

Ich suche aktuell eine frontend für teufel stereo M . Konfiguration  der Anlage ist endlich und muss nicht über fhem möglich sein. Bedienung reicht. Start/Stop/laut/stream select.

Ich werde sehen.

KölnSolar

Oh, die Teufels. Die hatte ich schon im (remote) Test, weil die auch noch Lautsprechersteuerung per DLNA erlauben. Findest Du hier im Thread was zu(User Newbie). Ist nicht ganz zu Ende gebracht, weil immer schwierig, wenn man selber nicht die Hardware oder vergleichbar hat. Ist noch eine kleine Baustelle, um mit meinem DLNAController den DLNARenderer abzulösen.

Mit Deinen skills und Hardware, könnten wir es schaffen den DLNAController zu Ende zu bringen und mit dem Yamaha-Modul ein 2. Endanwender-Modul, das die "BlackBox" UPNPController/DLNAController nur noch per simpler Schnittstelle nutzt. 
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

martinp876

So, habe nun einmal vorsichtig angefangen, das Modul einzubauen.
1) UPnPConroller ist installiert und hat devices gefunden
=> prima

was ich nun machen muss, weiss ich noch nicht.
a) ich kann mich subscriben...
   das habe ich erst verstanden,als ich im Code nachgesehen habe. Die "-zs-" readings sind die services - Aha.
   ??> im Kommando sollte zwingend die Liste der möglichen Services auftauchen - als drop-down liste
      und selbstverständlich korrekt: alles was du akzeptieren würdest muss hier gelistet sein
        + nur wenn online
        + nur wenn nicht schon subscribt
b) unsubscribe entsprechend - alle subscribten sollten zum unsubscribe angeboten werden
==> ich würde eine zentrale Funktion zum handling der möglichen services einbauen - dann ist es wohl kein Problem.
==> die Kommandos und die Liste der Optionen liest fhem allenthalben - das muss dich also nicht kümmern.

c) nach subscription sollte das jeweils letzte Event einer jeden Subscription angezeigt werdend
d) die Liste der Subscriptions wäre ein Reading oder ein get wert.

Ich wünsche mir weiter ein "get devices" - evtl mit deren services. Die Liste der Readings ist zwar recht komplett aber schwer zu lesen.


Das einmal zum Einstieg - ich versuche erst einmal UPnPController zu verstehen und bedienen zu können. Das ist mir nach dern aktuellen Beschreibung nicht hinreichend möglich.
Drop-down listen und gets würden m.E. a) das handling massgeblich vereinfachen und b) etliches an komplizierter Beschreibung komplett ersetzen.

2) searchterm gibt es als Attribut und als Set. Warum dies?

3) deleteReading ist nicht verständlich. Warum sollte ich Readings löschen? Der Hintergrund fehlt
  a) gelöschte/veraltete Devices werden  nicht automatisch entfernt?
  b) ich kann einzelne Readings löschen - dann sind sie weg?
  c) wenn ich alle Readings lösche werden diese erneuert wenn sich ein device meldet und dem Searchterm entspricht?
  d) deleteReadings hat weitere Auswirkungen? Auf Subscription? Wird das auch erneuert?
  e) wäre ein kommando/option removeOutdatedReadings ggf nicht sinnvoller? Nicht nur die Readings betreffent sondern komplett? Also wenn ein Device scheinbar nicht mehr verfügbar ist wird es RESTLOS entfernt?
    ==> Alternative: I) removeOutdated: im Dropdown erscheinen alle Devices welche outdated sind. Der User kann diese einzeln löschen - restlos
                    II) wie oben, jedoch kann der User alle devices entfernen.


So erst mal mein erster Eindruck - das brauche ich, um es für mich bedienbar zu machen. Wäre schön, wenn du es vorsiehst - ich hoffe die Idee ist verstanden. Wenn nicht, auch gut. Ich brauche das definitiv in irgend einer Form. Bitte richtig verstehen: wenn du das nicht willst, ok. Dann muss ich mir etwas einfallen lassen - so oder so. Sonst kann ich es nicht nutzen

Dann kann ich immer noch kein einziges Device wirklich erstellen oder bedienen - das wird mein 2. Schritt... aber ich bin langsam.... Das habe ich noch nicht verstanden.