UPNP/DLNA for IPS: final version (Control-Point)

Hallo Gemeinde,

es ist schon ein Weilchen her, als ich mein DLNA-Projekt vorgestellt habe. Also hole ich nochmal etwas aus, für diejenigen, welche das Thema interessiert.

Meine vorherigen Foreneinträge zu Basics und vorherigen Versionen findet Ihr hier:

UPNP/DLNA for IPS: new version
UPNP/DLNA for IPS: basics and first how to

Seit über 2 Jahren habe ich keine aktuelle Version mehr Online gestellt, da ich auf IPS 4.X umstellte und mit dem RS-Project Exporter leider eine Inkompatibilität erlebte. Dank an Raketenschnecke für den Support bis zu diesem Zeitpunkt, aber die aufwändige Umstellung hat er sich offensichtlich nicht angetan. :o

In der Zwischenzeit habe ich an diesen und jenen Stellen immer weiter gefeilt, da ich es täglich nutze. Insbesondere die Möglichkeit der Erstellung von Multicast-Sockets hat im Vergleich zu vorherigen Versionen Einiges geschmeidiger gemacht. :slight_smile:
Dieses extrem umfangreiche Projekt ist für meine Zwecke nun ausentwickelt, aber mit Sicherheit zu schade, wenn es bei mir allein einstaubt.

Ich übernehme zwar keine Garantie, dass es bei Euch läuft, dennoch sollte es out of the box bei den Meisten lauffähig sein (ich habe es mehrfach auf frischen System aus einem Backup reinstalliert).
Und da kommen wir zum springenden Punkt: ich habe mir für Backups einzelner Objektbäume der Verwaltungskonsole selbst einen IPS 4.X-kompatiblen Exporter geschrieben, so dass ich Euch jetzt den aktuellsten Stand doch noch überlassen kann. :smiley:

Die Downloads findet ihr im 2. Post.

Optisch sieht es jetzt so aus (Dark Skin):

Ein weiterer Screenshot hier:

Installationsvoraussetzungen:

Mindestens IP-Symcon 4.X sollte installiert sein, da zwingend Multicast-Sockets benötigt werden (ich glaube ab V4.1 ist diese Option enthalten)!

Getestete DLNA-Devices / DLNA-Server (siehe hierzu auch den Tread: UPNP/DLNA for IPS: new version):

Server:

• Asset UPNP
• Plex
• Twonky
• Sony Media Library
• Cyberlink
• Windows Media Player
• Bubble UPNP (Handy/Tablet)
• Panasonic DMR-BST730 (HDD-Receiver)
• Fritzbox Media Server
• FooBar2000
• QNAP Multimedia

Renderer:

• Eigentlich alle meine Sony Devices (diverse Audio und TV), welche DLNA unterstützen
• LG TV (LM660S)
• PowerDVD (weiteres Notebook)
• Bubble UPNP (Handy/Tablet)
• AV Renderer aus den Intel UPNP Tools
• FooBar2000
• theoretisch alle Hard- oder Software DLNA-Renderer

Der Control-Point sollte recht universell funktionieren, da ich UPNP1.0/1.1 verwende, aber manche Geräte haben ihren eigenen Slang, wie ich auch schon sch(m)erzhaft erfahren musste.

Und das Beste ist: Streamen ist möglich für Audio, Video und Foto.

Installation:

Die Datei Restore.zip entpacken und das enthaltene Script in den Objektbaum an einer Stelle Eurer Wahl installieren (z.B. neue Kategorie Restore anlegen und darunter ablegen).

Dann die Datei Backup_Multimedia_XXXX-XX-XX.zip in ein Verzeichnis (bei mir z.B.: D:/IP-Symcon Backup/) entpacken und den Pfad merken. Im Script Restore sind dann unter Zeile 31 und 34 der Pfad und der Dateiname einzugeben (Default: . D:/IP-Symcon Backup/ Backup_Multimedia_2018-03-15).

Nach der Installation (bitte $root = 0 belassen) müsst ihr noch in beiden Multicast-Sockets den Empfangshost anpassen:

Socket.JPG

(Dank an Fonzo !)

Vorsicht: da zahlreiche neue Objekte erstellt und verknüpft werden kann ich ein unvorhergesehenes Verhalten insbesondere bei abweichenden IP-Symcon – Versionen nicht zu 100% ausschließen und empfehle daher vorher ein Sicherheitsbackup des gesamten IP-Symcon Verzeichnisses. Das geschieht ganz einfach: Dienst stoppen, Tray beenden und gesamtes Verzeichnis in einen Backup-Ordner kopieren. Dann am besten zippen.

Es werden etwa 200 Variablen angelegt. Ob Ihr diese Valenzen habt, solltet Ihr vorher prüfen.

Anmerkungen:

Eine Dokumentation aller Details werde ich im Einzelnen gar nicht mehr zusammenbekommen, aber die wesentlichen Dinge gebe ich Euch am Beispiel Musikwiedergabe, Playlistverwaltung und ein paar Gimmicks in einer Doku mit.

Wer sich angesichts der immensen Entwicklungsarbeit mit dem Gedanken trägt einen kleinen Beitrag zu spenden, tut dies bitte für etwas Gemeinnütziges, aber nicht an mich. Über eine Info würde ich mich aber auf jeden Fall freuen.

Ich weiß, dass Design immer Geschmacksfrage ist. So wie es jetzt ist gefällt es mir, wobei Ihr die ausdrückliche Erlaubnis von mir habt weiter zu entwickeln oder anders zu designen.

Kommentare und Anregungen gern an mich. Aber: Support werde ich nur soweit geben, wie es meine Zeit zulässt.

Besten Gruß

André

PS: eine Erweiterung für Chromecast habe ich schon fertig und diese wird als Nächstes folgen.

:loveips:

Download:

Version 4.3 vom 15.03.2018

Backup_Multimedia_2018-03-15.zip (1.76 MB)

Version 4.4 vom 19.05.2018

Backup_Multimedia_2018-05-19.zip (1.8 MB) (neu)

Installer:

Für IPS 4.X

Restore_V4_2018-03-17.zip (10 KB)

Für IPS 5.X

Restore V5.4 2018-05-19.ips.zip (11.2 KB) (neu)

Dokumentation:

Stand 15.03.2018

Multimedia Dokumentation 15.03.2018.pdf (2.49 MB)

Fine ich super das Du immer noch weiter dran rumbaust und das teilst. Ich wollte das mal ausprobieren habe aber schon beim Import einen Fehler das das Skript abbricht mit


Warning:  Skript #51765 exisitert nicht in D:\IP-Symcon\scripts\45819.ips.php on line 784

der Fehler in line 784 wiederholt sich so oft das es dann zu einem Abbruch kommt.


Abort Processing during exceed of maximal ErrorCount: Skript #53807 exisitert nicht
   Error in Script D:\IP-Symcon\scripts\45819.ips.php on Line 784

ich schaue selber mal das ich dafür eine Lösung finde, wollte Dir nur eine kurze Rückmeldung geben.

Hi Fonzo,

welche Scripts sollten das sein?

Das weis ich nicht ich konnte in der Kürze der Zeit nicht schauen was Dein Skript genau macht bzw. was eigentlich versucht wird zu importieren.

Das ist die gesamte Fehlermeldung.



Warning:  Skript #57824 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #13323 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Variable #24628 existiert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 879

Warning:  Skript #38183 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #16169 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #26330 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #16922 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #38885 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #51765 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784

Warning:  Skript #20878 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 784
Abort Processing during exceed of maximal ErrorCount: Skript #53807 exisitert nicht
   Error in Script D:\IP-Symcon\scripts\UPNP Restore.ips.php on Line 784

Sieht dann so im Objektbaum aus nach dem Abbruch des Skripts

Hi Fonzo,

ich konnte den Fehler bisher nicht nachstellen. Bei mir läuft es durch.
Ich teste heute Abend noch mal mit einem Clean-Install.

Wie groß ist das entzippte File ? Es sollte 4710 KB groß sein.

Setz probatorisch in Line 784 ein @ davor.

Gruß André

Ja das passt.

Das bringt leider nichst dann läuft er nur bis zum nächsten Fehler und bricht dann dort ab



Warning:  Variable #24628 existiert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 879

Warning:  Illegal string offset 'ProfileType' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 796

Warning:  Cannot auto-convert value for parameter pProfileType in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 796

Warning:  Illegal string offset 'Icon' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 797

Warning:  Illegal string offset 'Prefix' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 798

Warning:  Illegal string offset 'Suffix' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 798

Warning:  Illegal string offset 'MinValue' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 800

Warning:  Illegal string offset 'MaxValue' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 800

Warning:  Illegal string offset 'StepSize' in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 800

Warning:  Cannot auto-convert value for parameter MinValue in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 800
Abort Processing during exceed of maximal ErrorCount: Illegal string offset 'Digits'
   Error in Script D:\IP-Symcon\scripts\UPNP Restore.ips.php on Line 801

Wenn ich wüste wie die Gesamtstruktur aussieht könnte ich Dir ja auch helfen das in ein PHP Modul zu packen, die Skripte und Funktion stehen ja alle. Es geht ja letztlich nur darum die Sachen in IP-Symcon anzulegen und ich denke das wäre mit einem PHP Modul zumindest sauber gelöst und es gibt keine Probleme beim Import.

Hallo,

wow, cool gemacht!
Wenn ich mal ein wenige Zeit zum testen habe, werde ich es mir sicherlich mal installieren. :slight_smile:
Sieht echt gut aus!

Grüße,
Kai

Hallo Fonzo,

danke für´s Feedback. Ich konnte jetzt einen Fehler bei der Erstellung der Variablenprofile nachstellen ! :o

Habe etwas Zeit dazu gebraucht den einzukreisen, aber dann die Installerfunktion für die Variablenprofile umgeschrieben und in Post 2 den Download des Installers aktualisiert mit Restore_V4_2018-03-17.zip.

Ich habe 2 x frisch IPS 4.4 installiert zum Testen. Wenn es jetzt nicht funzt komme ich auf Dein Angebot zurück. An Module habe ich mich bisher nicht rangetraut - es gibt auch keine griffige Anleitung. Multimedia hat auch über 200 Variablen und die einzeln zu Skripten tue ich mir nicht an. Ein Modul zur Modulerstellung wäre mal ein Fortschritt :smiley:

Tja, wenn ich Dich nochmal bitten dürfte als Beta-Tester herzuhalten - tut mir echt leid :rolleyes:

Gruß André

So die gute Nachricht zuerst :D, unter IP-Symcon 4.4 wurde jetzt alles importiert, ob das auch funktioniert weis ich noch nicht, zumindest sind eine Menge Skripte und Variablen angelegt worden.

Jetzt kommt die schlechte Nachricht :(, ab IP-Symcon 5 kommt leider das



Warning:  Skript #57824 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #13323 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Variable #24628 existiert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 885

Warning:  Skript #38183 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #16169 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #26330 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #16922 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #38885 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #51765 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790

Warning:  Skript #20878 exisitert nicht in D:\IP-Symcon\scripts\UPNP Restore.ips.php on line 790
Abort Processing during exceed of maximal ErrorCount: Skript #53807 exisitert nicht
   Error in Script D:\IP-Symcon\scripts\UPNP Restore.ips.php on Line 790

Es scheint also einen Unterschied zwischen 4.4 und 5 zu geben und unter 5 funktioniert der Import so leider nicht. Was die genaue Ursache ist kann ich so nicht sagen. Das heißt wenn die Public Beta demnächst startet kannst Du entweder probieren das Skript auch unter 5 zum laufen zu bekommen, oder man versucht doch irgendwie das Mega Projekt irgendwie mit vereinten Kräften in einen PHP Modul zu packen. Ich finde das Projekt nämlich so spannend das ich das schon gerne auch unter IP-Symcon 5 gerne nutzten würde bzw. neu anlegen kann.

Das ist sicher nicht banal, speziell in so einem komplexen Konstrukt, aber letztendlich müssen nur die Variablen mit Variablenprofil alle vom Modul angelegt werden. Die Skripte kommen dann alle so in das Modul, bzw. müssen eventuell noch an ein Modul angepasst werden. Wie umfangreich oder aber wie schnell so was gehen könnte, kann ich zur Zeit gar nicht abschätzten. Dazu schaue ich mir mal die Struktur an wie diese jetzt importiert worden ist.

Ich habe jetzt mal auf Funktion in 4.4 geprüft dort kommt bei mir schon bei Schritt 1 der SSDP Suche ein Fehler


Warning:  Objekt mit dem Namen Multimedia konnte nicht gefunden werden in S:\IP-Symcon\scripts\25744.ips.php on line 12

Warning:  Objekt mit dem Namen Config konnte nicht gefunden werden in S:\IP-Symcon\scripts\25744.ips.php on line 13

Warning:  Skript mit dem Namen UPNP_Constants konnte nicht gefunden werden in S:\IP-Symcon\scripts\25744.ips.php on line 14

Warning:  include_once(.ips.php): failed to open stream: No such file or directory in S:\IP-Symcon\scripts\25744.ips.php on line 14

Warning:  include_once(): Failed opening '.ips.php' for inclusion (include_path='.;C:\php\pear') in S:\IP-Symcon\scripts\25744.ips.php on line 14

Notice:  Undefined variable: CategoryIDs in S:\IP-Symcon\scripts\25744.ips.php on line 18

Warning:  Skript mit dem Namen UPNP_Functions_Collection konnte nicht gefunden werden in S:\IP-Symcon\scripts\25744.ips.php on line 18

Warning:  include_once(.ips.php): failed to open stream: No such file or directory in S:\IP-Symcon\scripts\25744.ips.php on line 18

Warning:  include_once(): Failed opening '.ips.php' for inclusion (include_path='.;C:\php\pear') in S:\IP-Symcon\scripts\25744.ips.php on line 18

Notice:  Undefined index: VARIABLE in S:\IP-Symcon\scripts\25744.ips.php on line 20

Notice:  Undefined index: VALUE in S:\IP-Symcon\scripts\25744.ips.php on line 20

Warning:  Variable #0 existiert nicht in S:\IP-Symcon\scripts\25744.ips.php on line 20

Notice:  Undefined index: VALUE in S:\IP-Symcon\scripts\25744.ips.php on line 22

Anscheinend ist hier beim Import doch irgendwas nicht so gelaufen wie es sollte. Ich schaue mir das mal in Ruhe an wenn ich Zeit finde und gebe Dir dann Rückmeldung.

Zwei Fehler habe ich gefunden. In dem Restore Skript lässt Du Stammverzeichnis festlegen, dies ist aber nicht frei wählbar, da sich andere Skripte die Du dann anlegst nicht mehr auf das festgelegte root im restore Skript beziehen sondern auf 0. Wenn hier Multimedia nicht unter 0 angelegt wird greifen sämtliche Suchen die Du durchführst ins Leere.

Du suchst z.B. nach


$ObjektID_Kategorie_Multimedia = IPS_GetObjectIDByName("Multimedia", 0);

Dies funktioniert nicht mehr wenn Multimedia gar nicht unter 0 angelegt wurde und auch nicht mehr sollte der Nutzer etwas am Namen geändert haben da Du nach Namen und nicht nach Ident suchst.

Des weitern versucht Du den Multicast Socket mit einer IP anzulegen, diese kannst Du aber nicht wissen da diese ja von System zu System unterschiedlich ist. Daher müsstet Du die lokale IP erst ermitteln oder aber den Multicast Socket nicht auf aktiv setzten und zunächst den Nutzer die IP Adresse korrekt einstellen lassen.

Hi Fonzo,

schick mal bitte das Log (wird angelegt in dem Verzeichnis, wo auch die importierte Datei liegt) und einen Screenshot des Objektbaumes.Meiner sieht kollabiert so aus:

Objekt Multimedia ist der Ursprung des Teilbaumes und Config ein Child davon. Beim Importer sollte

// Stammverzeichnis, wo zu installieren
$Root  = 0; //ObjectID

bleiben - ist das so ?

In den Scripten werden Konstanten statt ObjektID´s verwendet.

Zu IPS 5: habe ich noch keinen Zugang. Nur mal eine Vermutung: die Befehlssätze zur Variablenerstellung haben sich geändert. :mad: Wenn ja: Ist das gewollt, um die Leute zwangsweise auf Module einzuschwören, um nicht jede Änderung von Systembefehlen immer und immer wieder anpassen zu müssen ? Dann werde ich wieder etwas umprogrammieren müssen :eek:

Gruß André

Das Problem ist meiner Ansicht nach das dies bei Dir unter 0 liegt sobald man das woanders hin installiert funktionieren die anderen Skripte nicht mehr (s.o.)

Genau hier scheint ein Fehler zu sein das die Konstanten bzw. der Array falsch aufgebaut wird weil wohl der Bezugspunkt nicht stimmt oder sonst irgendwas.

Das glaube ich gar nicht mal, aber man sollte grundsätzlich in so großen Strukturen wie bei Deinem Projekt nicht nach Namen sondern nur noch über Ident IPS_GetObjectIDByIdent suchen. Das ist glaube ich eine der wesentlichen Änderungen in 4 bzw. 5 und sorgt aber dafür das die Zuordnung eindeutiger ist.

Ich glaube nicht das sich grundsätzlich so viel geändert hat, das auf einmal nichts mehr geht. Aber sicher haben Module Vorteile, denn genau dafür sind diese da. Und Du musst auch nicht alle Mögliche irgendwo abspeichern sondern hältst dies in Properties des Moduls und kannst so immer wieder drauf zugreifen. Am Anfang vielleicht etwas ungewohnt aber wenn ich sehe wie viel Zeilen Code Du verwendest um überhaupt bei einer Varibale erst mal das passende Skript zu includen dann geht das mit einem Modul auf alle Fälle schneller. Die Umstellung stellt allerdings eine Umgewöhnung dar.

Also ganz ehrlich: soviel Universalität war eigentlich nicht mein Ziel, woanders zu speichern und umzubenennen :rolleyes:
Aber ja - ist eine Tücke.

Bezüglich der Konstanten u.s.w.: Was ich vor 5 Jahren mal unter IPS 2.X zu Schreiben angefangen habe, werde ich bestimmt nicht nochmal alles auseinandernehmen. Deshalb: Mitentwickler sind gern gesehen, aber so wirklich hat sich in der langen Zeit nichts getan.

Ursprung des Projektes war ja eigentlich ganz banal die Beschreibung der Befehle für ein DLNA über PHP, was ich dann in eine UPNP_Functions_Main.ips.php zusammenstellte. Das ist der Motor. Aus Ermangelung von auch nur Ansatzweisen Steueransätzen kam dann nach und nach das Auslesen von Servern, Browsen u.s.w. dazu. Mittlerweile ist es für mich selbst zu komplex, als das ich Alles wieder aufdröseln könnte.

Zum Multicast-Socket hast Du aber definitiv recht.

Also: Multicast-Sockets öffnen und den Empfangshost noch anpassen:

Socket.JPG

Gruß André

Ich probiere es mal unter 0 und schaue dann mal was funktioniert ;), hoffentlich alles :D.

Also wenn man das unter 0 hängt das lässt sich zumindest schon mal was suchen und es wird auch was gefunden, erstes Erfolgserlebnis :D. Bei Grafiken wird mir teilweise ein Kreuz angezeigt, das kann aber auch am Server liegen ich versuche es gerade mal mit Plex.

Das mit den Grafiken liegt an Edge unter Chrome wird das Ganze einwandfrei angezeigt ist also ein Browser Problem.

Ja. Ist Chrome optimiert.
Wie sieht es denn mit dem Abspielen aus?

Kann ich heute nicht testen da Sonos gerade nicht nutzbar, da belegt. Kannst Du mir sagen was für eine Version von PowerDVD Du nutzt und was man dort einstellen muss das Power DVD auch als Renderer gefunden wird, dann könnte ich auch eine Wiedergabe auf einem PC ausprobieren.

PDVD ist V12. Aber Rechner schon down.
Sonst nimm BubbleUPNP fürs Handy das geht auch.
Sonos habe ich nie getestet. Also kenne ich auch die Spezifikationen nicht.
Die Intel UPNP Tools sind auch gut: da gibt es einen AV Renderer.