Ankündigung

Einklappen
Keine Ankündigung bisher.

smartVISU-Plugin Frage zum Autogenerieren von smartVISU Seiten

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

    smartVISU-Plugin Frage zum Autogenerieren von smartVISU Seiten

    Hallo liebe Smarthome-Community,

    ich beschäftige mich aus gegebenen Anlass seit einigen Wochen intensiv mit dem Thema knx, Smarthome und smartVISU und möchte mich zunächst für das Engagement der Entwickler bedanken.
    Mit Hilfe der Komplettanleitung von SmartHomeNG habe ich erfolgreich eine Testumgebung unter Debian konfiguriert, die später auf einem Raspberry als ETS-Gateway sowie Visualisierungsserver zum Einsatz kommen soll. Ich habe selten ein Projekt, mit einer solch guten Anwenderdokumentation gesehen, dafür meinen Respekt.

    Ich bin gerade dabei, mir ein template-Item für einen Raum zu erarbeiten, bei dem auch die entsprechende Visu-Seite automatisch erstellt werden soll. Hierbei bräuchte ich etwas Hilfe / Denkanstoß für Anfänger.


    Mein Item sieht aktuell folgendermaßen aus:

    Code:
    OG:
    Wohnzimmer:
        name: Wohnzimmer
        sv_page: room
        sv_img: scene_livingroom.svg
        sv_nav_aside: "{{ basic.float('item', 'OG.Wohnzimmer.Heizung.ist', '°') }}"
            Beleuchtung:
                Decke:
                   schalten:
                   name: Deckenlicht schalten
                   type: bool
                   visu_acl: rw
                   sv_widget: "{{ basic.switch('item', 'item') }}"
                   dimmen:
                   name: Deckenlicht dimmen
                   type: bool
                   visu_acl: rw
                   sv_widget: " {{ device.dimmer('item', 'item.name', 'item', 'item.level') }}"
                       level:
                       type: num
                       visu_acl: rw
               Wand:
                   schalten:
                   name: Wandlicht schalten
                   type: bool
                   visu_acl: rw
                   sv_widget: "{{ basic.switch('item', 'item') }}"
         Steckdosen:
               TV:
                   name: Steckdose TV
                   type: bool
                   visu_acl: rw
                   sv_widget: "{{ basic.switch('item', 'item') }}"
    
              Fenster:
                   name: Steckdose Fenster
                   type: bool
                   visu_acl: rw
                   sv_widget: "{{ basic.switch('item', 'item') }}"

    Das Plugin generiert nun logischerweise für jedes Element einen eigenen Block. Ich möchte allerdings erreichen, dass einige Elemente gruppiert in einem Block dargestellt werden.

    Erfolg hatte ich mit diesem Beispiel:
    Code:
    Beleuchtung:
        name: Beleuchtung
        sv_widget: "{{ basic.switch('OG.Wohnzimmer.Beleuchtung.Decke.schalten', 'OG.Wohnzimmer.Beleuchtung.Decke.schalten', ) }} Decke
        <br> {{ basic.switch('OG.Wohnzimmer.Beleuchtung.Wand.schalten', 'OG.Wohnzimmer.Beleuchtung.Wand.schalten') }} Wand "

    Bei dieser Variante geht mir allerdings die Möglichkeit verloren das Item per 'item' zu adressieren, was natürlich unvorteilhaft ist.
    Außerdem sind die Elemente dann untereinander zentriert angeordnet, wodurch die Schaltsymbole nicht mehr sauber untereinander stehen.


    Erreichen würde ich gerne, dass in einem Block, linksbündig die beiden Lichtkreise und rechtsbündig die beiden Steckdosen angezeigt werden.
    Ist dies über die Autogenerierung zu erreichen, wenn ja, wie? Oder nur möglich indem die HTML-Datei entsprechend manuell editiert wird?
    Leider bin ich hier aus den Beispielen der Komplettanleitung oder der Readme nicht schlauer geworden.
    In der smartVISU sind zwar auch sehr gute Beispielseiten dabei, allerdings gibt es davon nur den HTML Code, nicht das Item woraus die HTML-Datei evtl. erzeugt wurde.


    Ich hoffe meine Frage ist richtigen Unterforum, und ich bedanke mich im Voraus für eure Mühe.

    Liebe Grüße
    Alex

    #2
    Ein Beispiel findest Du z.B. hier in der Doku: http://www.smarthomeng.de/user/visua...kgroessen.html
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Außerdem gibt es Antwort in diesem Thread hier im Forum: Mehrere Smartvisu Widgets in einem Block
      Viele Grüße
      Martin

      There is no cloud. It's only someone else's computer.

      Kommentar


        #4
        Wow, danke für die schnelle Antwort.

        nach dem von dir genannten Beispiel habe ich ja mein:

        Code:
         [LEFT][COLOR=#111111][FONT=Courier]Beleuchtung:
        name: Beleuchtung
        sv_widget: "{{ basic.switch('OG.Wohnzimmer.Beleuchtung.Decke.scha lten', 'OG.Wohnzimmer.Beleuchtung.Decke.schalten', ) }} Decke <br> {{ basic.switch('OG.Wohnzimmer.Beleuchtung.Wand.schal ten', 'OG.Wohnzimmer.Beleuchtung.Wand.schalten') }} Wand "[/FONT][/COLOR][/LEFT]
        erstellt.
        Was auch funktioniert. Nur muss ich in diesem Fall immer den kompletten Item Pfad mit 'OG.Wohnzimmer.Beleuchtung.Decke.schalten' angeben und kann nicht die Referenz 'item' verwenden, woraus das Plugin im HTML-Code dann automatisch 'OG.Wohnzimmer.Beleuchtung.Decke.schalten' macht.

        Hier der entsprechende Auszug aus der readme:
        But instead of giving the widget distinct options you could use item as a keyword.

        The page generator will replace it with the current path. This way you could easily copy widget calls and don’t type the item path every time.


        Des weiteren werden bei diesen Beispiel die Elemente dann untereinander dargestellt, ich möchte z.B. zwei Schaltelemente links und zwei Schaltelemente rechts.

        Kommentar


          #5
          Zitat von Msinn Beitrag anzeigen
          Außerdem gibt es Antwort in diesem Thread hier im Forum: Mehrere Smartvisu Widgets in einem Block
          Danke für den Hinweis, das brachte mich auf folgende Idee mit der ich sehr gut leben kann:

          Code:
          OG:
              Wohnzimmer:
                 name: Wohnzimmer
                 sv_page: room
                 sv_img: scene_livingroom.svg
                 sv_nav_aside: "{{ basic.float('item.Heizung', 'item.Heizung', '°') }}"
                 sv_nav_aside2: "{{ basic.symbol('item.Fenster', 'item.Fenster', 'Fenster ist offen', 'fts_window_2w_open.svg', 1) }}"
                 Schaltkreise:
                    name: Schaltkreise
                    sv_widget: "<table width=100%>
                    <tr>
                    <td align=left>
                    {{ basic.switch('item.Bel_Decke', 'item.Bel_Decke', 'light_ceiling_light.svg', 'light_ceiling_light.svg') }} Beleuchtung Decke <br>
                    {{ basic.switch('item.Bel_Wand', 'item.Bel_Wand', 'light_wall_1.svg', 'light_wall_1.svg') }} Beleuchtung Wand
                    </td>
                    <td align=left>
                    {{ basic.switch('item.Steckdose', 'item.Steckdose', 'message_socket_on_off.svg' , 'message_socket_on_off.svg') }} Steckdose TV <br>
                    {{ basic.switch('item.SteckdoseFenster', 'item.SteckdoseFenster', 'message_socket_on_off.svg' , 'message_socket_on_off.svg') }} Steckdose Fenster
                    </td>
                    </tr>
                    </table> "
                        Bel_Decke:
                           type: bool
                           visu_acl: rw
                        Bel_Wand:
                           type: bool
                           visu_acl: rw
                        Steckdose:
                           type: bool
                           visu_acl: rw
                        SteckdoseFenster:
                           type: bool
                           visu_acl: rw
          und heraus kommt dabei:

          Anmerkung 2020-01-31 122230.png

          Kommentar


            #6
            basic.switch ist ab SmartVISU V2.9 veraltet. Ersatz ist basic.stateswitch mit interessanten neuen Features. Bis auf weiteres ist basic.switch noch verfügbar, besteht aber nur noch aus einem Aufruf von basic.stateswitch mit entsprechend weniger Parametern.

            Wenn Du eh gerade am Testen bist, würde ich empfehlen, SmartVISU2.9 zusätzlich zu installieren (parallel zum Verzeichnis smartvisu) und die Autogen-Funktion auch für V2.9 noch einmal auszuprobieren. Beobachtungen gerne im SmartVisu-Forum kommunizieren. Das hilft uns bei der Finalisierung des Releases.

            Gruß Wolfram

            Kommentar


              #7
              Ich habe meine Testumgebung schon auf V2.9 umgestellt, da die spätere Oberfläche auch darauf laufen soll. Hätte ich vielleicht beim Einstieg mit angeben sollen.

              Dann werde ich mir den basic.stateswitch Mal genauer ansehen, ist wesentlich mächtiger als der switch, daher hatte ich mit dem einfachen angefangen *g*


              Ich hänge gerade an einem weiteren Problem, vielleicht kann mir da jemand helfen.
              Ich nutze im Item die Funktion sv_heading_center um über den Blocks einige Buttons dazustellen. Diese möchte ich jetzt gerne noch als controlgroup definieren.

              Folgender Ansatz hatte ich versucht:

              Code:
              sv_heading_center: " <span data-role="controlgroup" data-type="horizontal"> Scenen <br>
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 1, 'midi') }}
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 2, 'midi') }}
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 3, 'midi') }}
              </span>"
              Führt zu einem Fehler in der yaml-Syntax, ich tippe darauf das der String wegen den " bei controlgroup vorzeitig endet.

              Als nächsten Ansatz habe ich versucht die heading.html in \pages\base\tpl folgendermaßen zu ändern:

              Code:
              <div class="preblock">
              <table width="100%">
              <tr>
              <td align="left">
              {{ visu_heading_left }}
              </td>
              <td align="center">
              <span data-role="controlgroup" data-type="horizontal">
              {{ visu_heading_center }}
              </span>
              </td>
              <td align="right">
              {{ visu_heading_right }}
              </td>
              </tr>
              </table>
              </div>
              hat leider keine Auswirkung auf die Generierung der Seite.


              Wenn ich im HTML <span data-role="controlgroup" data-type="horizontal"> & </span> manuell hinzufüge, werden die Buttons als Gruppe angezeigt

              Wo liegt mein Fehler?


              EDIT:

              Im unteren Bereich der Anleitung http://www.smarthomeng.de/user/konfi...en_aufbau.html
              findet sich ein Hinweis zur Yaml Syntax.
              In YAML Dateien können String-Values mehrzeilig sein. Der lesbarste Weg ist es, den String-Value mit einem ‘|’-Zeichen anfangen zu lassen und den eigentlichen Wert auf der Folgezeile zu beginnen. Der gesamte String muss/darf dann nicht in Single-Quotes (’) oder Double-Quotes („) eingeschlossen werden. Wenn innerhalb dieses Strings Double-Quotes verwendet werden sollen, so müssen diese

              escaped
              werden („).

              Führte mich zu folgendem Test:


              Code:
              sv_heading_center: |
              <span data-role="controlgroup" data-type="horizontal"> Scenen <br>
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 1, 'midi') }}
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 2, 'midi') }}
              {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 3, 'midi') }}
              </span>
              Was leider immernoch zum Syntax-Fehler führt.


              EDIT2:


              habs hinbekommen...

              Code:
              sv_heading_center: |
                  <div data-role="controlgroup" data-type="horizontal"> Scenen <br>
                  {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 1, 'midi') }}
                  {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 2, 'midi') }}
                  {{ basic.button('item', 'item.Scenen', '', 'jquery_power.svg', 3, 'midi') }}
              die Einrückung hat gefehlt.
              Zuletzt geändert von LoRdN0n4m3; 31.01.2020, 15:56.

              Kommentar

              Lädt...
              X