FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Damian am 11 Mai 2021, 22:23:00

Titel: neues Attribut: uiState
Beitrag von: Damian am 11 Mai 2021, 22:23:00
Ich habe etwas reaktiviert, was ich vor längerer Zeit programmiert habe, was aber im FHEM-Modus nicht gut funktionierte. Im Perl-Modus sieht es besser aus, weil das DOIF-Modul den Status hier nicht verändert.

Es gibt nun im Perl-Modus das Attribut uiState. Es entspricht vom Aufbau dem Attribut uiTable, allerdings wird die Tabelle im Status dargestellt und nicht darunter, wie bei uiTable.

Darauf können diverse Dashboard aufsetzen, die den Status eines Devices darstellen, devStateIcon-Tricks sind nicht mehr nötig.

Beispiel:

defmod di_uiState_test DOIF {}
attr di_uiState_test uiState {package ui_Table;;\
  $TABLE='text-align:center';;\
}\
"<div class='doifclock'style='font-size:25pt;;color:silver'>wait</div>"<\
icon_temp_hum_ring("temp_outside",[Aussensensor:temperature],[Aussensensor:humidity],undef,undef,130)|\
\
icon_ring2([Wetter:WindKm] > 0 ? "wind".",1,0,0,".[Wetter:WindrichtungGrad]:"no_wind",[Wetter:WindKm],0,50,120,0,"km/h",130,undef,1,[Wetter:WindboeenKm],0,50,120,0,"km/h",undef,1) |\
\
icon_ring2("weather_rain_gauge",[Wetter:RegenMm],0,10,180,270,"mm/h",130,undef,1,[Wetter:RegenGesamtMm],0,50,180,270,"mm/d",undef,1)|\
\
icon_uring ('0,0,1',"weather_barometric_pressure",[Wetter:LuftdruckHpa],980,1047,0,120,"hPa",0,130,[(1013.5,0,1047,190)],",40,40,45,,45")|\
\
icon_ring2([zaehler:l-Produktion] > 0 ? "sani_solar\@colorVal1":"fa_bolt\@colorVal2",[zaehler:l-Produktion],0,3.6,0,120,"PV kW",130,undef,"2,,font-size:50%",[zaehler:l-Bezug,0],0,1.5,120,0,"Netz kW",undef,"2,,font-size:45%")<\
\
card([Aussensensor:temperature:col],undef,"temp_outside\@silver",-10,30,undef,undef,"°C",\&temp_hue,"1","130,,,1")|\
card([outsensor:humidity:col],undef,"temperature_humidity\@silver",30,100,undef,undef,"%",\&hum_hue,"0","130,,,1")\
card([Wetter:WindboeenKm:col],undef,"weather_wind\@silver",0,30,120,0,"km/h",undef,"1","130,,,1")|\
card([Wetter:LuftdruckHpa:col],undef,"weather_barometric_pressure\@silver", 980,1047,undef,undef,"hPa",[(1013.5,0,1047,190)],"0",'130,,,1','0,0,1')



Testversion im Anhang.

Edit: Version wurde eingecheckt
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 12 Mai 2021, 10:32:11
Und noch etwas:

uiState und uiTable sind innerhalb eines Devices kombinierbar, dh. man kann etwas in der Statusanzeige visualisieren oder über FHEM-widgets bedienen und weitere Dinge über uiTable darunter darstellen.
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 12 Mai 2021, 18:43:42
Ich habe die Version im ersten Post etwas angepasst, jetzt werden bei uiState keine Tabellenrahmen und ein einheitlicher Hintergrund in der Statuszeile vorbelegt.

So sieht dann eine Kombination aus uiState und uiTable beispielsweise aus:

Vier Ringe in der Statuszeile, zwei Karten in uiTable.

defmod di_uiState DOIF {}
attr di_uiState uiState {package ui_Table;;\
  $TABLE='text-align:center';;\
}\
icon_ring2([Wetter:WindKm] > 0 ? "wind".",1,0,0,".[Wetter:WindrichtungGrad]:"no_wind",[Wetter:WindKm],0,50,120,0,"km/h",130,undef,1,[Wetter:WindboeenKm],0,50,120,0,"km/h",undef,1)| \
icon_ring2("weather_rain_gauge",[Wetter:RegenMm],0,10,180,270,"mm/h",130,undef,1,[Wetter:RegenGesamtMm],0,50,180,270,"mm/d",undef,1)|\
icon_uring ('0,0,1',"weather_barometric_pressure",[Wetter:LuftdruckHpa],980,1047,0,120,"hPa",0,130,[(1013.5,0,1047,190)],",40,40,45,,45")|\
icon_ring2([zaehler:l-Produktion] > 0 ? "sani_solar\@colorVal1":"fa_bolt\@colorVal2",[zaehler:l-Produktion],0,3.6,0,120,"PV kW",130,undef,"2,,font-size:50%",[zaehler:l-Bezug,0],0,1.5,120,0,"Netz kW",undef,"2,,font-size:45%")
attr di_uiState uiTable {package ui_Table;;\
$TABLE='text-align:center';;}\
card([Aussensensor:temperature:col],undef,"temp_outside\@silver",-10,30,undef,undef,"°C",\&temp_hue,"1","130,,,1")|\
card([outsensor:humidity:col],undef,"temperature_humidity\@silver",30,100,undef,undef,"%",\&hum_hue,"0","130,,,1")
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 12 Mai 2021, 21:25:04
Neue Version wurde eingecheckt:
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM?order=date&desc=1
Titel: Antw:neues Attribut: uiState
Beitrag von: hankyzoolander am 13 Mai 2021, 16:26:50
Hallo, sehr geil!!
Funktioniert die card beschriftung weiterhin??

Also wie aufm Bild "Kühlschrank Küche"
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 13 Mai 2021, 16:36:00
Zitat von: hankyzoolander am 13 Mai 2021, 16:26:50
Hallo, sehr geil!!
Funktioniert die card beschriftung weiterhin??

Also wie aufm Bild "Kühlschrank Küche"

ja, warum nicht? Es ist doch ein Bestandteil von card.
Titel: Antw:neues Attribut: uiState
Beitrag von: Invers am 07 Juni 2021, 21:56:04
Habe gerade nach Möglichkeiten gesucht, die Card und Ring in mein Dashboard einzubinden. Ging ja mit DOIF leider nicht. Mit dieser Änderung geht es hervorragend. Danke. Freu!!!
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 07 Juni 2021, 23:38:25
Zitat von: Invers am 07 Juni 2021, 21:56:04
Habe gerade nach Möglichkeiten gesucht, die Card und Ring in mein Dashboard einzubinden. Ging ja mit DOIF leider nicht. Mit dieser Änderung geht es hervorragend. Danke. Freu!!!

Das freut mich zu hören.
Titel: Antw:neues Attribut: uiState
Beitrag von: jkriegl am 14 Juli 2021, 21:16:41
Muss man attr <device> uiState manuell definieren?
Ist nicht mehr in der attr-Liste eines ([EU_Inzidenz:stand]) ###
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 14 Juli 2021, 21:20:13
Zitat von: jkriegl am 14 Juli 2021, 21:16:41
Muss man attr <device> uiState manuell definieren?
Ist nicht mehr in der attr-Liste eines ([EU_Inzidenz:stand]) ###

uiState gibt es nur im DOIF-Perl-Modus.
Titel: Antw:neues Attribut: uiState
Beitrag von: Damian am 10 März 2022, 19:29:17
Mit dem morgigen Update von fhemweb.js ist ein größeres Problem bei der Verwendung von FHEM-Widgets im uiState behoben.

Siehe: https://forum.fhem.de/index.php/topic,126680.0.html
Titel: Antw:neues Attribut: uiState jetzt auch im FHEM-Modus
Beitrag von: Damian am 10 März 2022, 23:45:13
Da nun das Problem der Darstellung im Status eines DOIFs behoben ist, habe ich uiState auch im DOIF FHEM-Modus freigeschaltet (ab morgen per Update verfügbar)

Damit lassen sich Anwendungen wie diese:

https://wiki.fhem.de/wiki/DOIF/Ein-_und_Ausgabe_in_FHEMWEB_und_Tablet-UI_am_Beispiel_einer_Schaltuhr

auch ohne setList, RedingList, webCmd usw. mit Hilfe von uiState realisieren:

Bsp.:
defmod di_Schaltuhr DOIF (["$SELF:P_mybutton: on"] or [[$SELF:P_mybegin,"00:00"]])\
   (set lamp_Labor000 on)\
DOELSEIF (["$SELF:P_mybutton: off"] or [[$SELF:P_myend,"00:01"]])\
   (set lamp_Labor000 off)
attr di_Schaltuhr cmdState ON|OFF
attr di_Schaltuhr room Labor
attr di_Schaltuhr uiState {package ui_Table}\
[$SELF:state]|widget ([$SELF:P_mybutton],"on,off")|widget([$SELF:P_mybegin],"time")|widget([$SELF:P_myend],"time")


Da uiState viel flexibler einsetzbar ist, können nun beliebige Tabellen mit Visualisierungen, SVG-Grafiken, Eingaben usw. elegant im Status eines DOIF-Devices auch im FHEM-Modus realisiert werden.