Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP in Raumseiten

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

    PHP in Raumseiten

    Hallo,
    eventuell könnte mir noch einmal jemand etwas Hilfestellung geben.
    Ich habe schon einiges probiert und gelesen aber bekomme es einfach nicht hin.

    Ich möchte gerne auf einer Raumseite anzeigen wie oft es in Abwesenheit an der Tür geklingelt hat.
    Das Ganze soll aber nur angezeigt werden, wenn es auch wirklich geklingelt hat.
    Dazu habe ich folgendes bei mir eingefügt:

    Code:
    {% if Setup.var.Klingelabwesend > 0 %}
       <li>Es hat in Abwesenheit  {{ basic.value('klingel', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt</li>
    {% endif %}
    Aber die if Abfrage funktioniert so nicht. Wie muss ich also in PHP das Item in der Abfrage darstellen?
    Oder muss ich das Item vorher einer Variable zuordnen? Und wenn ja, wie mache ich das?

    Grüße, Marc

    #2
    Auf die Werte deines Hauses aus dem Backend-Treiber hat nur der Browser zugriff. Der Webserver selbst nicht, dieser generiert eigentlich statische Seiten.
    Das heisst also, dass dies in JavaScript und nicht in Twig (und erst recht nicht in PHP) gelöst werden muss.

    Allerdings bietet die smartVISU auch Möglichkeiten, dies ohne Programmierung umzusetzen.
    Die einfachste dürfte status.collapse sein. Das müsste dann etwa folgendermassen aussehen:
    Code:
    {{ status.collapse('klingel_ausblenden', 'Setup.var.Klingelabwesend' }}
    <li class="hide" data-bind="klingel_ausblenden">Es hat in Abwesenheit {{ basic.value('klingel', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt</li>

    Kommentar


      #3
      Hallo smai, danke ersteinmal für die schnelle Antwort.
      Habe ich gerade mal getestet, funktioniert aber nicht. Ich denke weil der trigger zum collapse ein num ist. Es können halt auch mehr als einer klingeln an der Tür.
      Kann das sein?
      Und, wie funktioniert das dann z.B. in dem RTR Widget. Da hatte ich die PHP Idee eigentlich her.

      Grüße, Marc

      Kommentar


        #4
        Es müsste meines Wissens auch mit einem num funktionieren.
        Vielleicht stimmt die Doku nicht, das class="hide" erscheint mir etwas heikel. Versuchs mal ohne oder dann mit style="display:none"

        Im RTR wird das if auf Parameter angewendet, nicht auf Item-Werte.

        Kommentar


          #5
          Also gerade noch mal getestet, bei beiden Optionen wird die Zeile immer angezeigt.

          Hmmm.... Doch etwas Java oder so?

          Kommentar


            #6
            Ich habe das nun auch getestet und es funktioniert auch mit einer Zahl. Allerdings nicht mit SHNG, aber sollte meines Wissens keine Rolle spielen.
            Welche Version nutzt du, 2.8 oder develop (ich habe es mit beiden getestet)?
            Kannst du mal deinen genauen Code posten?

            Und Java ist trotz der Namensähnlichkeit was ganz anderes als JavaScript.

            Kommentar


              #7
              Hallo smai, vielen Dank für Deine Mühe...
              Hier der Code:

              Code:
              <div style="text-align: center; color: yellow;">
                  <p><span style="font-size: 72px; vertical-align: middle">Willkommen</span></p>
                  <p><span style="font-size: 72px; vertical-align: middle">Zuhause!</span></p>
              </div>
              <br>
              <table width="100%">
                  <tr>
                      <td width="15%"> </td>
                      <td width="80%">
                      <div style="text-align: left; color: white; font-size: 24px">
                          <li>Die Heizung wurde auf KOMFORT gestellt</li>
                          <li>Die Kameras wurden abgeschaltet</li>
                          <li>Das Haus hat den Status ANWESEND</li>
              
                          {{ status.collapse('klingel_ausblenden', 'Setup.var.Klingelabwesend') }}
                          <li class="hide" data-bind="klingel_ausblenden">Es hat in Abwesenheit {{ basic.value('klingel', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt</li>
              
                          /**<li>Es hat in Abwesenheit {{ basic.value('klingel', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt</li> */
                          {{ status.collapse('fehler_ausblenden', 'GLOBAL.ALARMMELDUNG.Alarm_aktiv') }}
                          <li class="hide" data-bind="fehler_ausblenden">Fehler in einem Aktor! <a id="menu-alarm" class="icon1" href="index.php?page=Alarmmeldungen"><img class="icon" src="{{ icon0 }}message_achtung.svg" /></a> </li>
                      </div></td>
                      <td width="5%"> </td>
                  </tr>
              </table>

              Kommentar


                #8
                Ok, ich habe den Grund gefunden:
                status.collapse hat nur mit <div>-Tags und nicht mit <li> funktioniert. Das ist nun geändert.

                Dein HTML-Code ist übrigens nicht korrekt, da ein <li> zwingend direkt innerhalb eines <ul> sein müsste.

                Kommentar


                  #9
                  Hmmmm. Ich habe es nun mit <div> Tags getestet:

                  Code:
                  <table width="100%">
                      <tr>
                          <td width="15%"> </td>
                          <td width="80%">
                          <div style="text-align: left; color: white; font-size: 24px">
                              <ul>
                                  <li>Die Heizung wurde auf KOMFORT gestellt</li>
                                  <li>Die Kameras wurden abgeschaltet</li>
                                  <li>Das Haus hat den Status ANWESEND</li>
                              </ul>
                              {{ status.collapse('klingelaus', 'Setup.var.Klingelabwesend') }}
                              <div class="hide" data-bind="klingelaus">
                                  Es hat in Abwesenheit {{ basic.value('klingel', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt
                              </div>
                              <div>Es hat in Abwesenheit {{ basic.value('klingeltest', 'Setup.var.Klingelabwesend') }} mal an der Tür geklingelt</div>
                              {{ status.collapse('fehler_ausblenden', 'GLOBAL.ALARMMELDUNG.Alarm_aktiv') }}
                              <div class="hide" data-bind="fehler_ausblenden">
                                  Fehler in einem Aktor! <a id="menu-alarm" class="icon1" href="index.php?page=Alarmmeldungen"><img class="icon" src="{{ icon0 }}message_achtung.svg" /></a>
                              </div>
                          </div></td>
                          <td width="5%"> </td>
                      </tr>
                  </table>
                  Leider ohne Erfolg. Auch wenn das Item ein Boolisches Item ist funktioniert es nicht.
                  Ich habe noch alles mit der Doku status.collapse verglichen... Müsste eigentlich funktionieren!

                  Kommentar


                    #10
                    Zitat von schuma Beitrag anzeigen
                    Ich möchte gerne auf einer Raumseite anzeigen wie oft es in Abwesenheit an der Tür geklingelt hat.
                    Das Ganze soll aber nur angezeigt werden, wenn es auch wirklich geklingelt hat.
                    Dazu habe ich folgendes bei mir eingefügt:
                    Oder schau mal hier:
                    https://knx-user-forum.de/forum/supp...fication-badge
                    ++ Der ultimative ETS Schnellkurs ++
                    KNX und die ETS vom Profi lernen
                    www.ets-schnellkurs.de

                    Kommentar


                      #11
                      Hallo schuma,

                      ich hatte ein ähnliches Problem und die Nadel im Heuhaufen gesucht.
                      Bei mir wurde "nur" das Widget nicht geladen.

                      Ein
                      Code:
                      {% import "status.html" as status %}
                      zu Beginn des
                      Code:
                      {% block content %}
                      hat Wunder gewirkt

                      Kommentar


                        #12
                        Hallo Bear80.
                        Ich hatte gestern endlich mal die Möglichkeit mir das Ganze noch einmal anzuschauen.
                        Und es lag wirklich an dem fehlenden import! Unglaublich tausendmal drüber geschaut und immer wieder übersieht man etwas.

                        Also vielen Dank noch einmal für den Tip

                        Grüße, Marc

                        Kommentar

                        Lädt...
                        X