Ich scheitere hier gerade am Versuch einer HomeStatus Impementierung in TABLET UI.
Ich hab' in FHEM folgende defines:
define HomeStatus dummy
attr HomeStatus readingList text
define HomeStatusText dummy
define Status1 notify HomeStatus:1 set HomeStatusText "Home"
define Status2 notify HomeStatus:2 set HomeStatusText "Night"
define Status3 notify HomeStatus:3 set HomeStatusText "Away"
define Status4 notify HomeStatus:4 set HomeStatusText "Holiday"
Versuch 1:
<div data-type="homestatus" data-device='HomeStatus' data-get-on='["1","2","3","4"]' data-alias='["Home","Night","Away","Holiday"]' data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'></div>
HomeStatus und HomeStatusText werden korrekt gesetzt, bei einem Reload der Seite oder nach einer gewissen Zeit leuchtet wieder der "Home" Button, die dummys sind aber noch korrekt gesetzt.
Versuch 2:
<div data-type="select" data-device='HomeStatus' data-items='["Home","Night","Away","Holiday"]' data-get="text" data-set="text" class="cell w2x" ></div>
Auch hier wird das reading text von HomeStatus korrekt gesetzt, nach einem Reload zeigt die Auswahlliste aber keinen Text an, obwohl das reading noch genauso vorhanden ist.
Als Workaround wollte ich den Text in einem Label darstellen:
<div data-type="label" data-device='HomeStatus' data-get="text" data-color="#aa6900" class="inline small"></div>
Aber hier wird überhaupt nicht angezeigt, obwohl das reading gesetzt ist (bei HomeStatusText ohne data-get Parameter - also Anzeige von state - wird ebenfalls nichts angezeigt.
Was mache ich falsch ?
Ich bin nicht sicher ob das hilft, aber wenn ich Deine Definition richtig verstehe, hast Du den Text für den Homestatus ja 2 mal. Einmal als Reading an dummy Homestatus und dann über die notifies separat am homestatustext device. Setzt Du auch wirklich das text reading an Homestatus? Wird das so benötigt?
Ich habe bei mir den Homestatus als ein einziges Dummy und nur als text gesetzt ins reading state. Dann funktioniert folgende Anzeige so weit korrekt:
<div data-type="symbol"
data-device="homestatus"
data-get-on='["vacation","away","home","night"]'
data-icons='["fa-suitcase", "fa-car", "fa-home", "fa-bed"]'
data-background-icon=""
class="normal"></div>
Vielleicht hilft das, auch wenn es nicht das homestatus widget benutzt (aus Platzgründen habe ich darum ein Circlemenu zum setzen).
Das mit dem HomeStatusText war ein Versuch. Der Text war entweder im reading text des HomeStatus oder im reading status des HomeStatusText.
Ich hab' deine Version mal getestet. Den data-type "symbol" kann ich aber nicht anklicken und egal, was im reading state von HomeStatus steht, es wird immer der Koffer angezeigt.
Das, was du möchtest, geht bei mir so:
In Fhem:
define homestatus dummy
attr homestatus setList Home Night Away Holiday
In FTUI:
<div data-type="homestatus"
data-device="homestatus"
data-get-on='["Home","Night","Away","Holiday"]'
data-set-on='["Home","Night","Away","Holiday"]'
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'>
</div>
Ergebnis s. Screenshot
Gleiches Resultat ... im reading steht Night und nach dem neu laden der Seite zeigt TabletUI wieder den Home Button aktiv an.
Internals:
CFGFN
NAME HomeStatus
NR 217
STATE Night
TYPE dummy
Readings:
2016-11-23 18:50:28 state Night
Attributes:
room _ Variablen
setList Home Night Away Holiday
und im html
<div data-type="homestatus"
data-device="HomeStatus"
data-get-on='["Home","Night","Away","Holiday"]'
data-set-on='["Home","Night","Away","Holiday"]'
data-icons='["fa-home","fa-bed","fa-car","fa-suitcase"]'>
</div>
Zitat von: dt2510 am 23 November 2016, 18:37:30
Das mit dem HomeStatusText war ein Versuch. Der Text war entweder im reading text des HomeStatus oder im reading status des HomeStatusText.
Ich hab' deine Version mal getestet. Den data-type "symbol" kann ich aber nicht anklicken und egal, was im reading state von HomeStatus steht, es wird immer der Koffer angezeigt.
Ja, das wäre erstmal nur die Anzeige, wie gesagt, darum habe ich noch ein Circlemenu für das Setzen, das sieht dann ungefähr so aus:
<div data-type="circlemenu" class="circlemenu" data-direction="horizontal">
<ul>
<li><div data-type="symbol"
data-device="homestatus"
data-get-on='["vacation","away","home","night"]'
data-icons='["fa-suitcase", "fa-car", "fa-home", "fa-bed"]'
data-background-icon=""
class="normal"></div>
</li>
<!-- Home -->
<li><div data-type="push" data-device="homestatus" data-background-icon=""
data-set-on="home" data-icon="fa-home" class="normal"></div></li>
<!-- Night -->
<li><div data-type="push" data-device="homestatus" data-background-icon=""
data-set-on="night" data-icon="fa-bed" class="normal"></div></li>
<!-- Away -->
<li><div data-type="push" data-device="homestatus" data-background-icon=""
data-set-on="away" data-icon="fa-car"></div></li>
<!-- Urlaub -->
<li><div data-type="push" data-device="homestatus" data-background-icon="fa-ban"
data-set-on="vacation" data-icon="fa-suitcase" class="icon round"></div></li>
</ul>
</div>
jetzt kann ich zwar auswählen was ich möchte, aber die Anzeige bleibt immer gleich ...
vielleicht hängt es ja mit den Definitionen im html <head> zusammen, die hab' ich aus einem Demo kopiert ...
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="widget_base_width" content="127">
<meta name="widget_base_height" content="108">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="longpoll" content="1"> <!-- 1=longpoll;0=shortpoll every 30sec -->
<meta name="debug" content="0"> <!-- 1=output to console;0=not output -->
<link rel="stylesheet" href="/fhem/tablet/lib/jquery.gridster.min.css" />
<link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/font-awesome.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/jquery.toast.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/powerange.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" />
<script type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.knob.mod.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.toast.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.circlemenu.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/powerange.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.gridster.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/fa-multi-button.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/js/fhem-tablet-ui.js"></script>
<!-- Enable this lines for usage with WebViewControl --><!-- -->
<script type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script>
<script type="text/javascript" src="/fhem/js/webviewcontrol.js"></script>
<script type="text/javascript">var wvcDevices = {'12345': 'Tablet'}; var wvcUserCssFile="webviewcontrol.css"</script>
<!-- End for WebViewControl -->
Nurmalso zur Sicherheit, hast Du mein Beispiel 1:1 übernommen, oder hast Du es angepasst und wenn nicht, hast Du dann einen Dummy Device homestatus?
mein Device heisst HomeStatus und das hab' ich natürlich angepasst
Vielleicht nochmal grundsätzlich, hast Du andere buttons/widgets, die sich korrekt an den Status anpassen?
Wenn Du das überall korrekt "HomeStatus" als device hast, dann wäre die Frage, was passiert wenn Du im Circlemenu einen anderen Status auswählst.
- Siehst Du dass der set-Befehl gesendet wird?
- Welchen Status hat danach der Dummy?
- Wenn der Dummy seinen Status ändert, wird ein longpoll ausgeführt?
- Finden sich Fehler im Browserlog (addon für firefox: firebug o.ä.)
Ich hab' jetzt mal alle anderen Definitionen aus der html Datei (war die Kopie eines User-Demos) rausgenommen und sieheda - es funktioniert !
Also alles nochmal neu aufbauen ... trotzdem schonmal Danke für die Hilfe.