Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: SmartTV (Samsung etc.)

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

    Neues Plugin: SmartTV (Samsung etc.)

    Hallo Leute,

    ich habe mal ein kleines Plugin zum Steuern von Samsung (und evtl. andere) SmartTVs geschrieben. Es sollte ähnlich dem HS Baustein ab Version C von Samsung funktionieren (also z.B. LE32C650). Das Plugin ist in github im branch "smarttv" für alle die es testen wollen. Release erfolgt sicher erst nach dem Release von sh.py 0.8.

    Pluginkonfiguration ./etc/plugin.conf
    Code:
    ['smarttv']
        class_name = SmartTV
        class_path = plugins.smarttv
        host = 192.168.0.45
    #    port = 55000
    #    tvid = 1
    Mittels tvid kann man dem Plugin sagen, für welche ID es zuständig sein soll. Damit kann man Items für mehr als nur einen TV im Haushalt konfigurieren, in dem man mehrere Plugins mit unterschiedlichem Namen und tvid konfiguriert.

    Items werden dann wie folgt festgelegt:
    Code:
    [tv]
        type=str
        smarttv=true
        smarttv_id=1
        enforce_updates=true
    
        [[mute]]
            type=bool
            smarttv=KEY_MUTE
            smarttv_id=1
            enforce_updates=true
    Hier taucht das smarttv_id wieder auf. Lässt man dieses Attribut weg wird standardmäßig die 1 genommen. Hat man also nur einen TV kann man es sowohl in der plugin.conf als auch bei den items weglassen.

    Weiter gibt es zwei Möglichkeiten. Entweder man definiert ein Item als String (type=str) mit smarttv=true, dann kann man einfach den gewünschten Key Code in den String schreiben und er wird gesendet, solange er mit "KEY_" beginnt. Oder man definiert bei smarttv den entsprechenden KEY mit, dann wird dieser gesendet, wenn das Item auf true gesetzt wurde. Es können natürlich beide Arten kombiniert in einer Konfig (nur natürlich nicht für ein und dasselbe Item) vorkommen.

    Und hier noch eine Liste aller Key Codes die ich im Internet gefunden habe:
    KEY_MENU
    KEY_UP
    KEY_DOWN
    KEY_LEFT
    KEY_RIGHT
    KEY_3
    KEY_VOLUP
    KEY_4
    KEY_5
    KEY_6
    KEY_VOLDOWN
    KEY_7
    KEY_8
    KEY_9
    KEY_MUTE
    KEY_CHDOWN
    KEY_0
    KEY_CHUP
    KEY_PRECH
    KEY_GREEN
    KEY_YELLOW
    KEY_CYAN
    KEY_ADDDEL
    KEY_SOURCE
    KEY_INFO
    KEY_PIP_ONOFF
    KEY_PIP_SWAP
    KEY_PLUS100
    KEY_CAPTION
    KEY_PMODE
    KEY_TTX_MIX
    KEY_TV
    KEY_PICTURE_SIZE
    KEY_AD
    KEY_PIP_SIZE
    KEY_MAGIC_CHANNEL
    KEY_PIP_SCAN
    KEY_PIP_CHUP
    KEY_PIP_CHDOWN
    KEY_DEVICE_CONNECT
    KEY_HELP
    KEY_ANTENA
    KEY_CONVERGENCE
    KEY_11
    KEY_12
    KEY_AUTO_PROGRAM
    KEY_FACTORY
    KEY_3SPEED
    KEY_RSURF
    KEY_ASPECT
    KEY_TOPMENU
    KEY_GAME
    KEY_QUICK_REPLAY
    KEY_STILL_PICTURE
    KEY_DTV
    KEY_FAVCH
    KEY_REWIND
    KEY_STOP
    KEY_PLAY
    KEY_FF
    KEY_REC
    KEY_PAUSE
    KEY_TOOLS
    KEY_INSTANT_REPLAY
    KEY_LINK
    KEY_FF_
    KEY_GUIDE
    KEY_REWIND_
    KEY_ANGLE
    KEY_RESERVED1
    KEY_ZOOM1
    KEY_PROGRAM
    KEY_BOOKMARK
    KEY_DISC_MENU
    KEY_PRINT
    KEY_RETURN
    KEY_SUB_TITLE
    KEY_CLEAR
    KEY_VCHIP
    KEY_REPEAT
    KEY_DOOR
    KEY_OPEN
    KEY_WHEEL_LEFT
    KEY_POWER
    KEY_SLEEP
    KEY_2
    KEY_DMA
    KEY_TURBO
    KEY_1
    KEY_FM_RADIO
    KEY_DVR_MENU
    KEY_MTS
    KEY_PCMODE
    KEY_TTX_SUBFACE
    KEY_CH_LIST
    KEY_RED
    KEY_DNIe
    KEY_SRS
    KEY_CONVERT_AUDIO_MAINSUB
    KEY_MDC
    KEY_SEFFECT
    KEY_DVR
    KEY_DTV_SIGNAL
    KEY_LIVE
    KEY_PERPECT_FOCUS
    KEY_HOME
    KEY_ESAVING
    KEY_WHEEL_RIGHT
    KEY_CONTENTS
    KEY_VCR_MODE
    KEY_CATV_MODE
    KEY_DSS_MODE
    KEY_TV_MODE
    KEY_DVD_MODE
    KEY_STB_MODE
    KEY_CALLER_ID
    KEY_SCALE
    KEY_ZOOM_MOVE
    KEY_CLOCK_DISPLAY
    KEY_AV1
    KEY_SVIDEO1
    KEY_COMPONENT1
    KEY_SETUP_CLOCK_TIMER
    KEY_COMPONENT2
    KEY_MAGIC_BRIGHT
    KEY_DVI
    KEY_HDMI
    KEY_W_LINK
    KEY_DTV_LINK
    KEY_APP_LIST
    KEY_BACK_MHP
    KEY_ALT_MHP
    KEY_DNSe
    KEY_RSS
    KEY_ENTERTAINMENT
    KEY_ID_INPUT
    KEY_ID_SETUP
    KEY_ANYNET
    KEY_POWEROFF
    KEY_POWERON
    KEY_ANYVIEW
    KEY_MS
    KEY_MORE
    KEY_PANNEL_POWER
    KEY_PANNEL_CHUP
    KEY_PANNEL_CHDOWN
    KEY_PANNEL_VOLUP
    KEY_PANNEL_VOLDOW
    KEY_PANNEL_ENTER
    KEY_PANNEL_MENU
    KEY_PANNEL_SOURCE
    KEY_AV2
    KEY_AV3
    KEY_SVIDEO2
    KEY_SVIDEO3
    KEY_ZOOM2
    KEY_PANORAMA
    KEY_4_3
    KEY_16_9
    KEY_DYNAMIC
    KEY_STANDARD
    KEY_MOVIE1
    KEY_CUSTOM
    KEY_AUTO_ARC_RESET
    KEY_AUTO_ARC_LNA_ON
    KEY_AUTO_ARC_LNA_OFF
    KEY_AUTO_ARC_ANYNET_MODE_OK
    KEY_AUTO_ARC_ANYNET_AUTO_START
    KEY_AUTO_FORMAT
    KEY_DNET
    KEY_HDMI1
    KEY_AUTO_ARC_CAPTION_ON
    KEY_AUTO_ARC_CAPTION_OFF
    KEY_AUTO_ARC_PIP_DOUBLE
    KEY_AUTO_ARC_PIP_LARGE
    KEY_AUTO_ARC_PIP_SMALL
    KEY_AUTO_ARC_PIP_WIDE
    KEY_AUTO_ARC_PIP_LEFT_TOP
    KEY_AUTO_ARC_PIP_RIGHT_TOP
    KEY_AUTO_ARC_PIP_LEFT_BOTTOM
    KEY_AUTO_ARC_PIP_RIGHT_BOTTOM
    KEY_AUTO_ARC_PIP_CH_CHANGE
    KEY_AUTO_ARC_AUTOCOLOR_SUCCESS
    KEY_AUTO_ARC_AUTOCOLOR_FAIL
    KEY_AUTO_ARC_C_FORCE_AGING
    KEY_AUTO_ARC_USBJACK_INSPECT
    KEY_AUTO_ARC_JACK_IDENT
    KEY_NINE_SEPERATE
    KEY_ZOOM_IN
    KEY_ZOOM_OUT
    KEY_MIC
    KEY_HDMI2
    KEY_HDMI3
    KEY_AUTO_ARC_CAPTION_KOR
    KEY_AUTO_ARC_CAPTION_ENG
    KEY_AUTO_ARC_PIP_SOURCE_CHANGE
    KEY_HDMI4
    KEY_AUTO_ARC_ANTENNA_AIR
    KEY_AUTO_ARC_ANTENNA_CABLE
    KEY_AUTO_ARC_ANTENNA_SATELLITE
    KEY_EXT1
    KEY_EXT2
    KEY_EXT3
    KEY_EXT4
    KEY_EXT5
    KEY_EXT6
    KEY_EXT7
    KEY_EXT8
    KEY_EXT9
    KEY_EXT10
    KEY_EXT11
    KEY_EXT12
    KEY_EXT13
    KEY_EXT14
    KEY_EXT15
    KEY_EXT16
    KEY_EXT17
    KEY_EXT18
    KEY_EXT19
    KEY_EXT20
    KEY_EXT21
    KEY_EXT22
    KEY_EXT23
    KEY_EXT24
    KEY_EXT25
    KEY_EXT26
    KEY_EXT27
    KEY_EXT28
    KEY_EXT29
    KEY_EXT30
    KEY_EXT31
    KEY_EXT32
    KEY_EXT33
    KEY_EXT34
    KEY_EXT35
    KEY_EXT36
    KEY_EXT37
    KEY_EXT38
    KEY_EXT39
    KEY_EXT40
    KEY_EXT41
    Das Plugin wurde bisher nur auf fehlerfreien Betrieb getestet, nicht ob es tatsächlich mit einem SmartTV funktioniert. Allerdings stammt der meiste Code aus irgenwelchen Foren und sollte daher gehen. Ich teste das, sobald ich meinen neuen Samsung fürs Schlafzimmer habe.

    Viel Spass damit
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    #2
    Vielen Dank Niko!

    Das werde ich bei Gelegenheit mal testen.

    Gruß Maik

    Kommentar


      #3
      Update: konnte das Plugin nun endlich am eigenen TV testen und hab dabei noch nen kleinen Bug gefixt der aber nur bei Verwendung der 'tvid' Einstellung auftratt. Jetzt funktioniert es und daher habe ich's in master gemerged.
      Mit freundlichen Grüßen
      Niko Will

      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

      Kommentar


        #4
        Hat das schon mal jemand in Verbindung mit smartvisu versucht?
        Wollte es gerade mal testen. Hab nun auch schon einiges an Varianten durch. Die letzte versuchte Variante sah so aus. Leider auch ohne Erfolg.



        plugin.config
        Code:
        [smarttv]
        class_name = SmartTV
        class_path = plugins.smarttv
        host = 192.168.1.154
        [FONT=Courier New][SIZE=1][FONT=Courier New][SIZE=1]#[/SIZE][/FONT][/SIZE][/FONT][FONT=Times New Roman][SIZE=1] port = 550[/SIZE][/FONT][FONT=Courier New][SIZE=1][FONT=Courier New][SIZE=1]0[/SIZE][/FONT][/SIZE][/FONT][SIZE=1][FONT=Times New Roman]0[/FONT][/SIZE]
        [FONT=Courier New][SIZE=1][FONT=Courier New][SIZE=1]#[/SIZE][/FONT][/SIZE][/FONT][SIZE=1][FONT=Times New Roman] tvid = 1[/FONT][/SIZE]
        item
        Code:
        [EG]
        ........
        [[TVEssen]]
        [[[mute]]]
        name = MuteTV
        type = bool
        smarttv = KEY_MUTE
        smarttv_id = 1
        enforce_updates = true

        in der entsprechenden smartvisu.html
        Code:
        {{ basic.button('MuteTV', 'EG.TVEssen.mute', ' Mute ', 'alert', '', 'midi') }}


        Im log finde ich immer die Fehlermeldung das er das Item nicht kennt
        Code:
        2013-04-21 20:40:13 SmartHome.py INFO Client 192.168.1.104:62309 want to update invalid item: EG.TVEssen.mute

        Der Test-TV ist ein ue46es5700. Als ich mich über die Ipad-App das erste mal auf den TV einwähle, "fragte mich das Gerät" einmalig ob ich eine Verbindung mit dem Ipad zulassen will.
        Beim sh-Plugin nicht.
        Kann das damit zusammenhängen? Ich meine das der TV die Verbindung gar nicht zulässt?

        Kommentar


          #5
          Hi Martin,

          bei dem mute-Item fehlt 'visu = yes'. Das will Dir die Fehlermeldung sagen.

          Und lass doch bitte das enforce_update weg. Das braucht man nicht.

          Bis bald

          Marcus

          Kommentar


            #6
            Zitat von mknx Beitrag anzeigen

            bei dem mute-Item fehlt 'visu = yes'.

            Hi Marcus,
            bei der Anzahl an Seiten und der damit verbundenen Items die ich momentan bei mir laufen habe, ärgert einen dieser Fehler gleich doppelt

            Ok... Sieht somit gut aus.
            Code:
            2013-04-21 21:21:26 SmartHome.py INFO EG.TVEssen.mute = True via Visu 192.168.1.155:52607
            Die einmalige Abfrage zwecks Zulassen kam auch.

            Ich denke enforce_update = true ist in Verbindung mit basic.button schon empfehlenswert. Ohne sendet er den Ein-Befehl scheinbar genau nur einmal. Egal wie oft man dann den Button betätigt....es kommt nix mehr.

            Vielen Dank und ein dickes Empfehlungsplus für das Plugin

            Kommentar


              #7
              sorry wegen dem enforce_updates. Kann sein das der Fernseher selbst toggelt und den Status nicht ändert. Dann macht es Sinn.

              Bis bald

              Marcus

              Kommentar


                #8
                Ja. basic.button ist unschuldig
                Join smartVISU on facebook. Web: smartvisu.de.
                Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                Kommentar


                  #9
                  Zitat von Apollo Beitrag anzeigen
                  Ja. basic.button ist unschuldig
                  Moin Martin,
                  war natürlich unglücklich ausgedrückt.
                  basic.button macht was es machen soll. Der böse TV ist/war der Übeltäter

                  Kommentar


                    #10
                    Habe das plugin und eine Vielzahl der KEYs jetzt mal etwas ausgibiger getestet.
                    Soweit alles prima.
                    Eine Sache habe ich aber noch nicht hinbekommen. Und zwar das direkte anwählen von Programmen.
                    Wie genau müßte die Zeile aussehen um eine Folge von Keys zu senden?

                    z.b. 106 für KIKA

                    der folgende Code bringt zwar keine Fehlermeldung im log, jedoch schaltet auch nix am TV

                    Code:
                    2013-04-25 19:53:18 SmartHome.py INFO     tv.KIKA = True via Visu 192.168.1.104:52912
                    Code:
                    [tv]
                    .......
                        [[KIKA]]
                            name = KIKATV
                            type = bool
                            visu = yes
                            smarttv = KEY_1. KEY_0. KEY_6. KEY_RETURN
                            smarttv_id = 1
                            enforce_updates = true
                    Danke

                    Kommentar


                      #11
                      Neues Plugin: SmartTV (Samsung etc.)

                      Das ging bisher nicht. Ich hab eben ne kleine Erweiterung gemacht, konnte es aber selber noch nicht testen. Wenn du jetzt

                      smarttv = KEY_1, KEY_0, KEY_6, KEY_RETURN

                      machst, sollten alle Kommandos nacheinander gesendet werden.
                      Mit freundlichen Grüßen
                      Niko Will

                      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                      Kommentar


                        #12
                        Hi Nico,
                        habs mal testen können.
                        Leider mit negativen Ergebniss

                        Code:
                        2013-04-26 15:34:17 SmartHome.py INFO tv.KIKA = True via Visu 192.168.1.155:50707
                        2013-04-26 15:34:17 SmartHome.py ERROR Problem running <bound method SmartTV.update_item of <plugins.smarttv.SmartTV instance at 0xa742b0>>: 'list' object has no attribute 'startswith'

                        Kommentar


                          #13
                          Das passiert, wenn man es von unterwegs ändert und es nicht testen kann. Probier es jetzt mal nochmal.
                          Mit freundlichen Grüßen
                          Niko Will

                          Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                          - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                          Kommentar


                            #14
                            Hi Niko,
                            könntest Du da bitte nochmal schauen?
                            jetzt scheint irgendwie kein KEy mehr anzukommen.

                            Kommentar


                              #15
                              Neues Plugin: SmartTV (Samsung etc.)

                              Hallo macflei,

                              jetzt habe ich das Plugin bei mir nochmals getestet und den Fehler endgültig gefunden. Bei mir funktioniert es nun problemlos ganze Ketten von Befehlen zu senden.

                              Was aber nicht geht, ist einem str Item mit Attribut smarttv=yes z.B. den String "KEY_1, KEY_2" zu setzen. Wenn das benötigt wird, sollte das aber machbar sein. Da solche Items aber wohl hauptsächlich in Logiken verwendet werden sollte es kein Problem sein, bei solchen Items die Keys einfach nacheinander zu setzen.

                              Viel Spass damit.
                              Mit freundlichen Grüßen
                              Niko Will

                              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                              Kommentar

                              Lädt...
                              X