Ankündigung

Einklappen
Keine Ankündigung bisher.

Autogenerator: eigenes RTR Widget verwenden

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

    Autogenerator: eigenes RTR Widget verwenden

    Hallo zusammen,

    ich möchte das RTR Widget auf meine Bedürfnisse anpassen. Mir ist klar, wie das HTML angepasst werden muss, ich bekomme nur die Referenzierung des Widgets nicht hin.

    Mein Ziel ist es das angepasste Widget im knx.conf zu referenzieren, z.B. so:
    Code:
    sv_widget = {{ rtrGIRA('rtr_BAD', 'item.name', ...) }}
    in meinem pages-Verzeichnis gibt es dann ein Unterverzeichnis "widgets", indem ein "widget_rtr_GIRA.html" liegt.
    Dort enthalten ist

    Code:
    {% macro rtrGIRA(id, txt, gad_actual, gad_set, gad_comfort, gad_standby, gad_night, gad_frost, gad_state, gad_txt, step) %}
    ...
    {% endmacro %}
    Der Import mittels
    Code:
    {% import "widgets/widget_rtr_GIRA.html" as rtrGIRA %}
    brachte keinen Erfolg. Ich bekomme beim Laden der Page immer die Fehlermeldung, dass die Funktion "rtrGIRA" nicht gefunden wird.

    Kann mir jemand einen Tipp geben?
    Viele Grüße,
    Michael

    #2
    Ich bin ein Stück weiter: die Seite wird ohne Fehlermeldung angezeigt, wenn ich schreibe:

    Code:
    {% import "widgets/widget_rtr_GIRA.html" as [B]myDevice[/B] %}
    und dann in knx.conf referenziere:

    Code:
    sv_widget = {{ [B]mydevice.rtrGIRA[/B]('rtr_BAD', 'item.name', 'item.temperature', 'item.set', 'item.comfort', 'item.night', 'item.frost', 'item.state') }} | {{ plot.period('item-plot', 'item.temperature', 'avg') }}
    Problem jetzt: der HTML Code für mydevice.rtrGIRA wird nicht eingesetzt. Ich sehe ein leeres Widget. Woran kann das liegen?
    Viele Grüße,
    Michael

    Kommentar


      #3
      Ich habe festgestellt, dass mein Problem gar nichts mit dem Autogenerator zu tun hat. Wenn ich eine eigene HTML Seite erstelle, kann ich fremde Widgets aus den mitgelieferten Beispielen einbinden. Nur ein eigenes Widget bekomme ich nicht. Hier nochmal das komplette Beispiel.

      Ich habe eine Seite "category_temperaturen.html" erstellt.
      Dort steht folgender Block:
      Code:
      <div class="block">
          <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
          <div data-role="collapsible" data-collapsed="false">
              <h3>Heizung GIRA</h3>
      			{% import "widgets/widget_rtr_GIRA.html" as myDevice %}
      		    {{ mydevice.rtrGIRA('rtr_BAD2') }}
          </div>
          </div>
          </div>
      Die Datei "widgets/widget_rtr_GIRA.html" sieht so aus:
      Code:
      /**
      * GIRA RTR (Room Temperatur Regulator)
      *
      * @param unique id for this widget
      * @param name of the rtr
      * @param a gad/item for the actual temperature
      * @param a gad/item for the set temperature
      * @param a gad/item for comfort (1x bit)
      * @param a gad/item for standby (1x bit)
      * @param a gad/item for night (1x bit)
      * @param a gad/item for frost (1x bit)
      * @param a gad/item for the current state of the actor
      * @param a gad/item for a text (some rtr have a text-display), (optional)
      * @param step for plus/minus buttons (optional, default 0.5)
      */
      {% macro rtrGIRA(id) %}
      {% import "basic.html" as basic %}
      {% set uid = uid(page, id) %}
      
      /** Design */
      <div id="{{ uid }}" class="rtr">
      	<p>Hallo</p>
      </div>
      {% endmacro %}
      Es sollte also "Hallo" ausgegeben werden. Der Block wird angezeigt, aber leer.
      Der Macro-Inhalt wird nicht eingesetzt.

      Hier das erzeugte HTML:
      Code:
      <div class="block">
      <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
      <div data-role="collapsible" data-collapsed="false">
              <h3>Heizung GIRA</h3>
      [COLOR="Red"]         ... Macro Inhalt fehlt hier ...[/COLOR]					    
      </div>
      </div>
      </div>
      Irgendjemand eine Idee? Seltsam ist, dass ich andere Custom Widgets aus den Beispielen genauso einbinden kann.
      Viele Grüße,
      Michael

      Kommentar

      Lädt...
      X