FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Damian am 06 Dezember 2019, 22:24:21

Titel: uiTable - neue Funktionen
Beitrag von: Damian am 06 Dezember 2019, 22:24:21
Ich habe eine neue DOIF-Version eingecheckt. Da inzwischen einige Erweiterungen hinzugekommen sind, andere Ideen aber verworfen wurden, fange ich hier mit einem neuen Thread zum Thema uiTable an. Das Attribut ist um einige neue Perl-Funktionen erweitert worden.

Gleichzeitig baue ich eine neue wiki-Seite https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg dazu auf, die in erster Linie den Einstieg erleichtern soll. Bis Weihnachten sollen alle neuen Features, die sich bereits im neuen Modul befinden, dort mit bebilderten Beispielen dargestellt werden. Es wird also einige Türchen bis Weihnachten zu den neuen uiTable-Funktionen geben. :)


Hier findet man den alten Thread zu uiTable: https://forum.fhem.de/index.php/topic,77690.msg998416.html#msg998416

Eine wiki-Seite von Ellert zu den bisherigen Features des Attributes, u. a. mit komplexeren Beispielen, gibt es bereits hier: https://wiki.fhem.de/wiki/DOIF/uiTable
Titel: Antw:uiTable
Beitrag von: Damian am 08 Dezember 2019, 16:06:57
nächstes Türchen geöffnet: uiTable-Funktion hum :)

siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Feuchtigkeitsanzeige_mit_Hilfe_der_Funktion_hum
Titel: Antw:uiTable - Adventskalender
Beitrag von: Maui am 09 Dezember 2019, 15:29:24
Schick. Bei temp fehlt mir allerdings eine Skalierung, also zb min und max. Für eine Zimmer-Temp ist -20 - 40 einfach zu grob gefasst  ;)
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 09 Dezember 2019, 18:07:38
Zitat von: Maui am 09 Dezember 2019, 15:29:24
Schick. Bei temp fehlt mir allerdings eine Skalierung, also zb min und max. Für eine Zimmer-Temp ist -20 - 40 einfach zu grob gefasst  ;)

Das kannst du alles anpassen, aber dieses Türchen ist noch nicht offen ;)
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 21 Dezember 2019, 11:46:12
neues Türchen (Fenster :) ) geöffnet: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_offene_Fenster
Titel: Antw:uiTable - Adventskalender
Beitrag von: cwagner am 21 Dezember 2019, 12:44:29
Zur Funktion shutter habe ich eine Frage oder Anregung: Die Logik meiner Homematic-Rolladensteuerung geht genau anders herum, wie implementiert. Pict=0% bedeutet hier, Rollladen ist oben, also zu 0% geschlossen. Entsprechend zeigen die Symbole der Funktion shutter bei mir jetzt genau das Gegenteil des wirklichen Zustandes.

Wäre ein attribut denkbar in Sinne von "reverse logik"?

Die von Dir bisher vorgestellten Vereinfachungen von uiTable finde ich wirklich gut und Du machst damit der großen DOIF-Fan-Gemeinde sicher ein großes Weihnachtsgeschenk.

Christian
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 21 Dezember 2019, 13:01:41
ja, das hängt vom Aktor ab. Die shutter-funktion ist ja als Kopie in contrib/DOIF/uiTable.tpl drin:

sub shutter {
   my ($value,$color,$type)=@_;
   $color="\@darkorange" if (!defined ($color) or $color eq "");
   if (!defined ($type) or $type == 3) {
     return ($value,"","iconRadio,$color,100,fts_shutter_10,30,fts_shutter_70,0,fts_shutter_100","set");
   } elsif ($type == 4) {
       return ($value,"","iconRadio,$color,100,fts_shutter_10,50,fts_shutter_50,30,fts_shutter_70,0,fts_shutter_100","set");
     } elsif ($type == 5) {
         return ($value,"","iconRadio,$color,100,fts_shutter_10,70,fts_shutter_30,50,fts_shutter_50,30,fts_shutter_70,0,fts_shutter_100","set");
       } elsif ($type >= 6) {
           return ($value,"","iconRadio,$color,100,fts_shutter_10,70,fts_shutter_30,50,fts_shutter_50,30,fts_shutter_70,20,fts_shutter_80,0,fts_shutter_100","set");
         } elsif ($type == 2) {
             return ($value,"","iconRadio,$color,100,fts_shutter_10,0,fts_shutter_100","set");
         }
}


Der dritter Rückgabewert entspricht dem FHEM-Widget: iconRadio

Die Anpassung kann man als eine kleine Fingerübung zum Verständnis der Sache ansehen.

Erweiterungen, die von allgemeiner Bedeutung sind, kann ich gerne ins DOIF übernehmen - da werden sich bestimmt noch einige interessante Funktionen ergeben.

PS: Ich habe bei mir auch HM laufen (https://de.elv.com/homematic-funk-rollladenaktor-fuer-markenschalter-1fach-unterputzmontage-hm-lc-bl1pbu-fm-fuer-smart-home-hausautomation-103038?fs=2896061061&c=421) und die funktionieren mit shutter korrekt. Vielleicht hast du deine andersrum drin.
Titel: Antw:uiTable - Adventskalender
Beitrag von: cwagner am 21 Dezember 2019, 20:36:01
Aufgabe angenommen und gelöst :-)
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 21 Dezember 2019, 21:47:19
Zitat von: cwagner am 21 Dezember 2019, 20:36:01
Aufgabe angenommen und gelöst :-)

schön :), dann kannst du für die Nachwelt noch die Lösung posten.
Titel: Antw:uiTable - Adventskalender
Beitrag von: cwagner am 22 Dezember 2019, 09:23:23
Mein Vorschlag für Rollläden, bei denen das Reading pct 0 hat, wenn der Rollladen oben ist (0% geschlossen) wäre:

sub shutter {
   my ($value,$color,$type)=@_;
   $color="\@darkorange" if (!defined ($color) or $color eq "");
   if (!defined ($type) or $type == 3) {
     return ($value,"","iconRadio,$color,0,fts_shutter_10,30,fts_shutter_70,100,fts_shutter_100","set");
   } elsif ($type == 4) {
       return ($value,"","iconRadio,$color,0,fts_shutter_10,30,fts_shutter_30,70,fts_shutter_70,100,fts_shutter_100","set");
     } elsif ($type == 5) {
         return ($value,"","iconRadio,$color,0,fts_shutter_10,30,fts_shutter_30,50,fts_shutter_50,70,fts_shutter_70,100,fts_shutter_100","set");
       } elsif ($type >= 6) {
           return ($value,"","iconRadio,$color,0,fts_shutter_10,30,fts_shutter_30,50,fts_shutter_50,70,fts_shutter_70,80,fts_shutter_80,100,fts_shutter_100","set");
         } elsif ($type == 2) {
             return ($value,"","iconRadio,$color,0,fts_shutter_10,100,fts_shutter_100","set");
         }
}


Christian
Titel: Antw:uiTable - Adventskalender
Beitrag von: ComputerZOO am 22 Dezember 2019, 11:18:21
Zitat von: Damian am 21 Dezember 2019, 11:46:12
neues Türchen (Fenster :) ) geöffnet: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_offene_Fenster

Moin,
Das "Türchen" funktioniert super. Aber wie kann ich anstelle des Device-Namen den Alias des Device-Namen ( AttrVal("[$SELF:windows]"), "alias", "") ) anzeigen lassen?
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 22 Dezember 2019, 11:29:11
Zitat von: ComputerZOO am 22 Dezember 2019, 11:18:21
Moin,
Das "Türchen" funktioniert super. Aber wie kann ich anstelle des Device-Namen den Alias des Device-Namen ( AttrVal("[$SELF:windows]"), "alias", "") ) anzeigen lassen?
Das ist relativ simpel, hier: https://fhem.de/commandref_DE.html#DOIF_aggregation unter <format> gibt es das kleine "a" als Option für Aliasnamen:

also:

Zitatattr di_uiTable_windows DOIF_Readings windows:[@as(<br>)"Fenster$":state:"open","keine"]
Titel: Antw:uiTable - Adventskalender
Beitrag von: Damian am 24 Dezember 2019, 13:58:59
Ziel erreicht :)

Mit dem letzten Türchen: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_aktuelle_Wetterlage wurde die Wiki-Seite zu uiTable weitgehend fertiggestellt. 

Frohe Weihnachten.
Titel: Antw:uiTable - Adventskalender
Beitrag von: kumue am 24 Dezember 2019, 21:46:01
Danke und Frohe Weihnacht!
..hat Spass gemacht...
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 26 Dezember 2019, 13:08:22
Anwendungsfall: Visualisierung des Spritpreises: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_aktueller_Spritpreis
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 29 Dezember 2019, 19:59:32
Package-Konzept: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Package-Konzept.2C_Auslagerung_eigener_Funktionen.2C_der_IMPORT-Befehl
Titel: Antw:uiTable - neue Funktionen
Beitrag von: cwagner am 31 Dezember 2019, 13:53:12
Zitat von: Damian am 29 Dezember 2019, 19:59:32
Package-Konzept: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Package-Konzept.2C_Auslagerung_eigener_Funktionen.2C_der_IMPORT-Befehl

Das ist ja die Lösung eines Themas, an dem ich geknabbert hatte: Klappt auch wie beschrieben mit einem kleinen Punkt, wo ich nicht beurteilen kann, ob das im Konzept noch verbesserbar ist:

Ich habe eine umfangreiche uiTable, der ich die Darstellung verschiedener Sensoren teils über die eingebauten Funktionen wie temp und hum formatiere und teils über angepasste Funktionen in einer eigenen TPL. Zum Beispiel möchte ich den "grünen" Bereich eines Temp-Sensor am Kessel woanders haben als bei der WAF-Temperatur im Wohnzimmer.
Das klappt gut, meine abgewandelten Funktionen heißen also z.B. temp2 und temp3 und werden über eine uiTable_cw.tpl importiert. Für den Style wollte ich eigentlich die Standardfunktion temp_style aus uiTable.tpl verwenden. Das klappt dann aber nicht, ich muss die völlig unveränderte Funktion temp_style noch eigens in meiner  uiTable_cw.tpl aufnehmen, egal ob ich den Import-Befehl vor oder nach dem Perl-Block oder den Definitionen-Block positioniere.

Herzliche Grüße

Christian
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 31 Dezember 2019, 13:57:38
Zitat von: cwagner am 31 Dezember 2019, 13:53:12
Das ist ja die Lösung eines Themas, an dem ich geknabbert hatte: Klappt auch wie beschrieben mit einem kleinen Punkt, wo ich nicht beurteilen kann, ob das im Konzept noch verbesserbar ist:

Ich habe eine umfangreiche uiTable, der ich die Darstellung verschiedener Sensoren teils über die eingebauten Funktionen wie temp und hum formatiere und teils über angepasste Funktionen in einer eigenen TPL. Zum Beispiel möchte ich den "grünen" Bereich eines Temp-Sensor am Kessel woanders haben als bei der WAF-Temperatur im Wohnzimmer.
Das klappt gut, meine abgewandelten Funktionen heißen also z.B. temp2 und temp3 und werden über eine uiTable_cw.tpl importiert. Für den Style wollte ich eigentlich die Standardfunktion temp_style aus uiTable.tpl verwenden. Das klappt dann aber nicht, ich muss die völlig unveränderte Funktion temp_style noch eigens in meiner  uiTable_cw.tpl aufnehmen, egal ob ich den Import-Befehl vor oder nach dem Perl-Block oder den Definitionen-Block positioniere.

Herzliche Grüße

Christian

Wie sieht die uiTable-Definition bei dir aus?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: cwagner am 31 Dezember 2019, 16:32:14
Hallo Damian,
den Fall habe ich mehrfach, die eigene TPL lautet, die das prägnanteste Beispiel:

{
package $SELF;
# Varianten von CW für uiTable Subs
# 29.12.2019

#Styles
############## ohne Temp-Symbol und mit Temperaturspanne 15-25°
sub temp2
{
   my ($temp,$size)=@_;
   return($temp."°C","font-weight:bold;font-size:".$size."pt;".temp_style2($temp));
}

sub temp_style2
{
     my ($temp)=@_;
     return ("color:".::DOIF_hsv ($temp,15,22,240,150,90,95));
}

############## ohne Temp-Symbol und mit Temperaturspanne -20-30°
sub temp3
{
   my ($temp,$size)=@_;
   return($temp."°C","font-weight:bold;font-size:".$size."pt;".temp_style3($temp));
}
sub temp_style3
{
     my ($temp)=@_;
     if ($temp >=30) {
   return ("color:".::DOIF_hsv ($temp,30,50,20,0,90,95));
     } elsif ($temp >= 10) {
       return ("color:".::DOIF_hsv ($temp,10,30,73,20,80,95)); 
} elsif ($temp >= 0) {
   return ("color:".::DOIF_hsv ($temp,0,10,211,73,60,95));
} elsif ($temp >= -20) {
   return ("color:".::DOIF_hsv ($temp,-20,0,277,211,50,95));
}
}

############### ohne Hum-Symbol
sub hum2
{
    my ($hum,$size)=@_;
    return($hum." %","font-weight:bold;font-size:".$size."pt;color:".::DOIF_hsv ($hum,30,100,30,260,60,90));
}

}


Mit dem sub temp_Style2 werden dann die Temperaturen gezeigt, die von dieser Definition bestimmt werden:
{
$SHOWNODEVICELINE = "Aktuell";
$ATTRIBUTESFIRST =  1;
$TC{0,1,3,5}= "style='font-weight:bold;font-size:11pt;'";
$TC{1,2,4,5}="align='right'";
$TD{0}{0}="style='position:relative'";
sub FUNC_CO2 {return ("font-weight:bold;font-size:11pt;color:".DOIF_hsv ($_[0],600,1000,122,0,60,90));}
}
IMPORT contrib/DOIF/uiTableCW.tpl
temp3([T_Aussen:temperature:d1],12),temp3([CN_Wind:Windchill:d1]),hum2([TF.Aussen:humidity:d1],10)|[$SELF:state],"Letzter Switch:".[$SELF:EWTLast:d1]."°C","Stellung:".[Steller_Zuluft:Stufe]."%"|"Fortluft".":".temp3([Fortluft:temperature:d1],12),"Frischluft".":".temp3([Frischluft:temperature:d1],12)," "," "|WID ([DI_Sommer_Winter.state],"iconSwitch,Sommer,svn\@yellow,Winter,control_x\@blue"),STY("")|"Zuluft".":".temp2([Zuluft2:temperature:d1],12),"Abluft".":".temp2([Abluft:temperature:d1],12),"Ø gestern ↑".":".temp2([Abluft:temperature_AVG_LD:d1])|STY([CO2Sensor:CO2:d0]." ppm CO2",FUNC_CO2([CO2Sensor:CO2:d0])),"Nebler".WID ([Switch_Lueftung:Nebler],"iconSwitch,ON,power\@green,OFF,power\@red")


[noch habe ich nicht alle Deine Vereinfachungen nachgearbeitet]

In der Anlage dann die Optik dazu (aktuell ist passend für die Silvesterknallerei Windstille, so sind beide Temperaturen ganz links gleich).

Herzliche Grüße

Christian
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 31 Dezember 2019, 17:47:10
Wenn du in deiner tpl-Datei statt package $SELF; package ui_Table; schreibst, dann wird die interne ui_Table um deine Funktionen erweitert. Durch den Import der Datei befindest du dich dann in package ui_Table und kannst deine und die internen Funktionen direkt (ohne Angabe des package) nutzen. Das ist dieser Fall, den ich präferiere: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Eigene_ausgelagerte_uiTable-Funktionen

Deine FUNC_-Funktion solltest du anders benennen (ohne FUNC am Anfang) ansonsten musst du :: davorstellen - das hatte wir ja schon mal.

Titel: Antw:uiTable - neue Funktionen
Beitrag von: cwagner am 31 Dezember 2019, 19:27:05
So einfach, so klar: Funktioniert. Ein umweltfreundlicher Knaller zum Abschied des alten Jahres.

Guten Rutsch und Danke!

Christian
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Januar 2020, 22:20:29
Anwendungsbeispiel für Visualisierung und Steuerung von Raumtemperaturen: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung_und_Steuerung_von_Raumtemperaturen
Titel: Antw:uiTable - neue Funktionen
Beitrag von: eddy242 am 03 Januar 2020, 22:54:15
Hallo zusammen,

ich habe das Beispiel mit der Batterie-Anzeige (Färbung, Icon) übernommen. Nun habe ich ca. 20 Devices mit Batterien, muss ich für jedes einzelne eine Zeile mit expliziten Namen (DeviceXYZ:batteryLevel) angeben oder kann ich auch einen Trick mit Regexp machen, also simplerweise sowas wie [DevicesmitBattery.*:batteryLevel]?

Danke!
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Januar 2020, 23:09:25
Zitat von: eddy242 am 03 Januar 2020, 22:54:15
Hallo zusammen,

ich habe das Beispiel mit der Batterie-Anzeige (Färbung, Icon) übernommen. Nun habe ich ca. 20 Devices mit Batterien, muss ich für jedes einzelne eine Zeile mit expliziten Namen (DeviceXYZ:batteryLevel) angeben oder kann ich auch einen Trick mit Regexp machen, also simplerweise sowas wie [DevicesmitBattery.*:batteryLevel]?

Danke!

Bei den Readingangaben sind keine Regex möglich - das war beim DOIF immer schon so.

Z. Zt. musst du für jedes Reading die Funktion aufrufen. Ich arbeite aber an einer Template-Erweiterung, die eine ganze Tabelle für mehrere Readings mit entsprechenden Formatierungen ausspuckt.
Titel: Antw:uiTable - neue Funktionen [switch]
Beitrag von: cwagner am 04 Januar 2020, 11:42:49
Gerne würde ich ein Perl-DOIF über die Switch-Funktion in einer uiTable ein- und ausschalten. Die Idee war: |switch([RR_Wohnzimmer:mode],"10px-kreis-gruen","10px-kreis-rot","enable","disable". Das klappt aber nicht, vermutlich weil die entsprechenden Mode-Readings enabled und disabled heißen. Bin ich auf einem Irrweg?

Herzliche Grüße

Christian
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 04 Januar 2020, 12:10:29
ja, geschaltet wird über set enable, angezeigt wird aber enabled, das geht schlecht über FHEM-widgets, wahrscheinlich lässt sich das über das Umbiegen des Kommandos mit eventMaps realisieren.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 04 Januar 2020, 23:27:59
Zitat von: Damian am 03 Januar 2020, 23:09:25
Bei den Readingangaben sind keine Regex möglich - das war beim DOIF immer schon so.

Z. Zt. musst du für jedes Reading die Funktion aufrufen. Ich arbeite aber an einer Template-Erweiterung, die eine ganze Tabelle für mehrere Readings mit entsprechenden Formatierungen ausspuckt.

uiTable erhält ein mächtiges Kommando: FOR

Syntax: FOR (<Array>,<Zellendefinitionen, $_ wird durch das jeweilige Element des Arrays ersetzt>)

Der Befehl entspricht der Perl-Schleife: foreach

Damit können ganze Tabellen jeweils mit einem Einzeiler definiert werden.

Bsp:

defmod di_for DOIF ##
IMPORT contrib/DOIF/my_uiTable.tpl\
\
## Tabellendefinition: Zeige alle Devices, die ein Reading battery haben mit einem entsprechenden Symbol\
FOR (::AggrDoIf('@','','battery'),"$_"|bat([$_:battery]))


Der erste Parameter ist ein Array, hier können insbesondere DOIF-Aggregationsfunktionen benutzt werden, aber auch alle anderen Funktionen, die ein Array liefern, wie z. B. devspec2array

Entsprechende Anwendungsbeispiele mit Dokumentation zu FOR werde ich demnächst in wiki einstellen.

Ergebnis der obigen Definition siehe Anhang

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 10 Januar 2020, 13:45:45
Neue DOIF-Version wurde eingecheckt.

wiki: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Eine_for-Schleife_mit_Hilfe_des_FOR-Befehls
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 26 Januar 2020, 22:13:31
Ich habe mal eine neue Funktion namens bin(<Art der Tonne>,<Anzahl der Tage>) für Abfall gebastelt:

defmod Abfall DOIF
attr Abfall DOIF_Readings bio:[#min:"^abfall$":"Bioabfall.*_days$"], GelberSack:[#min:"^abfall$":"GelberSack.*_days$"], Gruenschnitt:[#min:"^abfall$":"Gruenschnitt.*_days$"]
attr Abfall uiTable {\
  $TC{0..4}="align='center'";;\
  $SHOWNOSTATE=1;;\
}\
IMPORT .\contrib\DOIF\my_uitable.tpl\
## mit der Funktion 'bin' können Abfallbehälter visualisiert werden
bin("yellow",[$SELF:GelberSack])|bin("blue",[abfall:Altpapier_days])|bin("grey",[abfall:Restmuell_days])|bin("green",[$SELF:bio])|bin("greengreen",[$SELF:Gruenschnitt])
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Februar 2020, 21:33:31
Hier mal eine Abfalllösung ohne zusätzliche Abfallmodule https://forum.fhem.de/index.php/topic,103238.msg1020288.html#msg1020288.

Es wurde lediglich das Calendar-Modul definiert. Die Visualisierung-Funktion der Abfalleimer mit einem Counter kommt demnächst ins DOIF in einer allgemeineren Form, der entsprechende Wiki-Beitrag für uiTable wird dann aktualisiert.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 16 Februar 2020, 23:19:34
neue DOIF-Version eingecheckt

siehe:

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Icon-Darstellung_mit_Hilfe_der_Funktion_ICON

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Icon-Darstellung_mit_Text_mit_Hilfe_der_Funktion_icon_label

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzahl_der_Tage_bis_zur_Abfall-Entsorgung

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_aktueller_Spritpreis
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 März 2020, 20:56:56
neuer Eintrag Anwesenheitsstatus: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Anwesenheitsstatus
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 31 März 2020, 22:37:41
Jetzt wird es bunt. Es wird demnächst eine Reihe von uiTable-Funktionen geben, die auf SVG-Grafiken basieren. Das besondere an diesen Funktionen ist: beliebige Skalierbarkeit sowie Einfärbung. Im Anhang ein Vorgeschmack.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 01 April 2020, 17:25:26
Hier mal eine andere Darstellung der Temperatur.

Edit: Und in verschiedenen Größen
Unabhängig von der Darstellungen hat ein Temperaturwert immer die gleiche Farbe.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 April 2020, 10:15:56
Und so sieht es aus, wenn man mit den ganzen Gradienten experimentiert.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 10 April 2020, 09:54:03
Moin,
ich stehe gerade etwas auf dem Schlauch (vielleicht habe ich auch etwas überlesen...).
Ist es möglich die uiTable in Abhängigkeit z.B. eines Readings komplett auszublenden? Soll heissen, wenn z.B. ein Dummy ein- oder ausgeschaltet wird, dann blende die uiTable ein, oder aus.

Der Hintergrund:
Ich habe für jeden Raum ein "Übersichts"-DOIF (siehe Anhang). nun möchte ich die uiTable nur anzeigen lassen, wenn der Raum gerade auch "besucht/occupied" ist.

wünsche euch ein schönes Osterfest, bleibt gesund,

MAX.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 10 April 2020, 11:11:58
Zitat von: ComputerZOO am 10 April 2020, 09:54:03
Moin,
ich stehe gerade etwas auf dem Schlauch (vielleicht habe ich auch etwas überlesen...).
Ist es möglich die uiTable in Abhängigkeit z.B. eines Readings komplett auszublenden? Soll heissen, wenn z.B. ein Dummy ein- oder ausgeschaltet wird, dann blende die uiTable ein, oder aus.

Der Hintergrund:
Ich habe für jeden Raum ein "Übersichts"-DOIF (siehe Anhang). nun möchte ich die uiTable nur anzeigen lassen, wenn der Raum gerade auch "besucht/occupied" ist.

wünsche euch ein schönes Osterfest, bleibt gesund,

MAX.

nein, z. Zt. ist das nicht möglich, man kann umgekehrt den Status abhängig des Raumes ausblenden. Sind das Status von DOIF-Devices, die man sieht? Poste mal list von Übersicht Wohnzimmer-Device.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 10 April 2020, 12:57:33
Hallo, hier das List von dem Device:

STATE      initialized
   TYPE       DOIF
   VERSION    21224 vor 2 Monaten
   OLDREADINGS:
   READINGS:
     vor ein paar Sekunden   cmd             0
     vor einem Jahr   lightScene      Motion
     vor einem Jahr   lightSceneDay   Day
     vor 10 Stunden   lightSceneNow   PowerOff
     vor 5 Tagen   manual          off
     vor ein paar Sekunden   mode            enabled
     vor ein paar Sekunden   state           initialized
     vor 10 Stunden   status          off
     vor 2 Monaten   tempOff         18.5
     vor einem Jahr   tempOn          20.5
     vor 11 Stunden   tempSet         18.5
     vor einem Jahr   time            10
     vor 11 Stunden   watchingTV      off
   Regex:
     accu:
     cond:
       wz.cul868.motion.inside_Btn_02:"^Short.*$"] or [wz.hue.switch:"^400.$"]) {
fhem ("set $SELF manual off");
fhem ("set di.bar manual off");
fhem ("set $SELF status off");
fhem ("set wz.homezone occupied 0");
}
## cmd_2: Taster oben schaltet auf manuelle Bedienung
DOELSEIF ([wz.cul868.motion.inside_Btn_01:"^Short.*$"] and [?$SELF:manual] =~ /off/) {
fhem ("set $SELF manual on");
fhem ("set wz.lightscene scene Normal");
}
## cmd_3: Taster oben schaltet die Lichtszenen durch wenn manuelle Bedienung eingeschaltet ist
DOELSEIF ([wz.cul868.motion.inside_Btn_01:"^Short.*$"] and [?$SELF:manual] =~ /on/) {
fhem ("set wz.lightscene nextScene");
}
## cmd_4: status der Lichtszene beziehen
DOELSEIF ([wz.lightscene:"^status:.*$"] or [wz.lightscene:state]) {
fhem ("set $SELF status [wz.lightscene:status]");
if (ReadingsVal("$SELF", "lightSceneNow", "none") ne ReadingsVal("wz.lightScene", "state", "none")) {
fhem ("setreading $SELF lightSceneNow [wz.lightscene:state]");
}
}
## cmd_5: Helligkeit +
DOELSEIF ([wz.hue.switch:"^200.$"]) {
fhem ("set wz.hue.(ambiance|color|white).*:FILTER=state!=off dimUp 20");
}
## cmd_6: Helligkeit -
DOELSEIF ([wz.hue.switch:"^300.$"]) {
fhem ("set wz.hue.(ambiance|color|white).*:FILTER=state!=off dimDown 20");
}
## cmd_7: Raumtemperatur
DOELSEIF ([$SELF:tempSet]) {
centralHeating("$SELF");
fhem ("setreading di.bar tempSet ".ReadingsVal("$SELF", "tempSet", 18));
}
## cmd_8:
DOELSEIF ([$SELF:lightSceneNow]) {
fhem ("set wz.lightscene scene [$SELF:lightSceneNow]");
if (ReadingsVal("$SELF", "lightSceneNow", "none") ne "PowerOff") {
fhem ("set $SELF manualOn");
} else {
fhem ("set $SELF manualOff");
}
}
## di.sz di.wz di.bz di.ku di.fl di.bar di.ws di.th di.db
   FUUID      5c431c24-f33f-85c0-f9cd-3f9aa133f342c89e
   FVERSION   98_DOIF.pm:0.212240/2020-02-18
   MODEL      FHEM
   NAME       di.wz
   NOTIFYDEV  di.wz,wz.lightscene,wz.cul868.motion.inside_Btn_02,wz.hue.switch,global,wz.cul868.motion.inside_Btn_01
   NR         389
   NTFY_ORDER 50-di.wz
   STATE      initialized
   TYPE       DOIF
   VERSION    21224 2020-02-18 18:45:49
   OLDREADINGS:
   READINGS:
     2020-04-10 12:54:21   cmd             0
     2018-12-24 23:53:53   lightScene      Motion
     2019-01-07 13:14:30   lightSceneDay   Day
     2020-04-10 02:34:11   lightSceneNow   PowerOff
     2020-04-05 21:11:14   manual          off
     2020-04-10 12:54:21   mode            enabled
     2020-04-10 12:54:21   state           initialized
     2020-04-10 02:34:11   status          off
     2020-02-25 23:35:01   tempOff         18.5
     2019-02-01 16:36:38   tempOn          20.5
     2020-04-10 01:52:16   tempSet         18.5
     2018-12-24 23:53:56   time            10
     2020-04-10 01:53:34   watchingTV      off
   Regex:
     accu:
     cond:
       di.wz:
         6:
           tempSet    ^di.wz$:^tempSet:
         7:
           lightSceneNow ^di.wz$:^lightSceneNow:
       wz.cul868.motion.inside_Btn_01:
         1:
           &STATE     ^wz.cul868.motion.inside_Btn_01$
         2:
           &STATE     ^wz.cul868.motion.inside_Btn_01$
       wz.cul868.motion.inside_Btn_02:
         0:
           &STATE     ^wz.cul868.motion.inside_Btn_02$
       wz.hue.switch:
         0:
           &STATE     ^wz.hue.switch$
         4:
           &STATE     ^wz.hue.switch$
         5:
           &STATE     ^wz.hue.switch$
       wz.lightscene:
         3:
           &STATE     ^wz.lightscene$
           state      ^wz.lightscene$:^state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('wz.cul868.motion.inside_Btn_02',$hash,'^Short.*$',1) or ::EventDoIf('wz.hue.switch',$hash,'^400.$',1)
     1          ::EventDoIf('wz.cul868.motion.inside_Btn_01',$hash,'^Short.*$',1) and ::ReadingValDoIf($hash,'di.wz','manual') =~ /off/
     2          ::EventDoIf('wz.cul868.motion.inside_Btn_01',$hash,'^Short.*$',1) and ::ReadingValDoIf($hash,'di.wz','manual') =~ /on/
     3          ::EventDoIf('wz.lightscene',$hash,'^status:.*$',1) or ::ReadingValDoIf($hash,'wz.lightscene','state')
     4          ::EventDoIf('wz.hue.switch',$hash,'^200.$',1)
     5          ::EventDoIf('wz.hue.switch',$hash,'^300.$',1)
     6          ::ReadingValDoIf($hash,'di.wz','tempSet')
     7          ::ReadingValDoIf($hash,'di.wz','lightSceneNow')
   do:
     0:
       0          { fhem ("set di.wz manual off"); fhem ("set di.bar manual off"); fhem ("set di.wz status off"); fhem ("set wz.homezone occupied 0"); }
     1:
       0          { fhem ("set di.wz manual on"); fhem ("set wz.lightscene scene Normal"); }
     2:
       0          { fhem ("set wz.lightscene nextScene"); }
     3:
       0          { fhem ("set di.wz status [wz.lightscene:status]"); if (ReadingsVal("di.wz", "lightSceneNow", "none") ne ReadingsVal("wz.lightScene", "state", "none")) { fhem ("setreading di.wz lightSceneNow [wz.lightscene:state]"); } }
     4:
       0          { fhem ("set wz.hue.(ambiance|color|white).*:FILTER=state!=off dimUp 20"); }
     5:
       0          { fhem ("set wz.hue.(ambiance|color|white).*:FILTER=state!=off dimDown 20"); }
     6:
       0          { centralHeating("di.wz"); fhem ("setreading di.bar tempSet ".ReadingsVal("di.wz", "tempSet", 18)); }
     7:
       0          { fhem ("set wz.lightscene scene [di.wz:lightSceneNow]"); if (ReadingsVal("di.wz", "lightSceneNow", "none") ne "PowerOff") { fhem ("set di.wz manualOn"); } else { fhem ("set di.wz manualOff"); } }
     8:
   helper:
     DEVFILTER  ^global$|^wz.hue.switch$|^wz.cul868.motion.inside_Btn_02$|^di.wz$|^wz.cul868.motion.inside_Btn_01$|^wz.lightscene$
     NOTIFYDEV  global|wz.hue.switch|wz.cul868.motion.inside_Btn_02|di.wz|wz.cul868.motion.inside_Btn_01|wz.lightscene
     globalinit 1
     last_timer 0
     sleeptimer -1
   powerMap:
   readings:
     all         wz.lightscene:state di.wz:tempSet di.wz:lightSceneNow
   readingsDesc:
   trigger:
     all         wz.cul868.motion.inside_Btn_02 wz.hue.switch wz.cul868.motion.inside_Btn_01 wz.lightscene
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   alias      Übersicht (Wohnzimmer)
   climaDevice wz.cul868.heizung_Clima
   comment    {
  package ui_Table;
}
## schaltbares Icons in der Webansicht (ZUM TESTEN im attr uiTable einfügen)
switch([dummy1:state]) |
switch([dummy2:state],"hue_room_hallway") |
switch([dummy3:state],"status_away_2","status_available\@DarkOrange")|
switch([dummy4:state],"status_locked","status_open\@DarkOrange","closed","open")
   devStateIcon { devStateIcon_Uebersicht($name) }
   do         always
   eventMap   /manual on:manualOn/manual off:manualOff/
   group      00_Home_Übersicht
   icon       hue_room_living
   offsetTemp 11
   readingList lightSceneDay lightScene lightSceneNow manual time tempOn tempOff tempSet status watchingTV
   room       MAXsHome,System->Module->DOIF,Wohnzimmer
   sensorAmbient wz.esp.innensensor
   sensorContact wz.cul868.contact.doorinside,wz.cul868.contact.window
   setList    lightSceneDay:none,Day,Motion,Normal,Nacht,Christmas,Aufstehen,Colorful,Hell
lightScene:PowerOff,Motion,Normal,Christmas,Aufstehen,Colorful,Hell
lightSceneNow:PowerOff,Motion,Day,Normal,AppleTV,Fernsehen,Christmas,Aufstehen,Nacht,Colorful,Hell
time:selectnumbers,1,1,60,0,lin
manual:on,off
status:on,off
watchingTV:on,off
tempOn:selectnumbers,15,0.5,30,1,lin
tempOff:selectnumbers,12,0.5,20,1,lin
tempSet:selectnumbers,15,0.5,30,1,lin
   sortby     01
   userattr   offsetTemp sensorAmbient sensorContact climaDevice
   verbose    1
   webCmd     lightSceneNow:tempSet


Ich könnte in dieses Device natürlich noch den Status des Raums (in meinem Fall durch das Modul "homezone") als Reading integrieren.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 10 April 2020, 13:32:39
Ich schaue mal, was ich das für´s nächste Update einbauen kann.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 12 April 2020, 16:23:14
hier mal kombinierte Temperatur/Feuchte wie sie aus vielen Sensoren kommt

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 14 April 2020, 21:34:53
Endspurt. Die letzten Widgets werden fertiggestellt.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 20 April 2020, 18:16:19
Eine Vorabversion zum Ausprobieren neuer uiTable-Funktionen.

Syntax:

Parameter $min,$max,$size sind optional, default $min=-20, $max=60

temp_bar ($value,$min,$max,$size)   default $size=50

temp_ring ($value,$min,$max,$size)  default $size=40

hum_ring ($value,$size)   default $size=40

temp_hum_ring ($value,$value2,$min,$max,$size)  default $size=55


Beispieldefinition:

defmod di_new_func DOIF ##
attr di_new_func uiTable {package ui_Table}\
"temp_bar"| temp_bar ([Aussensensor:temperature])\
"temp_ring" | temp_ring ([Aussensensor:temperature])\
"hum_ring"  | hum_ring ([Aussensensor:humidity])\
"temp_hum_ring"|temp_hum_ring([Aussensensor:temperature],[Aussensensor:humidity])


Layout der Beispieldefinition siehe Anhang.

Wiki-Einträge kommen später, wenn sich die neuen Funktionen bewähren und die Version eingecheckt wird.

Edit: aktuelle DOIF-Version zum Testen im ersten Post
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 21 April 2020, 10:19:45
Moin,
ich habe gerade mal die (Test) 98_DOIF.pm ausprobiert und erhalte noch nicht so richtig das gewünschte Ergebnis:
:
           TIME       1587456472.57092
           VALUE      initialized
   READINGS:
     vor 9 Minuten   cmd             0
     vor 9 Minuten   mode            enabled
     vor 9 Minuten   state           initialized
   Regex:
     accu:
     uiTable:
       di_new_func
   NOTIFYDEV  global,da.esp.aussensensor
   NR         1025
   NTFY_ORDER 50-di_new_func
   STATE      initialized
   TYPE       DOIF
   Helper:
     DBLOG:
       cmd:
         sys.dblogging:
           TIME       1587456472.57092
           VALUE      0
       mode:
         sys.dblogging:
           TIME       1587456472.57092
           VALUE      enabled
       state:
         sys.dblogging:
           TIME       1587456472.57092
           VALUE      initialized
   READINGS:
     2020-04-21 10:07:52   cmd             0
     2020-04-21 10:07:52   mode            enabled
     2020-04-21 10:07:52   state           initialized
   Regex:
     accu:
     uiTable:
       da.esp.aussensensor:
         di_new_func_uiTable_c_0_1_0_0:
           temperature ^da.esp.aussensensor$:^temperature:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$|^da.esp.aussensensor$
     NOTIFYDEV  global|da.esp.aussensensor
     globalinit 1
     last_timer 0
     sleeptimer -1
   powerMap:
   readingsDesc:
     myEnergy:
       rtype      whr
     power:
       rtype      w
   uiState:
   uiTable:
     dev        da.esp.aussensensor
     package    package ui_Table;
     reading    temperature
     table:
       0:
         0:
           0:
             0          package ui_Table;"temp_bar"
         1:
           0:
             0          package ui_Table;::DOIF_Widget($hash,$reg,'di_new_func_uiTable_c_0_1_0_0', temp_bar (::ReadingValDoIf($hash,'da.esp.aussensensor','temperature')),"")
     tc:
     td:
       0:
     tr:
Attributes:
   DbLogExclude .*
   event-on-change-reading .*
   room       NEU,System->Module->DOIF
   uiTable    {
package ui_Table;
}
"temp_bar" | temp_bar ([da.esp.aussensensor:temperature])


ergibt das Bild im Anhang und folgende Fehlermeldungen im Log:
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [106,100,100]. should be in 0..1.
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [270,70,100]. should be in 0..1.
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [346,100,100]. should be in 0..1.
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [270,70,100]. should be in 0..1.
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [106,100,100]. should be in 0..1.
2020.04.21 10:14:56.914 1: Color::hsv2rgb value out of range [106,100,100]. should be in 0..1.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 21 April 2020, 10:42:59
Die Farbe kann nicht berechnet werden. Evtl. ist die Color.pm nicht aktuell.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 21 April 2020, 10:48:59
Zitat von: Damian am 21 April 2020, 10:42:59
Die Farbe kann nicht berechnet werden. Evtl. ist die Color.pm nicht aktuell.

FHEM/Color.pm:# $Id: Color.pm 20813 vor 4 MonatenZ justme1968 $

System ist Up2Date
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 21 April 2020, 11:49:49
Zitat von: ComputerZOO am 21 April 2020, 10:48:59
FHEM/Color.pm:# $Id: Color.pm 20813 vor 4 MonatenZ justme1968 $

System ist Up2Date

Ich habe die Routine jetzt rausgeschmissen. Es sollte eigentlich nur eine Warnung sein. Bei mir wurden die Farben trotz der Warnung korrekt dargestellt. Ist jetzt unerheblich, neue DOIF-Version 0.2 im Anhang des ursprünglichen Posts.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 24 April 2020, 21:55:50
uitable-Funktion: cylinder

Syntax:

cylinder ($header,$min,$max,$unit,$bwidth,$height,($value1,$color1,$text1),($value2,$color2,$text2),...

$header, $unit, $bwidth, $height können mit "" ausgelassen werden

$color ist ein hue-Wert 0-360 (siehe color picker)

Beispieldefinition:

attr Energie uiTable {\
package ui_Table;;\
}\
\
cylinder("Energie",-20,30,"kWh","","",-[zaehler:Bezug:d1],0,"Bezug",[zaehler:Produktion:d1],60,"Produktion",[$SELF:Eigenv:d1],240,"Eigenverbrauch")



DOIF-Version v0.3 im ersten Post des Threads.


Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 25 April 2020, 20:25:45
Ich habe fertig. Ich habe die temp_bar-Funktion etwas flexibler gestaltet. Es gibt ebenso Funktionen bar, ring, die nicht nur auf Temperatur beschränkt sind. Die aktuelle Version v.04 befindet sich im ersten Post, sie wird demnächst eingecheckt.

Syntax:

temp_bar ($value,$min,$max,$width,$height,$size)

Parameter $min,$max,$width,$height,$size sind optional

Beispieldefinition:

attr di_temp_bar uiTable {package ui_Table}\
\
temp_bar([Aussensensor:temperature],-20,40)|\
temp_bar([Aussensensor:temperature],-20,40,undef,80)|\
temp_bar([Aussensensor:temperature],-20,40,undef,300)|\
temp_bar([Aussensensor:temperature],-20,40,undef,undef,100)





Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 25 April 2020, 21:33:11
Uuuiii.

Viel bunt. Sieht sehr gut aus.

Bin mal gespannt.....

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 26 April 2020, 21:54:02
Zitat von: ComputerZOO am 10 April 2020, 09:54:03
Moin,
ich stehe gerade etwas auf dem Schlauch (vielleicht habe ich auch etwas überlesen...).
Ist es möglich die uiTable in Abhängigkeit z.B. eines Readings komplett auszublenden? Soll heissen, wenn z.B. ein Dummy ein- oder ausgeschaltet wird, dann blende die uiTable ein, oder aus.

Der Hintergrund:
Ich habe für jeden Raum ein "Übersichts"-DOIF (siehe Anhang). nun möchte ich die uiTable nur anzeigen lassen, wenn der Raum gerade auch "besucht/occupied" ist.

wünsche euch ein schönes Osterfest, bleibt gesund,

MAX.

In der Version 0.7 im ersten Post gibt es jetzt die neue Funktionalität uiTable raumabhängig auszublenden.

Syntax:

$SHOWNOUITABLE=<Regex für Räume>


Beispiel:

{
package ui_Table;
$SHOWNOUITABLE="test10";
}


Im Raum test10 wird sie nicht angezeigt.




Titel: Antw:uiTable - neue Funktionen
Beitrag von: moskito am 26 April 2020, 22:41:20
Da gibt´s jetzt viel auszuprobieren...  :)

Aber ich hätte da mal eine Frage:
Gibt es eine Möglichkeit uiTable im Dashboard anzeigen zu lassen?
Die mit uiTable erzeugte Ausgabe wird dort nicht angezeigt.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 27 April 2020, 07:44:37
Zitat von: moskito am 26 April 2020, 22:41:20
Da gibt´s jetzt viel auszuprobieren...  :)

Aber ich hätte da mal eine Frage:
Gibt es eine Möglichkeit uiTable im Dashboard anzeigen zu lassen?
Die mit uiTable erzeugte Ausgabe wird dort nicht angezeigt.

Dashboard hat vermutlich eine eigene WEB-Schnittstelle, DOIF benutzt eine WEB-Schnittstelle zu FHEM-WEB.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 27 April 2020, 15:37:03
Moin,
ich teste mich gerade mal so durch die neuen Funktionen durch. Kann es sein, dass temp_bar noch einen weiteren Parameter ($BEZEICHNUNG?) hat?
temp_bar ($value,$min,$max,$BEZEICHNUNG,$width,$height)

temp_bar ([wz.cul868.heizung_Clima:desired-temp], 15, 22, "xyz", 80, 120)
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 27 April 2020, 18:04:48
Zitat von: ComputerZOO am 27 April 2020, 15:37:03
Moin,
ich teste mich gerade mal so durch die neuen Funktionen durch. Kann es sein, dass temp_bar noch einen weiteren Parameter ($BEZEICHNUNG?) hat?
temp_bar ($value,$min,$max,$BEZEICHNUNG,$width,$height)

temp_bar ([wz.cul868.heizung_Clima:desired-temp], 15, 22, "xyz", 80, 120)

ja, es haben sich noch ein paar Dinge geändert, die aktuellen Parameter sind:

temp_bar ($value,$min,$max,$header,$width,$height,$size)

mit $size kann man die gesamte Größe skalieren.

Ich bin inzwischen bei Version v0.8. Ich teste noch etwas und wenn mir nichts mehr auffällt, dann geht die DOIF Version morgen online. Die entsprechenden Wiki-Einträge kommen dann nach und nach.

Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 27 April 2020, 19:07:53
Hallo Damian.

Habe mit der v0.8 mal ein bischen geprobt und was einfaches angelegt. Dabei ist Darstellungsfehler sichtbar geworden, warum auch immer.
Und ich wollte fragen, ob man den Abstand zwischen Widgets verkleinern kann ?


{package ui_Table}

temp_bar([ts01:temperature],15,35,"WZ",60,100)|
temp_bar([ts02:temperature],-10,40,"Garten",60,100)|
temp_bar([ts_ben:temperature],15,35,"KiZi",60,100)|
temp_bar([ts_gz:temperature],12,25,"GZ",60,100)


Ok. habe gerade gesehen, wenn ich das Widget um 10 breiter mache dann stimmt die Darstellung.
Was mich dann zu einer Frage bringt, ob man den angezeigten Wert (Schriftgröße) änder kann.

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 27 April 2020, 19:46:50
Zitat von: sash.sc am 27 April 2020, 19:07:53
Hallo Damian.

Habe mit der v0.8 mal ein bischen geprobt und was einfaches angelegt. Dabei ist Darstellungsfehler sichtbar geworden, warum auch immer.
Und ich wollte fragen, ob man den Abstand zwischen Widgets verkleinern kann ?


{package ui_Table}

temp_bar([ts01:temperature],15,35,"WZ",60,100)|
temp_bar([ts02:temperature],-10,40,"Garten",60,100)|
temp_bar([ts_ben:temperature],15,35,"KiZi",60,100)|
temp_bar([ts_gz:temperature],12,25,"GZ",60,100)


Ok. habe gerade gesehen, wenn ich das Widget um 10 breiter mache dann stimmt die Darstellung.
Was mich dann zu einer Frage bringt, ob man den angezeigten Wert (Schriftgröße) änder kann.

Bei der Breite solltest du nicht unter 75 gehen, das ist auch der Defaultwert. Du kannst das ganze Widget kleiner machen, in dem du size kleiner 100 angibst.

Es ist eine Tabelle. Es gibt vermutlich noch etwas anderes in der Spalte über oder unter dem DOIF, so dass die DOIF Tabelle auseinander gezogen wird.

Du kannst am besten in einem separaten Raum testen, wo nur dein DOIF drin ist, dann siehst du die tatsächlichen Abstände zwischen den Widgets.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 27 April 2020, 19:57:35
Ok. Werde das mal in einen anderen Raum schieben, vorzugsweise einen leeren Raum.

Wie oder womit wird die Ringanzeige definiert bzw aktivert?

Gruß Sascha

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 27 April 2020, 20:17:08
Funktionen mit ihren Parametern:

temp_bar ($value,$min,$max,$header,$width,$height,$size)

temp_ring ($value,$min,$max,$size)

hum_ring  ($value,$size)

temp_hum_ring ($value,$value2,$min,$max,$size)

Die oberen Funktionen basieren auf allgemeinen Funktionen:

bar ($value,$min,$max,$header,$minColor,$maxColor,$unit,$bwidth,$bheight,$size,$func,$dec)

ring ($value,$min,$max,$minColor,$maxColor,$unit,$size,$func,$de
c)

ring2 ($value,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$value2,$min2,$max2,$minColor2,$maxColor2,$unit2,$func2,$dec2)

und

cylinder ($header,$min,$max,$unit,$bwidth,$height,$size,$dec,@values)

Die meisten Parameter sind optional, oft reicht die Angabe des Wertes (value)

Konkrete Beispiele habe ich bereits hier im Thread gepostet.

Im Wiki wird es natürlich genauer beschrieben.

Im Anhang ist mein aktueller Statusbildschirm basierend auf Version v0.8.

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 19:42:45
neue DOIF-Version wurde eingecheckt
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 28 April 2020, 20:52:31
Hallo Damian.

Es gibt ja den temp_hum_ring.
Ist es möglich diesen auch als temp-hum-bar darzustellen ? Also 2 Balken (temp und humidity) nebeneinander ?

Gruß und Danke
Sascha
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 21:00:01
Zitat von: sash.sc am 28 April 2020, 20:52:31
Hallo Damian.

Es gibt ja den temp_hum_ring.
Ist es möglich diesen auch als temp-hum-bar darzustellen ? Also 2 Balken (temp und humidity) nebeneinander ?

Gruß und Danke
Sascha

z. Zt. gibt es nur temp_bar, temp_hum_bar ist nicht programmiert. Man kann mit der Funktion bar alles Mögliche darstellen, z. B. humidity, allerdings mit nur einem Balken. Was die Zukunft noch bringt werden sehen. Wenn jemand sich etwas mit html auskennt, so kann er schnell die bestehenden svg-Funktionen auslagern und für seine Zwecke anpassen oder erweitern.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 21:11:52
so sieht z. B. Feuchte über die Funktion bar aus:

defmod di_new_func DOIF ##
attr di_new_func uiTable {package ui_Table}\
"hum_bar"| bar([Aussensensor:humidity],0,100,"Aussen",undef,undef,"%",60,undef,undef,\&hum_hue,0)


Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 21:17:49
oder Feuchte über die Funktion cylinder:

defmod di_new_func DOIF ##
attr di_new_func uiTable {package ui_Table}\
"hum_cylinder"|cylinder("Außen",0,100,"%",100,50,undef,0,[Aussensensor:humidity],200,"Feuchte")
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 21:30:46
oder wie wäre es mit einem cylinder, dessen Farbe sich an die Feuchte anpasst:

defmod di_new_func DOIF ##
attr di_new_func uiTable {package ui_Table}\
"hum_cylinder"|cylinder("Außen",0,100,"%",100,50,undef,0,[Aussensensor:humidity],hum_hue([Aussensensor:humidity]),"Feuchte")


Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 28 April 2020, 21:38:23
oder wie wäre es mit Skalierung immer in bester Schärfe:

defmod di_new_func DOIF ##
attr di_new_func uiTable {package ui_Table}\
"hum_cylinder"|cylinder("Außen",0,100,"%",100,50,undef,0,[Aussensensor:humidity],hum_hue([Aussensensor:humidity]),"Feuchte")\
"hum_cylinder"|cylinder("Außen",0,100,"%",100,50,50,0,[Aussensensor:humidity],hum_hue([Aussensensor:humidity]),"Feuchte")\
"hum_cylinder"|cylinder("Außen",0,100,"%",100,50,200,0,[Aussensensor:humidity],hum_hue([Aussensensor:humidity]),"Feuchte")
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 02 Mai 2020, 14:05:49
Hallo Damian.

Danke für deine Beispiele.

Habe gerade versucht, den ring2 zu defnieren.


"Garten",temp_hum_ring([ts02:temperature],[ts02:humidity],-10,35,175)|
"Garten", ring2 ([ts02:temperature],-10,30,blue,red,"°C",150,linear,1)|



Bekomme aber nur Garten angezeigt, jedoch keinen Ring2. Die 1. Definition funktioniert ohne Probleme.

Stimmt das mit der min max Farbe oder müssen dort Werte rein? und wie muss die $func definiert sein ?
Und wie bekomme ich die Bezeichnung/Label mittig über die Grafik?

Ich habe auch versucht, den Staus eines CUL´s (Initialized/disconnected) darzustellen. Habe mich an dein beispiel aus der WIKI gehalten.


## Icon für Zustand 'closed' ist "status_locked", für Zustand 'open' 'status_open\@DarkOrange'\
"Haus"|icon([Schloss:state],"status_locked","status_open\@DarkOrange","closed","open")


Wenn ich analg dazu das uitable definiere wird jedoch nix angezeigt !


"CUL1" |icon ([CUL868:state],"cul_cul\@red","cul_cul\@lime","Initialized","disconnected")


Gruß und Danke
Sascha

P.S.

Mit der Zentrierung des Labels habe ich selber gefunden.


defmod di_uiTable_temp DOIF ##
attr di_uiTable_temp uiTable {\
  package ui_Table;;           ## Package für uiTable-Funktionen\
  $TC{0..2}="align='center'";; ## zentrierte Darstellung aller Tabellenspalten\
}\
## Tabellendefinition\
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 15:05:46
"Garten", ring2 ([ts02:temperature],-10,30,blue,red,"°C",150,linear,1)|

Texte müssen in Anführungszeichen, Farben nur als Werte zwischen 0  und 360 (siehe color picker in der Googlesuche)

Was soll ring2 als Zweites darstellen?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 02 Mai 2020, 15:21:45
Du hattest hier



Funktionen mit ihren Parametern:

temp_bar ($value,$min,$max,$header,$width,$height,$size)

temp_ring ($value,$min,$max,$size)

hum_ring  ($value,$size)

temp_hum_ring ($value,$value2,$min,$max,$size)

Die oberen Funktionen basieren auf allgemeinen Funktionen:

bar ($value,$min,$max,$header,$minColor,$maxColor,$unit,$bwidth,$bheight,$size,$func,$dec)

ring ($value,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec)

ring2 ($value,$min,$max,$minColor,$maxColor,$unit,$size,$func,$dec,$value2,$min2,$max2,$minColor2,$maxColor2,$unit2,$func2,$dec2)

und

cylinder ($header,$min,$max,$unit,$bwidth,$height,$size,$dec,@values)

Die meisten Parameter sind optional, oft reicht die Angabe des Wertes (value)



Das mit Ring2 erwähnt, oder ist da nur eine interne FUnktion ??


Danke !
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 16:05:37
ring2 kann man nutzen, aber wie du sieht, sind da jede Menge Parameter, die sich auf zwei verschiedene Werte beziehen, die man darstellen will. ring2 wird z. B. von temp_hum_ring genutzt.

Was möchtest du mit ring2 konkret darstellen?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 02 Mai 2020, 16:14:20
Ich wollte einfach mal alle Darstellungen ausprobieren.

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 16:17:41
Zitat von: sash.sc am 02 Mai 2020, 16:14:20
Ich wollte einfach mal alle Darstellungen ausprobieren.

Gesendet von meinem MI 9 mit Tapatalk

Sie entspricht temp_hum_ring mit zweit Ringen, wie in meinem jetzigen Profilbild für beliebige zwei Werte.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: jkriegl am 02 Mai 2020, 16:24:25
Ich möchte gerne mit ring2 Collektor-Temp und Rücklauf  darstellen
ring2([HK.SOL:S.CollTemp],0,130,,,"°C",,,,[HK.SOL:S.FlowBack])
den 2. Wert bekomme ich nicht hin. Müssen ev. Parameter undef sein.
Später Heizung Vorlauf - Rücklauf.
3 Puffertemperaturen unten, mitte, oben funktionieren mit cylinder.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: jkriegl am 02 Mai 2020, 16:55:23
Wetterbeispiel: aktuell uni-muenchen
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 16:55:32
Ich merke schon, ihr braucht dringend vernünftige Doku :)

Hier mal zwei Temperaturen mit ring2:

ring2([ESPEasy_ESP_Temp_Vorlauf:Temperature],15,60,undef,undef,"°C",undef,\&temp_hue,1,[ESPEasy_ESP_Temp_Keller_Ruecklauf:Temperature],15,60,undef,undef,"°C",\&temp_hue,1)


Titel: Antw:uiTable - neue Funktionen
Beitrag von: jkriegl am 02 Mai 2020, 17:07:18
Danke klappt - Doku wäre nicht schlecht, weil wir sonst nur rumprobieren.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 17:10:32
Zitat von: jkriegl am 02 Mai 2020, 17:07:18
Danke klappt - Doku wäre nicht schlecht, weil wir sonst nur rumprobieren.

ja, bin bisher nicht dazu gekommen, steht aber auf höchster Prio.

Zwei Temperaturen im Ring sind auch keine schlechte Idee -> es wird dann auch die Funktion temp_temp_ring geben ;)
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 02 Mai 2020, 17:11:42
[emoji106]

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 17:21:58
Und schon realisiert:

temp_temp_ring ($temp1,$temp2,$mintemp,$maxtemp,$size)

$mintemp,$maxtemp,$size sind optional

Bsp.

temp_temp_ring([ESPEasy_ESP_Temp_Vorlauf:Temperature],[ESPEasy_ESP_Temp_Keller_Ruecklauf:Temperature],15,60)

Morgen per Update verfügbar :)

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 17:40:18
Und weil es so viel Spaß macht, habe ich noch eine hum_bar-Funktion programmiert:

hum_bar ($value,$header,$width,$height,$size)

$header,$width,$height,$size sind optional

Bsp.:

hum_bar([Aussensensor:humidity],"außen")
Titel: Antw:uiTable - neue Funktionen
Beitrag von: jkriegl am 02 Mai 2020, 17:41:17
Hab hiermit ein Problem beim Runden 0-Nachkommastellen
bar([HK.SOL:S.Pumpe],0,100,"Pumpe",undef,undef,"%",undef,undef)

Edit: es wird scheinbar bei Daten auch ohne Komma mit 1-er Nachkommastelle formatiert
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 17:55:56
Zitat von: jkriegl am 02 Mai 2020, 17:41:17
Hab hiermit ein Problem beim Runden 0-Nachkommastellen
bar([HK.SOL:S.Pumpe],0,100,"Pumpe",undef,undef,"%",undef,undef)

Edit: es wird scheinbar bei Daten auch ohne Komma mit 1-er Nachkommastelle formatiert

Normal, falls du keine Nachkommastellen haben willst, dann musst du das mit $dec=0 angeben

bar ($value,$min,$max,$header,$minColor,$maxColor,$unit,$bwidth,$bheight,$size,$func,$dec)

bar([HK.SOL:S.Pumpe],0,100,"Pumpe",undef,undef,"%",undef,undef,undef,undef,0)
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 18:00:52
neue Version eingecheckt mit temp_temp_ring und hum_bar
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 02 Mai 2020, 19:13:52
So, der Anfang ist gemacht: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#SVG-uiTable-Funktionen
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 01:06:34
Habe da noch ne Frage.

Wozu dient in deiner definition die $func \&temp_hue ?
Gibt es irgendwo eine Erklärung ?

Zitat von: Damian am 02 Mai 2020, 16:55:32
Ich merke schon, ihr braucht dringend vernünftige Doku :)

Hier mal zwei Temperaturen mit ring2:

ring2([ESPEasy_ESP_Temp_Vorlauf:Temperature],15,60,undef,undef,"°C",undef,\&temp_hue,1,[ESPEasy_ESP_Temp_Keller_Ruecklauf:Temperature],15,60,undef,undef,"°C",\&temp_hue,1)
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 09:02:48
Zitat von: sash.sc am 03 Mai 2020, 01:06:34
Habe da noch ne Frage.

Wozu dient in deiner definition die $func \&temp_hue ?
Gibt es irgendwo eine Erklärung ?

$func ist eine Funktion, die zum aktuellen Wert, hier Temperatur, einen Farbwert hue zwischen 0 und 360 liefert.

Wird sie nicht angegeben oder als undef, dann wird der Farbwert hue linear zwischen $minColor und $maxColor interpoliert.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 11:42:43
Wiki-Doku für: temp_ring, hum_ring, temp_hum_ring, temp_temp_ring, temp_bar, hum_bar ist fertig, siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#SVG-uiTable-Funktionen

Als Nächstes kommt noch die Beschreibung der universellen Funktionen: bar, ring, ring2, cylinder 
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 11:43:47
Welche mögliche Funktionen gibt es denn noch? Evtl. Mit Beschreibung?

Gruß und danke
Sascha

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 12:01:03
Zitat von: sash.sc am 03 Mai 2020, 11:43:47
Welche mögliche Funktionen gibt es denn noch? Evtl. Mit Beschreibung?

Gruß und danke
Sascha

Gesendet von meinem MI 9 mit Tapatalk

z. Zt. keine
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 18:20:36
Hallo Damian.

Deine ui werte das ganze doch sehr auf. Bin gerade etwas am experimentieren.

Wollte mir eine Übersicht der Temperaturen mit Taupunkte zusammen bauen. Siehe Bild.
Besteht die Möglichkeit, dass der temp_bar mit dem Taupunkt weiter an den tem_hum_ring ran rückt ??


{package ui_Table;;           ## Package für uiTable-Funktionen\

$TC{0..5}="align='center'";;
## Ausblenden des Status in der Statuszeile\
$SHOWNOSTATE=1;;
## Die Gerätezeile wird ausgeblendet in allen Räumen\
## $SHOWNODEVICELINE = ".*";;
}

"Garten",temp_hum_ring([ts02:temperature],[ts02:humidity],-10,35,140)|
temp_bar([ts02:dewpoint],0,20,)|
"WZ",temp_hum_ring([ts01:temperature],[ts01:humidity],18,35,140)|
"Bad_EG",temp_hum_ring([ts_bad_eg:temperature],[ts_bad_eg:humidity],18,25,140)|
"KiZi",temp_hum_ring([ts_ben:temperature],[ts_ben:humidity],18,25,140)|
"SZ",temp_hum_ring([ts_sz:temperature],[ts_sz:humidity],15,28,140)|



Gruß und Danke
Sascha
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 18:28:31
Das hatten wir doch schon mal: https://forum.fhem.de/index.php/topic,106059.msg1047731.html#msg1047731
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 18:33:52
Habe die ganzen doifs mit ui in einem eigenen Raum gepackt.

Mir geht es um den Abstand zwischen den Ring und dem bar. Kann man diesen verkleinern?


Diese Darstellung ist bei weitem noch nicht final.

Gesendet von meinem MI 9 mit Tapatalk
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 18:39:00
Bei HTML-Tabellen orientiert sich die Breite jeder Zeile an der breitesten Zeile der Spalte. Da musst du selbst drauf achten, dass die Zeilen ungefähr gleichmäßig gefüllt sind - darauf habe ich keinen Einfluss.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 18:47:40
Ok. Danke

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 18:51:53
Ich gehe davon aus, dass in deinem Beispiel die breiteste Zeile die letzte Zeile ist, wenn du dort die Symbole verkleinerst, wird die Breite der Spalte sich verkleinern - die Abstände in den anderen Zeilen werden kleiner.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: sash.sc am 03 Mai 2020, 19:11:35
Oder muss es mal mit der Ausrichtung probieren. Habe da alles auf Center gestellt, also mittig

Gesendet von meinem MI 9 mit Tapatalk

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 19:14:41
Zitat von: sash.sc am 03 Mai 2020, 19:11:35
Oder muss es mal mit der Ausrichtung probieren. Habe da alles auf Center gestellt, also mittig

Gesendet von meinem MI 9 mit Tapatalk

Die Abstände zwischen den Symbolen sind doch alle gleichmäßig verteilt -> Spalten sind zentriert.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: jkriegl am 03 Mai 2020, 20:01:17
Habe mein Tanke-readingsgroup umgestellt
und mit icons gebastelt. Da ich kein Icon  für Feinstaub gefunden habe, habe ich den "knob" probiert.  Leider ist dieser an (temp_)knob gebunden und man kann keine Grenzwerte einstellen.
Vielen Dank für diese neuen Funktionen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 20:10:49
Zitat von: jkriegl am 03 Mai 2020, 20:01:17
Habe mein Tanke-readingsgroup umgestellt
und mit icons gebastelt. Da ich kein Icon  für Feinstaub gefunden habe, habe ich den "knob" probiert.  Leider ist dieser an (temp_)knob gebunden und man kann keine Grenzwerte einstellen.
Vielen Dank für diese neuen Funktionen.

Dann kannst du gleich Feinstaub mit Hilfe der gerade fertiggestellten Docu zur Funktion ring versuchen umzusetzen. ;)

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Anzeige_eines_Zahlenwertes_mit_Hilfe_der_universellen_SVG-Funktion_ring
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 20:17:13
Ach ja. Habe ich schon gesagt, dass die SVG-Widgets auch außerhalb von DOIF funktionieren? ;)
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 21:08:10
Nächste Doku fertig: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Anzeige_eines_Zahlenwertes_mit_Hilfe_der_universellen_SVG-Funktion_bar
Titel: Antw:uiTable - neue Funktionen
Beitrag von: KernSani am 03 Mai 2020, 21:19:52
Zitat von: Damian am 03 Mai 2020, 21:08:10
Nächste Doku fertig: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Anzeige_eines_Zahlenwertes_mit_Hilfe_der_universellen_SVG-Funktion_bar
Arrg, und ich habe mich gestern abend durch den source Code gequält (was eigentlich nicht wirklich eine Qual war ;-)) um ein paar bars zu erstellen :-)


Kurz, weil mobil....
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 03 Mai 2020, 22:24:12
Doku Funktion ring2: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Anzeige_von_zwei_Zahlenwerten_mit_Hilfe_der_universellen_SVG-Funktion_ring2

Tesla ist leider nur ein Dummy  :(

Es fehlt nur noch die Doku der mächtigstes Funktion von allen: cylinder
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 04 Mai 2020, 09:04:33
Zitat von: Damian am 03 Mai 2020, 20:17:13
Ach ja. Habe ich schon gesagt, dass die SVG-Widgets auch außerhalb von DOIF funktionieren? ;)

Man kann z. B. in Sensoren, die regelmäßig den Status aktualisieren, über devStateIcon die SVG-Funktionen nutzen.

defmod Aussensensor CUL_WS 1
attr Aussensensor alexaName Aussen
attr Aussensensor alias Aussen
attr Aussensensor devStateIcon {ui_Table::temp_hum_ring(ReadingsVal("Aussensensor","temperature",0),ReadingsVal("Aussensensor","humidity",0))}
attr Aussensensor event-on-change-reading .*
attr Aussensensor group Aktuell
attr Aussensensor room CUL_WS,Info


Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Mai 2020, 22:46:18
Doku zu SVG-Funktion cylinder: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#3d-Balkendarstellung_mehrerer_Zahlenwerten_mit_Hilfe_der_universellen_SVG-Funktion_cylinder
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Reinerlein am 11 Juni 2020, 12:56:06
Hallo,

ich versuche mich für den Einstieg gerade an dem Beispiel für die Anwesenheitsanzeige: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Anwesenheitsstatus

Leider fehlt mir wohl irgendwie dieses FA (=Font Awesome?) - Icon.
Was muss ich denn dafür noch einbinden? Auf der Wikiseite habe ich dazu nichts gefunden...

Danke schon mal...

Grüße
Reinerlein
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 11 Juni 2020, 13:30:02
siehe https://forum.fhem.de/index.php/topic,12605.msg795076.html#msg795076

Nach dem Auspacken aus der Zip-Datein ins /opt/fhem/www/images/fhemSVG kopieren.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Reinerlein am 11 Juni 2020, 14:07:01
Hi Damian,

danke für den Hinweis.
Ich habe das jetzt in den Ordner fhemSVG kopiert:
root@fhem:/opt/fhem/www/images/fhemSVG# ll
.
.
-rw-r--r-- 1 998 dialout 1427 Sep 28  2017 fa__508.svg
.
.
root@fhem:/opt/fhem/www/images/fhemSVG#

Allerdings werden die Icons immer noch nicht angezeigt... fehlt noch ein Verweis oder so?

Grüße
Reinerlein
Titel: Antw:uiTable - neue Funktionen
Beitrag von: ComputerZOO am 11 Juni 2020, 14:27:33
Zitat von: Reinerlein am 11 Juni 2020, 14:07:01
...Allerdings werden die Icons immer noch nicht angezeigt... fehlt noch ein Verweis oder so?

Einmal im betreffenden WEB-Device
set <WEB-DEVICE> rereadicons ausführen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Reinerlein am 11 Juni 2020, 14:35:00
Hallo ComputerZOO,

danke für den Hinweis, das war es... jetzt klappt es...

Grüße
Reinerlein
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Geronimoo am 09 Januar 2021, 09:31:28
Hallo in die Runde,

ich habe ein Problem mit der Positionierung eines PopUps via PUP().
wie kann ich das PopUp zentriert auf dem Bildschirm darstellen? Bei mir wird es immer unten rechts in der ecke geöffnet.

schon mal danke für die Hilfe.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Ellert am 12 Januar 2021, 01:03:56
Die Positionierung festzulegen ist in PUP nicht vorgesehen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Per am 04 Februar 2021, 09:57:33
Zitat von: Damian am 31 Dezember 2019, 17:47:10Deine FUNC_-Funktion solltest du anders benennen (ohne FUNC am Anfang) ansonsten musst du :: davorstellen
Kann ich auch auf Funktionen in myUtils zugreifen? Oder geht das nur mit IMPORT und einer separaten Datei?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 04 Februar 2021, 13:45:32
Zitat von: Per am 04 Februar 2021, 09:57:33
Kann ich auch auf Funktionen in myUtils zugreifen? Oder geht das nur mit IMPORT und einer separaten Datei?

Du kannst auf alle Funktionen in FHEM zugreifen.  :: voranstellen, wenn sie aus main kommen,  also auch für myUtils, wenn du sie nicht im Package ui_Table definiert hast.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Per am 05 Februar 2021, 00:01:56
Komisch, nachdem ich es mit einer "alten" Funktion versucht habe, wurden auch die neu angelegten fehlerfrei genommen. K.A., warum.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Februar 2021, 09:23:13
Zitat von: Per am 05 Februar 2021, 00:01:56
Komisch, nachdem ich es mit einer "alten" Funktion versucht habe, wurden auch die neu angelegten fehlerfrei genommen. K.A., warum.

Dazu brauche ich genaue Daten mit list.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Per am 05 Februar 2021, 10:39:57
Ich schiebe gleich mal noch eine Frage hinterher: kann man die UIs aktualisieren, ohne die Definition oder das Attribut uiTable selbst zu aktualisieren? Hintergrund: mittels einer FOR-Schleife lasse ich mir eine variable Anzahl von Geräten anzeigen. Leider wird die korrekte Anzahl nur angezeigt, wenn ich o.a. Aktionen durchführe. Dann allerdings automatisch in allen offenen Anzeigen wie gewünscht.
Selbst ein set xxx initialize reicht nicht.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Februar 2021, 11:23:46
Zitat von: Per am 05 Februar 2021, 10:39:57
Ich schiebe gleich mal noch eine Frage hinterher: kann man die UIs aktualisieren, ohne die Definition oder das Attribut uiTable selbst zu aktualisieren? Hintergrund: mittels einer FOR-Schleife lasse ich mir eine variable Anzahl von Geräten anzeigen. Leider wird die korrekte Anzahl nur angezeigt, wenn ich o.a. Aktionen durchführe. Dann allerdings automatisch in allen offenen Anzeigen wie gewünscht.
Selbst ein set xxx initialize reicht nicht.

Das UI funktioniert beim DOIF ereignisgesteuert. Das heißt, jedes Symbol muss einen Trigger beinhalten. Das geschieht, indem man bei den UI-DOIF-Funktionen ein Reading in der DOIF-Notation angibt [:]. In HTML wird ja dann nicht die ganze UI-Table neu gezeichnet, sondern nur das entsprechende Symbol. Alles andere, wäre eine "billige" Lösung die unnötig Resourcen verbrauchen würde - das wollen wir :)




Titel: Antw:uiTable - neue Funktionen
Beitrag von: Per am 05 Februar 2021, 14:11:27
Nachvollziehbar. Dann muss ich mir einen anderen Weg einfallen lassen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: thorte am 18 Februar 2021, 20:38:30
Hi,

ich bin derzeit auch mit der FOR-Schleife zur dynamischen Anzeige von Geräte am testen und mir fehlt ebenfalls die Möglichkeit, in der Tabelle Geräte dynamisch anzuzeigen.

Anwendungsbeispiel: Alle Geräte listen, bei denen die Batterie leer ist.
Vorteil der FOR-Schleife: Wenn alle Batterien gut sind, wird keine Zeile eingeblendet (habe ich mit einer einzelnen Zeile entsprechend dem Beispiel noch nicht geschafft.

Funktioniert prinzipiell wunderbar, wenn als Array eine perl-Funktion DefSpec2Array oder AggrDoIF verwendet wird. Um ein Ereignis zu generieren, war jetzt meine Idee, ein DOIFReadings zu setzen, in dem die Geräte kommasepariert stehen, und dieses Reading via "split" wieder in einen Array zu konvertieren.

Fazit: Funktioniert, wenn ich das Reading via ReadingsVal hole - dann fehlt mir allerdings der Trigger. Versuche ich, den Inhalt via [$SELF:Reading] zu übergeben, kommt in der FOR-Schleife nichts an.

Beispiel (mit Battery; ok, damit ein paar Geräte in der Liste stehen):

defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings battery:[@".*":battery:"ok"]
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable FOR(split(",",ReadingsVal("$SELF","battery","")),"Batterie Test"|"$_")\
FOR(split(",",[$SELF:battery]),"Batterie Test"|"$_")


@Damian: Hast Du einen Tip für mich?

Gruß Thorsten

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 18 Februar 2021, 20:44:27
Der FOR-Befehl impliziert eine Schleife, er ist für eine flexible Definition gedacht, die aber wiederum statisch ist. Eine Änderung der Tabelle ist nur mit der Änderung des Attributes möglich - also mit der Änderung der Konfiguration.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Per am 18 Februar 2021, 22:20:20
Vllt ließe sich das mit einen set Befehl neu zeichnen?  So oft nutzt man es ja nicht, dass man es unbedingt vollautomatisch braucht.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 19 Februar 2021, 09:07:38
Zitat von: Per am 18 Februar 2021, 22:20:20
Vllt ließe sich das mit einen set Befehl neu zeichnen?  So oft nutzt man es ja nicht, dass man es unbedingt vollautomatisch braucht.

Mit Neuzeichnen ist es nicht getan. Bei uiTable handelt es sich um eine statische Tabelle, die per Konfiguration geändert wird. Eine Änderung des uiTable-Attributs bedeutet eine Änderung des Systems (rotes Fragezeichen), dazu wird die vorherige Definition bereinigt, Trigger gelöscht, ein aufwändiger Parser wird durchlaufen, Trigger müssen erkannt werden und neu aufgesetzt etc.
Dynamische Anzeigen kann man innerhalb einer Tabellenzelle realisieren, siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_offene_Fenster
Titel: Antw:uiTable - neue Funktionen
Beitrag von: thorte am 20 Februar 2021, 12:55:56
All right.

WorkAround: Habe es jetzt über eine dynamische Anzeige innerhalb einer Tabellenzelle realisiert, indem ich über ein DOIF_Readings eine Tabellendefinition erzeuge, die ich dann mittels dem uiTable-Attribut in der Tabelle anzeige. Als Beispiel für eine Tabelle "Batterie niedrig / Batterie ok":


defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings Info_BatteryLow:[@".*":battery:"low"],\
Info_BatteryOk:[@".*":battery:"ok"],\
\
my_html:{\
  my $ret = "";;\
  my @devs = split(",",[$SELF:Info_BatteryLow]);;\
  $_ = "<tr><td>Batterie niedrig</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  my @devs = split(",",[$SELF:Info_BatteryOk]);;\
  $_ = "<tr><td>Batterie ok</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  length($ret) < 5 ? return "keine Meldungen" : return "<table> $ret </table>";;\
}
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable [$SELF:my_html]


Werde an dieser Stelle mal weiterbasteln. Mal schauen, ob es sich bewährt.

Gruß Thorsten
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 20 Februar 2021, 13:07:49
Zitat von: thorte am 20 Februar 2021, 12:55:56
All right.

WorkAround: Habe es jetzt über eine dynamische Anzeige innerhalb einer Tabellenzelle realisiert, indem ich über ein DOIF_Readings eine Tabellendefinition erzeuge, die ich dann mittels dem uiTable-Attribut in der Tabelle anzeige. Als Beispiel für eine Tabelle "Batterie niedrig / Batterie ok":


defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings Info_BatteryLow:[@".*":battery:"low"],\
Info_BatteryOk:[@".*":battery:"ok"],\
\
my_html:{\
  my $ret = "";;\
  my @devs = split(",",[$SELF:Info_BatteryLow]);;\
  $_ = "<tr><td>Batterie niedrig</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  my @devs = split(",",[$SELF:Info_BatteryOk]);;\
  $_ = "<tr><td>Batterie ok</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  length($ret) < 5 ? return "keine Meldungen" : return "<table> $ret </table>";;\
}
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable [$SELF:my_html]


Werde an dieser Stelle mal weiterbasteln. Mal schauen, ob es sich bewährt.

Gruß Thorsten

Für dynamische Listen schau dir mal das Modul readingsGroup an.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: JudgeDredd am 07 Mai 2021, 18:04:58
Hallo Zusammen,

für meine Anzeige wäre es schön, wenn die Cylinder-Funktion auch horizontal darstellt werden könnte.
Leider habe ich diesbezüglich nichts gefunden. Habe ich es übersehen oder ist das nicht möglich ?

Bitte nicht als Wunsch verstehen, wenn es nicht geht, dann ist es halt so.
Ich möchte nicht, das hier irgendwer Arbeit investiert für einen einzelnen Wunsch.

Gruß,
JudgeDredd
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 07 Mai 2021, 18:10:25
Zitat von: JudgeDredd am 07 Mai 2021, 18:04:58
Hallo Zusammen,

für meine Anzeige wäre es schön, wenn die Cylinder-Funktion auch horizontal darstellt werden könnte.
Leider habe ich diesbezüglich nichts gefunden. Habe ich es übersehen oder ist das nicht möglich ?

Bitte nicht als Wunsch verstehen, wenn es nicht geht, dann ist es halt so.
Ich möchte nicht, das hier irgendwer Arbeit investiert für einen einzelnen Wunsch.

Gruß,
JudgeDredd

Wie hättest du es gern?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: JudgeDredd am 07 Mai 2021, 19:42:31
Zitat von: Damian am 07 Mai 2021, 18:10:25
Wie hättest du es gern?
Och, die Grafik find ich schon schick, so wie sie ist. Nur eben horizontal.
Also Links "0" und rechts die "100".

Aber wie gesagt, ich kann auch mit der aktuellen vertikalen Situation leben.
Ich dachte nur, das man es schon jetzt mittels Parameter konfigurieren könnte.

Gruß,
JudgeDredd
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 07 Mai 2021, 19:56:55
Ein Balken oder mehrere?
Balken ineinander oder neben einander? (siehe bars-Funktion)
Mit Beschriftungen oder ohne?
Mit Hintergrund oder ohne?

Einen waagerechten Balken mit einer Zahl, der in eine Zeile hineinpasst könnte ich mir ebenso vorstellen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: JudgeDredd am 07 Mai 2021, 20:11:36
Zitat von: Damian am 07 Mai 2021, 19:56:55
Ein Balken oder mehrere?
Balken ineinander oder neben einander? (siehe bars-Funktion)
Mit Beschriftungen oder ohne?
Mit Hintergrund oder ohne?

Einen waagerechten Balken mit einer Zahl, der in eine Zeile hineinpasst könnte ich mir ebenso vorstellen.
Mit einem waagrechten Balken, der in eine Zeile passt wäre mir am meisten geholfen.

Aber wenn Du wirklich was machen möchtest, dann vielleicht so, das möglichst viele was davon haben.
Designtechnisch bin ich allerdings voll der Krüppel  :o Daher überlasse ich die Beschriftungen voll Deiner Inspiration.

Gruß,
JudgeDredd
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 07 Mai 2021, 20:39:15
Zitat von: JudgeDredd am 07 Mai 2021, 20:11:36
Mit einem waagrechten Balken, der in eine Zeile passt wäre mir am meisten geholfen.

Aber wenn Du wirklich was machen möchtest, dann vielleicht so, das möglichst viele was davon haben.
Designtechnisch bin ich allerdings voll der Krüppel  :o Daher überlasse ich die Beschriftungen voll Deiner Inspiration.

Gruß,
JudgeDredd

Zuerst muss ich aber meine aktuelle Baustelle fertigstellen - card-Funktion
Titel: Antw:uiTable - neue Funktionen
Beitrag von: JudgeDredd am 08 Mai 2021, 09:01:12
Zitat von: Damian am 07 Mai 2021, 20:39:15
Zuerst muss ich aber meine aktuelle Baustelle fertigstellen - card-Funktion
Du bist der einzige der über Deine Freizeit bestimmen sollte.
Wenn es irgendwann soweit sein sollte, dann bekomme ich das ja bestimmt mit.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: KyleK am 11 Mai 2021, 22:44:31
Hallo,

ich heute in das Thema uiTable eingestiegen und war sehr überrascht wie einfach und schnell man schöne Dashboard-Grafiken bekommt.
Funktioniert klasse.

Über eine kuriose Sache bin ich gestolpert:
In all meinen uiTable-Definitionen nutze ich $SHOWNOSTATE=1;, aber bei einigen Devices schien dies keinen Effekt zu haben.
Der state ("initialized") wurde trotzdem angezeigt.
Durch einen dummen Zufall glaube ich herausgefunden zu haben warum das so ist: Wenn der device-Name Punkte enthält, dann funktioniert das obige Flag scheinbar nicht. Wenn ich mein Device di_ui_TVOC nenne, dann wird der state nicht angezeigt.
Benenne ich es in di.ui.TVOC um, dann ist der state wieder da.

Muss ich mein FHEM-Device Namensschema anpassen, oder kann das im Modul gefixt werden?

Viele Grüße,
Frank
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 11 Mai 2021, 23:06:26
Ich vermute, dass das Problem auf der JS-Seite ist. Die Mechanismen dort müsste ich mir erstmal genauer anschauen, weil ich bisher dort keine Finger im Spiel hatte.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Ellert am 12 Mai 2021, 17:38:05
doif.js berücksichtigt https://wiki.fhem.de/wiki/Ger%C3%A4tename#Restriktionen

Wenn nur der Inhalt von state stört könnte man ihn mit &nbsp; überschreiben.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 12 Mai 2021, 18:51:17
Ich würde einfach laut Namenskonvention alle Punkte in Devicenamen gegen Unterstriche ersetzen, dann ist man auf der sicheren Seite.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: KyleK am 12 Mai 2021, 19:17:23
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag 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?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 12 Mai 2021, 19:29:01
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 12 Mai 2021, 19:32:48
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag 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

Edit: Anhang gelöscht, doif.js ab morgen im Update.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 14 Mai 2021, 16:43:38
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag 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?
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Ellert am 14 Mai 2021, 22:16:09
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag 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.

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 24 Juni 2022, 16:53:21
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Invers am 27 Juni 2022, 11:12:34
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

Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 27 Juni 2022, 14:34:58
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
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Invers am 27 Juni 2022, 14:57:06
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.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 29 Juni 2022, 18:57:28
siehe: https://forum.fhem.de/index.php/topic,128224.msg1226435.html#msg1226435
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Vorhand am 05 Oktober 2022, 12:15:14
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
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Oktober 2022, 14:55:01
Zitat von: Vorhand am 05 Oktober 2022, 12:15:14
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
Indem du deine Readings durch 1000 teilst.
z. B.
[myFronius:PowerFlow_Site_P_PV:col12]/1000
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Vorhand am 05 Oktober 2022, 16:12:34
hab ich gemacht, geht noch nicht!
{
package ui_Table;
$SHOWNOSTATE=1;
}
card([[myFronius:PowerFlow_Site_P_PV:col12]/1000,[myFronius:PowerFlow_Site_P_Load:col12]/1000,[myFronius:PowerFlow_Site_P_Grid:col12]/1000],"kW","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")
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Oktober 2022, 16:18:28
Zitat von: Vorhand am 05 Oktober 2022, 16:12:34
hab ich gemacht, geht noch nicht!
{
package ui_Table;
$SHOWNOSTATE=1;
}
card([[myFronius:PowerFlow_Site_P_PV:col12]/1000,[myFronius:PowerFlow_Site_P_Load:col12]/1000,[myFronius:PowerFlow_Site_P_Grid:col12]/1000],"kW","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")

Ja, das stimmt, an der Stelle geht es tatsächlich nicht. Alternativ kannst du dir beim Sensor mit userreadings behelfen oder im DOIF-Modul DOIF_Readings nutzen.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Vorhand am 05 Oktober 2022, 16:25:51
meinst du so...
defmod PV2 DOIF {}
attr PV2 DOIF_Readings P_PV:[myFronius:PowerFlow_Site_P_PV]/1000,\
P_Load:[myFronius:PowerFlow_Site_P_Load]/1000,\
P_Grid:[myFronius:PowerFlow_Site_P_Grid]/1000
attr PV2 room DOIF,Fronius
attr PV2 uiTable {\
package ui_Table;;\
$SHOWNOSTATE=1;;\
}\
card([[P_PV:col],[P_Load:col],[P_Grid:col]],"kW","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")

geht nicht.
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Damian am 05 Oktober 2022, 16:34:11
Zitat von: Vorhand am 05 Oktober 2022, 16:25:51
meinst du so...
defmod PV2 DOIF {}
attr PV2 DOIF_Readings P_PV:[myFronius:PowerFlow_Site_P_PV]/1000,\
P_Load:[myFronius:PowerFlow_Site_P_Load]/1000,\
P_Grid:[myFronius:PowerFlow_Site_P_Grid]/1000
attr PV2 room DOIF,Fronius
attr PV2 uiTable {\
package ui_Table;;\
$SHOWNOSTATE=1;;\
}\
card([[P_PV:col],[P_Load:col],[P_Grid:col]],"kW","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")

geht nicht.

klar nicht, du musst schon noch das Device des Readings immer mit angeben:

[$SELF:P_PV:col]
Titel: Antw:uiTable - neue Funktionen
Beitrag von: Vorhand am 05 Oktober 2022, 16:37:06
genial
jetzt geht's
Danke
Grüße