[gelöst] Fehler beim Template

Begonnen von Mundus, 24 September 2017, 22:44:14

Vorheriges Thema - Nächstes Thema

Mundus

Hi,

nachdem ich den tollen https://forum.fhem.de/index.php/topic,76306.0.html Beitrag von jemu75 gelesen habe, machte ich mich daran, mein TabletUI zu überarbeiten. Heute bin ich auf einen Fehler aufmerksam geworden, der mir zwar kein dauerhaftes Kopfzerbrechen bereitet, aber irgendwie komisch ist.

Mein Template hat die nachfolgende Struktur<!DOCTYPE html>
<html>
<head>
        <!-- FHEM Tablet UI V2.6 -->
        <!-- Template für Thermostate -->
</head>
<body>
        <div class="row">
                <div class="cell left-align left-space">
                        <div data-type="thermostat"
                                data-device="var_dev"
                                data-get="var_get"
                                data-set="var_set"
                                data-temp="var_temp"
                                data-valve="var_valve"
                                data-mode="var_mode"
                                data-step="0.5"
                                data-min="4.5"
                                data-off="off"
                                data-max="30.5"
                                data-unit="°"
                                class="compressed">
                        </div>
                </div>
                <div class="cell-80 left-align">
                        <div class="big">var_name</div>
                </div>
                <div class="cell">
                </div>
                <div class="cell right-space">
                        <div data-type="checkbox"
                                data-device="var_dev_lock"
                                data-get="var_state_lock"
                                data-get-on="var_get_on_lock"
                                data-get-off="var_get_off_lock"
                                data-set-on="var_set_on_lock"
                                data-set-off="var_set_off_lock"
                                class="small">
                        </div>
                       <div data-type="label"
                                data-device="var_dev_lock"
                                data-get="var_state_lock"
                                data-substitution='["BUTTON_LOCK=0","Entsperrt","BUTTON_LOCK=1","Gesperrt"]'
                                class="black inline">
                        </div>
                </div>
        </div>
</body>
</html>

Entsprechend erfolgt der Aufruf <div data-template="template_heating.html" data-parameter='{
                                                        "var_name":"K&uuml;che",
                                                        "var_dev":"ku_Thermostat",
                                                        "var_get":"state",
                                                        "var_set":"control",
                                                        "var_temp":"4.ACTUAL_TEMPERATURE",
                                                        "var_valve":"4.VALVE_STATE",
                                                        "var_mode":"4.CONTROL_MODE",
                                                        "var_dev_lock":"ku_Thermostat",
                                                        "var_state_lock":"Gesperrt",
                                                        "var_get_on_lock":"BUTTON_LOCK=1",
                                                        "var_get_off_lock":"BUTTON_LOCK=0",
                                                        "var_set_on_lock":"Sperren",
                                                        "var_set_off_lock":"Entsperren"}'>
                                                </div>

Nunmehr tritt das Problem auf, dass beim Erstellen des SwitchButtons (auch des Labels) das Device
ku_Thermostat_lock
aufgerufen wird. Es scheint so zu sein, dass eine Bennenung der Variablen nicht wahllos sein darf und somit kein kompletten Variablennamen als Namensbestandteil übernehmen darf. So funktioniert zwar
var_dev und var_state
aber eben nicht
var_dev und var_dev_lock
Dass Problem setzt sich nämlich z.B. bei Data-set-on fort, welches zu dem Aufruf Control_on_lock
führt.

Ist das ein gewünschtes Verhalten oder sogar ein Fehler?


Gruß

Mundus

Standarduser

Ja, das ist tatsächlich so und eigentlich an vielen Stellen ganz praktisch. Es wird einfach ganz plump Suchen & Ersetzen angewendet.

Ein Beispiel, wo das echt nützlich ist, sind Thermostaten von Homematic. Dort sind die Readings in verschiedene Kanäle eingeteilt wie <Device>_climate oder <Device>_weather. Hier braucht man dann eben nur das Device selber angeben und kann den Rest im Template machen.

Mundus

Danke für die Ausführungen. Ist das vielleicht etwas fürs wiki bzw. m.E. wäre es super, wenn dies irgendwo erklärt wäre

Standarduser

Zitat von: Mundus am 25 September 2017, 00:04:53
Danke für die Ausführungen. Ist das vielleicht etwas fürs wiki bzw. m.E. wäre es super, wenn dies irgendwo erklärt wäre
https://wiki.fhem.de/wiki/FHEM_Tablet_UI#Templates
-> zweiter Absatz

Mundus