Ankündigung

Einklappen
Keine Ankündigung bisher.

XBMC Plugin

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

    XBMC Plugin

    Hallo,

    ich habe gerade das wohl kürzeste Plugin der Welt geschrieben und in github eingecheckt.

    Code:
    #!/usr/bin/env python
    # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
    #########################################################################
    import logging
    import json
    
    logger = logging.getLogger('')
    
    import lib.my_asynchat
    
    
    class XBMC(lib.my_asynchat.AsynChat):
    
        _notification_time = 10000
    
        def __init__(self, smarthome, host, port=9090):
            lib.my_asynchat.AsynChat.__init__(self, smarthome, host, port)
            self._sh = smarthome
            smarthome.monitor_connection(self)
            self._id = 0
    
        def run(self):
            self.alive = True
    
        def _send(self, method, params):
            self._id += 1
            data = {"jsonrpc": "2.0", "id": self._id, "method": method, 'params': params}
            self.push(json.dumps(data, separators=(',',':')))
    
        def notify(self, title, message):
            self._send('GUI.ShowNotification', {'title': title, 'message': message, 'displaytime': self._notification_time})
    
        def stop(self):
            self.alive = False
    Gut man hätte es noch kürzer machen können, aber ich will es ja noch erweitern. Momentan kann man damit nur Meldungen an XBMC schicken.

    Code:
    #etc/plugin.conf
    [xbmc]
        class_name = XBMC
        class_path = plugins.xbmc
        host = X.X.X.X
    Code:
    #logic/xb.py
    sh.xbmc.notify('hello, 'world')
    Edit: Ach ja, in XMBC muss man unter System-Settings-Service "Allow programs on other systems to control XBMC" aktivieren.

    Bis bald

    Marcus

    #2
    Hallo,

    so das Plugin ist nun wesentlich mächtiger geworden, und taugt leider nicht mehr als kürzestes Plugin der Welt...


    Code:
    # etc/plugin.conf
    [xbmc]
        class_name = XBMC
        class_path = plugins.xbmc
    Man kann nun beliebig viele XBMC auswerten. Man bekommt den aktuellen Status mitgeteilt. Also ich spiele gerade einen Film mit dem Namen X.

    Wenn man volume oder mute ändert, wird die Änderungen auch an XBMC übertragen.

    Wenn man xbmc_mode nicht angibt, wird der Modus an das Item gehängt bei dem auch xbmc_host aufgehangen ist.

    Code:
    # items/xbmc.conf 
    [wz]
        [[mc]]
            type = str  # hier wird der Modus aufgeführt: Menu, Playing, Pause
            xbmc_host = 10.0.0.1
            [[[title]]]
                type = str # Name des Films, Musik Titel
                xbmc_title = yes
            [[[media]]]
                type = str  # Video, Audio, Picture
                xbmc_media = yes
            [[[volume]]]
                type = num  # 0 -100
                xbmc_volume = yes
            [[[mute]]]
                type = bool
                xbmc_mute = yes
        [[mc2]]
            type = str
            xbmc_host = 10.0.0.2
            [[[mode]]]
                type = str  # hier wird der Mode festgehalten
                xbmc_mode = yes
            [[[title]]]
                type = str
                xbmc_title = yes
            [[[media]]]
                type = str
                xbmc_media = yes
            [[[volume]]]
                type = num
                xbmc_volume = yes
            [[[mute]]]
                type = bool
                xbmc_mute = yes
    Die Funktion notfify kann mit einem dritter Parameter aufgerufen werden, der das Icon auswählt. z.B.
    Code:
    sh.xbmc.notify('Telefon', 'Die Schwägerin ruft schon wieder an', 'http://smarthome.local/img/phone.png'):
    Richtige Doku zum nächsten Release, oder gerne von Euch.

    Bis bald

    Marcus

    Kommentar


      #3
      Hat jemand das Plugin in Betrieb?
      Mal schafft es sich zu meinem XBMC zu verbinden, meistens aber nicht.
      Ich sehe noch keinen Zusammenhang...
      Erst hatte ich mein parallel am Android laufendes Yatse in Verdacht. Daran liegts aber nicht.

      Gruß
      Derzeit zwischen Kistenauspacken und Garten anlegen.
      Baublog im Profil.

      Kommentar


        #4
        Hi,

        ja ich.

        Bis bald

        Marcus

        Kommentar


          #5
          Und du hast noch nie ein
          Code:
          2014-02-17 00:02:47,146 ERROR    Connections  xbmc: could not connect to 192.168.201.46:9090 (TCP): timed out -- connection.py:connect:382
          gehabt?
          Derzeit zwischen Kistenauspacken und Garten anlegen.
          Baublog im Profil.

          Kommentar


            #6
            Hi,

            auf meinem Produktiv-Pi habe ich in den Logs (bis zum 1. Februar) nichts gefunden.

            Also nein.

            Bis bald

            Marcus

            Kommentar


              #7
              xbmc 12.3, frodo .. vermute ich?
              Muss ich mal tiefer einsteigen.
              Telnets auf 9090 schlagen schon fehl.
              Derzeit zwischen Kistenauspacken und Garten anlegen.
              Baublog im Profil.

              Kommentar


                #8
                Ich denke ja, es ist das aktuelle openelec Pi Image.

                Bis bald

                Marcus

                Kommentar


                  #9
                  Vl. hängt das hiermit zusammen:

                  Code:
                  2014-02-17 19:33:03,569 DEBUG    Main         Triggering xmbc-event - by: XBMC source: None dest: None value: {'event': {'params': {'data': {'item': { -- scheduler.py:trigger:
                  162
                  2014-02-17 19:33:03,572 DEBUG    xmbc-event   Item xbmc = Playing via XBMC None None -- item.py:__update:363
                  2014-02-17 19:33:03,573 DEBUG    xmbc-event   Item xbmc.media = Audio via XBMC None None -- item.py:__update:363
                  2014-02-17 19:33:03,742 DEBUG    Main         Triggering xmbc-event - by: XBMC source: None dest: None value: {'event': {'params': {'data': {'item': { -- scheduler.py:trigger:
                  162
                  2014-02-17 19:33:03,779 ERROR    xmbc-event   Method xmbc-event exception: list index out of range -- scheduler.py:_task:348
                  Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/scheduler.py", line 346, in _task
                      obj(**value)
                    File "/usr/local/smarthome/plugins/xbmc/__init__.py", line 175, in _parse_event
                      artist = result['item']['artist'][0]
                  IndexError: list index out of range
                  2014-02-17 19:33:04,003 ERROR    xmbc-event   Method xmbc-event exception: list index out of range -- scheduler.py:_task:348
                  Traceback (most recent call last):
                    File "/usr/local/smarthome/lib/scheduler.py", line 346, in _task
                      obj(**value)
                    File "/usr/local/smarthome/plugins/xbmc/__init__.py", line 175, in _parse_event
                      artist = result['item']['artist'][0]
                  IndexError: list index out of range
                  Ich kann mir aber keinen Reim drauf machen.
                  Derzeit zwischen Kistenauspacken und Garten anlegen.
                  Baublog im Profil.

                  Kommentar


                    #10
                    Heute gabs ein etwas kürzeres:

                    Code:
                    2014-02-18 18:38:39,757 ERROR    xmbc-event   Method xmbc-event exception: list index out of range -- scheduler.py:_task:348
                    Traceback (most recent call last):
                      File "/usr/local/smarthome/lib/scheduler.py", line 346, in _task
                        obj(**value)
                      File "/usr/local/smarthome/plugins/xbmc/__init__.py", line 159, in _parse_event
                        result = self._send('Player.GetActivePlayers')['result'][0]
                    IndexError: list index out of range
                    Auch ist da oft von "xmbc" die Rede... Mit nem Hint würde ich vl. mal bischen probieren. Ansonsten hats heute aber auch schon Titel angezeigt.
                    Derzeit zwischen Kistenauspacken und Garten anlegen.
                    Baublog im Profil.

                    Kommentar


                      #11
                      Bitte mehr Kontext => Debug Log

                      Kommentar


                        #12
                        Sind 33 MB...
                        Mal sehen, wie ich das mache.
                        Derzeit zwischen Kistenauspacken und Garten anlegen.
                        Baublog im Profil.

                        Kommentar


                          #13
                          Dann mach mal ein grep xbmc von dem file.


                          Gesendet von unterwegs

                          Kommentar


                            #14
                            ok, hier das grep -e xbmc -e xmbc

                            Gruß
                            Derzeit zwischen Kistenauspacken und Garten anlegen.
                            Baublog im Profil.

                            Kommentar


                              #15
                              ich kann irgendwie nix sehen. :-)

                              btw. der typo ist in git gefixt.

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X