Erstes Plot für Anwesenheit fast fertig ;)

Begonnen von floxx, 24 November 2017, 13:35:08

Vorheriges Thema - Nächstes Thema

floxx

Hallo,

ich habe mein erste PLOT erstellt für meine Anwesenheiten (Presence mit Geofancy) und habe da noch ein kleines Problem wo ihr sicher die Lösung wisst.

Soll:
- bei home oder asleep soll der Wert 0.9 sein
- bei Absent soll der Wert 0.1 sein

Ist:
- bei Present ist der Wert 0.9
- bei Absent und asleep 0.1

Filtern tue ich momentan mittels logfile auf "home" da dort nur home,absent, asleep enthalten ist. Ich bräuchte beim Filter: $fld[2]=~"home"?0.9:0.1   noch den Wert asleep aber weis nicht wie ?

SVG RAW:

defmod SVG_FileLog_Presence_Florian_1 SVG FileLog_Presence_Florian:SVG_FileLog_Presence_Florian_1:CURRENT
attr SVG_FileLog_Presence_Florian_1 room 20_Residents


PLOT:

# Created by FHEM/98_SVG.pm, 2017-11-23 21:45:58
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 'Anwesenheit Florian'
set ytics "ab" 0.1, "an" 0.9
set y2tics "ab" 0.1, "an" 0.9
set grid y2tics
set ylabel "-wesend"
set y2label "-wesend"
set yrange [0:1]
set y2range [0:1]

#FileLog_Presence_Florian 3:Florian.*::$fld[2]=~"home"?0.9:0.1

plot "<IN>" using 1:2 axes x1y2 title 'Florian' ls l1fill lw 2 with lines


Frank_Huber

einfach dahinter setzen
Beispiel:
ETA_Kessel_1_Status:Kessel_1_Status:::$val=($val=~'Heizen'?3:($val=~'Glutabbrand'?2:($val=~'Glutabbrand.wegen.Entaschung'?2:($val=~'Entaschen'?2:($val=~'Zünden'?2:($val=~'Vorwärmen'?1:($val=~'Füllen'?1:0)))))))

floxx

danke für die Antwort aber dein Beispiel ist für mich zu verwirrend, ist mein erstes Plot :(

Frank_Huber

Ja, da sind evtl zuviele Faktoren. So hatte ich mich an meinen Heizungskessen herangetastet.

Kurzform:
($val=~'x'?1:($val=~'xx'?2:($val=~'xxx'?3:0)))
Ein x = 1
Zwei x = 2
Drei x = 3
Alles andere  0

Du machst so lange deine "Umwandlungen" dahinter, bis du alle definiert hast, nach dem letzten dann den Default Wert für alles andere.

floxx

Danke für deine Gute Erklärung, eigtl. ganz simpel :) habs nun umgebaut aber mit "show preprocessed input" kann man sich ja das Ergebnis anzeigen lassen, leider wird immer 0.1 gesetzt.

Sollte ja so eigtl stimme oder sehe ich meinen Fehler nicht?
$val=($val=~'home'?0.9:($val=~'asleep'?0.9:0.1))

Frank_Huber

Warte, du hast ja filelog... Mein Beispiel ist von dblog.
Nimm mal wie du es zuerst hattest und füge nur die anderen Werte ein.

#FileLog_Presence_Florian 3:Florian.*::$fld[2]=~"home"?0.9:($fld[2]=~"asleep"?0.9:0.1)