FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: dt2510 am 23 November 2016, 16:06:32

Titel: Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 23 November 2016, 16:06:32
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 ?
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: viegener am 23 November 2016, 17:39:53
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).
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag 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.
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: DocCyber am 23 November 2016, 18:48:30
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
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 23 November 2016, 18:52:25
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>
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: viegener am 23 November 2016, 18:53:07
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>
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 23 November 2016, 18:58:29
jetzt kann ich zwar auswählen was ich möchte, aber die Anzeige bleibt immer gleich ...
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 23 November 2016, 19:03:15
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 -->
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: viegener am 23 November 2016, 23:28:03
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?
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 24 November 2016, 07:39:10
mein Device heisst HomeStatus und das hab' ich natürlich angepasst
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: viegener am 24 November 2016, 09:45:27
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.ä.)
Titel: Antw:Erste Versuche und gleich schon Probleme ;)
Beitrag von: dt2510 am 24 November 2016, 09:55:54
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.