Ankündigung

Einklappen
Keine Ankündigung bisher.

items aus SHNG mit twig-engine abfragen

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

    items aus SHNG mit twig-engine abfragen

    Hi Leute,

    wahrscheinlich ist die Antwort total einfach, aber ich komm nicht drauf.
    Ich will mit smartVISU items aus SmarthomeNG abgreifen und dann mittels if-Statements abfragen.
    Hier mein Beispiel:
    HTML-Code:
                {% if Feiertage.heute.Text != '' %}
                            Heute ist: {{ basic.value('feiertag', 'Feiertage.heute.Text') }}
                {% endif %}
    Leider bekomme ich den if-clause nicht zum Laufen, dieser wird mir immer angezeigt, egal was in dem SHNG-item steht...
    Wie funktioniert denn das Abfragen der items richtig?
    Vielen Dank vorab schon mal an die Profis!

    #2
    Das funktioniert wohl nicht so wie Du Dir das denkst. Die Twig Engine läuft auf dem Server zur Generierung der html Seiten (bevor sie an den Client ausgeliefert werden), die sind dann statisch. Die veränderlichen Werte werden hingegen vom Client zur Laufzeit per Websocket bei SmartHomeNG abgefragt.
    Viele Grüße
    Martin

    Stay away from negative people. They have a problem for every solution.

    Kommentar


      #3
      Wenn mir nun aber lediglich die Abfrage des items bei der Generierung des HTML ausreichen würde, dann könnte man es so trotzdem machen oder verstehe ich dich falsch?

      Kommentar


        #4
        Die Twig Engine hat keine Verbindung zu SmartHomeNG.
        Viele Grüße
        Martin

        Stay away from negative people. They have a problem for every solution.

        Kommentar


          #5
          Ah ok, also ist so eine Art Abfrage überhaupt nicht möglich?
          Schade eigentlich...

          Kommentar


            #6
            Hmm. Die Widgets haben ja schon Zugriff auf die items, wie z.B. basic.print. Damit müsste man das Feiertags-item auch ausgeben können.

            Kommentar


              #7
              Damit kannst Du dann anzeigen, ob an dem Tag an dem die Twig Engine die Seite gerendert hat ein Feiertag war. Hilft die Das z.B. Einen Monat später?
              Viele Grüße
              Martin

              Stay away from negative people. They have a problem for every solution.

              Kommentar


                #8
                Eigenes widget bauen, mit javascript die werte verarbeiten. Ist allerdings ne ganze ecke schwerer..

                Siehe bspw https://www.smarthomeng.de/beispiel-...-die-smartvisu

                Alternativ: das gesamte html, den gesamten text in shng in ein item packen

                Kommentar


                  #9
                  Helft mir mal, wo mein Denkfehler ist:

                  wir sind uns einig, dass eine feste Verdrahtung in den html-Seiten wegen des einmaligen Renderns wenig Sinn macht (es sei denn, man löscht per cron-job in gewünschten Abständen die entsprechende Seite im cache (?) )

                  Dennoch haben die html-Seiten durchaus dynamische Inhalte, die mit den items in shNG verändert werden (Status-Anzeigen, Farben ...). Die Werte kommen über den websocket und sind zumindest per widget ansprechbar.

                  Wenn es nur um die Ausgabe von items geht, steht ab V2.9 ein widget basic.print zur Verfügung, das sehr weitreichend Code im Parameter "formula" verarbeiten kann.
                  Code:
                  * @param {format=} either a unit of the language file, an individual format string (PHP sprintf like) or a simple string as suffix.
                  * Use 'text' to display result as unformatted string, 'html' to render it as unescaped html or 'script' to just execute as JavaScript w/o displaying anything.
                  * @ add {format(text,html,script)=}
                  * @param {formula=VAR} any valid JavaScript expression with following variables and aggregate functions (optional, default: VAR)
                  - VAR1, VAR2, ... represent the corresponding item's value, VAR is an array of all item values
                  - SUM(VAR), AVG(VAR), SUB(VAR), MIN(VAR) and MAX(VAR) aggregate the values
                  Zumindest Anzeige-Funktionen mit einfachen if-Bedingungen wie die Feiertagsaufgabe müssten doch damit locker zu lösen sein.

                  Gruß Wolfram
                  Zuletzt geändert von wvhn; 02.01.2020, 14:47.

                  Kommentar


                    #10
                    Aber wie bei allen Widgets wird auch bei basic.print der Wert zur Laufzeit der Seite abgefragt und nicht zu dem Zeitpunkt zu dem die twig Engine die If Abfrage beim generieren des html Codes auswertet.
                    Viele Grüße
                    Martin

                    Stay away from negative people. They have a problem for every solution.

                    Kommentar

                    Lädt...
                    X