FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tklein am 13 April 2017, 21:19:13

Titel: [gelöst] SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: tklein am 13 April 2017, 21:19:13
Hallo,

wie kann ich die derzeitigen Werte (on/off) meines PIR im SVG-Plot als 0/1 ausgeben lasen ohne mit zusätzlichen Dummies/Notifys bzw. die Werte im PIR Device neu zu vergeben?
Gibt es da so eine Art Mappingfunktion? If PIR eq  "on " plot 1 sozusagen. :-)

Viele Grüße
Thomas
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: alanblack am 13 April 2017, 22:55:16
Wenn ich die Frage richtig verstanden habe, reicht es
$fld[3]=~"On,"?1:0
in das Feld "Function" zu packen. Ggf. musst Du die "3" anpassen auf die Spalte in der die Werte "on/off" stehen.

Grüße
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: MadMax-FHEM am 14 April 2017, 00:14:16
Oder eventMap:

attr PIR eventMap on:1 off:0

Dann steht im Log 1 und 0 statt on bzw. off...
(vors. das regex passt dann noch/wieder)

Gruß, Joachim
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: tklein am 14 April 2017, 00:42:30
@alanblack:
kannst du mir bitte kurz erklären, was der Ausdruck macht? Wird da in ein Arraywert entweder 0 oder 1 geschrieben?
Als ich den in der ersten Zeile hinzugefügt hatte, ist nach dem Speichern der identische Wert/Ausdruck in die Funktionzelle in Zeile 3 kopiert worden. Muss da so?

@Joachim: Muss ich dann auch meine DOIF's etc. anpassen auf 0/1 ?

Viele Grüße & Danke
Thomas
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: MadMax-FHEM am 14 April 2017, 01:37:18
Hi Thomas,

Zitat von: tklein am 14 April 2017, 00:42:30
@Joachim: Muss ich dann auch meine DOIF's etc. anpassen auf 0/1 ?

Ich schätze JA.
Da die Events die vom Modul/Kanal kommen nun statt on/off eben 0/1 sind, zumindest bei mir so.

Habe einen Gewitterwarner mit Homematic-Sensoren gekoppelt, die open/closed senden und ich hab das dann auf 0/1 gemapped um es eben besser plotten zu können.
Im Eventmonitor kommt jetzt 0 bzw. 1 statt open/closed, daher müssen dann auch notify/DOIF etc. auf 0/1 matchen...

Andere Möglichkeiten:

readingsProxy https://wiki.fhem.de/wiki/ReadingsProxy (habe ich noch nicht verwendet), ist aber nicht so viel anders als dummy bzw. halt ebenfalls ein zusätzliches Device...

userReadings https://wiki.fhem.de/wiki/UserReadings bzw. https://fhem.de/commandref.html#readingFnAttributes dadurch bleiben die "originalen Events" erhalten und es sollte/müsste dann eben die zusätzlichen (zum jeweiligen angelegten userReadings) geben, die dann für's Plotten verwendet werden können...

Gruß, Joachim
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: KernSani am 14 April 2017, 10:29:11
Eventmap halte ich für den ungeschicktesten der vorgeschlagenen Wege. Userreading oder Readingsproxy erzeugen zusätzliche Logeinträge. Ein Mapping im gplot file dagegen erzeugt keinen zusätzlichen overhead und plottet auch alte Werte richtig...
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: MadMax-FHEM am 14 April 2017, 10:37:30
Zitat von: KernSani am 14 April 2017, 10:29:11
Ein Mapping im gplot file dagegen erzeugt keinen zusätzlichen overhead und plottet auch alte Werte richtig...

Wie würde das dann aussehen??

EDIT: plotReplace?

Danke, Joachim
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: KernSani am 14 April 2017, 11:05:17
Bei Verwendung von Dblog z.B so:
#fhemDbLog EG_PIR:state:::$val=~s/(on|off)(\d*).*/$1eq"on"?1:0/eg
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: alanblack am 14 April 2017, 11:20:02
Zitat von: tklein am 14 April 2017, 00:42:30
Zitat$fld[3]=~"On,"?1:0
@alanblack:
kannst du mir bitte kurz erklären, was der Ausdruck macht? Wird da in ein Arraywert entweder 0 oder 1 geschrieben?
Nee, da wird nichts in ein Array geschrieben. Kennst Du "IIF" aus irgendeiner Programmiersprache? Das hier ist das gleiche nur eine andere Syntax. Als IIF sähe das ungefähr so aus:
iif($fld[3]=="On", "1", "0")
$fld[] ist dabei ein Array, das SVG aus jeder Zeile des Logfiles erzeugt; quasi wie ein "split" mit dem Leerzeichen als Trenner.
Dabei sind dann in $fld[0] Datum und Uhrzeit, in $fld[1] das Gerät und ab $fld[2] die geloggten Infos.

Zitat
Als ich den in der ersten Zeile hinzugefügt hatte, ist nach dem Speichern der identische Wert/Ausdruck in die Funktionzelle in Zeile 3 kopiert worden. Muss da so?

Das habe ich nicht verstanden.


Grüße

Nachtrag: Eventmap und Userreadings habe ich auch mal ausprobiert. Kostet zu viel Grundlast auf dem System, ist unzuverlässig und macht den Code unleserlicher ("DOIF <Fenster> = 1 ...")
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: tklein am 14 April 2017, 14:11:02
@ alanblack

Wenn ich den Functioneintrag speichern möchte (Zeile 1)
wird der identische Inhalt in die Zelle in der 3. Zeile kopiert.
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: alanblack am 14 April 2017, 15:58:14
Zitat von: tklein am 14 April 2017, 14:11:02
@ alanblack

Wenn ich den Functioneintrag speichern möchte (Zeile 1)
wird der identische Inhalt in die Zelle in der 3. Zeile kopiert.

Ja, das habe ich gerade nachvollziehen können. Keine Ahnung, ob das ein Bug oder ein Feature ist. Wäre ein komisches Feature, weil es nur in der ersten Zeile so passiert.
Ist aber egal, weil hier Deine 3. Zeile hier noch unbenutzt ist. Solange das Feld "Diagram label" - also das erste in jeder Zeile - leer ist, wird die Zeile ignoriert. Wenn Du einen dritten Wert plotten willst, muss Du halt das Feld leeren oder ändern.

Grüße
Titel: Antw:SVG-Plot "Mapping" möglich von on/off auf 1/0?
Beitrag von: rudiratlos am 10 März 2018, 11:46:52
Zitat von: MadMax-FHEM am 14 April 2017, 00:14:16
Oder eventMap:

attr PIR eventMap on:1 off:0

Dann steht im Log 1 und 0 statt on bzw. off...
(vors. das regex passt dann noch/wieder)

Gruß, Joachim