Hauptmenü

neue svg-Funktion: card

Begonnen von Damian, 04 April 2021, 12:58:15

Vorheriges Thema - Nächstes Thema

marboj

Hallo zusammen,

habe meine Wasseruhr mit Hilfe des AI on the edge digitalisiert. Die Werte werden auch übertragen, alledings teilweise negativ. Deswegen sieht der Chart sehr komisch aus:
Du darfst diesen Dateianhang nicht ansehen.

Auch im List des Graphen sehe ich die negativen Werte:

values:
           -2348.129
           -2348.129
           -2348.129
           -2348.129
           0.401
           -2348.129
           0.458
           0
           0.011
           0.089
           -2348.587
           0.121
           0.157
           -2348.587
           0.294
           0.379
           0
           0.008
           0.008
           -2349.008
           0.138
           0.161
           0.202
           0.227
           0.26
           0.395
           0.461
           0
           0.094
           0.101
           0.114
           0.279
           0.399
           0.477
           -2349.472
           0.651
           -2349.472
           0.682
           0.021
           0.044
           0.044
           0.153
           -2350.155
           0.465
           -2350.155
           0.572
           -2350.155
           0.71
           0.001
           0.018
           0.101
           0.124
           -2350.866
           0.183
           -2350.866
           0.26
           0.27
           0.339
           0
           0.02
           0.12
           0.183
           0.199
           0.241

Hat jemand eine Idee oder die gleichen Probleme, dass der Wasserzähler teilweise negative Werte liefert?

Gruß
Marco
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Damian

Wenn das nur das Vorzeichen ist und die Zahl stimmt, dann reicht es ein DOIF_Reading (oder userReading) mit der abs-Perlfunktion auf den Zählerwert zu definieren und dann nur noch das DOIF_Reading für die Statistik anzugeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

marboj

In dem Gerät ist aber kein negatives Reading, das ist das Komische...
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Damian

Zitat von: marboj am 06 März 2024, 07:35:49In dem Gerät ist aber kein negatives Reading, das ist das Komische...

Dann schau mal was von dem Zähler geloggt wird, evtl. sind die Werte nicht immer aufsteigend.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

marboj

Habe mal ein anderes Reading mit dem gleichen Inhalt zum testen genommen. Mal beobachten, was da passiert...
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

MadMax

Hallo,

ist es möglich oder angedacht mit cylinder_bars die Min/Max Werte anzeigen zu lassen?
Also pro Balken?
Ich erfasse die als Reading, würde diese gerne noch mit darstellen.

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Damian

Im Gegensatz zu card-Darstellung werden keine Statistiken bei cylinder_bars gemacht. Abgesehen davon wüsste ich nicht, wo man pro Wert noch zwei weitere Werte unterbringen soll.

Ich wollte bei card-Balken-Darstellung gestapelte Werte ermöglichen. Dort gibt es ja bereits schon min/max/Durchschnitt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadMax

Mein Gedanke war so aber ohne die Min/Max Werte als Text mit anzuzeigen.
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Damian

ja, die Idee ist gut, muss man nur noch programmieren :) Weiß aber nicht, wann ich dazu komme.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadMax

Kein Stress, ist nur eine Idee eventuell hast du ja mal Zeit und Lust dazu   ;)
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

rolizer

Hey,
ich hab mal eine Frage. Ist es möglich, die Überschrift der card dynamisch zu machen. Ich würde beim Spritpreis gern das letzte Update in der Überschrift mit anzeigen. (aktZeit-1 ist das Reading dafür)
{ui_Table::card([ReadingsVal("di_collect_sprit","SuperE5",""),ReadingsVal("di_collect_sprit","SuperE10",""),ReadingsVal("di_collect_sprit","Diesel","")],'AGIP Entringen ["aktZeit-1"]',"fuel\@silver","1.50","2.00",120,0,["E5,red","E10,#287afc","Diesel,orange"],undef,"2,,fill:silver","180,1,1,0,undef,1,560",undef,undef)}
Grüße
Oli

Damian

ja, es ist eine Perlfunktion, du musst nur den Parameter für die Überschrift korrekt zusammenbauen:


...,"AGIP Entringen ".[$SELF:aktZeit-1],...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MadMax

Hallo,

ich habe mal ein wenig gebastelt.

Du darfst diesen Dateianhang nicht ansehen.

Das sind "cylinder_bars" mit Min/Max werten, welche ich extern bilde.


cylinder_bars_M("BYD HVM Modul 1",3000,3700,"mV",undef,undef,undef,0,
[myBYDBox:Battery_1_VoltsperCell_000_max],BYD_CollorMax(),"000_Max",
[myBYDBox:Battery_1_VoltsperCell_000],colorBYD([myBYDBox:Battery_1_VoltsperCell_000],[myBYDBox:Battery_1_BalancingCell_000]),"000_Akt",
[myBYDBox:Battery_1_VoltsperCell_000_min],BYD_CollorMin(),"000_Min",
[myBYDBox:Battery_1_VoltsperCell_001_max],BYD_CollorMax(),"001_Max",
[myBYDBox:Battery_1_VoltsperCell_001],colorBYD([myBYDBox:Battery_1_VoltsperCell_001],[myBYDBox:Battery_1_BalancingCell_001]),"001_Akt",
[myBYDBox:Battery_1_VoltsperCell_001_min],BYD_CollorMin(),"001_Min",
[myBYDBox:Battery_1_VoltsperCell_002_max],BYD_CollorMax(),"002_Max",
[myBYDBox:Battery_1_VoltsperCell_002],colorBYD([myBYDBox:Battery_1_VoltsperCell_002],[myBYDBox:Battery_1_BalancingCell_002]),"002_Akt",
[myBYDBox:Battery_1_VoltsperCell_002_min],BYD_CollorMin(),"002_Min",
[myBYDBox:Battery_1_VoltsperCell_003_max],BYD_CollorMax(),"003_Max",
[myBYDBox:Battery_1_VoltsperCell_003],colorBYD([myBYDBox:Battery_1_VoltsperCell_003],[myBYDBox:Battery_1_BalancingCell_003]),"003_Akt",
[myBYDBox:Battery_1_VoltsperCell_003_min],BYD_CollorMin(),"003_Min",
[myBYDBox:Battery_1_VoltsperCell_004_max],BYD_CollorMax(),"004_Max",
[myBYDBox:Battery_1_VoltsperCell_004],colorBYD([myBYDBox:Battery_1_VoltsperCell_004],[myBYDBox:Battery_1_BalancingCell_004]),"004_Akt",
[myBYDBox:Battery_1_VoltsperCell_004_min],BYD_CollorMin(),"004_Min",
[myBYDBox:Battery_1_VoltsperCell_005_max],BYD_CollorMax(),"005_Max",
[myBYDBox:Battery_1_VoltsperCell_005],colorBYD([myBYDBox:Battery_1_VoltsperCell_005],[myBYDBox:Battery_1_BalancingCell_005]),"005_Akt",
[myBYDBox:Battery_1_VoltsperCell_005_min],BYD_CollorMin(),"005_Min",
[myBYDBox:Battery_1_VoltsperCell_006_max],BYD_CollorMax(),"006_Max",
[myBYDBox:Battery_1_VoltsperCell_006],colorBYD([myBYDBox:Battery_1_VoltsperCell_006],[myBYDBox:Battery_1_BalancingCell_006]),"006_Akt",
[myBYDBox:Battery_1_VoltsperCell_006_min],BYD_CollorMin(),"006_Min",
[myBYDBox:Battery_1_VoltsperCell_007_max],BYD_CollorMax(),"007_Max",
[myBYDBox:Battery_1_VoltsperCell_007],colorBYD([myBYDBox:Battery_1_VoltsperCell_007],[myBYDBox:Battery_1_BalancingCell_007]),"007_Akt",
[myBYDBox:Battery_1_VoltsperCell_007_min],BYD_CollorMin(),"007_Min",
[myBYDBox:Battery_1_VoltsperCell_008_max],BYD_CollorMax(),"008_Max",
[myBYDBox:Battery_1_VoltsperCell_008],colorBYD([myBYDBox:Battery_1_VoltsperCell_008],[myBYDBox:Battery_1_BalancingCell_008]),"008_Akt",
[myBYDBox:Battery_1_VoltsperCell_008_min],BYD_CollorMin(),"008_Min",
[myBYDBox:Battery_1_VoltsperCell_009_max],BYD_CollorMax(),"009_Max",
[myBYDBox:Battery_1_VoltsperCell_009],colorBYD([myBYDBox:Battery_1_VoltsperCell_009],[myBYDBox:Battery_1_BalancingCell_009]),"009_Akt",
[myBYDBox:Battery_1_VoltsperCell_009_min],BYD_CollorMin(),"009_Min",
[myBYDBox:Battery_1_VoltsperCell_010_max],BYD_CollorMax(),"010_Max",
[myBYDBox:Battery_1_VoltsperCell_010],colorBYD([myBYDBox:Battery_1_VoltsperCell_010],[myBYDBox:Battery_1_BalancingCell_010]),"010_Akt",
[myBYDBox:Battery_1_VoltsperCell_010_min],BYD_CollorMin(),"010_Min",
[myBYDBox:Battery_1_VoltsperCell_011_max],BYD_CollorMax(),"011_Max",
[myBYDBox:Battery_1_VoltsperCell_011],colorBYD([myBYDBox:Battery_1_VoltsperCell_011],[myBYDBox:Battery_1_BalancingCell_011]),"011_Akt",
[myBYDBox:Battery_1_VoltsperCell_011_min],BYD_CollorMin(),"011_Min",
[myBYDBox:Battery_1_VoltsperCell_012_max],BYD_CollorMax(),"012_Max",
[myBYDBox:Battery_1_VoltsperCell_012],colorBYD([myBYDBox:Battery_1_VoltsperCell_012],[myBYDBox:Battery_1_BalancingCell_012]),"012_Akt",
[myBYDBox:Battery_1_VoltsperCell_012_min],BYD_CollorMin(),"012_Min",
[myBYDBox:Battery_1_VoltsperCell_013_max],BYD_CollorMax(),"013_Max",
[myBYDBox:Battery_1_VoltsperCell_013],colorBYD([myBYDBox:Battery_1_VoltsperCell_013],[myBYDBox:Battery_1_BalancingCell_013]),"013_Akt",
[myBYDBox:Battery_1_VoltsperCell_013_min],BYD_CollorMin(),"013_Min",
[myBYDBox:Battery_1_VoltsperCell_014_max],BYD_CollorMax(),"014_Max",
[myBYDBox:Battery_1_VoltsperCell_014],colorBYD([myBYDBox:Battery_1_VoltsperCell_014],[myBYDBox:Battery_1_BalancingCell_014]),"014_Akt",
[myBYDBox:Battery_1_VoltsperCell_014_min],BYD_CollorMin(),"014_Min",
[myBYDBox:Battery_1_VoltsperCell_015_max],BYD_CollorMax(),"015_Max",
[myBYDBox:Battery_1_VoltsperCell_015],colorBYD([myBYDBox:Battery_1_VoltsperCell_015],[myBYDBox:Battery_1_BalancingCell_015]),"015_Akt",
[myBYDBox:Battery_1_VoltsperCell_015_min],BYD_CollorMin(),"015_Min")

In Zeile 7157 habe ich einen Parameter mit dem ich angebe wie Viele Säulen ich überlagern möchte.

Zeile 7270 berechnet die Postion der Säulen.

$xValue=$xLeft+POSIX::floor($i/3/$staks_M3)*($width+2)+2 if ($mode == 3);

Ich denke den Parameter sollte man auch noch mit übergeben können aber ich denke da hatt der Autor eine bessere Lösung wie das aussehen könnte.

Für mich funktioniert das jetzt erstmal so.

Gruß
Max

Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax

Damian

#463
Das sieht gut aus.

Allerdings; Sollte man die posix-Funktionen in FHEM nicht meiden?

Man könnte eine zweite Array-Ebene einbauen:

cylinder_bars_s("BYD HVM Modul 1",3000,3700,"mV",undef,undef,undef,0,
[(                   ## Arraybeginn für die Anzahl der Säulen nebeneinander
[(<value1_1>,<Text1_1>,<color1_1,<value1_2>,<text1_2,<color1_2,<value1_3>,<text1_3>,<color1_3>....)],  ## jeweils eine Array-Zeile pro gestapelte Säulen
[(<value2_1>,<Text2_1>,<color2_1,<value2_2>,<text2_2,<color2_2,<value2_3>,<text2_3>,<color2_3>....)],
...
)]                   ## Arrayende für die Anzahl der Säulen nebeneinander

Damit wäre die Anzahl der übereinander gestapelten Säulen nicht fest, sondern beliebig wählbar ohne einen weiteren Parameter definieren zu müssen.



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

MadMax

Das mit dem 2D Array gefällt mir persönlich sehr gut 👍

Die Frage ist nur wie macht man das mit der Legende. Sieht schon sehr unübersichtlich aus. Für meine Fall würden mir die Min,Akt und Max Werte nebeneinander gefallen.

War mal ein Versuch und für zwei Stunden Arbeit rein Stecken war ich erstmal zufrieden.

Das mit den posix ist mir nicht bekannt.
Wie kann ich sonst abrunden?

Gruß
Max
Lenovo M910Q Tiny Debian 12, FHEM 6.3, 2x Siemens Logo 0BA7, Homematic CCU3, Philips HUE, 6x SMA Wechselrichter, BYD HVM, BYD HVS, SMA EVCharger, KEBA Wallbox, 2x HMS800W, Daikin Wärmepumpe über CAN, viele ESPs

Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/MadMax