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