Ankündigung

Einklappen
Keine Ankündigung bisher.

Support Thread für das smartvisu Plugin

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

    #31
    Ich nutze aktuell keine Seitengenerierung seitens des Plugins. Für die Masteritem Liste hatte ich bisher die Logik genutzt die auch in der SmartVISU Widget Dokumentation zu finden ist. Das die Liste auch vom Plugin erzeugt wird, hatte ich irgendwie noch nicht mitbekommen. Dann ist klar warum das Plugin Schreibzugriff haben will :-)

    Kommentar


      #32
      Ich kann ja durchaus das smartviru-Plugin nutzen, damit habe ich kein Problem. Aber es sollte eine Möglichkeit geben, es _nur_ für die default_acl-Einstellung zu nutzen, wenn ich die nirgendwo anders bekommen kann. Und alle anderen Funktionen brauche ich nicht.

      Wenn ich drei Funktionen in einem Plugin bündele, wäre es aus meiner Sicht sinnvoll, die auch "einzeln" nutzen zu können.

      Ich sage ja nichts gegen das Plugin, nur ist auch das Masteritemfile keine gottgegebene Notwendigkeit. Meine SV ist "fertig" und ich möchte sie nicht anders, als sie ist. Insofern benötige ich weder den SV-Seitengenerator noch ein Masteritemfile. Daher erschließt sich mir nicht, wieso man die Funktionalität, die zu einem Fehler führt, nicht abschalten kann.

      @wvhn: wenn man die Funktionalität wenigstens abschalten _könnte_, wäre es ja gut. Aber es geht nicht, darum gibt es beim Start immer einen Fehler, dass er den Pfad oder die SV nicht gefunden hat...

      (und ja, natürlich könnte ich das einfach rein- bzw. rausprogrammieren. Aber ich weiß nicht, ob sich jemand ggf. noch mehr dabei gedacht hat )

      Kommentar


        #33
        Zitat von Morg Beitrag anzeigen
        Im Prinzip bräuchte ich auch das Plugin nicht, wenn die visu_acl-Option anderweitig belegt werden kann.
        Doch, weil sonst das smartVISU Nutzdatenprotokoll im Websocket Modul nicht akzeptiert wird. Das Websocket Modul ist ja für die allgemeine Websocket Kommunikation gedacht und wird in Zukunft für weitere Nutzdaten Protokolle genutzt werden.

        Da das smartVISU Nutzdatenprotokoll einen Zugriff ohne Authentifizierung zulässt, wird es nur aktiviert, wenn es auch benötigt wird. Das tut das smartVISU Plugin.

        Zitat von Morg Beitrag anzeigen
        Aber es sollte eine Möglichkeit geben, es _nur_ für die default_acl-Einstellung zu nutzen, wenn ich die nirgendwo anders bekommen kann.
        Ich baue bei Gelegenheit einen Parameter ein, der die Erstellung des masteritem Files abschaltbar macht.
        Viele Grüße
        Martin

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

        Kommentar


          #34
          wvhn Du solltest den Widget Assistant noch anpassen, damit er darauf hinweist, dass die Logik nur bei Verwendung des alten visu_smartvisu Plugins benötigt wird, da das neue smartvisu Plugin die Funktionalität mitbringt.
          Viele Grüße
          Martin

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

          Kommentar


            #35
            Im develop ist jetzt die Version 1.8.3 des smartvisu Plugins. Dort gibt es den zusätzlichen Parameter create_masteritem_file. Wenn der Parameter auf False gesetzt wird, erfolgt keine Erzeugung der masteritem.json Datei.

            Die Einstellung der Parameter wird jetzt auch im Webinterface angezeigt.
            Viele Grüße
            Martin

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

            Kommentar


              #36
              Zitat von Msinn Beitrag anzeigen
              wvhn Du solltest den Widget Assistant noch anpassen, damit er darauf hinweist, dass die Logik nur bei Verwendung des alten visu_smartvisu Plugins benötigt wird, da das neue smartvisu Plugin die Funktionalität mitbringt.
              Das mache ich. Zudem habe ich meine Falschaussage zum Websocket oben korrigiert.

              Gruß
              Wolfram

              Kommentar


                #37
                Also macht es doch Sinn ohne masteritem Datei leben zu wollen?! Wenn man sich ja Statische Seiten erstellt hat!?

                Aber andersherum: Macht es Sinn das Plugin überhaupt zu verwenden? Wenn ich ja nur die Websocket Funktion benötige?

                Wahrscheinlich nur um den default_acl Gobal und die visu_acl pro Item zu setzten (ist ja ein muss dann??) oder übernimmt das Plugin auf der websocket Seite noch andere Funktionen?

                Kommentar


                  #38
                  Zitat von TCr82 Beitrag anzeigen
                  Also macht es doch Sinn ohne masteritem Datei leben zu wollen?!
                  Aber nur, wenn man die statischen Seiten bereits fertig hat. Der Widget Assistent der smartVISU dient ja gerade zum erstellen von statischen Seiten.


                  Zitat von TCr82 Beitrag anzeigen
                  Aber andersherum: Macht es Sinn das Plugin überhaupt zu verwenden? Wenn ich ja nur die Websocket Funktion benötige?
                  Ja, wie ich oben schrieb, ist das smartVISU Nutzdaten Protokoll sonst nicht aktiv und die Visu funktioniert dann natürlich nicht.
                  Viele Grüße
                  Martin

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

                  Kommentar


                    #39
                    Fast habe ich es geschafft, die gesamte VISU zu generieren.
                    ein paar Dinge sind mir noch aufgefallen, die ich gerne angepasst hätte:
                    1. das erste ist einfach
                      man kann im Plugin einstellen: visu_style: black.
                      wenn man im menu.html in die erste Zeile: data-dividertheme="a" einsetzt erscheinen die divider auch in black
                    2. Block-Größe
                      gäbe es noch eine Möglichkeit bei einzelnen Blöcken ( z.B. Blöcke mit plots ) : <div class="block" style="width:100%" > zu generieren.
                      dies müsste aber dann eine Block-Option sein, die man in den item Definitionen festlegt.
                    3. name
                      ich habe das Gefühl, dass bei bestimmtem Bedingungen in den items "name" nicht aufgelöst wird (in den widgets):
                      item.name funktioniert, aber item.Deckenlicht.name nicht.
                      hierzu könnte ich noch weiter testen und ein reproduzierbares Beispiel liefern.

                    Kommentar


                      #40
                      Zitat von whe Beitrag anzeigen
                      [*]name
                      ich habe das Gefühl, dass bei bestimmtem Bedingungen in den items "name" nicht aufgelöst wird (in den widgets):
                      item.name funktioniert, aber item.Deckenlicht.name nicht.
                      hierzu könnte ich noch weiter testen und ein reproduzierbares Beispiel liefern.[/LIST]
                      Das ist mir heute auch aufgefallen.
                      item.name geht bei mir auch nur in diesem Fall.
                      Bei anderen relativen Verweise wird nur das Item selbst aufgelöst und dann name
                      angehängt.

                      Im Beispiel wird jeweils im Widget zweimal das selbe Item referenziert:
                      Code:
                      Haus:     OG:
                                Bad:
                                    Licht:
                                        name: Beleuchtung
                                        remark: Alle Lichter
                                        # Visu
                                        sv_widget: "{{ basic.stateswitch('', '.Decke.schalten', 'icon', [0,1], ['light_light_dim_00.svg', 'light_light_dim_100.svg'], '.Decke.name') }} "
                         
                                        Decke:
                                            name: Beleuchtung an der Decke
                                            remark: Beleuchtung an der Decke
                         
                                            struct: struct_Schalten
                                            schalten:
                                                name: Schalten
                                                knx_send: 1/2/5
                                                knx_cache: 1/2/15
                                                sv_widget: "{{ basic.stateswitch('', 'item', 'icon', [0,1], ['light_light_dim_00.svg', 'light_light_dim_100.svg'], 'item.name') }} "
                      In der Visu kommt dann:

                      Code:
                      ​​​​​​​<div data-role="collapsible" data-collapsed="false">
                                                <h3>Beleuchtung</h3>
                                                {{ basic.stateswitch('', 'Haus.OG.Bad.Licht.Decke.schalten', 'icon', [0,1], ['light_light_dim_00.svg', 'light_light_dim_100.svg'], 'Haus.OG.Bad.Licht.Decke.name') }}
                                        </div>
                      Code:
                      ​​​​​​​<div data-role="collapsible" data-collapsed="false">
                                                <h3>Schalten</h3>
                                                {{ basic.stateswitch('', 'Haus.OG.Bad.Licht.Decke.schalten', 'icon', [0,1], ['light_light_dim_00.svg', 'light_light_dim_100.svg'], 'Schalten') }}
                                        </div>

                      Kommentar


                        #41
                        Eben nochmal einen kurzen Blick in den Code geworfen, relevant dürfte für u.a. diese Zeile sein:

                        Code:
                                            widgets += self.parse_tpl(widgetblocktemplate, [('{{ visu_name }}', str(item)), ('{{ visu_img }}', img), ('{{ visu_widget }}', widget), ('item.name', str(item)), ("'item", "'" + item.property.path)])
                        Quelle: https://github.com/smarthomeNG/plugi...erator.py#L196

                        Beziehungsweise die darin aufgerufene Funktion:
                        https://github.com/smarthomeNG/plugi...erator.py#L388


                        Kommentar


                          #42
                          Die Zeile
                          Zitat von jzehnter Beitrag anzeigen
                          widgets += self.parse_tpl(widgetblocktemplate, [('{{ visu_name }}', str(item)), ('{{ visu_img }}', img), ('{{ visu_widget }}', widget), ('item.name', str(item)), ("'item", "'" + item.property.path)])
                          ist eine Sonderbehandlung für die Pseudovariable item, die schon aus dem alten smarthome.py stammt. Es wird hier nur der Name des aktuellen Items eingesetzt. Das funktioniert nur für den Namen und nicht für andere Properties des Items. Der Syntax ist auch nicht sauber durchgängig, da an anderen Stellen Attribute vom Item Namen mit einem Doppelpunkt getrennt werden.

                          Bei der Verwendung von Item Pfaden (es müssen gar nicht relative Item Referenzen sein), gibt es diesen zu ersetzenden konstanten String item.name jedoch nicht.

                          Das Problem ist:
                          Dort steht ein beliebiger anderer String und das Plugin kann nicht entscheiden, ob der String selbst an das Widget übergeben werden soll, oder ob der String zuerst aufgelöst und dann an das Widget übergeben werden soll.

                          Um dem Plugin mitzuteilen, ob der String selbst, oder der aufgelöste String übergeben werden soll, müsste man eine Kennzeichnung einführen, an der die Entscheidung festgemacht werden kann. Evtl. könnte die oben erwähnte Trennung mit einem Doppelpunkt diese Kennzeichnung sein. Dabei wäre es auch sinnvoll, nicht nur auf den Namen, sondern auch auf andere Attribute zugreifen zu können.
                          Viele Grüße
                          Martin

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

                          Kommentar


                            #43
                            Danke für die Aufklärung.

                            Dann müsste man einen klaren "Trenner" zwischen dem Itempfad und dem Attribut festlegen.

                            Danach den aktuellen Hack für item.name ersetzen. Erst mögliche relative Referenzen - wie derzeit schon - auflösen und dann das definierte Attribut des vom (aufgelösten) Item abfragen.
                            Zuletzt geändert von jzehnter; 31.03.2022, 22:30. Grund: Tippfehler

                            Kommentar


                              #44
                              Hallo,
                              wie in Gitter bereits kurz gechattet hier zwei Probleme, die ich mit der neuesten Version 1.9.2 habe:
                              1. Fehlermeldung im Log:
                              https://pastebin.com/x3RheP9M
                              Code:
                              ERROR    plugins.smartvisu   SmartVisuGenerator: Exception: 'img_set'
                              > Traceback (most recent call last):
                              >   File "/smarthomeng/plugins/smartvisu/__init__.py", line 135, in run
                              >     svgen = SmartVisuGenerator(self, self.visu_definition)
                              >   File "/smarthomeng/plugins/smartvisu/svgenerator.py", line 70, in __init__
                              >     self.pages()
                              >   File "/smarthomeng/plugins/smartvisu/svgenerator.py", line 263, in pages
                              >     menu_entry = self.create_menuentry(menu=menu, entry_name=str(item), item_path=item.property.path, separator=separator,
                              >   File "/smarthomeng/plugins/smartvisu/svgenerator.py", line 287, in create_menuentry
                              >     if menu_entry.get('img', '') == ''and menu_entry['img_set'] == False:
                              > KeyError: 'img_set'
                              Erster Fix: /smarthomeng/plugins/smartvisu/svgenerator.py editieren und Zeile 287
                              Code:
                              if menu_entry.get('img', '') == '' and menu_entry['img_set'] == False:
                              ersetzen durch
                              Code:
                              if menu_entry.get('img', '') == '' and menu_entry.get('img_set', False) == False:
                              Siehe https://gitter.im/smarthomeNG/smarth...27f62be33c2ad6

                              2. Seperator mit einem Raum
                              Nachdem ein Seperator kommt, wird der Menüpunkt für den kommenden Raum nicht generiert. Wenn mehrere Räume kommen, gibt es kein Problem.
                              Wäre gut, wenn mir jemand helfen könnte, das Problem ausfindig zu machen.

                              Beispiel Item:
                              Code:
                              Raum:
                                  Treppenhaus:
                                      Seperator:
                                          name: Treppenhaus
                                          sv_page: seperator
                                      Treppenhaus:
                                          name: Treppenhaus
                                          sv_page: room
                                          sv_img: scene_stairs.svg
                                          
                                          Beleuchtung:
                                              name: Beleuchtung
                                              sv_widget: "{{ basic.flip('Treppenhaus.Beleuchtung', 'Raum.Treppenhaus.Treppenhaus.Beleuchtung','Ein','Aus') }}"
                                              type: bool
                                              knx_dpt: 1
                              Auswirkung siehe Bilder im Anhang.
                              You do not have permission to view this gallery.
                              This gallery has 2 photos.
                              Zuletzt geändert von estorado; 08.07.2022, 22:26. Grund: pastebin Link eingefügt

                              Kommentar


                                #45
                                Ich habe bei mir mal zwischen Bad und Schlafen einen Seperator eingefügt. Das sieht aus wie erwartet.

                                Capto_Capture 2022-07-09_10-50-04_AM.jpg

                                Das einzige was mir auffällt ist, dass Du dem Seperator den selben Namen gegeben hast wie dem Raum. Ändere mal einen der Namen.
                                Viele Grüße
                                Martin

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

                                Kommentar

                                Lädt...
                                X