Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Plex bei VIS darstellen oder als iobroker Datenpunkte

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Plex bei VIS darstellen oder als iobroker Datenpunkte

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mdsv last edited by

      Plex Einstellungen für Einrichtung Webhook:

      https://www.plex.tv starten - NICHT auf Launch gehen, sondern auf MyAccount - Settings

      ggf. Hauptbenutzer wählen, dann auf Webhook links gehen und dort die lokale IP-Adresse des ioBroker Server eintragen:

      http://xxx.xxx.xxx.xxx:10000

      Port sollte nicht belegt sein.

      ioBroker Javascript:

      Variablen anlegen:

      createState('Plex.Titel', 0, { 
                                desc: "Plex - Titel", 
                                type: "string", 
      
          });
      createState('Plex.parentTitel', 0, { 
                                desc: "Plex - parenttitel", 
                                type: "string", 
      
          });
      createState('Plex.wer', 0, { 
                                desc: "Plex - wer", 
                                type: "string", 
      
          });
      createState('Plex.logo', 0, { 
                                desc: "Plex - logo", 
                                type: "string", 
      
          });
      createState('Plex.parentlogo', 0, { 
                                desc: "Plex - parentlogo", 
                                type: "string", 
      
          });
      createState('Plex.Rating', 0, { 
                                desc: "Plex - rating", 
                                type: "string", 
      
          });
      createState('Plex.media', 0, { 
                                desc: "Plex - musik video home", 
                                type: "string", 
      
          });
      createState('Plex.description', 0, { 
                                desc: "Plex - Beschreibung", 
                                type: "string", 
      
          });
      

      Danach noch als Javascript - Script wertet Webhook aus und die Titel/ Thumbs ist als Variable abrufbar.

      var express = require('express')
        , request = require('request'),
          multer  = require('multer');
      var url="http://xxx.xxx.xxx.xxx";
      var app = express();
      var isPlaying = true;
      var app = express();
      var upload = multer({ dest: '/tmp/' });
      app.post('/', upload.single('thumb'), function (req, res, next) {
      var payload = JSON.parse(req.body.payload);
      console.log('Got webhook for', payload.event);
      
      // MUSIK 
        if ( payload.event == "media.play" && payload.Metadata.type == "track") {
          setState("javascript.0.Plex.wer",payload.Metadata.grandparentTitle); 
          setState("javascript.0.Plex.Titel"/*Plex.Titel*/,payload.Metadata.parentTitle); 
          setState("javascript.0.Plex.parentTitel"/*Plex.parentTitel*/,payload.Metadata.title);
          setState("javascript.0.Plex.Rating"/*Plex.Rating*/,payload.Metadata.ratingCount.toString()); 
          setState("javascript.0.Plex.media"/*Plex.media*/,payload.Metadata.librarySectionType); 
          var logo=url+':32400'+payload.Metadata.thumb;
          setState("javascript.0.Plex.logo"/*Plex.logo*/,logo); 
          setState("javascript.0.Plex.media"/*Plex.media*/,"Musik");
          } 
      
       //*****************************
       // VIDEOS & HomeVIDEOS
         if ( payload.event == "media.play" && payload.Metadata.type == "movie") {
         setState("javascript.0.Plex.wer",payload.Metadata.studio); 
         setState("javascript.0.Plex.Titel"/*Plex.Titel*/,payload.Metadata.title); 
          setState("javascript.0.Plex.Rating"/*Plex.Rating*/,payload.Metadata.rating.toString()); 
          var logo2=url+':32400'+payload.Metadata.thumb;  
          setState("javascript.0.Plex.logo"/*Plex.logo*/,logo2); 
          var logo3=url+':32400'+payload.Metadata.art;
          setState("javascript.0.Plex.parentlogo"/*Plex.parentlogo*/,logo3); 
          setState("javascript.0.Plex.media"/*Plex.media*/,"Video");
          } 
      
      //*****************************
        // Bilder wieder auf null
         if ( payload.event == "media.stop") {
      
         setState("javascript.0.Plex.wer",""); 
         setState("javascript.0.Plex.Titel"/*Plex.Titel*/,""); 
         setState("javascript.0.Plex.logo"/*Plex.logo*/,'http://192.168.1.184:8082/vis.0/main/img/firework-music.jpg'); 
         setState("javascript.0.Plex.parentTitel"/*Plex.parentTitel*/,"");
         setState("javascript.0.Plex.Rating"/*Plex.Rating*/,""); 
         setState("javascript.0.Plex.media"/*Plex.media*/,"");
         setState("javascript.0.Plex.parentlogo"/*Plex.parentlogo*/,""); 
         }
        if (payload.event == "media.play" || payload.event == "media.resume") {
          isPlaying = true;
        } else if (payload.event == "media.pause" || payload.event == "media.stop") {
          isPlaying = false;
        }
      
        res.sendStatus(200);
      });
      
      var options = {
        headers: {
      
        }
      };
      
      app.listen(10000);
      

      Einschränkungen: Beim Ändern des Scripts muss zuerst Javascript beendet werden, sonst meckert er, weil der Port bereits belegt ist.

      Habe ich noch nicht rausgefunden, wie man das anders löst. Jemand Ideen?

      Nächste Schritt wäre:

      als Adapter oder als Widget :roll: 😄

      1 Reply Last reply Reply Quote 0
      • Eisbaeeer
        Eisbaeeer Developer last edited by

        Hi

        Ok, ich hab es mal bei mir getestet. Soweit ja ganz interessant. Man kann jetzt darauf reagieren, wenn Plex etwas abspielt. Ich würde aber gerne Clients steuern können. Wenn du beide Scripts in eines packst, hast du auch kein Problem mit dem Port.

        Gruß

        –- EDIT ---

        Das hier könnte man sehr Einfach implementieren. Damit ließe sich ein Client steuern (Navigation und Playback). Nur bekommt man da noch keine Info zurück: https://github.com/phillipj/node-plex-control

        Ich bau gerade mal einen Adapter für den Webhook. Dann kann ich schon mal das Licht dimmen 😉

        1 Reply Last reply Reply Quote 0
        • M
          mdsv last edited by

          lass mich teilhaben, vielleicht lerne ich ja noch was 😄

          Im Prinzip muss es ja auch 2x Teile geben:

          Navigation + Info, was läuft.

          Die Info kann ja nur über Webhook kommen, sonst muss du ständig pollen.

          Navigation: Wie hast du die node-flex-control denn eingebaut? Als Javascript kommt kein Fehler, aber steuern tut das bei dir nicht. Bei dir???

          1 Reply Last reply Reply Quote 0
          • Eisbaeeer
            Eisbaeeer Developer last edited by

            @mdsv:

            lass mich teilhaben, vielleicht lerne ich ja noch was 😄

            Im Prinzip muss es ja auch 2x Teile geben:

            Navigation + Info, was läuft.

            Die Info kann ja nur über Webhook kommen, sonst muss du ständig pollen.

            Navigation: Wie hast du die node-flex-control denn eingebaut? Als Javascript kommt kein Fehler, aber steuern tut das bei dir nicht. Bei dir??? ` Gerne kannst du mitmachen. Bin gerade noch am bauen und hatte heute keine Zeit mehr. Die Anfänge findest du unter https://github.com/eisbaeeer/iobroker.plexwebhook

            Nur mal "schnell" zusammen gebaut. Läuft noch nicht. Der haupt Teil sollte die bekannt vorkommen und ist in der plexwebhook.js

            Die ganzen variable müssen noch angepasst werden und und und 😉

            Mach einen Clone und Bau mal weiter. Falls er dann bei dir schon läuft können wir mergen.

            Gruß Eisbaeeer

            Gesendet von meinem SM-G920F mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • M
              mdsv last edited by

              habe noch nicht mit GitHub gearbeitet, sondern eher mit Javascript direkt. Gibt es hier einen gute Seite zum Informieren??

              Du baust aber ein Adapter oder ist das nur Code für Javascript? Fehlt ja noch ein bisschen sonst …?!

              Die Frage ist außerdem, was er machen soll ... nur Webhook verarbeiten = Datenpunkte anlegen oder auch steuern.

              Meine Zielsetzung wäre bisher:

              a) Anzeige, was läuft so ...(geht ja schon 🙂 ) b) Stoppen und anhalten, ggf. nächstes Lied.

              ob man c) was ganz neues starten / suchen will ... (glaube bräuchte ich erst mal nicht) + Frage wäre auch, wo soll es starten = auf welchen Gerät.

              Ich habe die Steuerung aber auch noch nicht praktisch hinbekommen, fehlte mir aber auch etwas Zeit.

              1 Reply Last reply Reply Quote 0
              • Eisbaeeer
                Eisbaeeer Developer last edited by

                @mdsv:

                Die Frage ist außerdem, was er machen soll … nur Webhook verarbeiten = Datenpunkte anlegen oder auch steuern.

                Meine Zielsetzung wäre bisher:

                a) Anzeige, was läuft so ...(geht ja schon 🙂 ) b) Stoppen und anhalten, ggf. nächstes Lied.

                ob man c) was ganz neues starten / suchen will ... (glaube bräuchte ich erst mal nicht) + Frage wäre auch, wo soll es starten = auf welchen Gerät.

                Ich habe die Steuerung aber auch noch nicht praktisch hinbekommen, fehlte mir aber auch etwas Zeit. `

                Ich schlage vor dass wir schrittweise die Funktionen integrieren. Im ersten Schritt soll der Adapter das gleiche wie deine Scripte machen, eben nur als Adapter.

                Der legt alles an, was man braucht.

                Wenn das dann Läuft, erweitern wir die Funktionen. Player auflisten und steuern, etc.

                Was meinst Du?

                Gruß

                Gesendet von meinem SM-G920F mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • M
                  mdsv last edited by

                  Find ich gut … macht Sinn.

                  Mein Script war aber schon gefiltert auf die Felder, die mich interessieren.

                  Als Adapter könnte man auch mehr machen ... siehe https://support.plex.tv/hc/en-us/articles/115002267687

                  Bei einem Adapter könnte man es auch mit mehr Felder machen.

                  Kann man sooo schon den als Adapter einbinden??? Noch nicht oder???

                  1 Reply Last reply Reply Quote 0
                  • Eisbaeeer
                    Eisbaeeer Developer last edited by

                    @mdsv:

                    Kann man sooo schon den als Adapter einbinden??? Noch nicht oder??? `

                    Ja, da holen wir dann alle Infos raus. Derzeit läuft er noch nicht. Hab ihn nur mal in github abgelegt, damit ich ihn in meinem kreativen Chaos nicht verliere 😉

                    Für github gibt es einen client, aber am einfachsten ist es, dass zip herunterzuladen. Darin ist der ganze code. Wenn du dir einen Acount erstellt, kannst du ihn dir auch kopieren und darin arbeiten. Vorteil, mit github hast du eine Versionierung und man kann die Änderungen zusammenführen.

                    Am besten du arbeitest dich Stück für Stück ein. Lege mal einen Account bei github an.

                    Gruß

                    Gesendet von meinem SM-G920F mit Tapatalk

                    1 Reply Last reply Reply Quote 0
                    • Eisbaeeer
                      Eisbaeeer Developer last edited by

                      So, hatte heute Abend ein wenig Zeit.

                      Der Adapter lässt sich jetzt installieren. Der Code ist noch "schmutzig" und es ist noch ein wenig zu tun. 8-)

                      Im Moment bekommt man nur den Interpret und Thumb ohne Server Adresse, aber das wird noch. Jetzt ist es nur noch Fleißarbeit.

                      Ich muss mal noch die "if" routinge debuggen. Die greift noch nicht. Wenn du bock hast, kannst du dir das ja mal anschauen. Es ist Zeile 31 in der plexwebhook.js

                      Gruß Eisbaeeer

                      –-EDIT---

                      Hab den Namen des Adapters geändert. Der Name war doch zu sehr auf eine Funktion zugeschnitten. Er heisst jetzt iobroker.plexconnect

                      1 Reply Last reply Reply Quote 0
                      • Eisbaeeer
                        Eisbaeeer Developer last edited by

                        Hi mdsv

                        Könntest du für mich mal testen?

                        Ich hab jetzt im Adapter erstmal den Webhook realisiert. Du kannst den Adapter mal installieren und testen. Hier die Schritte, wie du ihn installieren kannst:

                        Gehe in iobroker Admin Adapter und klicke auf das Github Symbol oben links:
                        139_1.png
                        Dann die URL des Adapters von meinem Github eingeben:

                        https://github.com/Eisbaeeer/iobroker.plexconnect

                        Eisbaeeer 139_2.png
                        Danach sollte er sich installieren und im Adapter Reiter sichtbar sein. Dann mit dem Plus Zeichen normal installieren.
                        139_3.png

                        Danke für deine hervorragende Vorarbeit! Wenn bei dir alles läuft, können wir weiter machen. Ich denke wir bekommen das nur über die http API hin, dass wir die Player ansteuern. Hatte noch keine Zeit, da weiter zu forschen. Wenn du bock hast, kannst du dich gerne schlau machen.

                        Gruß Eisbaeeer

                        1 Reply Last reply Reply Quote 0
                        • M
                          mdsv last edited by

                          Hallo,

                          jetzt erst gesehen … sorry ...

                          gute Nachtricht = Install klappte

                          schlechte Nachricht = sowohl 127.0.0.1, als auch die richtige IP-Adresse lassen bei mir den Adapter abstützen...

                          Siehe:

                          plexconnect.0	2017-10-29 14:31:20.099	error	at initAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4568:18)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at Adapter.emit (events.js:185:7)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at emitNone (events.js:86:13)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at Adapter. (/opt/iobroker/node_modules/iobroker.plexconnect/plexconnect.js:66:22)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at EventEmitter.listen (/opt/iobroker/node_modules/iobroker.plexconnect/node_modules/express/lib/application.js:618:24)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at Server.listen (net.js:1394:5)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at listen (net.js:1298:10)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at Server._listen2 (net.js:1262:14)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at exports._exceptionWithHostPort (util.js:1043:20)
                          plexconnect.0	2017-10-29 14:31:20.099	error	at Object.exports._errnoException (util.js:1020:11)
                          plexconnect.0	2017-10-29 14:31:20.099	error	Error: listen EADDRINUSE :::10000
                          plexconnect.0	2017-10-29 14:31:20.099	error	uncaught exception: listen EADDRINUSE :::10000
                          
                          1 Reply Last reply Reply Quote 0
                          • Y
                            YellowFellow last edited by

                            Immer weiter, Leute [emoji106]

                            Als (weiterer) PlexPass-User verfolge ich diesen Thread sehr gespannt.

                            (Leider kann ich mich nicht technisch einbringen)

                            1 Reply Last reply Reply Quote 0
                            • Eisbaeeer
                              Eisbaeeer Developer last edited by

                              @mdsv:

                              Hallo,

                              jetzt erst gesehen … sorry ...

                              gute Nachtricht = Install klappte

                              schlechte Nachricht = sowohl 127.0.0.1, als auch die richtige IP-Adresse ... `

                              Hi.

                              In den Fehler bin ich auch schon gelaufen 😉

                              Ursache ist dein noch laufendes JavaScript, mit dem du die Anbindung an Plex gemacht hast.

                              Prüfe mal 2 Dinge:

                              • läuft dein JavaScript für Plex noch?

                              • wenn Nein, dann läuft aber noch der Webdienst, den du per JavaScript gestartest hast. Der Port 10000 ist schon in Benutzung! Das heisst der Adapter kann ihn nicht an sich binden.

                              Lösungen:

                              Ändere den Plex Port oder Kill das JavaScript mit deinem Script oder starte den Server neu. Aber nicht vergessen das JavaScript auszuschalten vor dem Neustart.

                              Dann läuft's 😉

                              Eisbaeeer

                              kein Support per PM. Fragen hier im Forum stellen.

                              1 Reply Last reply Reply Quote 0
                              • M
                                mdsv last edited by

                                Ja, es lag wirklich daran :roll:

                                Jetzt läuft es … echt genial gemacht ... :-).

                                Nur wenn mehrere Wiedergabe bei Plex gleichzeitig laufen, nimmt er immer die letzte ... ist aber durch Webhook "work as designed".

                                welche werte kann Event.Name bekommen ... stop, play, pause?

                                Wie stellst es nun weiter dar? Schon was fertig?

                                PS: Noch mal Hut ab 🙂

                                1 Reply Last reply Reply Quote 0
                                • Eisbaeeer
                                  Eisbaeeer Developer last edited by

                                  @mdsv:

                                  Ja, es lag wirklich daran :roll:

                                  welche werte kann Event.Name bekommen … stop, play, pause?

                                  Wie stellst es nun weiter dar?

                                  PS: Noch mal Hut ab 🙂 `

                                  Danke. Du hast ja auch gut dazu beigetragen.

                                  Die möglichen Werte der Datenpunkte die unter Webhooks beschrieben.

                                  Darstellung geht ja schon mit Bordmitteln. Ein Widget wäre natürlich toll. Aber mir fehlt die Zeit und ich bin auch nicht der Grafiker. Das überlasse ich anderen.

                                  Nächster Schritt wäre die Steuerung von Playern. Ich muss mich aber erst in die offizielle API einlesen.

                                  Hier wäre Eure Hilfe natürlich willkommen!

                                  Eisbaeeer

                                  kein Support per PM. Fragen hier im Forum stellen.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  482
                                  Online

                                  32.0k
                                  Users

                                  80.5k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  19
                                  5861
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo