Ausblick: neues Attribut stateTable/stateTabletUI webCmdDOIF

Begonnen von Damian, 17 Mai 2017, 21:13:39

Vorheriges Thema - Nächstes Thema

Damian

Wer jetzt schon mit TabletUI mit DOIF experimentieren will, der kann einfach im Attribut state den Link zu seinem zuvor definierten TabletUI angeben, z. B.

attr di_bla state <html><iframe src="http://192.168.178.3:8086/fhem/tablet" scrolling="no" height=730 width=1024></iframe>'</html>

Ich bin mir jetzt schon sicher, dass DOIF mit TabletUI-Wigets mit einfacher Definition (inkl. persönlicher Templates für Layout) ein unschlagbares Team sein werden: Automatisation + vernünftiges Layout sind die unschlagbaren Argumente für jedes smarte Home :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

ach schade ...

ich dacht eig., man kann die einzelnen widgets der tablet-ui ins doif einbauen.
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 20 Mai 2017, 21:53:31
ach schade ...

ich dacht eig., man kann die einzelnen widgets der tablet-ui ins doif einbauen.

Kannst du - jetzt noch recht umständlich. Du musst halt für jedes DOIF ein eigenes tabletui definieren (ggf. mit copy und paste). Die Readings, die du da angibst sollten natürlich zu deinem DOIF-passen.

Es ist nur etwas zum Ausprobieren, weil eben zu umständlich. Zukünftig wird es im DOIF, wie bereits angedeutet, eine vereinfachte Syntax im Attribut stateTabletUI geben, mit der dann die wigets automatisch generiert werden, die im jeweiligen DOIF erscheinen.

So schnell kann ich auch nicht programmieren :)

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#18
Hallo Damian,

ich habe das Attribut "myWebCmd" und die "detailFn" in DOIF eingebaut, es ist die Version aus dem Thema myReadings.

Die Darstellung von "myWebCmd" ist nicht mehr Bestandteil der Gerätezeile, sondern liegt darunter.

Die Beschreibung ergänze ich falls es offiziell wird.

Hier noch mal die Beispieldefinition
defmod datumsbereich_Labor0 DOIF ([[$SELF:P_bhm,"00:00"]] and [?$SELF:P_byear] == $year and [?$SELF:P_bmon] == $month and [?$SELF:P_bday] == $mday)\
   {Log 1, "Alarmstart"}\
DOELSEIF ([[$SELF:P_ehm,"00:00"]] and [?$SELF:P_eyear] == $year and [?$SELF:P_emon] == $month and [?$SELF:P_eday] == $mday)\
   {Log 1, "Alarmstop"}
attr datumsbereich_Labor0 alias Terminspanne
attr datumsbereich_Labor0 cmdState 1|0
attr datumsbereich_Labor0 comment P_bhm:P_bday:P_bmon:P_byear:P_ehm:P_eday:P_emon:P_eyear
attr datumsbereich_Labor0 group Labor: Datumsbereich von HH:MM dd.mm.yyyy bis HH:MM dd.mm.yyyy ohne datetimepicker Widget
attr datumsbereich_Labor0 icon time_calendar
attr datumsbereich_Labor0 myWebCmd Start:&nbsp;;Zeit|P_bhm|Tag|P_bday|Monat|P_bmon|Jahr|P_byear\
Ende:&nbsp;;Zeit|P_ehm|Tag|P_eday|Monat|P_emon|Jahr|P_eyear
attr datumsbereich_Labor0 readingList P_bhm P_bday P_bmon P_byear P_ehm P_eday P_emon P_eyear
attr datumsbereich_Labor0 room DOIF_Labor
attr datumsbereich_Labor0 setList P_bhm:time\
P_bday:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 \
P_bmon:slider,1,1,12\
P_byear:2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026\
P_ehm:time\
P_eday:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31\
P_emon:slider,1,1,12\
P_eyear:2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026
attr datumsbereich_Labor0 webCmd cmd_1
attr datumsbereich_Labor0 widgetOverride (setList|myWebCmd):textField-long

setstate datumsbereich_Labor0 1
setstate datumsbereich_Labor0 2017-06-11 16:10:28 .eM off
setstate datumsbereich_Labor0 2017-06-11 09:00:14 P_bday 2
setstate datumsbereich_Labor0 2017-06-11 16:45:09 P_bhm 15:05
setstate datumsbereich_Labor0 2017-06-11 16:53:04 P_bmon 3
setstate datumsbereich_Labor0 2017-01-19 11:02:57 P_byear 2017
setstate datumsbereich_Labor0 2017-03-08 19:28:35 P_eday 8
setstate datumsbereich_Labor0 2017-06-09 19:17:29 P_ehm 12:00
setstate datumsbereich_Labor0 2017-03-08 19:28:37 P_emon 3
setstate datumsbereich_Labor0 2017-06-09 18:55:16 P_eyear 2017
setstate datumsbereich_Labor0 2017-06-11 16:45:02 cmd 1
setstate datumsbereich_Labor0 2017-06-11 16:45:02 cmd_event set_cmd_1
setstate datumsbereich_Labor0 2017-06-11 16:45:02 cmd_nr 1
setstate datumsbereich_Labor0 2017-06-11 16:45:02 state 1
setstate datumsbereich_Labor0 2017-06-11 17:38:12 timer_01_c01 12.06.2017 15:05:00
setstate datumsbereich_Labor0 2017-06-11 17:38:12 timer_02_c02 12.06.2017 12:00:00


Damian

#19
Hallo Ellert,

ich habe es gerade angetestet - funktioniert.

Wäre man nicht flexibler, wenn man Texte in Anführungszeichen angeben würde, dann wäre man nicht auf die starre <Bezeichner><Reading>-Struktur angewiesen und  könnte z. B. auch tabellarische Darstellung mit Überschrift-Zeile  und darunter Readings vornehmen z. B.

Bezeichnung davor:

"Start: Zeit"|P_bhm|"Tag"|P_bday|"Monat"|P_bmon|"Jahr"|P_byear\
"Ende: Zeit"|P_ehm|"Tag"|P_eday|"Monat"|P_emon|"Jahr"|P_eyear


oder aber:

Bezeichnungen als Überschrift:

|"Zeit"|"Tag"|"Monat"|"Jahr"\
"Start: "|P_bhm|P_bday|P_bmon|P_byear\
"Ende: "|P_ehm|P_eday|P_emon|P_eyear



Edit: Beispiele angepasst
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#20
Ich habe myWebCmd in webCmdDOIF geändert, weil es dann in der Attributliste gleich unter webCmd ins Auge fällt und myIrgenwas irgendwie nicht so gut zum DOIF passt.

Bezeichner stehen zwischen ""
Werden Readings nicht in setList gefunden, wird der Text angegeben.


attr datumsbereich_Labor0 webCmdDOIF ""|"Zeit"|"Tag"|"Monat"|"Jahr"\
"Start"|P_bhm|P_bday|P_bmon|P_byear\
"Ende"|P_ehm|P_eday|P_emon|P_eyear



Damian

Zitat von: Ellert am 12 Juni 2017, 01:00:02
Ich habe myWebCmd in webCmdDOIF geändert, weil es dann in der Attributliste gleich unter webCmd ins Auge fällt und myIrgenwas irgendwie nicht so gut zum DOIF passt.

Bezeichner stehen zwischen ""
Werden Readings nicht in setList gefunden, wird der Text angegeben.


attr datumsbereich_Labor0 webCmdDOIF ""|"Zeit"|"Tag"|"Monat"|"Jahr"\
"Start"|P_bhm|P_bday|P_bmon|P_byear\
"Ende"|P_ehm|P_eday|P_emon|P_eyear


schön, damit ist man wesentlich flexibler.

Ich nehme an, dass man Formatierungen per Html-Code einfügen kann. Es wird üblicherweise (DIN 5008) bei Überschriften erste Spalte linksbündig alle anderen zentriert angegeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#22
Es werden Zellen beschrieben, alles, was zwischen <td> und </td> an HTML erlaubt ist, sollte für die Bezeichner funktionieren.

Edit: Die Widgets bringen eine eigene CSS-Klasse mit und sind links ausgerichtet, es wird das ganze <td>-Element ersetzt.
Edit: es wird das <div>-Element mit der Klasse "fhemWidget" durch ein Widget ersetzt.

Damian

#23
Zitat von: Ellert am 12 Juni 2017, 09:07:09
Es werden Zellen beschrieben, alles, was zwischen <td> und </td> an HTML erlaubt ist, sollte für die Bezeichner funktionieren.

Edit: Die Widgets bringen eine eigene CSS-Klasse mit und sind links ausgerichtet, es wird das ganze <td>-Element ersetzt.
Edit: es wird das <div>-Element mit der Klasse "fhemWidget" durch ein Widget ersetzt.

Könntest du bitte ein paar Beispiele zur Formatierung (Ausrichtung, Farbe, etc.) hier mal aufführen. Das können wir später dann mit in die Doku aufnehmen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Hier einige Formatierungen an Hand des bekannten Beispiels


defmod datumsbereich_Labor0 DOIF ([[$SELF:P_bhm,"00:00"]] and [?$SELF:P_byear] == $year and [?$SELF:P_bmon] == $month and [?$SELF:P_bday] == $mday)\
   {Log 1, "Alarmstart"}\
DOELSEIF ([[$SELF:P_ehm,"00:00"]] and [?$SELF:P_eyear] == $year and [?$SELF:P_emon] == $month and [?$SELF:P_eday] == $mday)\
   {Log 1, "Alarmstop"}
attr datumsbereich_Labor0 alias Terminspanne
attr datumsbereich_Labor0 cmdState 1|0
attr datumsbereich_Labor0 group Labor: Datumsbereich von HH:MM dd.mm.yyyy bis HH:MM dd.mm.yyyy ohne datetimepicker Widget
attr datumsbereich_Labor0 icon time_calendar
attr datumsbereich_Labor0 readingList P_bhm P_bday P_bmon P_byear P_ehm P_eday P_emon P_eyear
attr datumsbereich_Labor0 room DOIF_Labor
attr datumsbereich_Labor0 setList P_bhm:time\
P_bday:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 \
P_bmon:slider,1,1,12\
P_byear:2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026\
P_ehm:time\
P_eday:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31\
P_emon:slider,1,1,12\
P_eyear:2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026
attr datumsbereich_Labor0 webCmd cmd_1
attr datumsbereich_Labor0 webCmdDOIF ""|"<div style="background-color:Lavender">Zeit</div>"|"<div style="background-color:Lavender">Tag</div>"|"<div style="text-align:center;;background-color:Lavender;;">Monat</div>"|"<div style="background-color:Lavender">Jahr</div>"\
"<div style="color:red;; font-weight:bold">Start<br>oder<br>Beginn</div>"|P_bhm|P_bday|P_bmon|P_byear\
"<div style="color:blue;; font-weight:bold">Ende</div>"|P_ehm|P_eday|P_emon|P_eyear

Damian

Zitat von: Ellert am 12 Juni 2017, 17:35:48
Hier einige Formatierungen an Hand des bekannten Beispiels

super, das dürfte für die meisten nachvollziehbar sein. Was jetzt noch fehlt, ist bedingte Formatierung z. B. über 30 rot, sonst grün
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Ellert am 12 Juni 2017, 17:35:48
P_bday:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31

lässt sich da kein

P_bday:1-31

draus machen?

Damian

#27
Zitat von: Per am 12 Juni 2017, 18:03:19
lässt sich da kein

P_bday:1-31

draus machen?

Diese Frage musst du an den Maintainer von setList stellen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

jetzt brauchen wir noch anklickbare Icons, die sich je nach Zustand verändern und Aktionen auslösen, dann kann ich auch stateTabletUI von der todo-Liste streichen, (stateTable habe ich bereits gestrichen) ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#29
Zitat von: Damian am 12 Juni 2017, 19:24:46
jetzt brauchen wir noch anklickbare Icons, die sich je nach Zustand verändern und Aktionen auslösen, dann kann ich auch stateTabletUI von der todo-Liste streichen, (stateTable habe ich bereits gestrichen) ;)
Zitat von: Damian am 12 Juni 2017, 17:50:04
super, das dürfte für die meisten nachvollziehbar sein. Was jetzt noch fehlt, ist bedingte Formatierung z. B. über 30 rot, sonst grün

Ab dieser Komplexität würde ich das mit einer ReadingsGroup lösen, sonst müsste man aus meiner Sicht größere Teile aus FHEMWEB im DOIF doifspezifisch nach bauen und eine doif.js dazu basteln.

Ich habe für das, was geht, die Beschreibung integriert, commandref_join.pl liefert keine Fehler.

Edit:
@Damian
Du könntest ja mal versuchen die TabletUI Widgets als Bezeichner einzubinden, das könnte funktionieren. Es müssen in der Tabelle ja keine Befehle angegeben werden.