Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfängerfrage

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

    Anfängerfrage

    Hallo,

    wie es scheint, stehe ich gerade völlig auf dem Schlauch.

    Ich möchte gern den Wert eines Items im HTML weiterverwenden, ohne das Item selbst darzustellen. Folgendes funktioniert:

    Code:
     /** Lueftungsstufe ausgeben (Wert zwischen 1...8) **/
     {{ basic.value('helios_lueftungsstufe', '[COLOR=red]ventilation.fanspeed[/COLOR]') }}
     
     /** Icon 1-8 ausgeben **/
     <img class="icon" src="{{ icon0 }}edit_numeric_[COLOR=red]1[/COLOR].svg" />
     <img class="icon" src="{{ icon0 }}edit_numeric_[COLOR=red]2[/COLOR].svg" />
     [...]
     <img class="icon" src="{{ icon0 }}edit_numeric_[COLOR=red]8[/COLOR].svg" />
    Jetzt dachte ich in meinem spätjugendlichen Leichtsinn, folgende Kombination von beiden Beispielen könnte funktionieren (Ziel ist Anzeige eines Icons für die aktuelle Stufe 1...8):

    Code:
    <img class="icon" src="{{ icon0 }}edit_numeric_[COLOR=red]{{ ventilation.fanspeed }}[/COLOR].svg" />
    Klappt aber leider nicht - habe in den letzten 2 Stunden die verschiedensten Varianten ausprobiert, samt Einbettung von basic.value oder basic.text an dieser Stelle - alles ohne Erfolg.

    Wie kann ich dort den Wert einsetzen? Vielen Dank für Tips im Voraus!

    /tom

    #2
    Hi Tom,
    um den Wert zu bekommen, meine ich dass du das Item als Funktion aufrufen musst. D.h. anstatt ventilation.fanspeed mit Klammern dahinter ventilation.fanspeed().

    Gruß
    René

    Kommentar


      #3
      Hallo René,

      danke für den Tip. Leider bringt () keine Veränderung, es wird nach wie vor kein Wert zurückgeliefert.

      Der Aufruf von
      <img class="icon" src="{{ icon0 }}edit_numeric_{{ ventilation.fanspeed() }}.svg" />

      liefert nach wie vor
      http://192.168.178.42:81/smartVISU/icons/ws/edit_numeric_.svg

      Richtig wäreaber (KWL läuft derzeit auf Stufe 4)
      http://192.168.178.42:81/smartVISU/icons/ws/edit_numeric_4.svg

      Hat noch jemand eine Idee?

      /tom

      Kommentar


        #4
        Hallo Tom,

        ja, du machst da einen schweren Denkfehler.
        Du gehst davon aus, dass du direkt auf die Werte von Smarthome.py zugreifen kannst...dem ist leider nicht so, da gibts noch was "dazwischen".

        Falls es interessiert, versuche ich es zu erklären:
        Prinzipiell basiert die Smartvisu auf einer Template-Engine - diese dient erstmal dazu die Webseiten selbst zu definieren bzw. zu generieren. Die Webseiten sind von hause aus erstmal ziemlich blöd und auch ziemlich "statisch". Konkret heisst das, dass dein Codebeispiel dir erstmal HTML-Markup erzeugt und die konkreten Werte deines Backend (Smarthome.py) relativ egal sind.
        "Leben" kommt in die Seiten erst via Javascript und die Backends, in deinem Fall wahrscheinlich Smarthome.py via WebSockets-Anbindung. Via Javascript werden Eventhandler für die HTML-Elemente registriert und - beim Empfang von Daten - ausgeführt. Das ist dann auch die Stelle (in der Regel die "update" Events) wo auf konkrete Werte (Lüfterstufe 1-8) reagiert werden muss.

        Um dein Problem zu lösen und nichts neu zu erfinden, wäre es wahrscheinlich am einfachsten acht basic.symbol Elemente zu verwenden, mit den Werten 1 - 8. Beispiele siehe hier smartVISU Documentation v2.7.

        Sollte so oder ähnlich dann aussehen:
        Code:
        {{ basic.symbol('s1', 'ventilation.fanspeed', 'Stufe 1', icon1~'edit_numeric_1.svg', 1) }}
        {{ basic.symbol('s2', 'ventilation.fanspeed', 'Stufe 2', icon1~'edit_numeric_2.svg', 2) }}
        {{ basic.symbol('s3', 'ventilation.fanspeed', 'Stufe 3', icon1~'edit_numeric_3.svg', 3) }}
        ...
        /Marcel

        Kommentar


          #5
          Super Marcel, ganz ganz vielen Dank für die Erläuterungen - jetzt läufts!

          Nicht sonderlich elegant ohne JS, aber funktioniert. Ich hatte gehofft, mich noch ein wenig um Python und Javascript drücken zu können und mit dem "dummen" HTML auszukommen - aber wird wohl langsam Zeit, sich damit zu beschäftigen.

          Hab noch schnell einen Link samt Popup auf das Icon gelegt, und schon kann man die KWL gemütlich regeln.

          Wieder ein kleiner Schritt beim "Aufräumen" der Oberfläche für das zukünftige Widget, als nächstes sind dann die Buttons dran ...

          Danke nochmal,
          /tom
          Angehängte Dateien

          Kommentar

          Lädt...
          X