Ankündigung

Einklappen
Keine Ankündigung bisher.

sh.py Autogeneration - Zeilenumbruch im Code

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

    sh.py Autogeneration - Zeilenumbruch im Code

    Ich benutze mit sh.py die Autogeneration. Bei einigen Widgets werden die Zeilen in der item.conf sehr lang. Ich habe diese daher mit "\" im Editor umgebrochen. sh.py kommt damit auch wunderbar klar, aber die Autogeneration übernimmt die "\" 1:1 in den HTML-Code und Twig steigt dann aus.

    Gibt es da eine elegante Möglichkeit meine item.conf trotz Autogeneration lesbar zu halten?

    #2
    das folgende solle gehen:

    Code:
    sv_widget = ( "{{ basic.switch('item',...) }}",
                        "{{ basic.switch('item',...) }}",
                         "{{ basic.switch('item',...) }}")
    habe ich aber nicht getestet, aber soweit ich den Code noch im Kopf habe wird der Code anhand der Kommas zusammen gesplittet.

    Gruß

    Kommentar


      #3
      Nee, tut's leider nicht - gibt einen Twig-Fehler "Unclosed "variable". Ich will/muss das innerhalb einer Widget-Definition machen (device.rtr), nicht innerhalb einer Gruppe von Widgets. Also in deinem Beispiel innerhalb der geschweiften Klammern für eine Widget-Definition.

      Kommentar


        #4
        Im Widget gehts glaub nicht. Habe eben mal nach "twig line break" gegoogelt und nichts sinnvolles gefunden. So denke ich das es nicht geht.

        Andere Frage ist wieso es so viel Text wird? Kannst mal ein langes Beispiel posten, vielleicht gibt es ja andere sinnvolle möglichkeiten das zu verkürzen.

        Also wenn möglich ein ganzes Item damit man den Zusammenhang sieht.

        edit: ok habe noch das hier hefunden: http://stackoverflow.com/questions/5...tion-in-python

        demnach könnte es so noch gehen:

        Code:
        sv_widget = ( "{{ basic.[URL="http://redaktion.knx-user-forum.de/lexikon/switch/"]switch[/URL]('item',...) }}" +
                           "{{ basic.[URL="http://redaktion.knx-user-forum.de/lexikon/switch/"]switch[/URL]('item',...) }}" +
                           "{{ basic.[URL="http://redaktion.knx-user-forum.de/lexikon/switch/"]switch[/URL]('item',...) }}")
        Gruß

        Kommentar


          #5
          ok, ich habe mir mal den Code betrachtet und die Config der Items wird in der Datei lib/config.py verarbeitet.

          Dabei werden die Atrribute eines Items über folgenden Code ermittelt:

          Code:
                      else:  # attribute
                          attr, __, value = line.partition('=')
          Da hier nur die eine Zeile eingelesen wird, ist es wohl nicht möglich einen Line-Break zu verwenden.

          Das müsste wohl jemand den Code erweitern, damit es funktioniert.

          Kommentar


            #6
            Bitteschön...

            Code:
            [[[heizung]]]
            		name = "Heizung"
            #		sv_widget = {{ device.rtr('item', 'item', 'eg.hwr.heizung.ist', 'eg.hwr.heizung.soll', 'eg.hwr.heizung.betriebsart', 'eg.hwr.heizung.betriebsart', 'eg.hwr.heizung.betriebsart', 'eg.hwr.heizung.status') }}
            		sv_widget = {{ device.rtr('item', 'item', 'eg.hwr.heizung.ist', 'eg.hwr.heizung.soll', 'eg.hwr.heizung.komfort', 'eg.hwr.heizung.nacht', 'eg.hwr.heizung.frost', 'eg.hwr.heizung.status') }}
            	 [[[[ist]]]]
                            type=num
                            knx_dpt=9
                            knx_cache=2/0/4
                        [[[[soll]]]]
                            type=num
                            visu_acl = rw
                            knx_dpt=9
                            knx_send = 2/1/4
                            knx_cache = 2/1/19
                        [[[[stellwert]]]]
                            type=num
                            knx_dpt=5001
                            knx_init=2/4/34
                        [[[[status]]]]					# 1 wenn Stellwert > 0, sonst 0
                            type = bool
                            eval = True if sh.eg.hwr.heizung.stellwert() > 0 else False
                            eval_trigger = eg.hwr.heizung.stellwert
            			[[[[komfort]]]]					# 1 wenn Komfortbetrieb
            				type = bool
            				visu_acl = rw
            			[[[[nacht]]]]					# 1 wenn Nachtbetrieb
            				type = bool
             				visu_acl = rw
             			[[[[frost]]]]					# 1 wenn Frostschutzbetrieb 
            				type = bool
            				visu_acl = rw
            			[[[[hvac]]]]
            				type = num
            				knx_dpt = 20
            				knx_cache = 2/4/4
            			[[[[betriebsart]]]]
            				type = num
            				visu_acl = rw
            				knx_dpt = 20
            				knx_send = 2/3/4
            P.S.: Keine Ahnung, was beim Kopieren mit den Tabs passiert ist... die sind im Original richtig ;-)

            Kommentar


              #7
              Ok, hier ein Tipp um das ganze etwas zu kürzen:

              Aus

              Code:
              sv_widget = {{ device.rtr('item', 'item', 'eg.hwr.heizung.ist', 'eg.hwr.heizung.soll', 'eg.hwr.heizung.komfort', 'eg.hwr.heizung.nacht', 'eg.hwr.heizung.frost', 'eg.hwr.heizung.status') }}
              kannst du das machen:

              Code:
              sv_widget = {{ device.rtr('item', 'item', 'item.ist',  'item.soll', 'item.komfort', 'item.nacht',  'item.frost', 'item.status') }}
              Bei Bildern die immer wieder verwendet werden könnte man sich ein paar Konstanten bauen wie hier:

              https://knx-user-forum.de/smartvisu/...portieren.html

              Hoffe das hilt dir weiter.

              Gruß

              Kommentar


                #8
                Das hilft auf jeden Fall beim copy & paste wenn der Prototyp für den RTR endlich mal das macht, was ich will ;-)

                Danke schon mal!

                Ich hab' auch noch mal gesucht, aber Twig scheint innerhalb der { } keinen Zeilenumbruch zu akzeptieren. Die mir bekannten "Steuerzeichen" dafür aus anderen Programmiersprachen (einfacher CR, "\", "\\") werfen Twig-Fehlermeldungen.

                Kommentar


                  #9
                  Zitat von DiMa Beitrag anzeigen
                  Ich hab' auch noch mal gesucht, aber Twig scheint innerhalb der { } keinen Zeilenumbruch zu akzeptieren. Die mir bekannten "Steuerzeichen" dafür aus anderen Programmiersprachen (einfacher CR, "\", "\\") werfen Twig-Fehlermeldungen.
                  Das Hauptproblem ist hier sh.py, das in der item.conf kein Zeilenumbruch akzeptiert... also selbst wenn twig das könnte würde es nicht gehen.

                  Aber Twig muss es ja auch nicht können, denn wenn sh.py den Text zerteilt einliest und dann wieder zusammen setzt dann würde ja wieder alles passen.

                  Also wie das
                  Code:
                  var = ("text" + 
                          "Text" +
                           "text")
                  Am Ende würde var textTexttext erhalten. So ist es egal wo man es auftrennt.

                  Vielleicht kann Marcus da mal was bauen.

                  Gruß

                  Kommentar

                  Lädt...
                  X