Autor Thema: Plot aus Text-readings erzeugen - wie? [gelöst]  (Gelesen 223 mal)

Offline M.K.

  • New Member
  • *
  • Beiträge: 12
Plot aus Text-readings erzeugen - wie? [gelöst]
« am: 01 Juli 2020, 14:24:59 »
Hallo,

mit dem plotten von Zahlen habe ich keine Probleme, aber ich wuerde gerne auch Zustaende plotten, z.B. wie folgt "trocken" und "nass"

get DBLogging HISTORY INT 2020-07-01_00:00:00 2020-07-01_23:59:59 Sensor_Flora_1:light TASMOTA_Watervalve:state Sensor_Wasser_Draussen2:water_leak

2020-07-01_01:05:40 38975
2020-07-01_03:44:38 40
2020-07-01_05:53:37 833
2020-07-01_10:08:39 5524
2020-07-01_11:11:35 8934
2020-07-01_13:17:43 6418
2020-07-01_15:56:34 5538
2020-07-01_16:59:34 2407
2020-07-01_20:44:14 4
#Sensor_Flora_1:light:::
2020-07-01_05:00:30 0
2020-07-01_12:00:30 0
2020-07-01_15:00:30 0
#TASMOTA_Watervalve:state:::
2020-07-01_00:31:59 nass
2020-07-01_01:22:08 nass
2020-07-01_02:12:11 nass
2020-07-01_03:02:16 nass
2020-07-01_03:52:24 nass
2020-07-01_04:42:32 nass
2020-07-01_05:32:40 nass
2020-07-01_06:22:45 nass
2020-07-01_06:38:04 trocken
2020-07-01_07:28:14 trocken
2020-07-01_09:08:27 trocken
2020-07-01_09:58:32 trocken
2020-07-01_13:18:56 trocken
2020-07-01_14:09:03 trocken
2020-07-01_14:59:08 trocken
2020-07-01_15:49:13 trocken
2020-07-01_16:39:20 trocken
2020-07-01_17:29:27 trocken
2020-07-01_19:09:39 trocken
2020-07-01_19:59:44 trocken
2020-07-01_20:49:35 nass
#Sensor_Wasser_Draussen2:water_leak:::

soweit ich das verstanden hab, muesste das mit "plotfunction" gehen
plotfunction
Space value separated list of values. The value will be used to replace <SPEC#> type of strings in the .gplot file, with # beginning at 1 (<SPEC1>, <SPEC2>, etc.) in the #FileLog or #DbLog directive. With this attribute you can use the same .gplot file for multiple devices with the same logdevice.
Example:
#FileLog <SPEC1>
with: attr <SVGdevice> plotfunction "4:IR\x3a:0:"
instead of
#FileLog 4:IR\x3a:0:
#DbLog <SPEC1>
with: attr <SVGdevice> plotfunction "Garage_Raumtemp:temperature::"
instead of
#DbLog Garage_Raumtemp:temperature::

Aber die Beispiele ergeben fuer mich keinen Sinn.

Ich muss ja eine Funktion angeben, um die Werte zu ersetzen, also
wenn "nass", dann y=1
wenn "trocken", dann y=0
usw.

Wie muss man das angehen?

Hilfe  :)

Schon mal danke im Voraus und
viele Gruesse,
M.K.
« Letzte Änderung: 03 Juli 2020, 10:04:01 von M.K. »

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 7951
  • NIVEAu ist keine Creme...
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #1 am: 01 Juli 2020, 15:05:35 »
Vielleicht hilft das:

#FileLog 2:Markise.*:0:$fld[2]=~"ausgefahren"?1:0

"Matched" der text auf "ausgefahren", so wird (Fragezeichen-Operator) 1 "ausgegeben" ansonsten eben die 0

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline M.K.

  • New Member
  • *
  • Beiträge: 12
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #2 am: 02 Juli 2020, 15:13:04 »
Hallo Jooachim,

also ich habe folgende probiert:

attr SVG_fl_Flora_light plotfunction "Sensor_Wasser_Draussen2:water_leak::"
so wie in dem Ref-Beispiel, aber was soll das bewirken? In meinem Plot veraendert sich auch nichts.

Dein Beispiel habe ich auch probiert:

attr SVG_fl_Flora_light plotfunction "$fld[2]=~"trocken"?1:0"
Auch bin ich mir nicht sicher auf was fld[] stehen muss, aber ich habe 0-2 durchprobiert, auch kein Effekt.

Das ging auch nicht:
attr SVG_fl_Flora_light plotfunction "Sensor_Wasser_Draussen2:water_leak:.*=~"trocken"?1:0"
Das auch nicht:
attr SVG_fl_Flora_light plotfunction "Sensor_Wasser_Draussen2:water_leak:.*:0:$fld[2]=~"trocken"?1:0"
Wie gesagt, ich werde aus den Beispielen nicht schlau. Warum bei
attr <SVGdevice> plotfunction "4:IR\x3a:0:"
was ist 4:IR
was ist \x3a
warum :0:

...

VG
Martin

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10837
  • eigentlich eher "user" wie "developer"
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #3 am: 02 Juli 2020, 15:32:11 »
Also:

1. plotfunction ist ausweislich der commandref deprecated. Es sollte seit längerem stattdessen plotreplace genutzt werden.

2. plotreplace braucht (wie früher plotfunction) einen "Anknüpfungspunkt" in der gplot-File: Es werden Parameter übergeben, und die müssen irgendwie aufgelöst werden. Falls du Beispiele suchst: im Wiki unter SVG ist ein klein wenig was zu plotreplace zu finden, Parameter werden in gplot als <parameter> oder %parameter% definiert, zum Unterschied siehe commandref zu plotreplace.

3. plotreplace macht aber mMn. erst dann Sinn, wenn man die "Grundform" beherrscht, und das wäre, erst mal den Ausdruck direkt in der gplot-file zum Laufen zu bekommen und direkt dort zu bearbeiten. Wenn du das via FHEMWEB machst (edit files), wird die aktualisierte gplot auch gleich geladen (dringende Empfehlung, den Plot-Editor nur zur Vorschau zu nutzen und ansonsten die Finger von dem zu lassen!)
Die Syntax in den .gplot ist leider etwas kryptisch und afaik nirgends richtig erklärt, das machen alle per c&p+Anpassung, wo erforderlich, Zahlen beziehen sich meist auf "Spalten" ind der Logfile (idR. auf Spalte 3 oder 4, wenn es "Multi-Wert-Einträge" sind auch mal weiter hinten), was in eckigen Klammern steht ist ein Array-Index; was man genau braucht, richtet sich nach den geloggten Datenstrukturen...

(=> ohne input zu .gplot und logfile: kein output)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline jkriegl

  • Full Member
  • ***
  • Beiträge: 221
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #4 am: 02 Juli 2020, 16:36:34 »
Also ich mache so etwas mit dem plot-editor (hier 20 oder 50)
$fld[6]=~"no"?20:50
Wie angefügt eingeben (Feld-Nr)

Edit: Nachtrag, so sieht dies im plot-file für ein FileLog aus
#FileLog_WWasser 7:HK.WW.usr_WW\x3a::$fld[6]=~"no"?20:50
Edit: eigentlich schon gelöst https://forum.fhem.de/index.php?topic=85736.0
« Letzte Änderung: 02 Juli 2020, 19:36:44 von jkriegl »
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 7951
  • NIVEAu ist keine Creme...
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #5 am: 02 Juli 2020, 16:47:04 »
Mein Beispiel war für IN die gplot-Datei zum Einfügen...

Den GPlotEditor nutze ich praktisch nie ;)

Aber dort kann man das von mir auch irgendwie eingeben...

EDIT: ob das mit DB statt FileLog auch geht: leider keine Ahnung... Plots sind für mich genauso wie Bildchen, Knöpfchen, ... nicht so wichtig. Weil: HeimAUTOMATISIERUNG! :) Also bei mir sollte soviel wie möglich (am besten alles :)  ) automatisch gehen wie ich das gerade will/wollte (da fehlt allerdings noch etwas KI ;)  )... In Graphen kucke ich (fast) nie nach... Die meisten habe ich halt irgendwann mal erstellt... "Früher" wo ich noch dachte, dass ich da nachschaue bzw. früher wo ich noch viel optimiert habe/musste, da war das hilfreich...

Ansonsten kamen ja einige Hinweise von Beta-User...

Gruß, Joachim
« Letzte Änderung: 02 Juli 2020, 16:51:04 von MadMax-FHEM »
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10837
  • eigentlich eher "user" wie "developer"
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #6 am: 02 Juli 2020, 17:04:12 »
Vielleicht noch zur Klarstellung bzgl. des Plot-Editors:

Der funktioniert grundsätzlich schon. Früher (für meine Version 1 diverser Plots) hatte ich den auch mal genutzt.
Jüngst habe ich einfach mal ein paar Sachen überarbeitet, und dabei bin ich mit dem gar nicht mehr zurechtgekommen, weil der irgendwie die Tendenz hat, alle Variablen durch Istwerte zu ersetzen. Im Detail weiß ich das nicht mehr so genau, jedenfalls habe ich irgendwann für mich beschlossen, das Ding wirklich nur noch als Vorschau- und Datenabfrage-Werkzeug zu nutzen und das Editieren im gplot-Quelltext via edit files zu machen.

Hinterher habe ich dann gesehen, dass es noch mehr User gibt, die das Verhalten des Editors "gewöhnungsbedürtig" oä. nennen würden...


Was DBLog angeht: Funktioniert im Prinzip genauso (im Wiki/SVG ist es je ein Beispiel für FileLog und DBLog zu plotreplace).

(Und Grafiken/Plots schaue ich auch eher selten an, aber z.B. die Heizungswerte je Raum sind schon informativ, FALLS man mal was sucht bzw. auf die Schnelle wissen will; dto. für Stromverbräuche usw.. Dass ich V1 aber auch erst nach ca. 5+ Jahren mal angefaßt habe, um weitere Infos dazuzupacken, sagt auch schon einiges zum Anseh/Nutzungsverhalten...)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline M.K.

  • New Member
  • *
  • Beiträge: 12
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #7 am: 03 Juli 2020, 10:03:01 »
Hallo zusammen,

jetzt ist mir klar warum ich nicht weitergekommen bin...

Ich habe immer alles über den Plot Editor in der SVG Datei einstellen wollen. Dass man über "Edit files" zur "meinplot.gplot" gehen muss, war mir neu.
Der Hinweis, wie man da hin gelangt steht auch nirgends explizit.

Die Funktionsweise von plotReplace habe ich nun auch verstanden, aber das funktioniert ja ganz anders als ich dachte. Ich war der Meinung, dass die Funktion zum Definieren und Ersetzten von Werten direkt im Plot gemacht ist. Aber sie ersetzt also definierte Variablen in der gplot-Datei. Was laut beispiel im Wiki https://wiki.fhem.de/wiki/SVG hauptsächlich zur automatischen Beschriftung, oder allgemeinen Verwenung der .gplot datei gut ist.

plotReplace
space separated list of key=value pairs. value may contain spaces if enclosed in "" or {}. value will be evaluated as a perl expression, if it is enclosed in {}.
In the .gplot file <key> and %key% will be replaced with the corresponding value. The evaluation of <key> takes place after the input file is processed, so e.g. $data{min1} can be used in the title. %key% will be repaced before the input file is processed, this expression can be used to replace parameters for the input processing.

Auf jeden Fall geht es nun mit

#DBLogging Sensor_Wasser_Draussen2:water_leak zu
#DBLogging Sensor_Wasser_Draussen2:water_leak:::$val=~s/(trocken|nass)(\d*).*/$1eq"trocken"?0:$1eq"nass"?1:0/eg (nach dem Beispiel im Wiki)

@Joachim
Die Plots brauche ich eigentlich nur zum Optimieren bzw. Auswerten. Hier schaue ich wann es geregnet hat, sodass ich dann meine (automatische) Balkonbewässerung verbessern kann.
Zuletzt haben mir die Pflanzen wegen zu viel Wasser Schimmel ("Mehltau") angesetzt  ::)

Vielen Dank auch an Beta-User!

VG
Martin


Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22525
Antw:Plot aus Text-readings erzeugen - wie? [gelöst]
« Antwort #8 am: 03 Juli 2020, 10:47:59 »
Mein Senf dazu:
- bei mir ist die .gplot Datei in der SVG-Detailansicht als Link hinterlegt, ein Klick darauf fuehrt zum Editor
- DbLog legt leider keinen Wert darauf, die Interaktion mit dem Plot-Editor zu verbessern. Bei FileLog kann man Perl-Code in dem dafuer vorgesehenen Function Feld eingeben, Auswahl und Manipulation der Werte ist auch einfacher.
- ich wuerde erst dann auf DbLog umsteigen, wenn mir die Faehigkeiten des SVG-Moduls nicht ausreichen, weil ich dann externe Tools wie Grafana leichter einsetzen kann.

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 7951
  • NIVEAu ist keine Creme...
Antw:Plot aus Text-readings erzeugen - wie?
« Antwort #9 am: 03 Juli 2020, 11:35:20 »
@Joachim
Die Plots brauche ich eigentlich nur zum Optimieren bzw. Auswerten. Hier schaue ich wann es geregnet hat, sodass ich dann meine (automatische) Balkonbewässerung verbessern kann.
Zuletzt haben mir die Pflanzen wegen zu viel Wasser Schimmel ("Mehltau") angesetzt  ::)

Hallo Martin,

zu diesem Zweck setze ich auf "physikalische Steuerung" (aus Österreich): Blumat

Funktioniert wirklich sehr gut bereits seit 4 Jahren...

Da machen Tonkegel je nach Feuchtigkeit per Unterdruck die "Gießleitung" auf und zu...
...(leider ;)  ) ganz ohne Elektronik...

Gut ich musste dazu einen Tank auf den Balkon schnallen...
...leider (noch) keinen Wasseranschluss :-\

Da wird dann der Füllstand überwacht, damit ich weiß wann der leer ist...
...der Tank (ca. 150L) wird dann je nach Sommer so 2 oder 3 mal gefüllt...

...gut zum "Spaß" hab ich dann auch noch Xiaomi Feuchtemesser...
...aber eben nur weil: "günstig" und "weil ich's kann"... ;)

EDIT: und klar so ein paar Graphen schaue ich ab und an schon auch an ;) (aber bei weitem nicht so oft/viel wie zu Beginn bzw. wie ich dachte ;)  )...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)