Hauptmenü

neues Attribut: uiState

Begonnen von Damian, 11 Mai 2021, 22:23:00

Vorheriges Thema - Nächstes Thema

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#2
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")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

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

hankyzoolander

Hallo, sehr geil!!
Funktioniert die card beschriftung weiterhin??

Also wie aufm Bild "Kühlschrank Küche"
betateilchen  <--- my personal hero

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

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!!!
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

Muss man attr <device> uiState manuell definieren?
Ist nicht mehr in der attr-Liste eines ([EU_Inzidenz:stand]) ###
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

#9
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#11
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.

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