Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: AV Device (für Yamaha, Pioneer, Denon, etc.)

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

    #91
    Onkelandy

    Bei Speakers ist mir noch was aufgefallen.
    Versuche ich die Speakers zu schalten, gibt es eine Fehlermeldung.

    Text
    1; speakers; set; *SPK; ?SPK; SPK*; RW
    Item
    Speakers:
    type: num
    visu_acl: rw
    avdevice_zone1@pioneer_one: speakers

    2017-12-22 13:11:22 VERBOSE1 Main Updating Item for avdevice_pioneer_one: Starting to update item Pioneer.Speakers. Caller: Visu, Source: 192.168.2.112:59843. Destination: None. Reconnectrigger is True
    2017-12-22 13:11:22 VERBOSE1 Main Updating Item for avdevice_pioneer_one: Trying to connect while updating item
    2017-12-22 13:11:22 VERBOSE1 Main Connecting pioneer_one: Starting to connect. Triggered by update_item. Current Connections: ['TCP']
    2017-12-22 13:11:22 VERBOSE1 Main Connecting pioneer_one: Depending is false. Message: 'NoneType' object is not callable
    2017-12-22 13:11:22 DEBUG Main Updating Item for avdevice_pioneer_one: Visu trying to update Pioneer.Speakers
    2017-12-22 13:11:22 DEBUG Main Updating Item for avdevice_pioneer_one: Visu set speakers to 9 for Pioneer.Speakers in zone 1
    2017-12-22 13:11:22 DEBUG Main Updating Item for avdevice_pioneer_one: Value limited to specific number of digits
    2017-12-22 13:11:22 ERROR Main Updating Item for avdevice_pioneer_one: Problem updating item. Error: int() argument must be a string, a bytes-like object or a number, not 'NoneType'. Does the item exist?
    Das Schalten über eine direkte TelnetVerbindung zum Pioneer funktioniert.
    Was erwartet das Plugin hier für einen Wert?
    Zuletzt geändert von Sisamiwe; 22.12.2017, 13:49.

    Kommentar


      #92
      Code:
      0:  SPEAKER OFF
      1:  SPEAKER A ON
      2:  SPEAKER B ON
      3:  SPEAKER A+B ON
      Cyclic wird in dem Sinne nicht unterstützt..
      Die Items sollten so aussehen:
      Code:
            Speakers:
                type: num
                visu_acl: rw
                avdevice_zone1: speakers
      
            SpeakerA:
                type: bool
                visu_acl: rw
                avdevice_zone1_speakers: 1
      
            SpeakerB:
                type: bool
                visu_acl: rw
                avdevice_zone1_speakers: 2
      Hab das Beispiel inzwischen hier eingefügt und das README angepasst.
      https://github.com/onkelandy/plugins...lugin/avdevice

      Ich habe bei mir in der Visu je einen Button für Speaker A und B. Wenn A ein ist und du schaltest auch B ein, sendet das Plugin automatisch A+B. Wenn A und B aus sind, sendet es automatisch OFF.
      Zuletzt geändert von Onkelandy; 22.12.2017, 16:28.

      Kommentar


        #93
        Zitat von Onkelandy Beitrag anzeigen
        Was willst du alles auf 0 setzen? Ich habe das momentan für das Volume aller Zonen implementiert, alles andere scheint mir nicht sonderlich sinnvoll, oder schon? Stell mal in der plugin config:
        depend0_volume0: True
        Und
        dependson_item: ein beliebiges Item

        Ich habe das aktuell bei mir mit einer Steckdose am Laufen, das funktioniert mal prima. Ob es auch mit dem Poweritem klappt, kann ich nicht schwören, sollte aber Alle Volume Werte werden auf 0 gesetzt, wenn das depend-Item auf 0 ist. Generell das Volume auf 0 zu stellen, wenn eine Zone ausgeschaltet ist, ist nicht sinnvoll, da bei einigen Receivern die Volume dann wirklich auf 0 geschaltet werden würde.
        Meine Idee ist, dass wenn der AVR aus ist, auch (zumindest in der Visu) die Volume, der Input und die Radiofavoriten auf 0 gehen.

        Ich muss zugeben, dass ich die Logik der Möglichkeiten in der PluginConfig noch nicht verstanden habe.

        Kommentar


          #94
          Lies dir bitte die README im neuesten Develop Zweig durch und gib mir hier Bescheid, was nicht verständlich ist oder wie es anders beschrieben werden könnte. Gerne passe ich das dann an.

          Du kannst mal versuchen, das Ganze über evals oder eine Logik anzugehen, aber wie gesagt zumindest für Volume funktioniert es über die angegebene Option.

          Ich würde übrigens empfehlen, von der 1:1 Kopie der Fernbedienung abzukommen. Du kannst in der Visu deine Stationen ja über ein select widget direkt auswählen, hier rauf und runter zu schalten erscheint mir ähnlich unnötig wie die Volume mit einem eigenen Item nach oben oder unten zu drehen. Hier könnte man zB das offset widget nutzen, vorausgesetzt Version 2.9 der Visu im Einsatz.

          Bei mir sieht die Wahl des Inputs so aus:
          sources.png
          Rechts sind die Inputs. Sobald der Receiver an ist, wird dort dann blau der aktive Input angezeigt. Also eigentlich funktioniert das alles schon so wie du dir das vorstellst. Mit Ausnahme der Radiofavoriten. Kann ich mir ja noch überlegen, aber ich würde hier eher der Weg über eine Logik gehen, denn das ist schon wirklich Geschmacksache. Außerdem gibt es so viele gute Alternativen zum Radio des Receivers, zB squeezebox, etc.
          Angehängte Dateien

          Kommentar


            #95
            Hi,

            als Neuling mit Yamaha-Geräten versuche ich gerade, mich in die Möglichkeiten der Steuerung über das Netz einzuarbeiten.

            Bevor ich jetzt anfange, mich mit dem Plugin in der Tiefe auseinanderzusetzen, eine Frage vorweg: das Plugin kommt aus der "alten" Yamaha-Zeit, in der mit XML-Steuerbefehlen gearbeitet wurde. Werden auch die neueren Geräte mit YXC/json unterstützt?

            Gruß
            Sebastian

            Kommentar


              #96
              Hi!
              Das Plugin unterstützt nur die Verbindung via TCP/IP oder RS232 und schickt die Befehle so wie wenn du's über telnet schicken würdest. Soweit ich weiß, klappt das mit Yamaha leider nicht. Es gibt aber glaub ein eigenes Yamaha-Plugin irgendwo. Ansonsten kannst du dich am kodi-Plugin orientieren, das sich im develop-Zweig auf Github befindet.

              Ich fürchte, ein Erweitern des Plugins auf diese Möglichkeit wäre recht viel Arbeit, zudem könnte ich nichts testen

              Kommentar


                #97
                Die Verbindung geht (immer noch) über TCP/IP via Port 80. Befehle gehen per GET-Parameter, Antworten kommen im json-Format.

                Leider unterstützen offensichtlich die neueren Geräte die alte Abfrage über Port 80 und POST / XML nicht mehr...

                Schade. Naja, wenn ich alles laufen habe und endlich weiß, welche Version von sh.py mit welchen Plugins läuft, schau ichs mir vielleicht nochmal an...
                Angehängte Dateien

                Kommentar


                  #98
                  Ja, läuft leider komplett anders.. und ich kann die "Lüge" im Thread-Titel leider auch nicht ausbessern

                  Kommentar


                    #99
                    Hallo,

                    ich würde gern nochmal auf die Möglichkeiten in der PluginConfig zurückkommen.
                    Ziel von mir ist es, dass in der VISU der Status auch bei AVR aus richtig angezeigt wird. D.h. ich hätte gern, dass Volume auf 0 geht und auch der Input deaktiviert ist.

                    Ich glaube, dass ich nun verstanden habe, wie die Möglichkeiten der PluginConfig funkioniert. Aber für meinen Anwendungsfall nicht geeignet (denke ich).
                    In der Doku steht:
                    • dependson_item: item. If given item has given value the commands are sent to the device, otherwise they are not. Relevant if you have your device connected to a power socket that can be turned off.
                    Wenn ich dem dependson_item das Item AVR Power Item zuweise, bekomme ich den AVR nicht mal mehr an, da, wenn das Item auf 0 steht, keine Kommandos gesendet werden.
                    Auch mit einer Logik ist es schwierig. Ich habe eine eval gebaut, dass den Wert von Volume bei AVR=aus auf 0 setzt. Blöderweise wird beim neuen Einschalten diese 0 auch gesendet und der AVR ist stumm.

                    Hast Du noch eine Idee?

                    Kommentar


                      Was ist wenn du das über ein Hilfsitem machst?
                      Das depends_on Item darf nicht Power sein, sondern muss auch ein eigenes Hilfs-ItemItem sein, das du in die Visu einbettest als wäre es der Powerknopf. Über eine Logik wird dann beim Einschalten des depend-Items auch Power eingeschaltet. Beim Ausschalten von Power wird das depend-Item abgeschalten.

                      Ansonsten wenn das nicht klappt, könntest du mal nur für Volume ein Hilfsitem machen: volume_visu.
                      Und dort ein eval wie zB eval: sh.realvolume(value) if value>10 else sh.realvolume()
                      Über die oben angesprochene Logik wird dieser Wert auf 0 gesetzt, wenn Power auf 0 ist.

                      Kommentar


                        Nach weiteren Tests folgendes Ergebnis:

                        Mit dem Power-Hilfsitem funktioniert das Einschalten, das Ausschalten dann aber nicht. Wahrscheinlich, weil das Hilfsitem bereits auf "0" steht und dann das Plugin nichts mehr sendet.
                        Mit dem VolumeHilfsitem klappt es auch nicht richtig.


                        Aber folgendes funktioniert: Ich habe ein item, dass den letzten gültigen Volumenstand (>0) speichert.
                        Dann habe ich das neuen on_update an Power angehangen und los gehts:

                        Code:
                            Power:
                                type: bool
                                visu_acl: rw
                                avdevice_zone1@pioneer_one: power
                                enforce_updates: 'no'
                                on_update: 
                                - Pioneer.Volume = sh.Pioneer.Volume.lastvalue() if sh.Pioneer.Power() == 1 else 0
                        
                            Volume:
                                type: num
                                visu_acl: rw
                                enforce_updates: 'no'
                                avdevice_zone1@pioneer_one: volume
                        
                                lastvalue:
                                    type: num
                                    value: 80
                                    eval: sh.Pioneer.Volume() if sh.Pioneer.Volume() > 0
                                    eval_trigger: Pioneer.Volume
                                    cache: 'yes'
                        Wird Power ausgeschaltet, wird Volume auf 0 gesetzt, das VolumeHilfsitem aber nicht. Bei Power an, wird dann Volume wieder mit dem VolumeHilfsitem beschrieben.
                        So geht es.
                        Nur das eval in dem VolumeHilfsitem klappt noch nicht so.

                        Kommentar


                          Das beschriebene Verhalten passt aber eh genau, oder? Außer, dass das lastvalue nicht den richtigen Wert bekommt?
                          Mit der kleinen Änderung?
                          Code:
                          eval: sh.Pioneer.Volume() if sh.Pioneer.Volume() > 0 else value
                          Und bei Volume ein enforce_updates?
                          Zuletzt geändert von Onkelandy; 30.12.2017, 18:58.

                          Kommentar


                            Hab mal ne Frage zu MinValue MaxValue:

                            In der TXT Datei kann man eine MAXVALUE setzen. Aber eine MINVALUE gibt's nicht, oder ? Die ist immer 0 ?

                            Code:
                            ZONE; FUNCTION; FUNCTIONTYPE; SEND; QUERY; RESPONSE; READWRITE; INVERTRESPONSE; MAXVALUE; RESPONSETYPE
                            1; bass; set; PSBAS **; PSBAS ?; PSBAS **; RW; ; 56
                            BASS UP/DOWN , direct change to **dB
                            **:00 to 99 by ASCII , 50=0dB
                            -> AVR-2112CI/AVR-1912 can be operated from -6 to +6(44 to 56)
                            ich habe einen AVR-1912 ^^

                            Kommentar


                              Und was ist ein "OLBY" ? ;-)
                              Code:
                              1; audioinput; set; SD*; SD?; SD*; RW; ; ; str
                              Code:
                              2018-02-26 18:40:45 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Response: MSDOLBY DIGITAL. -- __init__.py:_parse_input:931
                              2018-02-26 18:40:45 DEBUG    __init__     avdevice-tcp-reconnect Converting Values : Received Value is: OLBY DIGITAL with expected type str. Invert: False -- __init__.py:_convertvalue:245
                              2018-02-26 18:40:45 DEBUG    __init__     avdevice-tcp-reconnect Converting Values : Received Value is now: OLBY DIGITAL with type <class 'str'>. -- __init__.py:_convertvalue:299
                              2018-02-26 18:40:45 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Found key SD in response at position 1 with value OLBY DIGITAL. -- __init__.py:_parse_input:1181
                              2018-02-26 18:40:45 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Updating Item avr.audioinput with str Value: OLBY DIGITAL. -- __init__.py:_parse_input:1198

                              Kommentar


                                Und weil ich gerade so schön am Testen bin: Eine Ahnung warum das mit dem BASS nicht funktioniert ?
                                Code:
                                018-02-26 18:57:19 DEBUG    __init__     Main         Updating Item for avdevice_: Visu trying to update avr.bass -- __init__.py:update_item:1299
                                2018-02-26 18:57:19 DEBUG    __init__     Main         Updating Item for avdevice_: Visu set bass to 51 for avr.bass in zone 1 -- __init__.py:update_item:1429
                                2018-02-26 18:57:19 DEBUG    __init__     Main         Updating Item for avdevice_: value limited to 56. -- __init__.py:update_item:1566
                                2018-02-26 18:57:19 DEBUG    __init__     Main         Updating Item for avdevice_: Update Zone 1 Command Set, adding to empty Commandlist ['PSBAS 51,PSBAS ?,PSBAS 51,int,float'] for avr.bass. Command: PSBAS 51 -- __init__.py:update_item:1662
                                2018-02-26 18:57:19 DEBUG    __init__     Main         Sending TCP : command was sent PSBAS 51 from Multicommand-List ['PSBAS 51']. Returns 9 -- __init__.py:_send:1781
                                2018-02-26 18:57:21 DEBUG    __init__     avdevice-tcp-reconnect Sending TCP : Resendcommand was sent PSBAS 51,PSBAS ?,PSBAS 51,int,float from Multicommand-List ['PSBAS 51,PSBAS ?,PSBAS 51,int,float']. Returns 36 -- __init__.py:_send:1781
                                2018-02-26 18:57:21 DEBUG    __init__     avdevice-tcp-reconnect Processing Response : Error reading.. Return from send is 36. Error: timed out -- __init__.py:_processing_response:487
                                2018-02-26 18:57:24 ERROR    __init__     avdevice-tcp-reconnect Processing Response : Connection error. Error: timed out Resend Counter: 0. Resend Max: 10 -- __init__.py:_processing_response:493
                                2018-02-26 18:57:24 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Response: ERROR. -- __init__.py:_parse_input:931
                                2018-02-26 18:57:24 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Expected response while parsing: ['PSBAS 51']. -- __init__.py:_parse_input:938
                                2018-02-26 18:57:24 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Requesting query from PSBAS 51,PSBAS ?,PSBAS 51,int,float because response was ERROR. Resend Counter: 1 -- __init__.py:_parse_input:1068
                                2018-02-26 18:57:25 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Newly sorted send commands at end of parsing: ['PSBAS 51,PSBAS ?,PSBAS 51,int,float'] -- __init__.py:_parse_input:1249
                                2018-02-26 18:57:25 DEBUG    __init__     avdevice-tcp-reconnect Sending TCP : query was sent PSBAS ? from Multicommand-List ['PSBAS ?']. Returns 8 -- __init__.py:_send:1781
                                2018-02-26 18:57:26 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Response: PSBAS 50. -- __init__.py:_parse_input:931
                                2018-02-26 18:57:26 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Expected response while parsing: ['PSBAS 51']. -- __init__.py:_parse_input:938
                                2018-02-26 18:57:26 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Requesting command from PSBAS 51,PSBAS ?,PSBAS 51,int,float because response was PSBAS 50. Resend Counter: 2 -- __init__.py:_parse_input:1068
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Converting Values : Received Value is: 50 with expected type int,float. Invert: False -- __init__.py:_convertvalue:245
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Converting Values : Received Value is now: 50 with type <class 'int'>. -- __init__.py:_convertvalue:299
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Found key PSBAS  in response at position 0 with value 50. -- __init__.py:_parse_input:1181
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Updating Item avr.bass with int,float Value: 50. -- __init__.py:_parse_input:1198
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Parsing Input : Newly sorted send commands at end of parsing: ['PSBAS 51,PSBAS ?,PSBAS 51,int,float'] -- __init__.py:_parse_input:1249
                                2018-02-26 18:57:27 DEBUG    __init__     avdevice-tcp-reconnect Sending TCP : command was sent PSBAS 51 from Multicommand-List ['PSBAS 51']. Returns 9 -- __init__.py:_send:1781

                                Kommentar

                                Lädt...
                                X