FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: moonsorrox am 30 Juli 2018, 16:50:08

Titel: Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 30 Juli 2018, 16:50:08
Hallo ich wollte hier nochmals fragen wie ihr z.B. mit einem Spinner die Zeit in ein Dummy eintragt. So eintragen das es aber im Dummy auch angezeigt wird.
Ich habe bisher noch keine Variante gefunden damit das Dummy in Fhem es auch aktualisiert.

Am Beispiel erklärt wird es evtl. etwas besser zu verstehen sein.

Wenn ich in FTUI einen Spinner setze in dieser Art:
<div class="inline">
<div class="valueonly circulate" data-type="spinner" data-device="du_begin_T" data-cmd="setreading" data-get="Stunde" data-set="Stunde" data-min="19" data-max="22" data-step="1" data-unit=" Uhr" data-longdelay="800" data-width="180" data-height="40" data-icon-left="fa-caret-down" data-icon-right="fa-caret-up" data-text-color="green" data-icon-left-color="royalblue" data-icon-right-color="crimson">
</div>
</div>
<div class="inline"><div class="valueonly circulate" data-type="spinner" data-device="du_begin_T" data-cmd="setreading" data-get="Minute" data-set="Minute" data-min="0" data-max="55" data-step="5" data-unit=" min" data-longdelay="800" data-width="180" data-height="40" data-icon-left="fa-caret-down" data-icon-right="fa-caret-up" data-text-color="green" data-icon-left-color="royalblue" data-icon-right-color="crimson">
</div>
</div>


Diese Spinner setzte mir in dem Dummy (du_begin_T) die folgenden Readings:
Minute 45
Stunde 20
state 12:00

Das Dummy wiederum ändert aber seine eingestellte Zeit nicht, aber das Reading (Minute und Stunde) wird von FTUI verwendet in dem Fall 20.45 Uhr.
Die setlist des Dummy bleibt aber weiter auf der Dummyzeit 12.00 Uhr stehen.

Wie bekommt man es hin das das Dummy auch die Zeit ändert..? Ich habe da noch keine Lösung gefunden.
Dummy sieht so aus:
Internals:
   CFGFN      ./FHEM/Aussen.cfg
   NAME       du_begin_T
   NR         1825
   STATE      12:00
   TYPE       dummy
   READINGS:
     2018-07-30 16:25:40   Minute          45
     2018-07-30 16:25:38   Stunde          20
     2018-07-28 19:54:40   state           12:00
Attributes:
   alias      -- Einschaltzeit -- Überwachungslicht
   devStateIcon .*:rc_BLANK
   group      AussenBeleuchtung Terrasse Überwachung
   icon       time_clock@blue
   room       Automation,Draußen
   setList    state:time
   sortby     04
   webCmd     state


anbei Screenshot dummy

Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: TWART016 am 30 Juli 2018, 17:04:43
Ich mache das mit einem Select:

<div class="vbox">
<div class="hbox">
<div data-type="select" data-device="LichtAusIn" data-cmd="setreading" data-get="Device" data-set="Device"
data-items='["LED_Wohnzimmer","LED_Schlafzimmer","avr_zone2"]'
data-alias='["LED Wohnzimmer","LED Schlafzimmer","AVR Zone Schlafzimmer"]'
class="col-5-6">
</div>
<div class="left-space">off in</div>
</div>

<div class="hbox items-space-around">
<div data-type="select" data-device="LichtAusIn" data-cmd="setreading" data-get="Stunden" data-set="Stunden"
data-items='["00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"]'
data-alias='["0 h","1 h","2 h","3 h","4 h","5 h","6 h","7 h","8 h","9 h","10 h","11 h","12 h","13 h","14 h","15 h","16 h","17 h","18 h","19 h","20 h","21 h","22 h","23 h"]'
class="w2x">
</div>

<div data-type="select" data-device="LichtAusIn" data-cmd="setreading" data-get="Minuten" data-set="Minuten"
data-items='["00","01","02","03","04","05","06","07","08","09","10","15","20","25","30","35","40","45","50","55"]'
data-alias='["0 min","1 min","2 min","3 min","4 min","5 min","6 min","7 min","8 min","9 min","10 min","15 min","20 min","25 min","30 min","35 min","40 min","45 min","50 min","55 min"]'
class="w2x">
</div>

<div data-type="select" data-device="LichtAusIn" data-cmd="setreading" data-get="Sekunden" data-set="Sekunden"
data-items='["00","05","10","15","20","25","30","35","40","45","50","55"]'
data-alias='["0 sek","5 sek","10 sek","15 sek","20 sek","25 sek","30 sek","35 sek","40 sek","45 sek","50 sek","55 sek"]'
class="w2x">
</div>
</div>
</div>

<div data-type="link" data-fhem-cmd="{LED_aus()}"
class="round centered"
data-width="200" data-height="40"
data-color="white"
data-background-color="green"
data-icon="fa-feed">
OK
</div>
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 30 Juli 2018, 17:16:51
Ja das hatte ich auch mal eingesetzt aber mir gefiel diese Variante der Zeitsetzung nicht..!
Ich fand die Spinner besser, habe aber eben besagtes Problem der Dummy Aktualisierung.

ich hatte auch schon an ein DOIF gedacht auf der Fhem Seite, aber da ich einige Zeiten habe sind das auch eben soviele DOIFs
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: setstate am 30 Juli 2018, 23:56:21
man kann STATE mit

attr du_begin_T stateFormat Stunde:Minute

formatieren. Aber state nicht.
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: derHeimwerker am 31 Juli 2018, 08:14:15
Moin ,

belasse es doch bei den Stunden und Minuten readings und füge diese zu einem Zeit-reading (in einer kleinen perl Routine) zusammen. So habe ich das bei mir gelöst. Dafür müsstest du evtl. aber noch einen auslösenden Button, der die perl Routine aufruft) einfügen.

Gruß
Tom
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 31 Juli 2018, 13:37:05
Zitat von: setstate am 30 Juli 2018, 23:56:21
man kann STATE mit

attr du_begin_T stateFormat Stunde:Minute

formatieren. Aber state nicht.

das hatte ich auch schon mal gemacht, aber wenn die Stunde und die Minute einstellig ist was ja in den Morgenzeiten der Fall ist, dann steht dort  für 06:05 Uhr 6:5 drin das sieht irgendwie nicht wie ein Zeit aus. (siehe STATE)
Das müßte man dann anders formatieren, aber das habe ich nicht hinbekommen.

Das Dummy habe ich jetzt mal so drin:
Internals:
   CFGFN      ./FHEM/Aussen.cfg
   NAME       du_end_T
   NR         1828
   STATE      6:5
   TYPE       dummy
   READINGS:
     2018-07-31 13:36:07   Minute          5
     2018-07-30 16:25:44   Stunde          6
     2018-07-31 13:31:57   state           STATE 06:05
Attributes:
   alias      -- Ausschaltzeit -- Überwachungslicht
   devStateIcon .*:rc_BLANK
   group      AussenBeleuchtung Terrasse Überwachung
   icon       time_clock@blue
   room       Automation,Draußen
   setList    STATE:time
   sortby     05
   stateFormat Stunde:Minute
   webCmd     STATE
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 04 August 2018, 17:39:54
hier mal meine Rückmeldung, das mit dem Attribut
attr du_begin_T stateFormat Stunde:Minute
funktioniert nicht mit einstelligen Werten in meinem Beispiel 06:05 Uhr

Da kommt diese Fehlermeldung
Fehlermeldung:
error: Wrong timespec 6:5: either HH:MM:SS or {perlcode}
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: teichtaucher am 04 September 2018, 21:21:02
Hallo, ich muss diesen Threat nochmal auskramen weil ich vor dem gleichem Problem stand. Ich möchte zwei FTUI Spinner verwenden, um in einem Uhrzeit-Dummy jeweils Stunden und Minuten zu setzen. Ich habe testweise die gleichen Spinner wie bei moonsorrox in meine FTUI Oberfläche eingebaut und Test-Dummies angelegt.
Ich konnte das Problem mit der führenden Null bei den Minuten über stateFormat beim Uhrzeit-Dummy gelöst:

attr testzeit stateFormat {sprintf("%02d:%02d", ReadingsVal("testzeit","Stunde","18"), ReadingsVal("testzeit","Minute","00")) }

Eine Frage habe ich jedoch zu ReadingsVal: Gibt es eine einfachere Variante aus dem stateFormat auf ein Reading des eigenen Devices zuzugreifen? Also so was wie

attr testzeit stateFormat {sprintf("%02d:%02d", ReadingsVal(this,"Stunde","18"), ReadingsVal(this,"Minute","00")) }

Ich würde gern bei einigen Uhrzeit-Dummy einen generischen Ausdruck bei stateFormat setzen ohne dass ich immer das Device im ReadingsVal ändern muss.
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 05 September 2018, 16:47:21
wie sieht dein testzeit dummy aus, veröffentliche es mal.
Ich habe das mal bei mir eingebaut, aber es bleibt weiterhin bei der einstelligen Anzeige  :-\
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: teichtaucher am 06 September 2018, 20:11:05

Internals:
   CFGFN     
   NAME       testzeit
   NR         341461
   STATE      18:45
   TYPE       dummy
   READINGS:
     2018-09-05 20:20:55   Minute          45
     2018-09-05 20:20:56   Stunde          18
     2018-09-04 21:25:28   state           STATE 12:00
Attributes:
   readingList Stunde:Minute:00
   stateFormat {sprintf("%02d:%02d", ReadingsVal($name,"Stunde","18"), ReadingsVal($name,"Minute","00")) }
   userReadings Stunde {()},Minute {()},


$name habe ich jetzt im stateFormat verwendet damit der Ausdruck so generisch ist, dass ich ihn einfach in jedes Dummy ohne Anpassung kopieren kann.

Ich hatte auch schon

attr setList state:time

gesetzt. Aber das hat sich auch nicht anders verhalten.
Einziger Schönheitsfehler in dem Dummy ist dass es STATE und state gibt und beide internals andere Werte haben.
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 07 September 2018, 13:47:51
na das ist ja das was ich aktuell bemängele, dass im "state" immer das eingetragene über die Fhem auf der Weboberfläche steht und im "STATE" das aus FTUI

mein dummy sieht aktuell so aus
Internals:
   CFGFN      ./FHEM/Aussen.cfg
   NAME       du_end_T
   NR         1835
   STATE      07:05
   TYPE       dummy
   READINGS:
     2018-09-07 13:38:13   Minute          5
     2018-09-07 13:38:11   Stunde          7
     2018-09-05 16:53:36   state           08:10
Attributes:
   alias      -- Ausschaltzeit -- Überwachungslicht
   devStateIcon .*:rc_BLANK
   group      AussenBeleuchtung Terrasse Überwachung
   icon       time_clock@blue
   readingList Stunde:Minute:00
   room       Automation,Draußen
   setList    state:time
   sortby     05
   stateFormat {sprintf("%02d:%02d", ReadingsVal($name,"Stunde","18"), ReadingsVal($name,"Minute","00")) }
   userReadings Stunde {()},Minute {()}
   webCmd     state

aber es werden nur einstellige Zahlen eingetragen bei Stunde und Minute, aktuell im dummy Reading im STATE ist zu sehen 07:05.
Ich lasse das mal so drin stehen mal schauen ob er einen Fehler produziert.
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: teichtaucher am 07 September 2018, 16:59:31
Ich finde das auch nicht optimal. Vielleicht kann man im stateFormat noch eine Perl Anweisung hinzufügen, um state auch zu setzen. Aber da kenne ich mich zu wenig aus.

Ich verändere den Zeit-Dummy sowieso nur im FTUI und verwende ihn im DOIF. Und das funktioniert.
Titel: Antw:Zeiten mit Spinner in ein Dummy eintragen..!
Beitrag von: moonsorrox am 08 September 2018, 14:08:22
Evtl. könnte man das mit einem UserReading machen in Perl, aber das kann ich leider nicht.