Ankündigung

Einklappen
Keine Ankündigung bisher.

Supportthread für Kodi Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo, ich bin bin neu bei diesem Plugin (habe dafür extra mein SmartHomeNG von Version 1.0 geupdatet). Ich brauche das Plugin zum Radiohören (Kodi Plugin "radio") und mittelfristig zum Abspielen von MP3s. Meine Kodi-Instanzen sind headless (Raspberry Pi Zero W mit Hifiberry Miniamp). Bedienung über die Kore App geht schon, und ich kann schon über die Plugin-Seite von SmartHomeNG lauter und leiser machen, ich möchte aber zumindest die Radiofunktion auch über KNX-Taster und über die smartvisu bedienen können.

    Für den Radio brauche ich die Favoriten, da dort meine Stationen zu finden sind. Jetzt wird im Plugin standardmäßig die Liste mit den Favoriten gar nicht gefüllt. Spräche etwas dagegen, in der __init.py__ folgende Änderung vorzunehmen?

    alt:
    Code:
    _initcommands = ['get_actplayer', 'get_status_au']
    neu:
    Code:
    _initcommands = ['get_actplayer', 'get_status_au', 'get_favourites']
    Bei mir funktioniert das jedenfalls (zumindest seit der Änderung mit dem Datentyp - danke für die Bearbeitung des Pull Requests!). Falls das gewünscht ist, würde ich dafür auch noch einen Request machen.

    Was ich noch gar nicht verstehe, ist die Anbindung an die smartvisu. Es gibt kein Widget dabei und ich finde nirgends ein Code-Beispiel wie das Ganze aussehen würde. Vor allem verstehe ich nicht, wie man das mit diesen (für mich neuen) structs verheiraten würde. Hier wäre ich für Hilfestellung oder für Konfigurationsbeispiele von jemandem von Euch sehr dankbar!

    Kommentar


      #17
      In den Items kannst du kodi wie folgt einbinden:

      Code:
      eg:
          wohnen:
              kodi:
                  struct:
                      - kodi.info
                      - kodi.control
                  instance: kodi1
      Die structs findest du im kodi-Plugin in der plugin.yaml, da kannst du auch sehen, welche Aktionen dann auf Items belegt sind. Hier im Beispiel werden beide structs eingebunden, es sind also alle in den structs definierten Items vorhanden.

      Du kannst natürlich auch weitere Items selbst definieren. Insbesondere mit dem 'action'-Kommando kannst du relativ viel machen. Mit den Makros kannst du auch Kommandoabfolgen definieren. Zwei Beispiele sind in der commands.py schon enthalten.

      In der Visu habe ich bisher außer einem Test noch nicht mit Kodi gearbeitet. Es soll wohl so gehen, wenn du das Quad-Design benutzt:

      Code:
      {{ quad.playercontrol('kodi_test', 'TestPi', 'p.previous', 'p.play', 'p.pause', 'p.stop', 'p.next', 'p.on_off', '', '', '', '', 'p.mute', 'p.volume', '', '', 0, 100, 5, 0, 100, 100, '', '', 'p.title', 'p.seek')}}
      Da ich das Quad-Design aber nicht benutze, war das nichts für mich. Ich brauche aber auch für Kodi keine Oberfläche.

      Die Änderung mit den Favoriten habe ich schon drin. Reicht das, um Radio zu hören?

      Kommentar


        #18
        Ja, die Einbindung ist bei mir im Prinzip genauso:
        Code:
        baddg:
            name: Bad DG
            sv_page: room
        
            musik:
                struct:
                    - kodi.info
                    - kodi.control
                    - kodi.examples
                instance: duschradio
        Ich nehme an, die Makros könnten das sein, was ich verwenden möchte.

        Bislang habe ich nur die autogenerierten Seiten der smartVISU verwendet, aber da muss ich wohl noch mal mit dem Quad-Dingens rumspielen.

        Für Radio:
        Ich habe das "radio" plugin installiert und dann ein paar Sender zu den Favoriten hinzugefügt. Wenn man die Favoriten dann über get_favourites abholt, kriegt man das hier:
        Code:
        {'ANTENNE BAYERN': {'path': 'plugin://plugin.audio.radio_de/station/9111', 'thumbnail': 'https://static.radio.net/images/broadcasts/81/d7/9111/1/c175.png', 'title': 'ANTENNE BAYERN', 'type': 'media'},
        'BAYERN 1 - Franken': {'path': 'plugin://plugin.audio.radio_de/station/30463', 'thumbnail': 'https://static.radio.net/images/broadcasts/df/a1/30463/2/c175.png', 'title': 'BAYERN 1 - Franken', 'type': 'media'},
        'ANTENNE BAYERN - Oldies but Goldies': {'path': 'plugin://plugin.audio.radio_de/station/9120', 'thumbnail': 'https://static.radio.net/images/broadcasts/ee/be/9120/1/c175.png', 'title': 'ANTENNE BAYERN - Oldies but Goldies', 'type': 'media'},
        'BAYERN 3': {'path': 'plugin://plugin.audio.radio_de/station/2247', 'thumbnail': 'https://static.radio.net/images/broadcasts/df/1f/2247/4/c175.png', 'title': 'BAYERN 3', 'type': 'media'},
        'Absolut relax': {'path': 'plugin://plugin.audio.radio_de/station/11593', 'thumbnail': 'https://static.radio.net/images/broadcasts/28/5b/11593/c175.png', 'title': 'Absolut relax', 'type': 'media'},
        'Bayern 2 Nord': {'path': 'plugin://plugin.audio.radio_de/station/2246', 'thumbnail': 'https://static.radio.net/images/broadcasts/75/8a/2246/3/c175.png', 'title': 'Bayern 2 Nord', 'type': 'media'},
        'ANTENNE BAYERN - Classic Rock': {'path': 'plugin://plugin.audio.radio_de/station/9126', 'thumbnail': 'https://static.radio.net/images/broadcasts/dc/13/9126/2/c175.png', 'title': 'ANTENNE BAYERN - Classic Rock', 'type': 'media'}}
        Diese Info reicht im Prinzip, um den Thumbnail anzuzeigen und die Station aufzurufen. Per Curl mache ich den Aufruf so:
        Code:
        curl -X POST -H 'Content-Type: application/json' -i http://192.168.178.79:8080/jsonrpc --data '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"file":"plugin://plugin.audio.radio_de/station/30463"}}}'
        Mein Ziel ist es jetzt, die Favoriten als Stationstasten abzubilden. Die ersten 6 Taster meines MDT 8fach sollen dann bei langem Druck den jeweiligen Sender spielen. (Klar, ich könnte das einfach als Logik mit einem request machen, komplett ohne kodi-Plugin, aber es wäre gar nicht schlecht, wenn ich am Handy sehen könnte, was gespielt wird. Und ich wollte das mit dem Plugin einfach auch ausprobieren.)

        Kommentar


          #19
          Wenn du das probieren möchtest, kannst du ja auch neue Befehle hinzufügen. Schau dir mal an, wie die commands definiert sind. Wenn du die URL als Wert übergibst, kannst du auch neue Befehle einbauen, ohne am Code schrauben zu müssen.

          Woher kommt das struct kodi.example?

          Kommentar


            #20
            OK, mach ich kommendes Wochenende mal, danke!

            Das struct kodi.examples ist in plugin.yaml definiert. Ich habe es da nicht rein; ich habe nur die Doku angepasst, dass dort auch drinsteht, dass es das gibt.

            Kommentar


              #21
              Ach, das hatte ich schon vergessen

              Aber fein, das zeigt ja, wie man neue Funktionen einbinden kann

              Kommentar


                #22
                So, die neue Version vom Kodi-Plugin ist seit vorhin im develop. Sie basiert auf sdp und ist intensiv getestet. Sie hat ein paar mehr Funktionen als die alte, und ist wie gehabt über die commands.py anpassbar.

                Da Kodi ein recht komplexes Protokoll spricht, sind für manche Funktionen auch Codeänderungen notwendig, aber da kann ich mich gern drum kümmern, wenn Bedarf besteht.

                Hinweis: die Command- und Item-Struktur hat sich geändert, weil beide jetzt hierarchisch gegliedert sind. Es gibt structs (old_info und old_control), die die alte Funktionalität auf Item-Ebene nachbilden; wer nichts umstellen möchte, muss nur statt der alten structs die neuen einbinden.

                In der user_doc.rst ist dazu noch etwas ausgeführt.

                Bei Fragen oder Probleme - immer drauf los

                Kommentar

                Lädt...
                X