Ankündigung

Einklappen
Keine Ankündigung bisher.

Widget Multimedia für Verstärker (AVR)

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

    Widget Multimedia für Verstärker (AVR)

    Hallo,

    ich bin dabei ein Plugin zu entwickeln für Denon / Marantz Verstärker. Thread ist hier: https://knx-user-forum.de/smarthome-...-receiver.html

    Frage nun zur VISU: Es muss noch ein Widget entwickelt / angepasst werden. Ich sehe keine Probleme für Volume, Mute, Power e.t.c. Aber wie würdet ihr die Quellen Auswahl gestalten ?

    Ich bin neu in SH / SmartVisu, deshalb stehe ich ein bischen auf dem Schlauch.

    Eine Möglichkeit die mir spontan einfällt ist alle möglichen Quellen in der plugins.conf als sources = dvd,bd,radio, .... einzutragen, dann in der items.conf alle Quellen als BOOL einzutragen und in der VISU als Switches hinzuzufügen. Das Plugin müsste dann, wenn eine Quelle ausgewählt wurde (egal op per VISU oder auf dem Receiver selbst) alle anderen auf False stellen.

    Eine andere Möglichkeit wäre wie vorher, nur anstelle von Switches die Quellen mit Images als Button Group darzustellen. Der Vorteil wäre dass nicht alle anderen Quellen jeweils auf False gesetzt werden müssen. Nachteil: Man sieht nicht sofort die aktive Quelle. Ausser man würde diese noch mit "Aktive quelle: xxxx" als Textobject anzeigen lassen.

    Ich frage mich aber ob es nicht eine elegantere Möglichkeit gibt ? z.B. ein Button mit "Quelle: xxx" und wenn man drauf drückt ein Popup das alle möglichen Quellen anzeigt.

    Wie würden die Experten das lösen ?

    MfG,

    Serge

    #2
    Wie wärs mit einem Dropdown?

    Gruss
    Join smartVISU on facebook. Web: smartvisu.de.
    Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

    Kommentar


      #3
      Zitat von Apollo Beitrag anzeigen
      Wie wärs mit einem Dropdown?
      Richtiges HTML dropdown, oder gibts da was als Widget was ich übersehen habe ?

      Kommentar


        #4
        Ja. Kannst ja mal in die config.html schauen.

        Gruss
        Join smartVISU on facebook. Web: smartvisu.de.
        Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

        Kommentar


          #5
          Ah ja. Sieht gut aus. Werd's mal so probieren, danke !

          Was steht für ne Syntax zwischen {% und %} ? Python code ?

          Kommentar


            #6
            twig

            Gruss
            Join smartVISU on facebook. Web: smartvisu.de.
            Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

            Kommentar


              #7
              Danke. Kannte ich vorher nicht, hab mich ein bischen eingelesen.

              Folgendes müsste korrekt sein, abgesehen vom fehlenden translate ?

              Code:
              <select name="source" id="source" data-native-menu="false">
              	{% for source in sources %}
              	    <option value="{{ source.id }}">{{ source.name }}</option>
              	{% else %}
              	    <option value="---">No sources in plugin.conf</option>
              	{% endfor %}								
              </select>
              Frage: Wie kriege ich nun von der __init__.py aus meinem Plugin aus diese sources Variable gesetzt ? In der config.html wird fast alles aus dateinamen erstellt. Ich hab kein passendes Beispiel gefunden..

              Kommentar


                #8
                Da müsste man ein eigenes Widget draus machen, welches dann im "upate" Fall den Wert setzt.

                Gruss
                Join smartVISU on facebook. Web: smartvisu.de.
                Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                Kommentar


                  #9
                  Apollo,

                  Ich versuch mal ein Widget / Macro zu erstellen was man nachher eventuell als multimedia.avr in die standards mit einbauen könnte. Ich hab aber ein Twig Problem mit dem Parsen von Python dict's. Warum ein dict ? Weil ich eventuell in der VISU die Quelle anders Bezeichnen will als sie in Wirklichkeit heisst. z.B. hätte ich villeicht gerne dir Quelle GAME als "WII" in der Visu, und die Quelle GAME2 als "Xbox" da stehen.

                  Folgendes in der items.conf:
                  Code:
                  [[[Denon]]]
                      type = dict
                      value = {'TV': 'TV', 'DVD': 'BD', 'GAME': 'WII'}
                      visu_acl = rw
                      [[[[Power]]]]
                          type = bool
                          visu_acl = rw
                          denon_send = power
                          enforce_updates = on
                  [..... u.s.w. ....]
                  Die gad's sind wie folgt. Das was in dieser Frage relevant ist ist das letzte GA.
                  Code:
                  {% macro avr(id, gad_power, gad_vol, gad_volup, gad_voldown, gad_mute, gad_source, gad_sourceslist) %}
                  In der EG.Stube.html Seite habe ich folgendes:
                  Code:
                  {% import "widget_avr.html" as swa %}
                  {{ swa.avr('EG.Stube.Denon', 'EG.Stube.Denon.Power', 'EG.Stube.Denon.Volume', 'EG.Stube.Denon.VolumeUp', 'EG.Stube.Denon.VolumeDown', 'EG.Stube.Denon.Mute', 'EG.Stube.Denon.Source', 'EG.Stube.Denon') }}
                  Alternativ habe ich auch folgendes probiert:
                  Code:
                  {% import "widget_avr.html" as swa %}
                  {{  swa.avr('EG.Stube.Denon', 'EG.Stube.Denon.Power',  'EG.Stube.Denon.Volume', 'EG.Stube.Denon.VolumeUp',  'EG.Stube.Denon.VolumeDown', 'EG.Stube.Denon.Mute',  'EG.Stube.Denon.Source', {'TV': 'TV', 'DVD': 'DVD', 'GAME': 'WII'}) }}
                  Im dem Widget versuche ich dann das dictionary zu parsen:
                  Code:
                  <div data-role="controlgroup" data-type="horizontal">
                      {% for key, value in gad_sourceslist.items %}
                      {{ basic.button(id~'{{key}}', gad_source, '{{key}}', '{{key}}', '{{value}}') }}
                      {% endfor %}
                  </div>
                  Das klappt aber irgendwie nicht. Ich hab das aus irgendeinem Forum, ich glaube aber es war für Django gedacht. Obwohl, ich habe auch irgendwo gelesen dass die Syntax gleich ist ...

                  Kannst du mir da weiterhelfen ?

                  Kommentar


                    #10
                    Dir fehlt das zugehörige JavaScript das die Update Methoden implementiert. Schau dir dazu zuerst die JS Implementierungen der vorhandenen Widgets an und packe das für dein Widget anschließend in eine visu.js in dein Projektverzeichnis damit es von der sv auch mitgeladen wird.
                    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


                      #11
                      Zitat von 2ndsky Beitrag anzeigen
                      Dir fehlt das zugehörige JavaScript das die Update Methoden implementiert. Schau dir dazu zuerst die JS Implementierungen der vorhandenen Widgets an und packe das für dein Widget anschließend in eine visu.js in dein Projektverzeichnis damit es von der sv auch mitgeladen wird.
                      Das versteh ich nicht ... Ich schau mir das JS jetzt zwar mal an, aber ich red ja noch nicht mal davon dass die Knöpfe funktionieren sollen. Bis jetzt zeigt er sie nicht mal an. IMHO mache ich ein Fehler in der TWIG Syntax, oder im übergeben des Dictionaries.

                      Alternativ wäre ich schon froh das ganze einfach in HTML funktionieren zu sehen.
                      Code:
                      <div data-role="controlgroup" data-type="horizontal">
                          {% for key, value in gad_sourceslist.items %}
                              Key: {{key}} Value: {{value}} <br />
                          {% endfor %}
                      </div>
                      Das Problem ist meiner Meinung: Wie parse ich ein Python Dictionary in TWIG ...

                      Oder ich hab deine Antwort falsch verstanden :-)

                      Kommentar


                        #12
                        Ähmmm, nö.

                        Achtung: Weder Twig noch PHP hat eine Verbindung zu smarthome.py, lediglich Javascirpt durch den Websocket. Und da gibts derzeit keine Möglichkeit auf die Config zuzugreifen und Einstellungen zu lesen.

                        Machs doch erstmal "statisch" rein, dann kann man immer noch mal sehen...

                        Gruss
                        Join smartVISU on facebook. Web: smartvisu.de.
                        Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                        Kommentar


                          #13
                          Zitat von Apollo Beitrag anzeigen
                          Achtung: Weder Twig noch PHP hat eine Verbindung zu smarthome.py, lediglich Javascirpt durch den Websocket. Und da gibts derzeit keine Möglichkeit auf die Config zuzugreifen und Einstellungen zu lesen.
                          Ok, das leuchtet mir ein, aber wenn ich als items folgendes habe (gekürzt):
                          Code:
                          [EG]
                          [[Stube]]
                          [[[Denon]]]
                              type = dict
                              value = {'TV': 'TV', 'DVD': 'BD', 'GAME': 'WII'}
                              [[[[Power]]]]
                                  type = bool
                                  denon_send = power
                          Und beides von meiner html aus wie folgt an ein Widget übergebe:
                          Code:
                          {{ widget.avr('denon1', 'EG.Stube.Denon.Power', 'EG.Stube.Denon') }}
                          Und die Widget folgendermassen definiert ist:
                          Code:
                          {% macro avr(id, gad_power, gad_sourceslist) %}
                          Dann kann ich ja ohne JS und sonstwas im Widget auf gad_power zugreifen. Warum nicht auf gad_sourceslist was ein dict ist ?

                          Sorry wenn ich mit der Fragerei nerve. Ich werd es auch jetzt mal statich machen, aber ich bin von Natur aus neugierig :-) Ausserdem muss der User es nachher selbst setzen können.

                          Kommentar


                            #14
                            So gesehen würde der Wert "{'TV': 'TV', 'DVD': 'BD', 'GAME': 'WII'}" schon angeliefert werden, dann müsste jedoch die Zerlegung in Javascirpt passieren (nicht in Twig).

                            Gruss
                            Join smartVISU on facebook. Web: smartvisu.de.
                            Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

                            Kommentar


                              #15
                              Zitat von Apollo Beitrag anzeigen
                              So gesehen würde der Wert "{'TV': 'TV', 'DVD': 'BD', 'GAME': 'WII'}" schon angeliefert werden, dann müsste jedoch die Zerlegung in Javascirpt passieren (nicht in Twig).

                              Gruss
                              Aaaaah ok ... Jetzt kommen wir der Sache schon näher. Das heisst TWIG kann kein Python dict zerlegen, das ist das Problem ... Dann weiss ich wo ich nach der Lösung suchen muss ...

                              Danke dir !

                              Serge

                              Kommentar

                              Lädt...
                              X