Liebe smartVISU'ler,
nachdem ich mein Szenenlogik-Problem im 'smarthome.py'-Unterforum in den zugehörigen Thread gelöst hatte, habe ich mich an die Visu gemacht. Hier nun das Resultat:
Leider war das auch nicht so einfach, da basic.buttom keine Symboländerung (Rückmeldung) kann und basic.dual, der die Symboländerung beherrscht, dann aber zwei Werte, den eigentlichen Szenenwert und den Dummy-Szenen-Wert senden möchte. Musste also beide Code-Welten verheiraten. basic.multistate ist zwar auch zum Umschalten geeignet, allerdings wenn man an eine hintere Szene will, muss man alles vorher aktivieren/durchleben, sind Rolladen oder Jalousien mit in der Szene gehts gar nicht und selbst bei Lampen will man das Hin- und Her nicht.
So sieht es nun aus: scenebutton.jpg
Der passende Aufruf dazu so:
Als Code unter dem Unterordner widgets ist es nur HTML, bei mir steht alles selbstkreiertes in der Datei mydevice.html, hier der entsprechende Ausschnitt dieser Datei:
Wer es ausprobieren möchte, viel Spaß dabei. Anregungen sind auch gerne willkommen.
Viele Grüße,
Ralf
nachdem ich mein Szenenlogik-Problem im 'smarthome.py'-Unterforum in den zugehörigen Thread gelöst hatte, habe ich mich an die Visu gemacht. Hier nun das Resultat:
Leider war das auch nicht so einfach, da basic.buttom keine Symboländerung (Rückmeldung) kann und basic.dual, der die Symboländerung beherrscht, dann aber zwei Werte, den eigentlichen Szenenwert und den Dummy-Szenen-Wert senden möchte. Musste also beide Code-Welten verheiraten. basic.multistate ist zwar auch zum Umschalten geeignet, allerdings wenn man an eine hintere Szene will, muss man alles vorher aktivieren/durchleben, sind Rolladen oder Jalousien mit in der Szene gehts gar nicht und selbst bei Lampen will man das Hin- und Her nicht.
So sieht es nun aus: scenebutton.jpg
Der passende Aufruf dazu so:
Code:
{{ mydevice.scenes('szene', 'Szene', [1, 2, 31, 4, 19, 6], 0 , ['scene_day.svg', 'scene_night.svg', 'scene_livingroom.svg', 'scene_party.svg', 'scene_sleeping.svg', 'light_light_dim_100.svg' ] ) }}
Code:
/*
* scenebutton
*
* @param unique id for this widget
* @param a numeric item for the scene number
* @param pic as the icon for this button
* @param vals as a list of scene numbers behind foreign buttons
* @param val as the scene number for this button,
* @param zeroval as dummy scene number for inactive scenes
* @param type: 'micro', 'mini', 'midi' (optional, default: 'mini')
* @param col_on is the color for the on state of the button (optional, defautl: 'icon1')
* @param orientation of the controlgroup
*/
{% macro scenebutton(id, item, pic, vals, val, zeroval, type, col_on ) %}
{% import "basic.html" as basic %}
<a id="{{ uid(page, id) }}" data-widget="basic.button" data-item="{{ item }}" data-val="{{ val }}"
class="ui-{{ type|default('midi') }}" data-role="button" data-inline="true"
data-iconpos="center">
{{ basic.symbol(id|_('s')|_(val~'-'~zeroval), item, '', pic, zeroval) }}
{% for i in vals %}
{% if ( i == val ) %}
{{ basic.symbol(id|_(val~'-'~i), item, '', pic, val, 'or', col_on|default('icon1') ) }}
{% else %}
{{ basic.symbol(id|_(val~'-'~i), item, '', pic, i) }}
{% endif %}
{% endfor %}
</a>
{% endmacro %}
/*
* scenes()
*
* @param unique id for this widget
* @param a numeric item for the scene number
* @param vals as a list of scene numbers for every button
* @param zeroval as dummy scene number for inactive scenes
* @param pics as a list of icons for every button
* @param type: 'micro', 'mini', 'midi' (optional, default: 'mini')
* @param orientation of the controlgroup (optional, default: 'horizontal')
* @param col_on is the color for the on state of the buttons (optional, default: 'icon1')
*/
{% macro scenes(id, gad_scene, vals, zeroval, pics, type, orientation, col_on ) %}
{% import _self as mydevice %}
<div class="basic">
<span data-role="controlgroup" data-type="{{ orientation|default('horizontal') }}">
{% for i in 0..(vals|length - 1) %}
{{ mydevice.scenebutton(id|_(vals[i]), gad_scene, pics[i], vals, vals[i], zeroval|default('0'), type|default('midi'), col_on|default('icon1') ) }}
{% endfor %}
</span>
</div>
{% endmacro %}
Viele Grüße,
Ralf


Kommentar