[Gelöst] Darstellung on/off in SVG Plot

Begonnen von blitz94, 14 März 2018, 20:17:59

Vorheriges Thema - Nächstes Thema

blitz94

Hallo zusammen,

ich habe mich seit einiger Zeit in die FHEM Umgebung eingearbeitet und scheitere nun bei der Erstellung eines SVG Plots. Ich möchte neben einigen Temperaturen auch den Schaltzustand der Heizung (on/off) im selben Graph darstellen. 
Ich habe im Frontend unter "Tics as ("Txt" val, ...)" die numerischen Werte für on bzw. off definiert, was scheinbar auch in der rechten y-Achse des Graphs übernommen wurde. Leider werden dann keine Kurven angezeigt.
Die Werte dazu sind im Logfile aber gespeichert. Meine Einstellung über das Frontend habe ich als Bilddatei angefügt.

Hat jemand eine Idee warum die Werte nicht graphisch dargestellt werden? Gibt es vielleicht zusätzliche Anforderungen an die Filelog Datei?

Ich wäre für jede Hilfe dankbar.

Schöne Grüße
Franz

dkreutz

Lass mal die Klammern weg, also nur: "off" 0, "on" 1
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Frank_Huber

für DBlog im glot file:

#logdb ETA_FBH_2_Heizpumpe:Puffer_Heizpumpe:::$val=($val=~'Ein'?17:15)

Ein = 17
alles andere = 15

blitz94

Danke für eure Antworten.

Zitat von: dkreutz am 14 März 2018, 20:35:33
Lass mal die Klammern weg, also nur: "off" 0, "on" 1
Ich habs mal probiert. Leider wurde der Graph dadurch auch nicht angezeigt. Komisch ist ja, dass er die Unterscheidung zwischen on und off erkennt....

Zitat von: Frank_Huber am 14 März 2018, 21:36:22
für DBlog im glot file:

#logdb ETA_FBH_2_Heizpumpe:Puffer_Heizpumpe:::$val=($val=~'Ein'?17:15)

Ein = 17
alles andere = 15
Wo muss ich diese Zeile angepasst reinkopieren?
Ich habe nur eine log Datei über Filelog. Gehört di da rein?

Frank_Huber

Den Syntax für Text log weiß ich auch nicht genau.
Mach dir Gplot Datei auf und vergleiche / teste.

Die tics sind nur für die Beschriftung da.

Mit dem Handy online, daher kurz gefasst...


fiedel

Hallo Franz,

herzlich willkommen im Forum! Deine Fragestellung habe ich hier schon sehr oft gelesen. Du findest sicher über die Forensuche viele Lösungsansätze. Mein Heizungs- SPS Plotfile habe ich vor langer Zeit auch schon mal gepostet.

Gruß
Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

blitz94

Habe jetzt in der Maske unter Function noch folgenden Zusatz vermerkt:
$fld[2]=~"on"?1:0

Zumindest wird nun eine - wenn auch nicht richtige - Grafik erstellt.

In der gplot Datei habe ich auch einige Versuche durchgeführt, leider vergeblich. Ich denke viel fehlt nicht mehr...

blitz94

Hallo zusammen,

habe das Problem nun gelöst. Falls jemand einmal auf dieselbe Fragestellung stößt, es braucht prinzipiell keinen Eingriff in die gplot Datei, da alle nötigen Parameter über die Frontendoberfläche eingegeben werden können.

Unter "Function" muss dem Graph mitgeteilt werden welcher numerischen Wert ein "off" bzw. "on" entspricht. In der Eingabemaske unter "Tics" wird lediglich die Achseneinstellung definiert.
Die Funktion lautet nun:
$fld[3]=~"on"?2:0
Wobei der Wert [3] von euerem Logfile abhängt. Bei mir der Wert in der 3. Spalte und die 2:0 sind die numerischen Werte für on bzw. off.

Eigentlich ganz einfach, wenn man die Konfiguration kennt.

Vielen Dank nochmal an alle.

Schöne Grüße
Franz

krikan


KernSani

und bitte noch ein |Gelöst] vor das Subject des ersten Posts :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ak323

Danke, hat mir auch geholfen !
-> nur beachten, daß $fld[3] die Spalte 4 bezeichnet ... !

VG ak323
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

ext23

#11
Wie macht man das bei dblog? Dort hat man ja dieses Feld für Funktionen nicht.

OK direkt das gplot anpassen geht, mhh schade, dass es dieses Feld hier nicht gibt, wäre etwas bequemer.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Stephan27

#13
Hallo Zusammen,

ich möchte mich mal hier hinten dran hängen. Ich habe mir jetzt diverse Beispiele angesehen und es auch geschafft einen von mehreren Values in einen darstellbaren Wert zu ändern, wie mache ich das aber für eine Vielzahl?

Hier mal die Zeile mit der ich den Wert "heating" aus der Datenbank ins Diagramm bekommen habe.

#DBLogging vitoconnect:heating.compressors.0.phase:::$val=($val=~"heating"?4:0)

Ich hatte versucht entsprechend die Werte "off", "pause" und "defrost" in einer weiteren Zeile zu definieren, was aber nicht den gewünschten Effekt hatte. (hier hat er mir dann 4 Graphen erzeugt, statt die Zustände zu mappen)

Wie schaffe ich es die Werte aus der Datenbank auf Zahlenwerte umzusetzen?

Also
1 - "off"
2 - "pause"
3 - "defrost"
4 - "heating"

Leider sind viele Beispiele nur mit On/Off und das konnte ich soweit bewerkstelligen.


EDIT:
Konnte es wie folgt lösen:
#DBLogging vitoconnect:heating.compressors.0.phase:::$val=~s/(heating|preparing|defrost|pause|off)(\d*).*/$1eq"heating"?5:$1eq"preparing"?4:$1eq"defrost"?3:$1eq"pause"?2:$1eq"off"?1:0/eg

Ob das jetzt richtig ist und was genau die "Schalter" im Befehl machen weiß ich leider nicht, aber das Ergebnis scheint zu passen. :-)

Sany

Moin
Zitat$val=($val=~"heating"?4:0)
der teil in der Klammer nennt sich ternärer Operator oder so. Ist eine vereinfachte Schreibweise für if..then..else. Und genau wie bei if..then..else kannst Du den auch immer weiter schachteln:
$val=($val=~"heating"?4:$val=~"defrost"?3:$val=~"pause"?2:$val=~"off"?1:0)

Gruß


Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....