FHEM Tablet Ui Widget für Rolladensteuerung

Begonnen von eburkon, 14 Oktober 2015, 21:36:01

Vorheriges Thema - Nächstes Thema

Grafkox

Hi,

müssen das Label und das template nicht auch nochmal zusammen in ein <div> gepackt werden?

Zumindest ist es bei mir so (ohne Template).
Raspberry Pi 3 mit Fhem 5.9, Tablet UI 2.6, SIGNALduino, Somfy RTS, Fritzbox 7490, IT-Steckdosen, Hikvision Kameras, Xiaomi Sensoren, Tecalor THZ, E3/DC

australien

ist das nicht bei <div class="top-space inline"> der fall?


<li class="halbTransparent border-left border-right" data-row="2" data-col="2" data-sizex="2" data-sizey="2">
<header class="headerTransparent">ROLLOS</header>
<div class="top-space inline">
                <div data-type="label">Fenster</div>
<li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Fenster"}'></li>
     
<div data-type="label">Tür</div>
                                <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Tuer"}'></li>
                   
                        <div data-type="label">Bad</div>
                               <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Bad"}'></li>
                         
                        <div data-type="label">Kueche_SW</div>
                           <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Kueche_SW"}'></li>
               
</div> 
</li>
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Grafkox

#107
Damit gruppierst du zunächst ja nur alles unter Rollos.

versuche vielleicht mal Folgendes:


<li class="halbTransparent border-left border-right" data-row="2" data-col="2" data-sizex="2" data-sizey="2">
<header class="headerTransparent">ROLLOS</header>
<div class="top-space inline">
                <div>
                         <div data-type="label">Fenster</div>
<li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Fenster"}'></li>
                       </div>
<div>
                         <div data-type="label">Tür</div>
                                <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Tuer"}'></li>
                        </div>
                         <div>
                        <div data-type="label">Bad</div>
                               <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Bad"}'></li>
                        </div>
                        <div>
                        <div data-type="label">Kueche_SW</div>
                           <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Kueche_SW"}'></li>
                        </div>
</div> 
</li>


Kann erst heute Abend schauen wie es genau bei mir ist, ggf. hat bis dahin ja jemand eine valide Info ;)
Raspberry Pi 3 mit Fhem 5.9, Tablet UI 2.6, SIGNALduino, Somfy RTS, Fritzbox 7490, IT-Steckdosen, Hikvision Kameras, Xiaomi Sensoren, Tecalor THZ, E3/DC

australien

danke für deine Hilfe, leider hat es nichts gebracht.
Warte aber gerne wenn du mir helfen kannst :)

mit deinem Vorschlag schaut es bei mir so aus, siehe screenshot

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

australien

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Grafkox

Sorry, doch leider erst heute dazu gekommen.

ich habe es so für drei nebeneinanderliegende Rollos, allerdings ohne die Templates:
<li class="halbTransparent border-left border-right" data-row="3" data-col="1" data-sizex="4" data-sizey="2">
<header class="headerTransparent">ROLLOS</header>
<div class="top-space inline">
<div data-type="label">Terrasse li</div>
<div class="container">
<div data-type="circlemenu" class="cell circlemenu">
<ul>
<li><div data-type="symbol"
data-device="Rollo_WZ_Terasse_links"
data-get="exact"
data-states='["0","10","20","30","40","50","60","70","80","100","200"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-colors='["green","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","yellow","green"]'
></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="stop"
data-icon="oa-audio_stop"
data-off-color="red"
data-on-color="red"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="off"
data-icon="fa-angle-up"
data-off-color="green"
data-on-color="green"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="100"
data-icon="oa-fts_shutter_90"
data-off-color="yellow"
data-on-color="yellow"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="80"
data-icon=""><FONT SIZE=3>80%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="60"
data-icon=""><FONT SIZE=3>60%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="40"
data-icon=""><FONT SIZE=3>40%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="20"
data-icon=""><FONT SIZE=3>20%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_links"
data-set-on="on"
data-icon="fa-angle-down"
data-off-color="green"
data-on-color="green"></div></li>
</ul>
</div>
</div>
</div>
<div class="top-space inline">
<div data-type="label">Terrasse re</div>
<div class="container">
<div data-type="circlemenu" class="cell circlemenu">
<ul>
<li><div data-type="symbol"
data-device="Rollo_WZ_Terasse_rechts"
data-get="exact"
data-states='["0","10","20","30","40","50","60","70","80","100","200"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-colors='["green","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","yellow","green"]'
></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="stop"
data-icon="oa-audio_stop"
data-off-color="red"
data-on-color="red"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="off"
data-icon="fa-angle-up"
data-off-color="green"
data-on-color="green"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="100"
data-icon="oa-fts_shutter_90"
data-off-color="yellow"
data-on-color="yellow"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="80"
data-icon=""><FONT SIZE=3>80%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="60"
data-icon=""><FONT SIZE=3>60%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="40"
data-icon=""><FONT SIZE=3>40%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="20"
data-icon=""><FONT SIZE=3>20%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Terasse_rechts"
data-set-on="on"
data-icon="fa-angle-down"
data-off-color="green"
data-on-color="green"></div></li>
</ul>
</div>
</div>
</div>
<div class="top-space inline">
<div data-type="label">Fenster</div>
<div class="container">
<div data-type="circlemenu" class="cell circlemenu">
<ul>
<li><div data-type="symbol"
data-device="Rollo_WZ_Fenster"
data-get="exact"
data-states='["0","10","20","30","40","50","60","70","80","100","200"]'
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
data-colors='["green","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","yellow","green"]'
></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="stop"
data-icon="oa-audio_stop"
data-off-color="red"
data-on-color="red"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="off"
data-icon="fa-angle-up"
data-off-color="green"
data-on-color="green"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="100"
data-icon="oa-fts_shutter_90"
data-off-color="yellow"
data-on-color="yellow"></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="80"
data-icon=""><FONT SIZE=3>80%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="60"
data-icon=""><FONT SIZE=3>60%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="40"
data-icon=""><FONT SIZE=3>40%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="20"
data-icon=""><FONT SIZE=3>20%</FONT></div></li>
<li><div data-type="push"
data-device="Rollo_WZ_Fenster"
data-set-on="on"
data-icon="fa-angle-down"
data-off-color="green"
data-on-color="green"></div></li>
</ul>
</div>
</div>
</div>
</li>


Hoffe es hilft dir weiter
Raspberry Pi 3 mit Fhem 5.9, Tablet UI 2.6, SIGNALduino, Somfy RTS, Fritzbox 7490, IT-Steckdosen, Hikvision Kameras, Xiaomi Sensoren, Tecalor THZ, E3/DC

Grafkox

Auf Deinen Code angewendet (nur die Row col etc anpassen):

<li class="halbTransparent border-left border-right" data-row="3" data-col="1" data-sizex="4" data-sizey="2">
<header class="headerTransparent">ROLLOS</header>
<div class="top-space inline">
<div data-type="label">Fenster</div>
<li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Fenster"}'></li>
</div>
<div class="top-space inline">
<div data-type="label">Tür</div>
                <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Tuer"}'></li>
</div>
<div class="top-space inline">
                <div data-type="label">Bad</div>
                <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Bad"}'></li>
</div>
<div class="top-space inline">
                <div data-type="label">Kueche_SW</div>
            <li data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Kueche_SW"}'></li>
</div>
</li>


habe es nicht gegengetestet, wenn es funktioniert, würde ich mich über eine Rückmeldung freuen, dann könnte ich das ggf. bei mir auch umsetzen und müsste bei Anpassungen immer nur ein Template anpassen, anstatt 11 unterschiedliche Rollos

Gruß

Thorsten
Raspberry Pi 3 mit Fhem 5.9, Tablet UI 2.6, SIGNALduino, Somfy RTS, Fritzbox 7490, IT-Steckdosen, Hikvision Kameras, Xiaomi Sensoren, Tecalor THZ, E3/DC

australien

hat leider länger gedauert, die Zeit ;)

das Ganze bringt leider auch nicht den gewünschten Erfolg, die Texte stehen wie formatiert, die CircleMenues leider immer nur links oben.

bezüglich Templates, deswegen würde ich es auch lieber damit machen und dafür sollten sie ja da sein.

gibt es noch andere Ideen zu dem Problem?
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

australien

so, gestern kam der Durchbruch!

Ein interner Reset meiner Gedanken brachte den Erfolg, eigentlich ganz einfach. Man nehme die <li> Tags und ersetzt diese mit <div>.

2 Stück,
- einmal ein CircleMenu zum Steuern und Anzeigen der Rollo und
- einmal die Statusausgabe des Rollos

so werden die Templates aufgerufen

<div class="gridster">
    <ul>
    <div>
    <li class="halbTransparent border-left border-right" data-row="1" data-col="1" data-sizex="2" data-sizey="2">
    <header class="headerTransparent">ROLLOS</header>   
        <div class="top-space inline">
                       
            <div data-type="label">EZ Fenster</div>
            <div data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_EssZimmer_Fenster"}'></div>
                 
            <div data-type="label">rollo_Wohnzimmer_Tuer_3R</div>
            <div data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Wohnzimmer_Tuer_3R"}'></div>
                               
            <div data-type="label">Bad</div>
            <div data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Bad"}'></div>
                               
            <div data-type="label">Kücke SW</div>
            <div data-template="Templates/RolloSchalter.html" data-parameter='{"par01":"rollo_Kueche_SW"}'></div>
        </div>
    </li>
    </div>

     
    <li data-row="1" data-col="3" data-sizex="1" data-sizey="1">
    <header class="headerTransparent">status</header>
    <div data-type="label">EZ_Fenster</div>
        <div data-template="Templates/RolloStatus.html" data-parameter='{"par01":"rollo_EssZimmer_Fenster"}'></div>
   
        <div data-type="label">rollo_Wohnzimmer_Tuer_3R</div>
    <div data-template="Templates/RolloStatus.html" data-parameter='{"par01":"rollo_Wohnzimmer_Tuer_3R"}'></div>
       
        <div data-type="label">Bad</div>
        <div data-template="Templates/RolloStatus.html" data-parameter='{"par01":"rollo_Bad"}'></div>
   
        <div data-type="label">Küche_SW</div>
    <div data-template="Templates/RolloStatus.html" data-parameter='{"par01":"rollo_Kueche_SW"}'></div>
    </li>
 
    </ul>
</div>


Template: RolloSchalter.html

<!-- Rollo StatusSchalter -->
<!--
par01:Rollo
-->
<div class="container">
   <div data-type="circlemenu" class="cell circlemenu">
        <ul class="menu">
            <li>
                <div data-type="symbol"
                     data-device="par01"
                     data-get="exact"
                     data-states='["0","10","20","30","40","50","60","70","80","100","200"]'
                     data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40","oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80","oa-fts_shutter_90","oa-fts_shutter_100"]'
                     data-colors='["green","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","yellow","green"]'
                 </div>
             </li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="stop"
                      data-icon="oa-audio_stop"                                 
                      data-off-color="red"
                      data-on-color="red"></div></li>                                                                   
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="off"
                      data-icon="fa-angle-up"
                      data-off-color="green"
                      data-on-color="green"></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="100"
                      data-icon="oa-fts_shutter_90"
                      data-off-color="yellow"
                      data-on-color="yellow"></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="80"
                      data-icon=""><FONT SIZE=3>80%</FONT></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="60"
                      data-icon=""><FONT SIZE=3>60%</FONT></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="40"
                      data-icon=""><FONT SIZE=3>40%</FONT></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="20"
                      data-icon=""><FONT SIZE=3>20%</FONT></div></li>
             <li><div data-type="push"
                      data-device="par01"
                      data-set-on="on"
                      data-icon="fa-angle-down"
                      data-off-color="green"
                      data-on-color="green"></div></li>
             </ul>
</div>
  </div>



Template: RolloStatus.html

<!-- Rollo Statusanzeige -->
<!-- par01:device
-->

<div data-type="symbol" class="big narrow" data-device="par01" data-get="state"
               data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40",
                          "oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80",
                      "oa-fts_shutter_90","oa-fts_shutter_100","oa-fts_shutter_100"]'
               data-get-on='["open","10","20","30","40","50","60","70","80","90","100","closed"]' data-on-color="#2A2A2A"
               data-on-background-color="#aa6900" data-background-icon="fa-circle">
</div>

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

HeimBaer

#114
Zitat von: Thorsten Pferdekaemper am 04 Februar 2016, 22:49:46
Hi,
ich habe auch gerade an dem Thema rumgebastelt. Allerdings habe ich momentan den Fokus auf der Visualisierung. Ich habe mir dazu folgendes gebaut:

<div data-type="symbol" class="big narrow" data-device="dg_sz_Rollladen" data-get="level"
       data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40",
        "oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80",
  "oa-fts_shutter_90","oa-fts_shutter_100"]'
       data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]' data-on-color="#2A2A2A"
       data-on-background-color="#aa6900" data-background-icon="fa-circle">
</div>

Das zeigt dann ein kleines Fenster mit einem Rollladen an, dessen Stellung so ungefähr der Realität entspricht.
Siehe Anhang...
Vielleicht noch nicht ganz so künstlerisch wertvoll, aber für mich passt das besser als data-type="level".
Gruß,
   Thorsten

Hi,

vielen Dank, Thorsten, für die prima und einfache Rollo-Visualisierung!
Hier noch ein Vorschlag, wie man es wie bei einer typische "1-Tasten-Rollo-Steuerung" (Ab-Stop-Auf-Stop-...) zum Leben erweckt und so eine platzsparende Visualisierung und alltagstaugliche Steuerung hat:

<div data-type="switch" data-device="ROLLODEVICE" data-get="level" data-fhem-cmd='{rollo_ButtonOnStopOffStop("ROLLODEVICE");;}'
    data-icons='["oa-fts_shutter_100","oa-fts_shutter_90","oa-fts_shutter_80","oa-fts_shutter_70","oa-fts_shutter_60","oa-fts_shutter_50",
               "oa-fts_shutter_40","oa-fts_shutter_30","oa-fts_shutter_20","oa-fts_shutter_10","oa-fts_window_1w"]'
    data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]' data-on-color="#2A2A2A"
    data-on-background-color="#aa6900" data-background-icon="fa-circle"></div>           

(Achtung: Die Rollo-Device-Werte (und daher die Icon-Reihenfolge) sind bei mir wg. HomeMatic-Rollos genau umgedreht wie bei Thorsten. )

Der Hauptunterschied ist also nur das hinzugefügte "data-fhem-cmd" und dazu folgender Perl-Code in einem eigenen .pm:

### einzelnes Rollo mit einer einzelnen Taste komplett steuern
sub
rollo_ButtonOnStopOffStop($)
{
my $device = shift;

#merkt sich die zuletzt gewählte Richtung in einer globalen data-Variable
my $dir = $data{"{$device}_dir"} || "up";
if ($dir eq "") { $dir="up"; }

    #checke wie lange die letzte Meldung her ist. Wenn es lange(>30Sek.) her ist, dann ignoriere die gemerkte Richtung und fahre vormittags nach oben, sonst nach unten :-)
    my $letzteDeviceTime = time_str2num( InternalVal($device,"protLastRcv","2000-01-01 00:00:00") );
    if (jetzt_num() - $letzteDeviceTime > 30) {
    my $hour = int(strftime("%H",localtime(time)));
    if ($hour>3 and $hour<12) { $dir="down"; }
    else { $dir="up"; }
    }

if ( ReadingsVal($device,"motor","nix") =~ "stop:.*" ) {
my $val = Value($device);
if ( $val eq "on" or ($dir eq "up" and $val ne "off") ) {
$data{"{$device}_dir"}="down";
fhem("set $device off");
return 1;
}
#else:
$data{"{$device}_dir"}="up";
fhem("set $device on");
return 2;
}
#else:
    fhem("set $device stop");
return 0;
}

sub
jetzt_num()
{
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    return mktime($sec, $min, $hour, $mday, $mon, $year, 0, 0, -1);
}

(Anm.: Ist vielleicht nicht das sauberste, in $data etwas dauerhaft abzulegen (nämlich die zuletzt gedrückte Richtung), aber der Wert ist ja nicht dauerhaft wichtig.  ;) )

Diesen Code verwende ich auch von physischen Tastern aus, an Stellen wo an der Wand nur noch ein Taster frei war (statt einem Taster für rauf und einen anderen für runter).

Vielleicht hilft es jemandem!
Christian/Heimbär

en-trust

Ich habe meine Anzeige auch mal etwas verändert und noch ein warn eingebunden der den Stand der Jalousie anzeigt.

<div data-type="symbol" class="large warn shadow semiblue" data-device="SZ.Jalousie.Rechts" data-warn="pct" data-get="level" data-icons='["oa-fts_shutter_100","oa-fts_shutter_90","oa-fts_shutter_80","oa-fts_shutter_70", "oa-fts_shutter_60","oa-fts_shutter_50","oa-fts_shutter_40","oa-fts_shutter_30", "oa-fts_shutter_20","oa-fts_shutter_10","oa-fts_window_2w"]' data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]' data-colors='["#1eb446","#32a054","green","green","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050","#505050"]' data-background-icon="none" data-on-background-color="semiblue" data-off-background-color="semiblue">                                                                                      
</div></td><td>                                                                                         
<div data-type="select" data-device="SZ.Jalousie.Rechts" data-items='["0","25","50","75","100"]' data-alias='["Zu","25%","50%","75%","Auf"]' data-get="level" data-set="" class="">                                                                                 
</div>


Das klappt auch soweit außer die Jalousie steht au 0 (also zu) oder 100 (offen). Bei 100 zeigt er mir ein Ausrufezeichen obwohl level und pct bei 100 stehen...

Internals:
   CFGFN      ./FHEM/fhem_activeactors.cfg
   DEF        49DA45
   IODev      myCUL
   LASTInputDev myCUL
   MSGCNT     7
   NAME       SZ.Jalousie.Rechts
   NOTIFYDEV  global
   NR         207
   STATE      hoch
   TYPE       CUL_HM
   lastMsg    No:8B - t:10 s:49DA45 d:F11034 0601C800
   myCUL_MSGCNT 7
   myCUL_RAWMSG A0D8BA41049DA45F110340601C800::-82:myCUL:
   myCUL_RSSI -82
   myCUL_TIME 2018-02-16 07:31:44
   protCmdDel 1
   protLastRcv 2018-02-16 07:31:44
   protResnd  3 last_at:2018-02-15 18:13:41
   protResndFail 1 last_at:2018-02-15 18:13:45
   protSnd    10 last_at:2018-02-16 07:31:44
   protState  CMDs_done
   rssi_at_myCUL lst:-82 avg:-78 cnt:7 max:-71 min:-87
   rssi_myCUL cnt:5 max:-70 min:-84 lst:-80 avg:-79
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1518762704.33157
           VALUE      on
   READINGS:
     2018-02-16 07:31:21   CommandAccepted yes
     2017-07-14 13:26:41   D-firmware      2.8
     2017-07-14 13:26:41   D-serialNr      NEQ0076387
     2018-02-03 17:16:12   PairedTo        0xF11034
     2017-09-09 22:45:10   R-driveDown     23.1 s
     2017-07-21 07:44:37   R-driveTurn     0.5 s
     2017-09-09 22:45:10   R-driveUp       24 s
     2017-07-21 07:44:36   R-pairCentral   0xF11034
     2017-07-21 07:44:37   R-powerUpAction off
     2017-07-21 07:44:37   R-sign          off
     2018-02-03 17:16:12   RegL_00.        02:01 0A:F1 0B:10 0C:34 15:FF 18:00 00:00
     2018-02-03 17:16:13   RegL_01.        08:00 09:00 0A:00 0B:00 0C:E7 0D:00 0E:F0 0F:05 10:00  30:06 57:24 56:00 00:00
     2018-02-16 07:31:44   deviceMsg       on (to myVCCU)
     2018-02-16 07:31:44   level           100
     2018-02-16 07:31:44   motor           stop:on
     2018-02-16 07:31:44   pct             100
     2018-01-04 19:16:26   powerOn         2018-01-04 19:16:26
     2018-02-16 07:31:44   recentStateType info
     2018-02-16 07:31:44   state           on
     2018-02-16 07:31:44   statePosition   0
     2018-02-16 07:31:44   timedOn         off
   helper:
     HM_CMDNR   139
     cSnd       01F1103449DA45010E,11F1103449DA450201C8
     dlvlCmd    ++A011F1103449DA450201C8
     mId        006A
     regLst     ,0,1,3p
     rxType     1
     supp_Pair_Rep 0
     dir:
       cur        stop
       rct        up
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       lstRecType 10
       newChn     +49DA45,00,00,00
       nextSend   1518762704.32053
       nxtSndMcnt 8B
       rxt        0
       tgtDly     88
       vccu       myVCCU
       lRcTm:
         myCUL      322079776
         tnms       491765097
       p:
         49DA45
         00
         00
         00
       prefIO:
         myCUL
     mRssi:
       mNo        8B
       io:
         myCUL:
           -80
           -80
     prt:
       bErr       0
       sProc      0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rpt:
       IO         myCUL
       flg        A
       ts         1518762704.24034
       ack:
         HASH(0x54a6ef8)
         8B8002F1103449DA4500
     rssi:
       at_myCUL:
         avg        -78
         cnt        7
         lst        -82
         max        -71
         min        -87
       myCUL:
         avg        -79
         cnt        5
         lst        -80
         max        -70
         min        -84
     tmpl:
Attributes:
   IODev      myCUL
   IOgrp      myVCCU:myCUL
   autoReadReg 4_reqStatus
   comment    1-fach Schaltaktor fuer Schlafzimmer-Jalousie (Rechts)
   devStateIcon auf:fts_shutter_10 zu:fts_shutter_100 *:fts_shutter_50
   event-on-change-reading state
   eventMap   on:hoch off:runter stop:stop
   expert     2_raw
   firmware   2.8
   group      Aktoren
   icon       fts_shutter_automatic
   model      HM-LC-Bl1PBU-FM
   peerIDs    00000000,
   room       CUL_HM,Schlafzimmer
   serialNr   NEQ0076387
   subType    blindActuator
   userReadings statePosition {if(ReadingsVal($name,"state","0") eq "up" or ReadingsVal($name,"state","0") eq "down" or ReadingsVal($name,"state","0") eq "closed" or ReadingsVal($name,"state","0") eq "open_ack") {ReadingsVal($name,"state",0)} else {ReadingsVal($name,"position",0)};}
   webCmd     statusRequest:toggleDir:pct:on:off:up:down:stop


Bei Null zeigt er gar kein warn.

setstate

Wenn bei 100 ein ! kommt, hast du noch eine ältere Version. Jetzt können mehr als zweistellige Zahlen angezeigt werden. Null wird nicht angezeigt. Ist normal bei einer warn Funktion. 0 = keine Items

en-trust

#117
Ich habe zum warn noch data-warn-off und data-warn-on gefunden. Damit kann man das warn wohl für bestimmte Fälle aussteuern.

https://wiki.fhem.de/wiki/FTUI_Widget_Switch

Allerdings ein data-warn-off = "0|100" bringt Ausrufezeichen und für die restlichen dann gar kein warn mehr.

Aber wieso ältere Version? Ich update regelmäßig fhem

holzwurm83

Hallo zusammen,

ich habe mir hier von euch einige anregungen geholt für meine Jalousien. Jetzt komme ich nur mit der Darstellung des Rollo-Icons nicht klar. Zu = Offen und andersrum.  Das läuft leider genau verkehrt rum. Ich habe die Werte schon getauscht nur hat das leider nichts gebracht.

Hier mal die ganze Box.

<li data-row="6" data-col="1" data-sizex="2" data-sizey="3">
    <header>Jalousie</header>
<div class="sheet">
<div class="row">
<div class="cell">
<div class="row">
<div data-type="popup" data-height="300px" data-width="250px" data-mode="fade">
<div class="col-50 normal "
data-type="symbol"
data-device="Rol_WZ_OST"
data-get="level"
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40",
        "oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80",
  "oa-fts_shutter_90","oa-fts_shutter_100"]'
  data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]'
  data-on-color="#2A2A2A"
  data-on-background-color="#aa6900">
</div>
<div class="dialog">
<header>Jalousie Ost</header>
<div class="">
<div data-type="volume" data-device="Rol_WZ_OST" data-min="0" data-max="100" data-get="level" data-set="level" data-tickstep='4' class="dim-tick big top-space"></div>
<div data-type="label" class="centered top-narrow" >Lamellenstellung</div>
</div>
</div>
</div>
<div class="col-50 tiny triplebox-v left-space-1x top-space-3x" >
<div data-type="push"
data-device="Rol_WZ_OST"
data-icon="fa-chevron-up"
data-background-icon="fa-square-o"
data-set-on="up">
</div>
<div data-type="push"
data-device="Rol_WZ_OST"
data-icon="fa-stop"
data-background-icon="fa-square-o"
data-set-on="stop">
</div>
<div data-type="push"
data-device="Rol_WZ_OST"
data-icon="fa-chevron-down"
data-background-icon="fa-square-o"
data-set-on="down">
</div>
</div>
</div>
</div>
<div class="cell">
<div class="row">
<div data-type="popup" data-height="300px" data-width="250px" data-mode="fade">
<div class="col-50 normal "
data-type="symbol"
data-device="Rol_WZ_SUED"
data-get="level"
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40",
        "oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80",
  "oa-fts_shutter_90","oa-fts_shutter_100"]'
  data-get-on='["0","10","20","30","40","50","60","70","80","90","100"]'
  data-on-color="#2A2A2A"
  data-on-background-color="#aa6900">
</div>
<div class="dialog">
<header>Jalousie Süd</header>
<div class="">
<div data-type="volume" data-device="Rol_WZ_SUED" data-min="0" data-max="100" data-get="level" data-set="level" data-tickstep='4' class="dim-tick big top-space"></div>
<div data-type="label" class="centered top-narrow" >Lamellenstellung</div>
</div>
</div>
</div> <div class="col-50 tiny triplebox-v left-space-1x top-space-3x" >
<div data-type="push"
data-device="Rol_WZ_SUED"
data-icon="fa-chevron-up"
data-background-icon="fa-square-o"
data-set-on="up">
</div>
<div data-type="push"
data-device="Rol_WZ_SUED"
data-icon="fa-stop"
data-background-icon="fa-square-o"
data-set-on="stop">
</div>
<div data-type="push"
data-device="Rol_WZ_SUED"
data-icon="fa-chevron-down"
data-background-icon="fa-square-o"
data-set-on="down">
</div>
</div>
</div>
</div>
</div>
</div>

           </li>


Ist bestimmt nur eine Kleinigkeit, aber ich sehe diese wohl mit dem Brett vorm Kopf gerade nicht. :)
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

harald654

Hallo,
ich würde gerne auch die sehr schöne Darstellung von Thorsten Pferdekaemper verwenden,
allerdings bekomme ich meine Rolladenstellung als "dim xx" angezeigt, wodurch folgendes nicht funktioniert:
<div data-type="symbol" class="big narrow" data-device="ZWave_SWITCH_MULTILEVEL_24" data-get="STATE"
data-icons='["oa-fts_window_2w","oa-fts_shutter_10","oa-fts_shutter_20","oa-fts_shutter_30","oa-fts_shutter_40",
"oa-fts_shutter_50","oa-fts_shutter_60","oa-fts_shutter_70","oa-fts_shutter_80",
"oa-fts_shutter_90","oa-fts_shutter_100"]'
data-get-on='["dim 0","dim 10","dim 20","dim 30","dim 40","dim 50","dim 60","dim 70","dim 80","dim 90","dim 100"]' data-on-color="#2A2A2A"
data-on-background-color="#aa6900">
</div>

und nur durch Angabe jedes einzelnen Zustand funktioniert die Anzeige:
<div class="col bigger readonly" data-type="symbol"  data-device="ZWave_SWITCH_MULTILEVEL_24" data-get="state"
data-icons='["oa-fts_window_2w","oa-fts_window_2w","oa-fts_window_2w","oa-fts_window_2w","oa-fts_window_2w","oa-fts_window_2w",
"oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10","oa-fts_shutter_10",
"oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20","oa-fts_shutter_20",
"oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30","oa-fts_shutter_30",
"oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40","oa-fts_shutter_40",
"oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50","oa-fts_shutter_50",
"oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60","oa-fts_shutter_60",
"oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70","oa-fts_shutter_70",
"oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80","oa-fts_shutter_80",
"oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90","oa-fts_shutter_90",
"oa-fts_shutter_100","oa-fts_shutter_100","oa-fts_shutter_100","oa-fts_shutter_100","oa-fts_shutter_100","oa-fts_shutter_100"]'      
data-get-on='["dim 96","dim 97","dim 98","dim 99","dim 100","on", 
"dim 86","dim 87","dim 88","dim 89","dim 90","dim 91","dim 92","dim 93","dim 94","dim 95",
"dim 76","dim 77","dim 78","dim 79","dim 80","dim 81","dim 82","dim 83","dim 84","dim 85",
"dim 66","dim 67","dim 68","dim 69","dim 70","dim 71","dim 72","dim 73","dim 74","dim 75",
"dim 56","dim 57","dim 58","dim 59","dim 60","dim 61","dim 62","dim 63","dim 64","dim 65",
"dim 46","dim 47","dim 48","dim 49","dim 50","dim 51","dim 52","dim 53","dim 54","dim 55",
"dim 36","dim 37","dim 38","dim 39","dim 40","dim 41","dim 42","dim 44","dim 44","dim 45",
"dim 26","dim 27","dim 28","dim 29","dim 30","dim 31","dim 32","dim 33","dim 34","dim 35",
"dim 16","dim 17","dim 18","dim 19","dim 20","dim 21","dim 22","dim 23","dim 24","dim 25",
"dim 6","dim 7","dim 8","dim 9","dim 10","dim 11","dim 12","dim 13","dim 14","dim 15",
"off","dim 0","dim 1","dim 2","dim 3","dim 4","dim 5"]' 
data-on-color="gray" data-on-background-color="#2A2A2A">
</div>


Was jedoch sehr umständlich ist und den Code schwer lesbar macht. Jemand ne Idee wie ich dies vereinfachen könnte?