Ankündigung

Einklappen
Keine Ankündigung bisher.

Feedback zu Autogenerierung von device.smallshut()

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

    Feedback zu Autogenerierung von device.smallshut()

    Kontext:
    smartHomeNG V1.9.0
    smartVISU V3.2.0
    Browser: Firefox 97.1.0 und Chrome 98.0 auf Smartphone Samsung A22 mit Android 11

    Konfiguration:
    Autogenerierung:
    etc/plugin.yaml: -> smartvisu_pages: -> generate_pages: True

    Items:
    Code:
    ...
        visublock01:
            name: Aufenthaltsraum
            sv_widget: "{{ device.smallshut ('', '', '..velux_rollladen.move', '..velux_rollladen.stop', '..velux_rollladen.isPosition_byte', '..velux_rollladen.predefinedPosition', 'mini') }}
                        {{ device.uzsuicon ('', '..velux_rollladen.setPosition.uzsu', '', '', '', 'num', [0, 100, 10], '', '', 'midi') }}"
    ...
    Feedback:
    • Type 'mini' wird am Smartphone im Hochformat nicht richtig dargestellt, Buttons überlappen: siehe smallshut_mini_Firefox97_Android11.
      Dasselbe Problem existiert mit Chrome.
    • Type 'midi' wird am Smartphone im Querformat nicht richtig dargestellt, Buttons überlappen: siehe smallshut_midi_querformat_Firefox97_Android11.
      Type 'mini' passt im Querformat.
    • Dokumentation (.../smartvisu/index.php?page=device/widget_device.smallshut&pages=docu):
      bitte Erläuterungen validieren und hinzufügen;
      • item_position: is the actual position of the shutter in bytes (0 = up/open, 255 = down/closed)
      • item_saved: is an item of type boolen, that can be used to activate a saved position within the actor
    • Work-around to use item_saved to set the shutter to a position saved in an item:
      Code:
      	...
      	visublock01:
      	   name: Aufenthaltsraum
      	   sv_widget: "{{ device.smallshut ('', '', '..velux_rollladen.move', '..velux_rollladen.stop', '..velux_rollladen.isPosition_byte', '..velux_rollladen.predefinedPosition', 'mini') }}
      	...
      	predefinedPosition:
      	  type: bool
      	  # smartVISU smallshut sets a '1' (bool) in item_saved -> convert to setPosition in %
      	  on_update: ..setPosition = 75
      	setPosition:
      	  type: num
      	  enforce_change: true # force send knx object even if value did not change
      	  knx_dpt: 5.001
      	  knx_send: 3/3/3
      	....
    Angehängte Dateien
    Zuletzt geändert von wvhn; 20.07.2022, 14:41. Grund: Status gelöst gesetzt

    #2
    Das Widget arbeitet mit festen Abständen (in % der Blockbreite), weil es als Zeile in einer Tabelle vorgesehen ist. Die mini und midi Icons passen da auf kleinen Displays nicht rein. Hier muss man die 'micro'-Typen verwenden oder auf andere Widgets ausweichen.

    item_saved war für Aktoren gedacht, die eine Position gespeichert haben und nur einen Trigger zum Anfahren brauchen. Das Widget kann man aber leicht erweitern, so dass die Position auch über den Parametersatz vorgegeben werden kann.
    Code:
    /**
    * Displays a simple shutter control assembly in table format
    *
    * @param {id=} unique id for this widget (optional)
    * @param {text=} name of the shutter
    * @param {item(bool,num)} a gad/item for long move
    * @param {item(bool,num)} a gad/item for stopping movement
    * @param {item(num)} a gad/item for the actual position
    * @param {item(bool, num)=} a gad/item for the saved position (optional)
    * @param {type=micro} valid types: 'micro', 'mini', 'midi' (optional, default: micro)
    * @param {value=1} a value to send to item_saved in order to trigger a saved position in the actor (bool) or send a position value (num) (optional, default=1)
    *
    * @author Michael Stemmer and Wolfram v. Huelsen
    */
    {% macro smallshut(id, txt, item_move, item_stop, item_position, item_saved, type, value_saved) %}
    	{% import "basic.html" as basic %}
    	{% import "icon.html" as icon %}
    	{% set uid = uid(page, id) %}
    
    	<div class="smallshut"{% if not id is empty %} id="{{ uid(page, id) }}"{% endif %} >
    		<span class="ui-shut-txt">
    		{% if txt %} {{ txt }} {% endif %}
    		</span>
    		<span class="ui-shut-btn">
    			{{ basic.stateswitch('',  item_move, type|default('micro'), '0', 'carat-u') }}
    		</span>
    		<span class="ui-shut-btn">
    			{{ basic.stateswitch('', item_stop, type|default('micro'), 1, 'delete') }}
    		</span>
    		<span class="ui-shut-btn">
    			{{ basic.stateswitch('', item_move, type|default('micro'), '1', 'carat-d') }}
    		</span>
    		<span class="ui-shut-btn">
    			{% if item_saved %}
    				{{ basic.stateswitch('', item_saved, type|default('micro'), value_saved|default(1), 'fts_shutter_50.svg') }}
    			{% endif %}
    		</span>
    		<span class="ui-shut-pic">
    			{% if item_position %}
    				{{ icon.shutter(id~'position', '', item_position) }}
    			{% endif %}
    		</span>
    	</div>
    {% endmacro %}
    Das kannst Du in der ./widgets/device.html austauschen. Neu ist der Parameter "value_saved", mit dem jetzt auch Werte ungleich 1 an item_saved geschickt werden können. item_saved ist entweder das item vom Typ bool, das die Fahrt zur im Aktor gespeicherten Position anfährt (saved_value=1) oder das item vom typ num, das die Soll-Position an den Aktor schickt.

    Wenn Du die Erweiterung erfolgreich getestet hast, nehme ich das so ins Develop.

    Gruß
    Wolfram

    Kommentar


      #3
      MarioMausW
      kannst Du das bitte mal testen und mir eine Antwort geben?

      Kommentar


        #4
        Hallo,

        Die Tests waren erfolgreich, Ergebniß wie erwartet.

        Folgendes habe ich getestet:
        1. Test mit neuer 'saved position':
          • Code:
            device.smallshut('', '', '...rollladen_move', '...rollladen_stop', '...rollladen_istposition', '...rollladen_positionsvorgabe', '', '127')
          • Resultat: Rollladen fährt auf halbe Position -> Ok
        2. Test mit vorherigem Format als Abruf einer Vorgabeposition im Aktor über knx-bool-Objekt:
          • Code:
            device.smallshut('', '', '...rollladen_move', '...rollladen_stop', '...rollladen_istposition', '...rollladen_sonnenschutz', '')
          • Resultat: Rollladen fährt auf Position wie im Aktor konfiguriert -> Ok
        3. Test ohne Button 'saved position'
          • Code:
            device.smallshut('', '', '...rollladen_move', '...rollladen_stop', '...rollladen_istposition')
          • Resultat: Button für Positionsvorgabe wird nicht angezeigt -> Ok

        Es wäre hilfreich für Neueinsteiger in der Dokumentation zu vermerken, daß die Werte für 'saved position' und 'actual position' als Byte-Werte anzugeben sind.

        Vielen Dank für die Unterstützung und sorry für die verzögerte Reaktion!

        Beste Grüße,
        Mario

        Kommentar

        Lädt...
        X