Hauptmenü

uiTable - neue Funktionen

Begonnen von Damian, 06 Dezember 2019, 22:24:21

Vorheriges Thema - Nächstes Thema

KyleK

Hm. Von der Namenskonvention höre ich zum ersten Mal.
In den 5 Jahren die ich jetzt FHEM nutze hatte ich noch keine Probleme mit dem Punkt, fast alle meine Devices sind so formatiert.

@Ellert das mit dem state probiere ich aus.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

KyleK

Was anderes:

Ehe ich mir vergeblich Mühe gebe, kannst du bestätigen dass die Tabelle aus dem Screenshot unten nicht mittels Templates erzeugt wurde/erzeugt werden kann?
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Damian

Zitat von: KyleK am 12 Mai 2021, 19:21:25
Was anderes:

Ehe ich mir vergeblich Mühe gebe, kannst du bestätigen dass die Tabelle aus dem Screenshot unten nicht mittels Templates erzeugt wurde/erzeugt werden kann?

Du kannst alles ohne Templates erstellen, genauso wie du alles ohne Funktionen programmieren kannst, dann musst du halt den gleichen Code wiederholen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Falls es dich interessiert, so sieht der Code dazu aus:

defmod Klima DOIF (1)
attr Klima uiTable {\
  package ui_Table;;\
  $SHOWNOSTATE=1;;\
  $TABLE='text-align:center';;\
  $ATTRIBUTESFIRST =  1;;\
}\
\
DEF TPL_raum (icon_temp_hum_ring([$1_Fenster:state] eq "closed" ? ([H_$1:state] eq "off" ? "fts_window_1w\@silver":"fts_window_1w\@white"):([H_$1:state] eq "off" ? "fts_window_1w_open\@lime":"fts_window_1w_open\@red"),[TH_$1_HM:measured-temp],[TH_$1_HM:humidity],undef,undef,130))\
\
icon_temp_temp_ring(([vaillant:Pumpenstatus] eq "4" ? "sani_buffer_temp_down\@white" : ([vaillant:Flame] eq "off" ? "sani_boiler_temp\@silver":"sani_boiler_temp\@white")),[vaillant:Vorlauf],[vaillant:WWSpeicher],15,70,130)|\
\
icon_temp_temp_ring(([Zirk] eq "off"?"sani_pump\@silver":"sani_pump\@white"),[vaillant:WWSpeicher],[ESPEasy_ESP_Temp_Zirkulation:Temperature],15,70,130)|\
\
icon_temp_temp_ring(([vaillant:Pumpenstatus] eq "on" ? "sani_floor_heating\@white" : "sani_floor_heating_neutral\@silver"),[ESPEasy_ESP_Temp_Vorlauf:Temperature],[ESPEasy_ESP_Temp_Keller_Ruecklauf:Temperature],15,70,130)\
\
"Bad"|"Kind o."|"Kind w."\
TPL_raum (Bad)|TPL_raum (Kz_o)|TPL_raum (Kz_w)\
"DG_Zi."|"Wohnzi."|"Küche"\
TPL_raum (DG)|TPL_raum (WZ)|TPL_raum (Kueche)\
""|"Schlafzi."|"Werkzi."\
icon_uring ('0,0,1',"air\@silver",[ESPEasy_Eingang_CO2:PPM],400,1200,undef,undef,'ppm',0,130,[(600,120,1000,60,1200,0)],"50,35,45,35,50,35")|TPL_raum (Keller)|TPL_raum (AKeller)


Um es kompakt zu halten, habe ich mir natürlich ein Template (TPL_raum) definiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#139
Hier eine doif.js die Punkte im Namen tolerieren sollte.

Bitte mal testen, ob es Nebeneffekte gibt.

Ergänzend eine Info, warum Punkte in der Element-Id (die in FHEM den Gerätenamen beinhaltet) zu Problemen führen können https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

Edit: Anhang gelöscht, doif.js ab morgen im Update.

Damian

Zitat von: Ellert am 14 Mai 2021, 08:06:42
Hier eine doif.js die Punkte im Namen tolerieren sollte.

Bitte mal testen, ob es Nebeneffekte gibt.

Ergänzend eine Info, warum Punkte in der Element-Id (die in FHEM den Gerätenamen beinhaltet) zu Problemen führen können https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

Ich kann keine Nebeneffekte feststellen. $SHOWNOSTATE funktioniert jetzt auch bei Devices mit Punkten im Namen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KyleK

Vielen Dank für die Anpassung.

@Ellert, auf der Seite von Mozilla, die du verlinkt hat, steht aber dass der Punkt (neben - und _) in IDs erlaubt ist?
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Ellert

Zitat von: KyleK am 14 Mai 2021, 21:33:35
Vielen Dank für die Anpassung.

@Ellert, auf der Seite von Mozilla, die du verlinkt hat, steht aber dass der Punkt (neben - und _) in IDs erlaubt ist?
... aber auch "may cause compatibility problems", wenn z.B. FHEM eine ältere Version von jQuery nutzt.

myhome

Hallo, ich habe mal eine Frage zu der Funktion "Cylinder". Die Darstellung von Werten geht wohl immer von Startpunkt aus, also bei mir mit 0, was für meinen Darstellungswunsch nicht passt. Ich würde gerne den "Cylinder" so nutzen wollen, dass für mich - siehe Bild- die Werte nicht immer von 0 aus beginnen sondern aufeinander aufsetzen. Bedeutet bei 3 Werten: 1 wäre 1300, 2ter 400 und 3ter 800., somit würde "IST" der Wert 1 den 2ten und den 3ten überdecken. Mein Wunsch wäre die 1300 darauf die 400 usw. Den "max Wert" des "Cylinder" kann man dann nach seinen Erwartungen setzen. Natürlich könnte ich die Wert von "Klein" nach "Groß" sortieren, da sie aber dynamisch sind macht das keinen Sinn. Vielleicht gibt es diese Darstellung schon, dann "Sorry" muss ich wohl mehrfach überlesen haben. Schön wäre es auch, wenn der "max Wert" dynamisch wäre, z.B. mit der Addition der Werte, wie im Beispiel", mit wachsen würde. Das Bild zeigt nochmal mein Problem. Grüße und vielen Dank für die super Möglichkeiten der Darstellung durch uiTable.

Raspberry Pi4, Pi3 und Zero's, Homematic, Zigbee, WLAN, USB, One-wire für Wasser, Heizung und Rücklauftemp und alte F20 für den Garten, Messen GAS, Wasser, Strom, PV, weiteres

Damian

Zitat von: myhome am 24 Juni 2022, 10:42:22
Hallo, ich habe mal eine Frage zu der Funktion "Cylinder". Die Darstellung von Werten geht wohl immer von Startpunkt aus, also bei mir mit 0, was für meinen Darstellungswunsch nicht passt. Ich würde gerne den "Cylinder" so nutzen wollen, dass für mich - siehe Bild- die Werte nicht immer von 0 aus beginnen sondern aufeinander aufsetzen. Bedeutet bei 3 Werten: 1 wäre 1300, 2ter 400 und 3ter 800., somit würde "IST" der Wert 1 den 2ten und den 3ten überdecken. Mein Wunsch wäre die 1300 darauf die 400 usw. Den "max Wert" des "Cylinder" kann man dann nach seinen Erwartungen setzen. Natürlich könnte ich die Wert von "Klein" nach "Groß" sortieren, da sie aber dynamisch sind macht das keinen Sinn. Vielleicht gibt es diese Darstellung schon, dann "Sorry" muss ich wohl mehrfach überlesen haben. Schön wäre es auch, wenn der "max Wert" dynamisch wäre, z.B. mit der Addition der Werte, wie im Beispiel", mit wachsen würde. Das Bild zeigt nochmal mein Problem. Grüße und vielen Dank für die super Möglichkeiten der Darstellung durch uiTable.

Der Wunsch ist nicht neu. Ich muss schauen, ob sich das mit vertretbarem Aufwand einbauen lässt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

HI, ich versuche seit Tagen diesem DOIF beizubringen, dass man auf das devStateIcon klicken und damit cmd_3 auslösen kann.
Kann man das dsi überhaupt klickbar machen?
Hier mal mein letzter Versuch von Vielen.
Kannst du mir bitte helfen, Damiean (oder jemand sonst)?

Vielen Dank im Voraus.

defmod DI_Rollo_laden DOIF ([01:00]) \
    (setreading DU_ZV Rollos_laden {([DU_ZV:Rollos_laden]) + 1})\
DOELSEIF (([08:00-16:00,+02:00]) and [DU_ZV:Rollos_laden] >39)\
    (say Rollos müssen geladen werden!)\
DOELSEIF ([$SELF] eq "on")\
    (say "Es verbleiben 35 Tage bis zum erneuten Laden!", \
     setreading DU_ZV Rollos_laden 0, \
     set Siro_.* reset_motor_term, set $SELF off)\
DOELSE
attr DI_Rollo_laden cmdState on|on
attr DI_Rollo_laden devStateIcon {ui_Table::ring(40 - ReadingsNum("DU_ZV","Rollos_laden",0), 0, 40, 0, 40,"Tage", 100,undef, "0,font-size:120%,fill:silver;;;;font-size:50%","0,1,1")}
attr DI_Rollo_laden do always
attr DI_Rollo_laden fp_Schalter 436,655,1,Rollo laden
attr DI_Rollo_laden readingList mybutton
attr DI_Rollo_laden room Rollo


Hier noch List

Internals:
   DEF        ([01:00])
    (setreading DU_ZV Rollos_laden {([DU_ZV:Rollos_laden]) + 1})
DOELSEIF (([08:00-16:00,+02:00]) and [DU_ZV:Rollos_laden] >39)
    (say Rollos müssen geladen werden!)
DOELSEIF ([$SELF] eq "on")
    (say "Es verbleiben 35 Tage bis zum erneuten Laden!",
     setreading DU_ZV Rollos_laden 0,
     set Siro_.* reset_motor_term, set $SELF off)
DOELSE
   FUUID      5cd9559f-f33f-8098-c8d2-6aee5f65432ab171
   MODEL      FHEM
   NAME       DI_Rollo_laden
   NOTIFYDEV  DI_Rollo_laden,DU_ZV,global
   NR         140
   NTFY_ORDER 50-DI_Rollo_laden
   STATE      cmd_4
   TYPE       DOIF
   VERSION    26159 2022-06-19 16:10:29
   eventCount 44
   READINGS:
     2022-06-27 10:00:00   cmd             4
     2022-06-27 10:00:00   cmd_event       timer_4
     2022-06-27 10:00:00   cmd_nr          4
     2022-06-25 14:45:19   e_DI_Rollo_laden_STATE cmd_4
     2022-06-25 14:45:15   mode            enabled
     2022-06-05 08:42:06   mybutton        ein
     2022-06-27 10:00:00   state           cmd_4
     2022-06-27 01:00:00   timer_01_c01    28.06.2022 01:00:00
     2022-06-26 16:00:00   timer_02_c02    27.06.2022 08:00:00
     2022-06-26 16:00:00   timer_03_c02    27.06.2022 16:00:00
     2022-06-27 10:00:00   timer_04_c02    27.06.2022 12:00:00
   Regex:
     accu:
     collect:
     cond:
       DI_Rollo_laden:
         0:
         1:
         2:
           &STATE     ^DI_Rollo_laden$
       DU_ZV:
         1:
           Rollos_laden ^DU_ZV$:^Rollos_laden:
   attr:
     cmdState:
       0:
         on
       1:
         on
     wait:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
     1          (::DOIF_time($hash,1,2,$wday,$hms)) and ::ReadingValDoIf($hash,'DU_ZV','Rollos_laden') >39
     2          ::InternalDoIf($hash,'DI_Rollo_laden','STATE') eq "on"
   days:
   do:
     0:
       0          setreading DU_ZV Rollos_laden {([DU_ZV:Rollos_laden]) + 1}
     1:
       0          say Rollos müssen geladen werden!
     2:
       0          say "Es verbleiben 35 Tage bis zum erneuten Laden!",       setreading DU_ZV Rollos_laden 0,       set Siro_.* reset_motor_term, set DI_Rollo_laden off
     3:
       0         
   helper:
     NOTIFYDEV  DI_Rollo_laden,DU_ZV,global
     event      timer_4
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent timer_4
     triggerDev
     timerevents:
       timer_4
     timereventsState:
       timer_4
     triggerEvents:
       timer_4
     triggerEventsState:
       timer_4
   internals:
     all         DI_Rollo_laden:STATE
   interval:
     1          -1
     2          1
   intervalfunc:
     3          ::DOIF_time($hash,1,2,$wday,$hms)
   intervaltimer:
     1          3
     2          3
   localtime:
     0          1656370800
     1          1656309600
     2          1656338400
     3          1656324000
   readings:
     all         DU_ZV:Rollos_laden
   realtime:
     0          01:00:00
     1          08:00:00
     2          16:00:00
     3          12:00:00
   time:
     0          01:00:00
     1          08:00:00
     2          16:00:00
     3          +02:00
   timeCond:
     0          0
     1          1
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0
     1           1  2  3
   trigger:
   triggertime:
     1656324000:
       localtime  1656324000
       hash:
     1656338400:
       localtime  1656338400
       hash:
     1656370800:
       localtime  1656370800
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   on|on
   devStateIcon {ui_Table::ring(40 - ReadingsNum("DU_ZV","Rollos_laden",0), 0, 40, 0, 40,"Tage", 100,undef, "0,font-size:120%,fill:silver;;font-size:50%","0,1,1")}
   do         always
   fp_Schalter 436,655,1,Rollo laden
   readingList mybutton
   room       Rollo

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

Ring kann nur etwas anzeigen, reagiert aber nicht auf Klicken, dafür gibt es Widgets, die du verwenden kannst, siehe webCmd. Siehe Beispiele hier: https://wiki.fhem.de/wiki/DOIF/Ein-_und_Ausgabe_in_FHEMWEB_und_Tablet-UI_am_Beispiel_einer_Schaltuhr

Wenn du statt devStateIcon uiState benutzt, kannst du Widgets direkt nutzen, siehe:
https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Schaltbares_Icon_mit_Hilfe_der_Funktion_switch
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Invers

Hatte ich mir bereits angesehen und hielt es für nicht für mich brauchbar.
Ich wolte eine Zahl aus einem Dummy holen, was funktioniert. Die Anzeige des Restes funktioniert auch.
nun wollte ich eigentlich nur den Dummy zurücksetzen, indem ich auf den Ring klicke.
Schade, scheint nicht so zu funktionieren, wie ich möchte.
Trotzdem vielen Dank.
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

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

Vorhand

uiTable mit card zeigt ganz schön viel mit wenigen Zeilen Code.
defmod PV3 DOIF {}
attr PV3 room Fronius
attr PV3 uiTable {\
package ui_Table;;\
$SHOWNOSTATE=1;;\
}\
card([[myFronius:PowerFlow_Site_P_PV:col12],[myFronius:PowerFlow_Site_P_Load:col12],[myFronius:PowerFlow_Site_P_Grid:col12]],"W","fa_bolt\@silver",-3.6,3.6,0,90,["Solar","Verbr","Über"],[(-1,0,0,30,1,60,3.6,90)],"2","167,,1,,,1",",,1,6")

Wie kann ich die Leistung W in kW darstellen. Hab einige Versuche unternommen - ohne Erfolg.
danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly