[erledigt] DbLog SVG-Plot: wie $val-Funktionen über die Weboberfläche eingeben?

Begonnen von Sany, 16 September 2021, 17:22:19

Vorheriges Thema - Nächstes Thema

Sany

Hallo zusammen,

habe mir eine MariaDB aufgesetzt und sammle schon kräftig Daten, nun wollte ich anfangen, meine SVG-Plots umzustellen. D.h. nicht umzustellen im wörtlichen Sinn, sondern neu zu erstellen mit DbLog als Datenquelle, der Rest aber eigentlich wie vorher.
Soweit habe ich schon erste Erfolge, was ich aber nicht hinbekomme ist das eingeben einer Funktion mit $val, um z.B. on/off nach 1/0 umzusetzen.
Bei FileLog als Datenquelle habe ich ja die Spalte Function, wo ich dann z.B. $fld[3]>0?$fld[3]:0 eingebe. Es ist mir auch bewußt, dass das mit DbLog nun so aussehen muss: :::$val=($val>0?$val:0), nur wo kann ich das über die Webobefläche eingeben? Es müsste ja jeweils an das Device:Reading angehängt werden, aber da gibts nur die Drop-down-liste mit allen Readings in der DB.
Ich habe jetzt alle Wikis und Forenthreads und die cref zum Thema durch, aber das will nicht. Wenn ich direkt das gplot-file ändere wird diese Änderung nicht übernommen oder spätestens beim nächsten Einsatz des Editors wieder überschrieben.
Ich habe Plots bisher immer über "Create SVG plot from ..." erstellt und gebe zu, mit den gplot-Dateien nicht wirklich Bescheid zu wissen, hat ja wunderbar funktioniert.

Kann mich da mal jemand in die Richtige Richtung schubsen??

Danke schon mal.

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  ....

Beta-User

#1
...wirklich alle...?

Auch https://wiki.fhem.de/wiki/SVG ;) ?

Kurz meine Erfahrung mit dem Thema: der plot-Editor ist nur was für "Einmalaktionen", alles andere sollte man durch (direktes) Editieren der gplot-Dateien (gerne via FHEMWEB) erledigen. Wenn man dabei das Attribut plotReplace ausgiebig strapaziert, kann man so ein .gplot viel universeller nutzen wie das, was der Editor erzeugt...
(EDIT: den plot-Editor aber als zweites Fenster aufzumachen, um gleich die Ergebnisse zu sehen ist dagegen durchaus hilfreich).

Just my2ct.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sany

Zitat...wirklich alle...?
selbstverständlich, ich lese immer erst das ganze Internet bevor ich poste  ;)
ZitatAuch https://wiki.fhem.de/wiki/SVG ;) ?
Auch das. Es gibt dann aber auch noch das hier: https://wiki.fhem.de/wiki/Plots_erzeugen

und nachdem ich mich da ein wenig durchgewühlt habe sehe ich da doch auch widersprüchliches.

Im Plot-Wiki steht z.B.
ZitatEin manuelles Anlegen der .gplot-Datei ist für Spezialisten und normalerweise nicht notwendig. Der .gplot-Editor sollte für Standardfälle grundsätzlich verwendet werden.
Im Prinzip das Gegenteil von dem was Du schreibst.
Mal von mir ausgehend: Ich mache doch schon eine Weile mit fhem herum, bisher war Logging/Plotten einfach ein Log erstellen und per .gplot-Editor den Plot basteln. Auch hier die Infos, wie man $fld[] behandelt eher spärlich (z.B. in der commandref gar nicht??), aber in Wikis und Forum doch brauchbare Hinweise zu finden.
Nun umgestellt auf DbLog, hat gut und einfach geklappt, auch erste Plots waren schnell auf Basis von DbLog erstellt. Nun die Geschichte mit den $fld[]. Geht ja jetzt anders, mit $val, irgendwie muss das an die Device:Reading-Zeile mit dran. Das Wiki gibts nur in der Form her, dass es halt als Beispiel da steht. Schaut man das Beispiel genauer an entdeckt man plotReplace. Das gibts ja noch nicht "ewig", jedenfalls hatte ich bisher dafür keinen Bedarf. Dann liest man die commandref zu SVG nochmals: ein Satz zu Plotreplace, aber hey, jetzt ist es mir klar, nur mit der Basis "gplot-Editor" hat mir das im ersten Moment gar nix gesagt. Dann sind da im Beispiel im Wiki noch Parameter SPEC1 angegeben, den findet man auch (und nur da) 2 Punkte oberhalb bei plotfunction, diese ist aber depricated. War aber erst mal ne falsche Fährte. Also doch einfach nur Bezeichner.
Das Wiki https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen beschreibt halt leider nur, wie man eine vorhandene gplot-Datei ändert, nicht eine neue erstellt.
Im Prinzip fehlt eigentlich nur die Info: hast Du FileLog und stellst auf DbLog um und möchtest Plots: gplot-Editor überschreibt händische Änderungen am File! Wenn geändert, den Editor nicht mehr nutzen.
Das kriegt man zwar auch auf Umwegen übers Forum, aber so richtig ein Bild gab das für mich nicht. Außerdem waren einige der beiträge dann auch schon "Jahre" alt, was ja nicht unbedingt falsch sein muß, aber man würde es gerne per commandref bestätigen können.

Nun denn, für mich hat sich das Ganze aufgeklärt, erste Plots mit $fld->$val funktionieren, ich komme mit den gplot-dateien zurecht und habe schon ein paar Anwendungsfälle für plotReplace, quasi ein generalisiertes gplot, steuerbar über das Attribut.

Danke für den Schubser

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  ....

Beta-User

Fyi: Dieses "hä....?!?" hatte ich auch, als ich von FileLog auf DBLog umgestellt habe. Das war dann der Anstoß, das ganze rund um die sehr flexiblen Möglichkeiten von plotReplace in den SVG-Artikel zu packen, und eigentlich meine ich, dass diese zwei kleinen Beispiele ausreichend sind, um was sinnvolles zusammenzubasteln. Es gibt dann noch einen Beitrag (von OdfFhem?)  zu logProxy (?), den ich da noch reinwursteln wollte, aber dazu bin ich auch seit längerem nicht gekommen...

"Eigentlich" war mal der Plan, diese ganzen Artikel durchzumosten und auf einen gewissen aktuellen Stand zu bringen bzw. die Referenzierungen so zu machen, dass klarer ist, wie was zusammengehört und zu verstehen ist. Ist aber andererseits auch nicht komplett falsch, wie es sich verstreut so alles zu finden ist, nur eben verwirrend.

Ich fand jedenfalls am Ende den plot-Editor eher hinderlich wie nützlich, ist aber vielleicht auch sehr subjektiv...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sany

wo wir schon dabei sind:
Zitat#%DBLogDevice% %SPEC1%:desired-temp::
#%DBLogDevice% %SPEC1%:measured-temp:0:
#%DBLogDevice% %EXTERNALTEMPDEVICE%:%EXTERNALTEMPREADING%::
#%DBLogDevice% %SPEC1%:actuator:0:int
#%DBLogDevice% %ROOMHUMIDITYDEVICE%:%EXTERNALHUMIDITYREADING%:0:
#%DBLogDevice% %ROOMTEMPDEVICE%:%ROOMTEMPREADING%:0:
#%DBLogDevice% %WINDOW1%:state:::$val=~s/(open|closed|tilted)(\d*).*/$1eq"open"?60:$1eq"tilted"?45:0/eg

wo finde ich Infos zu den verschiedenen "Endungen", die Du da angegeben hast?
::
:0:
:0:int
:::$val ist klar

oder was bedeuten die?
Ich frag für einen Freund ;)

(nein, nur für den Fall, dass ich da als nächstes drüberstolper..
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Beta-User

 ;D :o ::) ;D
...das habe ich wo abgeschrieben... aber wo?!? - vermutlich im wesentlichen aus dem gplot für die Homematic-Thermostate... ähm, deswegen vermutlich auch das etwas seltsame "%SPEC1%"... oder war das aus irgendeinem verwirrenden Beispiel zu DBLog?!? Ähm, zu lange her...
Habe ich deswegen auch ausdrücklich den Attributinhalt mit in den Kommentar-Kopf oben reingenommen?...?

Im Ernst: Wenn du Verbesserungspotential siehst und was dokumentiert lauffähiges hast, sind Verbesserungsvorschläge willkommen. Ich habe nur keine Neigung, "das ganze Internet" neu zu schreiben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

ZitatAuch hier die Infos, wie man $fld[] behandelt eher spärlich (z.B. in der commandref gar nicht??)
"gar nicht" stimmt nicht: https://fhem.de/commandref_modular.html#FileLogget
ZitatSyntax: <col>:<regexp>:<default>:<fn>
[...]
The string is evaluated as a perl expression. @fld is the current line splitted by spaces.

Sany

ich habe mich nun eine Zeit mit den Plots und gplot-Dateien beschäftigt, das läuft jetzt wie gewünscht.
Um auf meine Ausgangsfrage zurückzukommen: 
Zitatwie $val-Funktionen über die Weboberfläche eingeben?
gebe ich mal selbst die Antwort: gar nicht. Geht nur über editieren der gplot-Datei.
Zu den anderen Dingen, die wir hier besprochen haben:
Ich vermute mal, die meisten beginnen mit FileLog und stellen (wenn überhaupt) früher oder später auf DbLog um. Hat man nun, weil im Primzip ausreichend, zur Plot-Erstellung den Editor benutzt und das verinnerlicht, dann sind die Erfahrungen mit gplot-Dateien eher, sagen wir mal, nicht vorhanden. Wozu auch, es geht mit dem Editor, das Wiki empfiehlt dessen Einsatz. So war das bei mir, quasi "Plot-Editor-Scheuklappen".
Nun wagt man den Umstieg, wenn die DB läuft und Daten da sind gehts an die Plots. Die Suche führt direkt aufs Wiki https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen. In der Einleitung steht da:
Grundsätzlich verhält sich DbLog bei der Verwendung in SVG-Plots sehr ähnlich wie ein FileLog. So kann ein neuer Plot auf DbLog-Daten in der FHEM-
Oberfläche genauso angelegt werden wie beim FileLog, indem man an der Definition des DbLog Devices auf "Create SVG plot from DbLog" klickt. Wenn
man von FileLog auf DbLog umstellt, möchte man aber evtl. nur die Definitionen der SVG-Plots anpassen. Hier einige Anmerkungen dazu.

Also auch im Prinzip: plot-Editor nutzen. Spitzfindig könnte man behaupten, da steht man kann einen Plot genauso wie bei FileLog "anlegen", das wäre sogar korrekt. Aber halt auch nur das erste Anlegen des Plots. Sobald Dinge wie @fld/$var oder Parameter mit plotReplace dazukommen gehts halt nicht mehr.

Vielleicht könnte das dort so beschrieben sein:

ZitatGrundsätzlich verhält sich DbLog bei der Verwendung in SVG-Plots sehr ähnlich wie ein FileLog. So kann ein neuer Plot auf DbLog-Daten in der FHEM-Oberfläche genauso angelegt werden wie beim FileLog, indem man an der Definition des DbLog Devices auf "Create SVG plot from DbLog" klickt.
Das ist ausreichend für einfache Plots aus vorhandenen Daten. Müssen diese noch "vorverarbeitet" werden, z.B. open/closed auf 1/0 umgestellt werden, dann ist der plot-Editor nicht mehr ausreichend. Es muß die gplot-Datei direkt editiert werden, z.B. per Edit files. Eine so geänderte gplot-Datei wird allerdings beim klick auf "Write .gplot file" im plot-Editor wieder überschrieben! Deshalb könnte man den plot-Edior benützen, um einen Plot erstmalig zu erstellen mit der Auswahl der benötigten Quelldaten, Farben etc, alles weitere dann über "Edit files" und den Plot-Editor nur noch zur Kontrolle verwenden.
Wer noch keine Erfahrungen mit .gplot-Dateien hat sollte mindestens hier nachlesen:
https://fhem.de/commandref.html#gnuplot-syntax
https://wiki.fhem.de/wiki/SVG


Wenn man von FileLog auf DbLog umstellt, möchte man aber evtl. nur die Definitionen der SVG-Plots anpassen. Hier einige Anmerkungen dazu.

@Beta-User
ZitatIch habe nur keine Neigung, "das ganze Internet" neu zu schreiben.
... das verlangt ja auch keiner. Und nachdem ich mich da eingelesen habe sieht das ja ganz anders aus, also keine Änderungsbedarf.

@rudolfkoenig
Zitat"gar nicht" stimmt nicht:
weshalb ich ja sicherheitshalber die Fragezeichen drangemacht habe.
Hatte die letze Zeit einiges mit meinen Arduinos zu tun und hab die Verbindung @fld <-> $fld[] (Perl-array und Zugriff darauf) nicht hingekriegt. Klappt jetzt aber ;)

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  ....

Sany

kleiner Nachtrag:
verwendet man zusätzlich logProxy, dann klappt es auch wieder mit dem Plot-Editor und man kann alle erforderlichen Angaben für $val und logProxy direkt eingeben.
Es empfielt sich aber trotzdem, den "manuellen" Weg, also editieren der gplot-Files, zu kennen.
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Borkk

@Sany: Wenn du schon auf DBLog umgestellt hast, hast du dir schon mal Grafana angeschaut? Grandioses Tool, gibt´s u.a. auch als "fertiges" Docker Image. Ich habe damit alle Plots u.v.m. realisiert.

Es wird ja jetzt wieder früher dunkel und kälter ;)   
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sany

Hallo Borkk,

ich hab da mal kurz drübergeschaut und es sieht interessant aus. Für mich wichtig: kann ich, ähnlich eines SVG-Plots, einen einzelnen (oder auch mehrere) Grafen in die fhem-Web-Oberfläche einfügen (z.B. html-code), da ich mit F18 und ui_table von DOIF meine Oberfläche zusammenstelle.
Den Rest bekomme ich wohl hin, wäre zu überlegen, ob ein Grafana-Server einen eigenen Container bekommt oder z.B. zusammen mit der MariaDB in einem läuft (habe eine Zotac Minirechner mit Proxmox; fhem, Phoscon und MariaDB laufen in eigenen VMs oder Linux-Container). Denke, das ist lösbar, habe ich noch nicht weiter nachgelesen. Kommt aber noch, sobald ein paar andere Projekte hier erledigt sind.

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  ....

Borkk

Ich habe alle Dienste in eigenen Docker Containern laufen und bin damit sehr glücklich. Mittlerweile sind es schon 13 Container aufgeteilt auf 2 RPI4. Nicht alle für FHEM aber die meisten schon.
Wenn Grafana dauerhalt läuft, dann kannst du einzelne Grafen über von Grafana bereitgestellte URL´s wiederum in andere Oberflächen einbauen.   
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Sany

ZitatWenn Grafana dauerhalt läuft, dann kannst du einzelne Grafen über von Grafana bereitgestellte URL´s wiederum in andere Oberflächen einbauen.
das wollte ich hören. Dann werde ich mich bei Gelegenheit da einlesen.
danke Dir!
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....