New FHEM Tablet UI

Begonnen von setstate, 22 Februar 2015, 23:37:24

Vorheriges Thema - Nächstes Thema

P.A.Trick

Zitat von: nesges am 18 April 2015, 17:36:07
Gute Idee! Das control-File hat ja schon die benötigten Infos, das müsste man nur prüfen und mit den lokalen Files vergleichen. Kann man mit HTTPMOD machen, man braucht nur eine Prüffunktion, die man irgendwo in eine 99_myUtils.pm legt:

sub controlfile_updatecheck($) {
    use Date::Parse;
    my $raw = shift;

    my $response='';
    my @lines = split "\n", $raw;
    foreach my $line (@lines) {
        my @remote= split " ", $line;
        $remote[1]=~s/_/ /;
       
        my @local = stat($remote[3]);
        if($local[7] != $remote[2] || $local[9] < str2time($remote[1])) {
            $response .= $remote[0]." ".$remote[3]."\n";
        }
    }
    return $response;
}


Eine Funktion um das Update durchzuführen und die Readings zu aktualisieren:

sub controlfile_update($) {
    my $device = shift;
    my $url = InternalVal($device, 'url', '');
    my $def = InternalVal($device, 'DEF', '');
   
    fhem("setreading $device available updated");
    fhem("setreading $device files -");
    fhem("define at_recheck_$device at +00:05:00 modify $device $def");
    fhem("update all $url");
}


Und in die fhem.cfg kommen dann diese Definitionen:

define UPDATE_FTUI HTTPMOD https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt 14400
attr UPDATE_FTUI alias Fhem Tablet UI
attr UPDATE_FTUI userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_FTUI event-on-change-reading available,files
attr UPDATE_FTUI reading01Name files
attr UPDATE_FTUI reading01Regex (?s)(UPD.*)
attr UPDATE_FTUI reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_FTUI reading02Name available
attr UPDATE_FTUI reading02Regex (?s)(UPD.*)
attr UPDATE_FTUI reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_FTUI room hidden

define UPDATE_WIDGETS HTTPMOD https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt 14400
attr UPDATE_WIDGETS alias Widgets for Fhem Tablet UI
attr UPDATE_WIDGETS userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_WIDGETS event-on-change-reading available,files
attr UPDATE_WIDGETS reading01Name files
attr UPDATE_WIDGETS reading01Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_WIDGETS reading02Name available
attr UPDATE_WIDGETS reading02Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_WIDGETS room hidden

define UPDATES readingsGroup UPDATE_FTUI:available,files UPDATE_WIDGETS:available,files
attr UPDATES valueFormat { ($READING eq 'files' && $VALUE !~ /^-?$/)?'<a href="?cmd={controlfile_update(\'$DEVICE\')}">[Start Update]</a>':$VALUE }
attr UPDATES alias 3d Party Updates
attr UPDATES room System


In der readingsGroup wird ein Link mit dem Text "[Start Update]" angezeigt, sobald ein Update verfügbar ist. Die readingsGroup kann man sicher noch schöner machen, aber da kenn ich mich nicht aus und überlasse das euch :)

PS: Habe ein paar Stellen verändert, am besten komplett neu übernehmen.

Bei mir wirft die Funktion controlfile_updatecheck Fehler - gibt's hiervon eine neue Version?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

DJ_SAMMY190

#2416
Moin,
so hier ma Screenies:

Im FF kommt das so wie 01 im Anhang
im Edge und aufm Tablet Chrome und Standardbrowser wie Bild 2.
Aber auch mit einer älteren FTUI Version hab ich das Problem. -.-
Beim RGB zb wird der Wert in der Mitte aber angezeigt ?

Zitat von: devil77
Du könntest in deinem Thermostat ein Userreading anlegen das die Ventillstellung abfragt.
In dem Widget kannst Du das dann abfragen und hättest alles in einem.

Hat wer da gerade nen Gedankenanstoß ? mit userreadings noch nicht auseinandergesetzt ;) und auch nun wieder Arbeiten ;)
Danke ;)

Grüßßeee
FHEM auf Raspberry Pi 2 b mit Homematic Komponenten

Fischei

Hallo,

erstmal danke für das super Frontend! Ist einfach ein Traum!

Ich bin aber noch auf der Suche nach guten Rollo-Widgets. Im Thread hab ich leider nichts gefunden.
Ich möchte gerne 4 Buttons, mit denen ich die Rollos steuern kann: Auf=100, Zu=0, Mittig= 25 und Stop=stop.

Ich hätte dies mit switch probiert aber irgendwie bekommen ich es nicht so hin:
<div class="cell left">
<div data-type="switch" data-device="wz_Rollo_Rechts "
      data-get-off="((?!Wert1).)*"
      data-get-on="100" class="cell" ></div>
<div data-type="label" class="cell">Auf</div>
<div data-type="switch" data-device="wz_Rollo_Rechts "
      data-get-off="((?!Wert2).)*"
      data-get-on="25" class="cell" ></div>
<div data-type="label" class="cell">25</div>
<div data-type="switch" data-device="wz_Rollo_Rechts "
      data-get-off="((?!Wert3).)*"
      data-get-on="0" class="cell" ></div>
<div data-type="label" class="cell">Zu</div>
<div data-type="switch" data-device="wz_Rollo_Rechts "
      data-get-off="((?!Wert4).)*"
      data-get-on="stop" class="cell" ></div>
<div data-type="label" class="cell">Stop</div>
</div>


Das setzen funktioniert, aber ich möchte gerne, dass z.B. der Auf-Button an ist wenn die Rollos auf sind.
Was muss ich hier bei data-get-off setzen? Kann ich hier Bereiche setzen, z.B. so dass bei dem Wert 100-80 der Auf-Button an ist usw.
Werden hier die Buttons auch richtig markiert, wenn ich die Rollos am Wandschalter bediene.

Danke schon mal für eure Hilfe.

Ich würde mich auch auf andere Rollo-Steuerungs Beispiele freuen.

setstate

@DJ_SAMMY190:
Ich vermute eher: zu wenig Platz fürs Thermostat. Probiere mal das Gridster-Element breiter zu machen, dann müsste der Platz ausreichen und der Zahlenwert wird angezeigt.

Syntaxterror

Hallo,

ich hab ein merkwüriges Phänomen.
Im Menü habe ich den Home-button und einen Weiter-Button.
Wenn ich den Weiter-Butten anklicke, komme ich zur nächsten Seite.
Dort habe ich im Menü einen Zurück-button. Beide sind jeweils ein Link zur anderen Seite.
Wenn ich aber auf die zweite Seite gekommen bin, ist dort der Zurück-button aktiviert und liefert keine Funktion.

index.html
....
  <div class="gridster">

    <header>MENU</header>
    <div class="cell">
        <div data-type="pagetab" data-url="index.html"  data-icon="fa-home" class="cell"></div>
<div data-type="pagetab" data-url="raume.html" data-icon="oa-control_building_s_all" class="cell" data-on-color'#aa6900' data-off-color '#505050'></div>
        <div data-type="pagetab" data-url="kalender.html" data-icon="fa-calendar" class="cell"></div>
<!-- <div data-type="pagetab" data-url="index_7.html" data-icon="fa-phone" class="cell"></div> -->
<div data-type="pagetab" data-url="wetter.html" data-icon="oa-weather_station" class="cell"></div>
<div data-type="pagetab" data-url="fahrzeug.html" data-icon="fa-automobile" class="cell"></div>
<div data-type="pagetab" data-url="media.html" data-icon="oa-it_radio" class="cell"></div>
<div data-type="pagetab" data-url="index2.html" data-icon="oa-control_arrow_rightward" class="cell" data-on-color'#aa6900' data-off-color '#505050'></div>


    </div>

....

index2.html
....
    <header>MENU</header>
    <div class="cell">
        <div data-type="pagetab" data-url="index.html"  data-icon="fa-home" class="cell"></div>
<div data-type="pagetab" data-url="raume.html" data-icon="oa-control_building_s_all" class="cell" data-on-color'#aa6900' data-off-color '#505050'></div>
        <div data-type="pagetab" data-url="kalender.html" data-icon="fa-calendar" class="cell"></div>
<!-- <div data-type="pagetab" data-url="index_7.html" data-icon="fa-phone" class="cell"></div> -->
<div data-type="pagetab" data-url="wetter.html" data-icon="oa-weather_station" class="cell"></div>
<div data-type="pagetab" data-url="fahrzeug.html" data-icon="fa-automobile" class="cell"></div>
<div data-type="pagetab" data-url="cam.html" data-icon="oa-it_camera" class="cell"></div>
<div data-type="pagetab" data-url="index.html" data-icon="oa-control_arrow_leftward" class="cell" data-on-color'#aa6900' data-off-color '#505050'></div>
    </div>
</ul>

....

Hat einer eine Idee?
FHEM5.7produktiv Pi3+Pi2,CUL868,CUL433,ser2net,DS2482 mit ca.30Sensoren/Aktoren, ca.100xHomematic,Gertboard+GPIO, 10xLaCrosse

setstate

#2420
Zitat von: Fischei am 08 September 2015, 21:26:34
Hallo,

erstmal danke für das super Frontend! Ist einfach ein Traum!

Ich bin aber noch auf der Suche nach guten Rollo-Widgets. Im Thread hab ich leider nichts gefunden.
Ich möchte gerne 4 Buttons, mit denen ich die Rollos steuern kann: Auf=100, Zu=0, Mittig= 25 und Stop=stop.

....
Das setzen funktioniert, aber ich möchte gerne, dass z.B. der Auf-Button an ist wenn die Rollos auf sind.
Was muss ich hier bei data-get-off setzen? Kann ich hier Bereiche setzen, z.B. so dass bei dem Wert 100-80 der Auf-Button an ist usw.
Werden hier die Buttons auch richtig markiert, wenn ich die Rollos am Wandschalter bediene.

Danke schon mal für eure Hilfe.

Ich würde mich auch auf andere Rollo-Steuerungs Beispiele freuen.

Ich habe mal ein Beispiel mit eckigen Buttons erstellt:

<div>
    <div data-type="switch" data-device="dummy1"
      data-get-on="100|[89][0-9]" data-get-off="!on"
      data-set-on="100" data-set-off=""
      data-icon="fa-angle-double-up" data-background-icon="fa-square" ></div>
    <div data-type="label" class="inline w1x">Auf</div>
</div>
<div>
    <div data-type="switch" data-device="dummy1"
      data-get-on="[1-7][0-9]" data-get-off="!on"
      data-set-on="25" data-set-off=""
      data-icon="fa-angle-down" data-background-icon="fa-square"></div>
    <div data-type="label" class="inline w1x">25</div>
</div>
<div>
    <div data-type="switch" data-device="dummy1"
      data-get-on="[0-9]" data-get-off="!on"
      data-set-on="0" data-set-off=""
      data-icon="fa-angle-double-down" data-background-icon="fa-square"></div>
    <div data-type="label" class="inline w1x">Zu</div>
</div>
<div>
    <div data-type="push" data-device="dummy1"
      data-set-on="stop" data-off-color="#2A2A2A"
      data-icon="fa-ellipsis-h" data-background-icon="fa-square"></div>
    <div data-type="label" class="inline w1x">Stop</div>
</div>


Zur Erklärung der Parameter:
data-get-on="100|[89][0-9]"  -> wann soll der switch AN sein? Angabe als RegEx: Bei 100 oder 80-99
data-get-off="!on"                  -> wann soll der switch AUS sein? Angabe mit Schlüsselwort: "nicht Wert von get-on"
data-set-on="100"                  -> Was soll bei Schalten auf AN gesendet werden: "100"
data-set-off=""                       -> Was soll bei Schalten auf AUS gesendet werden: Schlüsselwort: "nichts senden" + "Schalten auf AUS unterdrücken"

Mit Stop gehen natürlich alle Button aus, weil der STATE dann 'stop' ist und nicht mehr numerisch. Es wäre daher geschickter, wenn die drei oberen Buttons auf ein anderes Reading des Rollos zeigen - z.B. data-get="value"

setstate

Zitat von: Syntaxterror am 08 September 2015, 22:24:46
Hallo,

ich hab ein merkwüriges Phänomen.
Im Menü habe ich den Home-button und einen Weiter-Button.
Wenn ich den Weiter-Butten anklicke, komme ich zur nächsten Seite.
Dort habe ich im Menü einen Zurück-button. Beide sind jeweils ein Link zur anderen Seite.
Wenn ich aber auf die zweite Seite gekommen bin, ist dort der Zurück-button aktiviert und liefert keine Funktion.

....

Hat einer eine Idee?

Probiere mal eindeutige Dateinamen für alle Files. Also statt index.html und index2.html -> index.html und next.html

nesges

Zitat von: P.A.Trick am 08 September 2015, 20:16:23
Bei mir wirft die Funktion controlfile_updatecheck Fehler - gibt's hiervon eine neue Version?

Was für Fehler werden denn geworfen?

DJ_SAMMY190

Ja hat geklappt mit breite von 2. Komisch aber danke. Dementsprechend umdesignd. Noch wer eine Idee zum userreading? Danke im voraus mfg

Gesendet von meinem Z30 mit Tapatalk

FHEM auf Raspberry Pi 2 b mit Homematic Komponenten

Kermit20

#2424
Hallo Alle,

zuerst mal WOW  ;) Ich habe den Thread vor ein paar Tagen entdeckt und war infiziert... Ich kann mit dem UI endlich den WAF steigern und auch die Frau findet wie bei einigen mehr gefallen für die "Männerspielerei"  :-X

Besonderen Dank an setstate und nesges und alle anderen, die sich hier bisher eingebracht haben und auch ihren Code zur Verfügung stellen.

Ich habe nun auch angefangen mein persönliches UI zu basteln und komme langsam voran (siehe Screenshot). Allerdings habe ich aktuell ein kleines Problem zu dem ich im Thread (zugegeben es fehlen noch 56 Seiten) und auch Inder sonstigen Doku keine Lösung gefunden habe:

Mein Homestatus.... Ich erfasse den Status mittels Modul "GEOFANCY / Residents" als Client habe ich EgiGeozone (Android Handys) <-- Das Modul funktioniert auch einwandfrei.

Aus der Doku habe ich entnommen, dass das Widget "Homestatus" die Zustände 1 - 4 beherrscht und entsprechend über Alias "lesbar" die Setbefehle geben an FHEM dann ja auch den Status 1 - 4.

Was bei mir nun nicht funktioniert ist die Anzeige des Status sowie die Übergaben eine Status zwischen Widget und FHEM. Ich habe bereits unter dem Residents Atribut  rr_locationHome eine 1 eingetragen aber auch das brachte keinen Erfolg (weder Anzeige noch Staus setzen).

Ich glaube ich habe hier einen groben Denkfehler und wäre dankbar für einen Tipp, wie ich die Lücke zwischen Widget und FHEM schließe.

#### ERLEDIGT ####

Nebenbei werden die Icons nicht Angezeigt. Kann mir jemand sagen, zu welcher lib sie gehören ? Andere "fa-" Icons funktionieren.

Hier mal die CFG:

           
<header>HOMESTATUS JAN</header>
               <div    data-type="homestatus" data-device='Jan'
                         data-get-on='["1","2","3","4"]'
                         data-alias='["home","work","absent","holiday"]'
                         data-icons='["fa-home","fa-laptop","fa-car","fa-suitcase"]'>

                </div>


#### Lösung ####

Konfig neu eingespielt und data-version='residents' verwendet. Nun geht alles. Fehler lag darin, dass ich nur die 3 Status Möglichkeiten haben wollte und daher auf die Data-Version verzichtet.

Die Icons haben ein Problem mit dem IE im Chrome werden sie angezeigt.

#### Lösung  ENDE ####

Der Code ist nicht mehr der Originale, da ich neben der Einbindung noch versucht habe das Sleep auf Work umzustricken.
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

Fischei

Danke dir setstate! Funktioniert super!

DJ_SAMMY190

Moin,

@ setstate geht mit 2.

und an den Rest. Wer ein Wandthermostat zur Steuerung benutzt und die Stellung angezeigt haben möchte füge ein.

attr wandthermostat_esszimmer_Climate ValvePosition { ReadingsVal("heizung_esszimmer_Clima","ValvePosition",0)}

Habs nun rausbekommen ;)
FHEM auf Raspberry Pi 2 b mit Homematic Komponenten

kleinerDrache

Hab mir das UI auch installiert inklusive Update Funktion. Erstklassige Arbeit.

Aber seit die Update Funktion drin ist ne menge Warnungen im log.

2015.09.09 18:23:15 1: HMLAN_Parse: HMLanUSB new condition init
Odd number of elements in anonymous hash at (eval 24) line 1.
Use of uninitialized value $remote[1] in substitution (s///) at ./FHEM/99_myUtils.pm line 160.
Use of uninitialized value $remote[3] in stat at ./FHEM/99_myUtils.pm line 162.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value $remote[1] in substitution (s///) at ./FHEM/99_myUtils.pm line 160.
Use of uninitialized value $remote[3] in stat at ./FHEM/99_myUtils.pm line 162.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value $remote[1] in substitution (s///) at ./FHEM/99_myUtils.pm line 160.
Use of uninitialized value $remote[3] in stat at ./FHEM/99_myUtils.pm line 162.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value $remote[1] in substitution (s///) at ./FHEM/99_myUtils.pm line 160.
Use of uninitialized value $remote[3] in stat at ./FHEM/99_myUtils.pm line 162.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric ne (!=) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
Use of uninitialized value in numeric lt (<) at ./FHEM/99_myUtils.pm line 163.
2015.09.09 18:23:21 1: PERL WARNING: Use of uninitialized value $n in hash element at fhem.pl line 3566.
2015.09.09 18:23:22 1: Error dewpoint: humidity invalid: 0
2015.09.09 18:23:25 2: TCM EnOcean RESPONSE: OK


Das 'odd number' kommt glaube vom virtuellen Sensor für das HM Heizungsventil, genauso die letzte Warnung hab aber noch nicht herausgefunden wieso.
Sind also uninteressant aber den Rest hätte ich gerne gelöst.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

SvenJust

Hallo keinerDrache,

die Warnungen resultieren aus Code in der Datei 99_myUtils.pm. Diese Datei wird von FTUI nicht geändert. Üblicherweise wird der Code in der Datei von Hand hinzugefügt.
ZitatUse of uninitialized value ... at ./FHEM/99_myUtils.pm
Schaue doch in die Datei 99_myUtils.pm in den jeweiligen Zeilen, welcher Code für die Warnungen verantwortlich ist.

VG
Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

P.A.Trick

Zitat von: SvenJust am 09 September 2015, 20:13:07
Hallo keinerDrache,

die Warnungen resultieren aus Code in der Datei 99_myUtils.pm. Diese Datei wird von FTUI nicht geändert. Üblicherweise wird der Code in der Datei von Hand hinzugefügt.Schaue doch in die Datei 99_myUtils.pm in den jeweiligen Zeilen, welcher Code für die Warnungen verantwortlich ist.

VG
Sven

Bei mir tritt es nur auf, wenn Updates vorhanden sind! Mist habe gestern aktualisiert!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn