Ankündigung

Einklappen
Keine Ankündigung bisher.

Device RTR: Status Icon von Button auf Symbol ändern

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

    Device RTR: Status Icon von Button auf Symbol ändern

    Hi

    Wie in einem anderen Thread am Rande erwähnt, ist mir aufgefallen, dass beim Device RTR Widget das Status-Icon (Heizt/Heizt nicht) ein Button ist, also angeklickt werden kann und dadurch ungewollt den Status ändert.
    Gibt es dafür einen plausiblen Anwendungsfall? Mir fällt keiner ein.
    Ich würde das für mich schlicht in ../widgets/device.html auf basic_symbol ändern, aber dann könnte es ja sein, dass bei einem Update alles wieder überschrieben wird. Irgendwo gab es hier mal einen Post, der erklärt, wie man das am schlauesten verhindert, dass eigene Änderungen nicht überschrieben werden oder wie auch immer. Den finde ich aber grad nicht.

    Andererseits, wenn es tatsächlich keinen Grund gäbe, das als Button zu definieren, dann könnte man das für alle ändern, dann wäre das Problem gelöst.

    Was spricht dagegen?

    Gruß, Martin

    #2
    Hallo,

    du kannst bei dem Item natürlich auch das Visu-Attribut auf Readonly setzen, dann kann man zwar immer noch draufdrücken, aber der Wert auf dem Bus ändert sich nicht. D.h. beim nächsten Seiten-Reload wird wieder der originale Wert gezogen.

    Code:
    visu_acl = ro

    Kommentar


      #3
      Zitat von Sipple Beitrag anzeigen

      Was spricht dagegen?
      Nichts.
      Ist von der Sache relativ einfach gelöst. Einfach ein eigenes Widget erstellen (auf Basis von divice.rtr und anpassen).
      Das widget legst Du in Dein Pages ab. z.B. widget_mydivrtr.html
      Beispiel-Widget:
      Code:
      /**
      * Standard 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 / standby (3x bit or 1x byte)
      * @param a gad/item for night (3x bit or 1x byte)
      * @param a gad/item for frost (3x bit or 1x byte)
      * @param a gad/item for the current state of the actor by on
      * @param a gad/item for the current state of the actor by off
      * @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 myrtr(id, txt, gad_actual, gad_set, gad_comfort, gad_night, gad_frost, gad_stateon, gad_stateoff, gad_txt, step) %}
          {% import "basic.html" as basic %}
      
          <div id="{{ uid(page, id) }}" data-widget="device.rtr" data-step="{{ step|default(0.5) }}"
              class="rtr">
              <div class="actual">
                  <div class="temp">{{ basic.float(id~'actual', gad_actual, '°' ) }}</div>
                  <div class="text">{{ txt }} {% if gad_txt %} {{ basic.value(id~'txt', gad_txt) }} {% endif %}</div>
              </div>
      
              {% if gad_set %}
                  <div class="set">
                      <a data-role="button" data-icon="minus" data-inline="true" data-iconpos="notext" class="ui-mini"></a>
      
                      <div class="temp">{{ basic.float(id~'set', gad_set, '°' ) }}</div>
                      <a data-role="button" data-icon="plus" data-inline="true" data-iconpos="notext" class="ui-mini"></a>
                  </div>
              {% endif %}
      
              <div class="control">
                  {% if ((config_driver == 'linknx') and (gad_comfort == gad_night) and (gad_night == gad_frost)) %}
                      {{ basic.switch(id~'mode', gad_comfort, icon1~'user_available.png', icon0~'user_away.png', 'comfort', 'standby') }}
                      {{ basic.switch(id~'night', gad_night, icon1~'scene_night.png', icon0~'scene_day.png', 'night', 'standby') }}
                      {{ basic.switch(id~'frost', gad_frost, icon1~'weather_frost.png', icon0~'weather_frost.png', 'frost', 'standby') }}
                  {% elseif ((gad_comfort == gad_night) and (gad_night == gad_frost)) %}
                      {{ basic.switch(id~'mode', gad_comfort, icon1~'user_available.png', icon0~'user_away.png', '1', '2') }}
                      {{ basic.switch(id~'night', gad_night, icon1~'scene_night.png', icon0~'scene_day.png', '3', '2') }}
                      {{ basic.switch(id~'frost', gad_frost, icon1~'weather_frost.png', icon0~'weather_frost.png', '4', '2') }}
                  {% else %}
                      {{ basic.switch(id~'mode', gad_comfort, icon1~'user_available.png', icon0~'user_away.png') }}
                      {{ basic.switch(id~'night', gad_night, icon1~'scene_night.png', icon0~'scene_day.png') }}
                      {{ basic.switch(id~'frost', gad_frost, icon1~'weather_frost.png', icon0~'weather_frost.png') }}
                  {% endif %}
                  <div style="float:left; width: 3px; height: 50px;"></div>
                  {{ basic.symbol(id~'stateon', gad_stateon, '', icon1~'sani_heating.png') }}
                  {{ basic.symbol(id~'stateoff', gad_stateoff, '', icon1~'sani_heating.png', 0) }}
              </div>
          </div>
      {% endmacro %}
      Einbindung dann z.B. mit:
      Code:
      {% import "widget_mydivrtr.html" as irgendwas %}
      {{ irgendwas.myrtr('id', 'Text', 'item.temperature', 'item.temperature.set', 'item.temperature.mode', 'item.temperature.night', 'item.temperature.frost', '', 'item.stateon', 'item.stateoff', '', '0.5') }}
      item.stateon und item.stateoff kommen dabei von der 1bit-GA der Stellgröße des Heizungsaktors, bzw, die Rückmelde-GA`s von dieser.

      ungetestet, sollte aber im groben passen.

      Kommentar


        #4
        Servus

        Das Widget hatte ich schon erfolgreich geändert, fast exakt so wie du. Aber vielen Dank für die Erklärung der Vorgehensweise wie und wo man das am besten einbaut, das hat mir gefehlt. So langsam schnall ich die Zusammenhänge immer besser

        Gruß, Martin

        Kommentar

        Lädt...
        X