Hauptmenü

neue svg-Funktion: card

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

Vorheriges Thema - Nächstes Thema

Damian

#150
Ich habe noch ein paar Optimierungen eingebaut.

Solange das System nicht abstürzt, werden alle Daten sauber gespeichert. Man braucht zu keinem Zeitpunkt manuell etwas zu sichern. Auch verwaiste Readings werden jetzt aufgeräumt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

Habe mich mal ein wenig mit der neuen card Funktion auseinander gesetzt.
Danke erstmal dafür.

Besteht die Möglichkeit, wie bei ring2 2 Ringe in einer Darstellung, eine 2. Kurve mit in einem Diagramm einzufügen ?

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

Zitat von: sash.sc am 23 Mai 2021, 12:46:46
Habe mich mal ein wenig mit der neuen card Funktion auseinander gesetzt.
Danke erstmal dafür.

Besteht die Möglichkeit, wie bei ring2 2 Ringe in einer Darstellung, eine 2. Kurve mit in einem Diagramm einzufügen ?

Gruß
Sascha

Befindet sich in der Entwicklung.

neue Features sollen sein:

-Skalierbarkeit der Grafik, breite der Karte einstellbar
-Anzahl der Messpunkte wählbar
-mehrere Sensoren in einem Diagramm
-platzsparende Anzeige mehrerer Werte mit Halbringen

mal schauen, was geht :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

sash.sc

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

jkriegl

#154
Komme doch noch einmal auf den Algorithmus zurück.
Im Datenbenspiel (identisches device  - Unterschied col1, col3) sieht man, dass bei col3 fast nur niedrige Werte gespeichert bzw. höhere durch niedrige ersetzt werden. Beispiel am Ende 16.46,1.77 zu ,1.77
Auch bei col1 fehlen höhere Werte bei 162117793620
setstate di_collect_tw_2 2021-05-23 20:37:26 .col_72_shelly_s_power_1_times ,,,,,,1621791297,1621791325,,,,,,,,,,,,,,,,,,,,1621792348,1621792377,,,,,,,,,,,,,,,,,,,,,1621793446,1621793470,,,1621793620,1621793651,,,,,,,,,,,,,,,,1621794495,1621794514
setstate di_collect_tw_2 2021-05-23 20:37:26 .col_72_shelly_s_power_1_values ,,,,,,13.21,1.39,,,,,,,,,,,,,,,,,,,,15.38,1.35,,,,,,,,,,,,,,,,,,,,,16.28,1.25,,,1.26,1.27,,,,,,,,,,,,,,,,16.46,1.77
setstate di_collect_tw_2 2021-05-23 20:37:26 .col_72_shelly_s_power_3_times ,,,1621784391,1621784422,,,,,,1621785373,,,,1621785937,1621786087,,,,1621786752,,,,1621787394,,,,1621787919,,,1621788447,,,,1621788979,,,,1621789558,,,,,1621790379,,,,,,1621791295,1621791325,,,,,,1621792347,1621792377,,,,,,,1621793470,1621793620,97307622000,,,,,1621794514
setstate di_collect_tw_2 2021-05-23 20:37:26 .col_72_shelly_s_power_3_values ,,,12.97,1.57,,,,,,2.05,,,,1.04,1.23,,,,1.20,,,,1.30,,,,1.71,,,1.36,,,,1.56,,,,1.48,,,,,1.33,,,,,,4.67,1.39,,,,,,2.93,1.35,,,,,,,1.25,1.26,1.27,,,,,1.77


Wie kann ich die Daten anzeigen, dann mache ich ein Beispiel mit events 1, 0
Was wird gespeichert bei Ausgang 0
im slot: 1 (erst nächst. slot 0)
im slot: 1,0
im slot: 1,0,1

edit: es fehlt manchmal die 1
setstate di_collect_tw 2021-05-23 20:37:26 .col_72_shelly_s_running_1_times ,,,,,,1621791297,1621791325,,,,,,,,,,,,,,,,,,,,1621792348,1621792375,,,,,,,,,,,,,,,,,,,,,1621793440,1621793469,,,,,,,,,,,,,,,,,,,,1621794486,1621794514
setstate di_collect_tw 2021-05-23 20:37:26 .col_72_shelly_s_running_1_values ,,,,,,1,0,,,,,,,,,,,,,,,,,,,,1,0,,,,,,,,,,,,,,,,,,,,,1,0,,,,,,,,,,,,,,,,,,,,1,0
setstate di_collect_tw 2021-05-23 20:37:26 .col_72_shelly_s_running_3_times ,,,1621784389,1621784422,,,,,,1621785373,,,,,1621786086,,,,1621786750,,,,1621787394,,,,1621787919,,,1621788445,,,,1621788979,,,,1621789558,,,,,1621790377,,,,,,1621791297,1621791325,,,,,,1621792348,1621792375,,,,,,,1621793469,,,,,,,1621794514
setstate di_collect_tw 2021-05-23 20:37:26 .col_72_shelly_s_running_3_values ,,,1,0,,,,,,0,,,,,0,,,,0,,,,0,,,,0,,,0,,,,0,,,,0,,,,,0,,,,,,1,0,,,,,,1,0,,,,,,,0,,,,,,,0
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Das kann ja alles sein, denn bei unterschiedlichen col-Angabe, sind die jeweils aktuellen Min-, Max-Werte anders und damit kann die Trend zu kleineren Zahlen sein, wenn sie unterhalb des Durchschnitts aus Min, Max liegen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#156
Zitat von: Damian am 23 Mai 2021, 12:55:51
Befindet sich in der Entwicklung.

neue Features sollen sein:

-Skalierbarkeit der Grafik, Breite der Karte einstellbar
-Anzahl der Messpunkte wählbar
-mehrere Sensoren in einem Diagramm
-platzsparende Anzeige mehrerer Werte mit Halbringen


mal schauen, was geht :)

Folgendes habe ich inzwischen umgesetzt:

-Skalierbarkeit der Grafik, Breite der Karte einstellbar
-platzsparende Anzeige mit einem Halbring

Die gleichen Daten in drei verschiedenen Darstellungen:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Oder vergleichbare Diagrammgröße, wie bisher, allerdings kompakter dargestellt mit Halbring
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat-Anzahl der Messpunkte wählbar

Die Auflösung ist jetzt entkoppelt von der Darstellung des Diagramms.

Standardmäßig werden 72 Messpunkte (Timeslots) benutzt.

Man kann die Anzahl jetzt auch selbst definieren:

z. B.

[aussen:temperature:168col1w]

hierbei werden 168 Timeslots für eine Woche genutzt, damit ergibt sich eine Auflösung von einer Stunde pro Timeslot: 24*7

Die Anzahl ist beliebig wählbar, allerdings brauchen mehr Daten auch mehr Platz und mehr Performance bei der Darstellung, das sollte man immer im Hinterkopf behalten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#159
Testversion im Anhang.

Der Parameter $prop wurde erweitert:

$size,$plot,$steps,$noFooter,$noColor,$hring,$bwidth

Beispiel:

defmod di_cardnew DOIF {}
attr di_cardnew uiTable {package ui_Table;;\
##$TABLE='text-align:center';;\
}\
"Standard"|card([Aussensensor:temperature:col],undef,"temp_outside",-10,30,undef,undef,"°C",\&temp_hue,"1","130")\
"mit Halbring"|card([Aussensensor:temperature:col],"Außen","temp_outside",-10,30,undef,undef,"°C",\&temp_hue,"1","130,,,,,1")\
"mir Halbring,Breite 110"|card([Aussensensor:temperature:col],"Außen","temp_outside",-10,30,undef,undef,"°C",\&temp_hue,"1","130,,,1,,1,110")\
"Breite 200"|card([Aussensensor:temperature:col],"Außen","temp_outside",-10,30,undef,undef,"°C",\&temp_hue,"1","130,,,,,,200")\

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

jkriegl

ZitatDas kann ja alles sein, denn bei unterschiedlichen col-Angabe, sind die jeweils aktuellen Min-, Max-Werte anders und damit kann die Trend zu kleineren Zahlen sein, wenn sie unterhalb des Durchschnitts aus Min, Max liegen.
Nein: Wenn ich nur den Zustand 0 oder 1 habe, also ausgeschaltet - eingeschaltet usw. ist min=0 und max=1.
Es wird nicht der Durschnitt von 0 und 1 dargestellt, sondern 0 und 1, wobei manchmal 1 verschluckt wird. Die Datenfolge müsste ,,,,1,0,,,,1,0,, sein
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

#161
Auch das ist normal, dafür ist diese Zeile verantwortlich:

if (!defined ${$va}[$dim-1] or  $r >= ${$collect}{avg} and $r > ${$va}[$dim-1] or $r < ${$collect}{avg} and $r < ${$va}[$dim-1]) {
    ${$va}[$dim-1]=$r;
    ${$ta}[$dim-1]=$seconds; 
}


die Eins überschreibt die Null und die Null überschreibt die Eins in einem Slot, avg ist hier 0.5.

Es sind beides Extrema, das letzte gewinnt - alles so beabsichtigt.

Du musst dich damit abfinden, dass bei diesem Verfahren Werte verloren gehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

nach Antwort #129 müsste der Extremwert (=1) übernommen und die 0 in den nächsten slot rutschen.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Zitat von: jkriegl am 25 Mai 2021, 13:06:52
nach Antwort #129 müsste der Extremwert (=1) übernommen und die 0 in den nächsten slot rutschen.

Auch das hast du nicht richtig verstanden. 0 ist hier ein Extremwert - ein Minimum, wie man in der Schule lernt.

Es ist auch völlig egal, ob zwei Werte (wie in deinem Beispiel) im Abstand von 29 Sekunden gespeichert werden oder nicht, bei drei Stunden reden wir hier von einer Auflösung von 180 Sekunden pro Pixel - du würdest die Schwankung im Diagramm ohnehin nicht sehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

Wenn schon Schule, wir haben zwei Extremwerte und würfeln welcher gewinnt.
Ist auch weniger als eine Stunde möglich?
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly