SVG Plot, on - off, Erweiterung der Funktion zum ignorieren anderer Einträge?

Begonnen von aisberg, 12 Januar 2016, 21:21:02

Vorheriges Thema - Nächstes Thema

aisberg

Hallo,

Das mit dem Tic für on und off habe ich verstanden, allerdings werden ja dadurch zwei unterschiedliche Linien erzeugt, die nicht miteinander verbunden sind. Ich kann z. B. getrennte Punkte für an/aus darstellen, aber keinen Wechsel zwischen diesen.

Daher gefällt mir diese Idee mit der Funktion besser, da kann ich sogar mehrere Lampen in einer Grafik kombinieren:
$fld[3]=~"on"?8:1
Allerdings wird damit nur zwischen "on" und anderen unterschieden.
Wie kann man die Formel so erweitern, dass folgende Fall-Logik rauskommt:
Wenn "on" dann 8
Wenn "off" dann 1
Else ignorieren bzw. den bestehenden Wert beibehalten.

Germo

Gesendet von meinem ASUS_Z00AD mit Tapatalk


JoWiemann

Theoretisch müsst auch das gehen:

$fld[3]=~"on"?8:$fld[3]=~"off"?1:$fld[3]

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

aisberg

Zitat von: JoWiemann am 12 Januar 2016, 21:25:29
Theoretisch müsst auch das gehen:

$fld[3]=~"on"?8:$fld[3]=~"off"?1:$fld[3]

Grüße Jörg
Die ersten beiden Fallunterscheidungen gehen, aber die anderen müssen wohl auch eine Zahl liefern, sonst Plotter das nicht richtig. Ich komme wohl doch nicht drum herum, Log-Datein zu erstellen, die entweder nur on und off enthalten. Oder ich versuche die beiden unterschiedlichen Einträge so zu kombieren, dass sie im Log unter einem Attribut erscheinen. Vielleicht kann ich für die Lampen ein neues Attribut erstellen, das ich getriggert ändere und ins Log schreibe.

Gesendet von meinem ASUS_Z00AD mit Tapatalk


frank

FHEM: 6.0(SVN) => Pi3(buster)
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 [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

aisberg

Das sieht schon besser aus!
Allerdings kommt mit jedem on noch zusätzlicher Punkt auf off-Niveau.
Ich würde daher ein anderes Attribut verwenden wollen, brauche dafür aber mathemathische Operationen. Wenn da z. B. 100 steht (mein x), will ich daraus machen x / a + b
Z. B.
X / 10 + 20
$fld[4] liefert mir schon mal nicht 100
Wie kann ich also erst mal die Spalte 4 (ist eine Zahl) extrahieren und dann damit rechnen?

Gesendet von meinem ASUS_Z00AD mit Tapatalk


frank

ZitatAllerdings kommt mit jedem on noch zusätzlicher Punkt auf off-Niveau.
welche möglichkeiten gibt es? poste mal ein ausschnitt der logdatei.

ZitatWie kann ich also erst mal die Spalte 4 (ist eine Zahl) extrahieren und dann damit rechnen?
spalte 4 ist $fld[3] => $fld[3]/10+20
FHEM: 6.0(SVN) => Pi3(buster)
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 [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

aisberg

Die Funktion arbeitet korrekt, es gab an diesen Stellen tatsächlich nach ein immer gleich aus :-)

Gesendet von meinem ASUS_Z00AD mit Tapatalk


aisberg

Leider ist nun aber mein fhem log voll mit Warnungen.
Wie bekomme ich die unterdrückt oder was muss ich in der Formel anders machen?

2016.01.13 07:27:54 3: eval: $fld[3]/20+41
2016.01.13 07:27:54 1: PERL WARNING: Use of uninitialized value $fld[3] in division (/) at (eval 9670) line 1, <GEN3094> line 1503.
2016.01.13 07:27:54 3: eval: $fld[3]/20+41
2016.01.13 07:27:54 1: PERL WARNING: Use of uninitialized value $fld[3] in division (/) at (eval 9671) line 1, <GEN3094> line 1516.

Gesendet von meinem ASUS_Z00AD mit Tapatalk


frank

FHEM: 6.0(SVN) => Pi3(buster)
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 [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

aisberg

Ich habe den Grund gefunden und behoben: statt einen konkreten Parameter mit der entsprechenden Zahl auszuwählen war dort der Stern. Und auf Text-Werte können natürlich keine mathematischen Funktionen angewendet werden.

Gesendet von meinem ASUS_Z00AD mit Tapatalk


lammy

Hi,

danke für eure Antworten ihr habt mir mit dem Beitrag sehr geholfen. Ich habe zwar nur den Befehl "undef" gebraucht aber diesen habe ich nicht in dem Zusammenhang irgend wo anders gefunden.

Herzlichen Dank!