Autor Thema: Dynamic Range in einem Plot  (Gelesen 15644 mal)

Online frank

  • Hero Member
  • *****
  • Beiträge: 8867
Antw:Dynamic Range in einem Plot
« Antwort #15 am: 28 September 2014, 13:52:52 »
bleibt der effekt auch, wenn du zb in den plot reinzoomst?
FHEM: 6.0(SVN) => Pi3(stretch)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [hm.js]: https://forum.fhem.de/index.php/topic,106959.0.html

Offline Jojo11

  • Hero Member
  • *****
  • Beiträge: 1005
Antw:Dynamic Range in einem Plot
« Antwort #16 am: 28 September 2014, 13:56:12 »
Gerade getestet: ja. Mir fällt auch bei den Daten nichts auf. Außer dass die Werte des einen Sensors 4 Nachkommastellen haben. Aber das geht ja sonst auch.

schöne Grüße
Jo


Online frank

  • Hero Member
  • *****
  • Beiträge: 8867
Antw:Dynamic Range in einem Plot
« Antwort #17 am: 28 September 2014, 19:40:20 »
du kannst mal verbose5 am plot einschalten oder bei global. vielleicht gibt das fehlerhinweise. sonst fhem über telnet starten und fehlermeldungen am terminal beobachten. hier gibt es wohl die meisten.
FHEM: 6.0(SVN) => Pi3(stretch)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [hm.js]: https://forum.fhem.de/index.php/topic,106959.0.html

Offline flurin

  • Sr. Member
  • ****
  • Beiträge: 609
Antw:Dynamic Range in einem Plot
« Antwort #18 am: 28 September 2014, 19:54:55 »
Hallo,

Ev. geht es mit dieser vereinfachten Variante (seit Wochen ohne Probleme in Betrieb):

fhem.cfg:

attr SVG_FileLog_temp_office_1 label sprintf( "[%d:%.1f]",int(min($data{min1},$data{min2})-0.3),max($data{max1},$data{max2})+0.5)
gplot:

# Created by FHEM/98_SVG.pm, 2014-08-25 14:22:17
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid y2tics
set ylabel "Target"
set y2label "Temperature"
set yrange <L1>
set y2range <L1>

#FileLog 4:temp_office.temperature\x3a::
#FileLog 4:temp_office.target1\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperature' ls l0 lw 2 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Target' ls l7 lw 2 with lines

Gruss
flurin

Ergänzung

So sieht es aus:

(http://cisana.net/wp-content/uploads/2014/09/TempPlot.jpg)
« Letzte Änderung: 28 September 2014, 19:59:47 von flurin »

Offline Jojo11

  • Hero Member
  • *****
  • Beiträge: 1005
Antw:Dynamic Range in einem Plot
« Antwort #19 am: 28 September 2014, 20:49:57 »
Danke! Zu verbose5 fehlte mir bisher die Zeit. Werde das die Tage mal anschauen. Evtl sind auch Fehler in den Log files das Problem. Heute lief alles wie gewünscht.

schöne Grüße
Jo


Offline Jojo11

  • Hero Member
  • *****
  • Beiträge: 1005
Antw:Dynamic Range in einem Plot
« Antwort #20 am: 04 Oktober 2014, 10:45:48 »
Hallo,

nach längerer Fehlersuche habe ich das Problem nun reproduzierbar einkreisen können. Sobald einer der Temperatursensoren einen minimalen Wert unter 10°C hat, der andere aber seinen Minimalwert >10°C, wird nur der größere Wert bei min() berücksichtigt. In diesem Fall schießt die tatsächlich niedrigere Kurve nach unten aus dem Plot. Als min-Wert wird im Plot-Titel dann auch der größere Wert angegeben. Ein typischer log-Auszug sieht so aus:
2014-10-04_07:41:24 WS temperature: 9.6
2014-10-04_08:13:40 sensor2 temperature: 11.3125
2014-10-04_08:15:48 WS temperature: 10.2
2014-10-04_08:17:40 sensor2 temperature: 11.25
2014-10-04_08:19:23 WS temperature: 10.5
2014-10-04_08:19:23 WS humidity: 88
2014-10-04_08:19:23 WS battery: ok
2014-10-04_08:23:40 sensor2 temperature: 11.3125

In diesem Fall wird 11.25°C als absolutes Minimum genommen, nicht aber 9.6°C.
Ich habe jetzt mal ein paar Verläufe in der Vergangenheit überprüft und festgestellt, dass es immer das gleiche Muster ist.
Kann es am Übergang von ein- zu zweistelligen Werten liegen?

schöne Grüße
Jo

Offline volschin

  • Hero Member
  • *****
  • Beiträge: 1591
Antw:Dynamic Range in einem Plot
« Antwort #21 am: 04 Oktober 2014, 11:01:56 »
Wenn er den Wert als String und nicht als Zahl interpretiert, wäre 9... größer 1...

Gruß
Veit
Intel NUC+Ubuntu 20.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show5, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Offline flurin

  • Sr. Member
  • ****
  • Beiträge: 609
Antw:Dynamic Range in einem Plot
« Antwort #22 am: 04 Oktober 2014, 11:19:11 »
Wenn er den Wert als String und nicht als Zahl interpretiert, wäre 9... größer 1...

so ist es.

siehe 99_Utils.pm:

sub
min($@)
{
  my ($min, @vars) = @_;
  for (@vars) {
    $min = $_ if $_ lt $min;
  }           
  return $min;
}

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20359
Antw:Dynamic Range in einem Plot
« Antwort #23 am: 04 Oktober 2014, 11:20:44 »
min ist für string vergleiche. das ist historisch... es gibt ein minNum für zahlen.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Jojo11

  • Hero Member
  • *****
  • Beiträge: 1005
Antw:Dynamic Range in einem Plot
« Antwort #24 am: 04 Oktober 2014, 13:40:26 »
Danke, das war der richtige Hinweis  :)
Mit minNum klappt es nun endlich.

schöne Grüße
Jo

Online frank

  • Hero Member
  • *****
  • Beiträge: 8867
Antw:Dynamic Range in einem Plot
« Antwort #25 am: 04 Oktober 2014, 23:16:38 »
gut zu wissen. dann werde ich mal umstellen.

gruss frank
FHEM: 6.0(SVN) => Pi3(stretch)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [hm.js]: https://forum.fhem.de/index.php/topic,106959.0.html

Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 716
Antw:Dynamic Range in einem Plot
« Antwort #26 am: 07 Oktober 2014, 22:15:42 »
vorher:

(http://forum.fhem.de/index.php?action=dlattach;topic=25618.0;attach=17452;image)


nachher:

(http://forum.fhem.de/index.php?action=dlattach;topic=25618.0;attach=17454;image)

Hallo zusammen,

ich versuche für meine RTs auch einen Plot mit so einem Abstand zu realisieren, aber irgendwie komme ich da nicht ans Ziel. Könnt ihr mir Hilfestellung geben.

Hier ist meine Plotdatei.
# Created by FHEM/98_SVG.pm, 2014-10-07 22:08:09
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Arbeitszimmer'
set ytics
set y2tics
set grid
set ylabel "Eingestellt"
set y2label "Gemessen"
set yrange <L1>

#FileLog 4:AZ_RT_links_Clima.T\x3a::
#FileLog 6:AZ_RT_links_Clima.T\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'gemessen' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'eingestellt' ls l1fill lw 1 with lines
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline flurin

  • Sr. Member
  • ****
  • Beiträge: 609
Antw:Dynamic Range in einem Plot
« Antwort #27 am: 01 Februar 2015, 17:38:36 »
Hallo holzwurm83

Ev. hilft Dir diese einfache Subroutine (in 99_myUtils.pm einfügen):

# argument: none
# return value: Range as [min:max]
sub
getLabel()
{
  my $label;
 
  if (defined($data{currval1}) && defined($data{currval2})) {
    my $min = int(minNum($data{min1},$data{min2})-0.3);
    my $max = maxNum($data{max1},$data{max2})+0.5;
    $label = sprintf("[%d:%.1f]",$min,$max);
  } else {
    $label = "";
  }
  #Log(3, "$label");
  return $label;
}

in fhem.cfg einfügen (Beispiel):

attr SVG_FileLog_temp_office_1 label getLabel()
Gruss
flurin


Offline holzwurm83

  • Sr. Member
  • ****
  • Beiträge: 716
Antw:Dynamic Range in einem Plot
« Antwort #28 am: 02 Februar 2015, 22:28:12 »
Hallo Flurin,

danke für dein Feedback. Hab das gleich mal ausprobiert. Die Subroutine in die  99_myUtils.pm eingefügt und neu geladen.

attr auch eingefügt:
Zitat
define SVG_FileLog_AZ_RT_links_Clima_1 SVG FileLog_AZ_RT_links_Clima:SVG_FileLog_AZ_RT_links_Clima_1:CURRENT
attr SVG_FileLog_AZ_RT_links_Clima_1 group Heizung
attr SVG_FileLog_AZ_RT_links_Clima_1 label getLabel()
attr SVG_FileLog_AZ_RT_links_Clima_1 room Arbeitszimmer,Plots

Es ändert sich nur leider nicht!?

- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Offline flurin

  • Sr. Member
  • ****
  • Beiträge: 609
Antw:Dynamic Range in einem Plot
« Antwort #29 am: 03 Februar 2015, 06:37:27 »
In der Sub ist eine Zeile in Kommentar, ändere diese Zeile wie folgt (# entfernen):

Log(3, "label = $label");
reload 99_myUtils.pm

und schaue im Logfile (fhem-2015-02.log) nach; nach dem Aufruf deines Plots müsste ein Eintrag vorhanden sein, etwa:

2015.02.03 06:15:47 3: label = [11:21.0]
sollte es so aussehen:

2015.02.03 06:15:47 3: label =
also ohne Range, dann stimmt was nicht mit den Werten in $data. Könntest du die letzen Einträge deiner FileLog Datei (AZ_RT_links_Clima-2015.log) posten. Ist deine Plotdatei oben noch aktuell?

Gruss
flurin
« Letzte Änderung: 03 Februar 2015, 18:09:46 von flurin »