Hallo miteinander,
nachdem sich auf der smartVISU-Seite einiges getan hat, der io_fhem-Treiber angepasst wurde
und die Diskussion mal wieder aufkam fronthem um neue Features zu erweitern, habe ich mich
mal durch den Hash- und Arraydschungel gekämpft. Eigentlich habe ich ein angepasstes fronthem,
das mir Plotdaten an smartVISU liefert schon seit längerem im Einsatz. Ich habe das Ganze nochmal
überarbeitet und stelle es jetzt mal zum Testen zur Verfügung. Man kann sicher noch mehr Zeit
aufwenden und den Code performanter gestalten.
Den smartVISU-Treiber musste ich leicht motifizieren, um die neuen Daten für Log und Plot verarbeiten
zu können. Die alten Funktionen sollten durch die Änderungen nicht beeinträchtigt worden sein.
Nicht unbedingt gleich für den Produktiveinsatz verwenden!
Zum Testen hier also eine überarbeitete Version von fronthem mit Funktionalität für die Abfrage
von Plot-Daten aus der FHEM-Datenbank über DbLog oder mit eingeschränktem Umfang aus FileLog.
Für die Anpassung wurden folgende Dateien überarbeitet und sind in der angehängten zip-Datei
zu finden:
- 01_fronthem.pm
- 31_fronthemDevice.pm
- 99_fronthemUtils.pm
- fronthemEditor.js
und
- io_fhem.js (smartVISU-Treiber)
Es gibt zwei neue Modi
log und
plot im Item Editor (formerly known as GAD Editor).
Weiterhin sind in der 99_fronthemUtils.pm drei neu Converter,
Log für status.log,
Plot für die Abfrage über DbLog und
Plotfile für die Abfrage über FileLog enthalten
und werden im Editor zur Verfügung gestellt.
Für
Plot muss im Editor unter
converter als Argument der Name des DbLog Device mitgegeben werden!
Wenn ein Item "PlotTest.0" in smartVISU existiert und "desired-temp" aus "myDbLog" ausgelesen werden soll:
Einstellungen Item-Editor:Item: PlotTest.0
mode: plot
device: HM_3C92F7_Climate
reading: desired-temp
converter: Plot myDbLog
Für
Plotfile muss im Editor unter
converter als Argument der Name der FileLog-Datei mitgegeben werden,
in die für das entsprechende Device die Daten geschrieben werden!
Wenn der Eintrag im FileLog so aussieht (
state wird geloggt) und ein Item "PlotTest.0" in smartVISU existiert:
2018-04-01_00:03:27 heizung_verbraucherkreis_temp_vl 25.10
Einstellungen Item-Editor:Item: PlotTest.0
mode: plot
device: heizung_verbraucherkreis_temp_vl
reading: state
converter: Plotfile FileLog_ heizung_verbraucherkreis_temp_vl
Wenn der Eintrag im FileLog so aussieht und ein Item "PlotTest.0" in smartVISU existiert:
2018-04-03_11:16:35 HM_3C92F7_Climate desired-temp: 18.0
Einstellungen Item-Editor:Item: PlotTest.0
mode: plot
device: HM_3C92F7_Climate
reading: desired-temp
converter: Plotfile FileLog_HM_3C92F7_Climate
Wenn der Eintrag im FileLog so aussieht und ein Item "PlotTest.1" in smartVISU existiert:
2018-04-03_21:18:11 Temperature_Bathroom values: T: 19.4 H: 52
Einstellungen Item-Editor, wenn man die Temperatur als Plot will:Item: PlotTest.1
mode: plot
device: Temperature_Bathroom
reading: values
converter: Plotfile FileLog_Temperature_Bathroom 5 T
(Der Wert für die Temperatur befindet sich von links ausgehend in der 5 Spalte.)
Einstellungen Item-Editor, wenn man die Luftfeuchte als Plot will:Im Item-Editor:
Item: PlotTest.1
mode: plot
device: Temperature_Bathroom
reading: values
converter: Plotfile FileLog_Temperature_Bathroom 7 H
(Der Wert für die Luftfeuchte befindet sich von links ausgehend in der 7 Spalte.)
Unter Verwendung von DbLog und Plot sollte man alle Modi der smartVISU-Plots ('avg', 'sum', 'min', 'max', 'minmax',
'minmaxavg' oder 'raw') nutzen können. Aber nur für 'raw' werden z.Zt. point-Updates "geliefert"!
FileLog in Verbindung mit Plotfile liefert nur Daten für Serien, also keine Durchschnitts-, Min-, Maxwerte, ...
Um status.log von smartVISU mit FHEM nutzen zu können, sind einige Vorarbeiten nötig!Die Readings werden pro "Readings-Gruppe" in einem Dummy-Device gesammelt. Dieses wird
automatisch angelegt. Das so erzeugte Dummy-Device muss dann im Editor mit dem
status.log-Item verknüpft werden. (converter ist
Log)
1. Notify erstellen:define Log notify .* { Log_SetList($NAME,$EVENT) }
2. Folgende Attribute in attr global userattr hinzufügen:
svEvents svReadins svRegex 3. Einstellungen vornehmen (Attribute bei zu überwachenden Devices setzen): svReadins: Für das Device das Reading setzen, das überwacht werden soll (z.B. state überwachen):
attr <device> svReadins state
Wenn state und battery überwacht und battery in Batterie geändert werden soll:
attr <device> svReadins state battery:Batterie
Zur Übersicht der überwachten Devices kann eine readingsGroup angelegt werden:
define rg_svLog readingsGroup <Name>,<svReadings> .*:?svLog,?
attr rg_svLog nameStyle style="color:red;font-weight:bold"
svEvents: Wird automatisch für das Dummy-Device (Log-Liste) angelegt, kann aber an die jeweiligen Bedürdnisse angepasst werden.
svRegex: Hier kann für das Dummy-Device (Log-Liste) eine Liste mit Events, die ersetzt werden sollen, angegeben werden.
z.B.
attr <device> svRegex low:schwach opened:geöffnet closed:geschlossen connected:verbunden disconnected:getrennt
Gruß
R.
Das ist ja mal cool.
Basierend auf welcher Treiber-Version vom mir hast Du die Anpassungen gemacht?
Ich könnte das dann übernehmen.
Habe den Treiber übernommen.
Läuft noch wie gehabt.
Soll ich es als pull request nach SV schicken?
Das ist dein Treiber aus der aktuellen smartvisu-develop mit meinen Veränderungen und den Optimierungen, die smai hier vorgeschlagen hat:
https://forum.fhem.de/index.php/topic,85423.msg789034.html#msg789034 (https://forum.fhem.de/index.php/topic,85423.msg789034.html#msg789034)
Also teste mal lieber, ob für die Addon-Funktionen noch alles geht!
Ich habe für handleReceivedData: case plot und case log ergänzt.
Alle Plot-Daten, die von fronthem kommen, werden mit dem "cmd": "plot" geliefert, um sie von den Serien aus dem Addon-Treiber zu unterscheiden.
Für die Logs hat sich erst nach einem "Umbau" fronthem ergeben, dass sie eigentlich wie ein ankommendes item verarbeitet werden können.
Deswegen die aufgeteilte Behandlung.
Beim Spliten der items und für monitor habe ich die Infos für die Plots, die an fronthem übergeben werden, entsprechend angepasst.
Gestet habe ich mit der aktuellsten smartvisu-develop von heute.
darf ich auch übernehmen, bzw wenn Du magst kannst Du das auch pushen. Weil Du geschrieben hast "nicht unbedingt produktiv", wir können ja einen dev zweig machen.
danke vg
joerg
Kannst du gerne machen!
Oder wir warten evtl. noch mal ein bisschen ab, bis mal ein paar Leute getestet haben.
Die Entscheidung überlasse ich dir!
Ein dev-Zweig für fronthem wäre denke ich ganz sinnvoll!
Ich weiss ja nicht, ob es auf allen Systemen problemlos läuft.
Eventuell ist die Abfrage der Plots auf schwachen Systemen zu langsam.
Bei mir läuft FHEM halt auf einem NUC.
Zitat von: raman am 03 April 2018, 22:44:09
Also teste mal lieber, ob für die Addon-Funktionen noch alles geht!
Ja, geht noch alles.
Hast Du das zip in post #1 gerade nochmal erneuert?
Alles was ich hatte funktioniert noch wie gehabt.
Nur habe ich es nicht hinbekommen, einen plot aus einem filelog zu bekommen.
ich habe ein FileLog
Internals:
DEF ./log/Temperature_Bathroom-%Y.log Temperature_Bathroom:values.*
NAME FileLog_Temperature_Bathroom
NOTIFYDEV Temperature_Bathroom
NR 118
NTFY_ORDER 50-FileLog_Temperature_Bathroom
REGEXP Temperature_Bathroom:values.*
STATE active
TYPE FileLog
currentlogfile ./log/Temperature_Bathroom-2018.log
logfile ./log/Temperature_Bathroom-%Y.log
READINGS:
2018-04-03 21:58:36 linesInTheFile 26214
pos:
Attributes:
logtype text
Mit (halt etwas mehr) so einem Inhalt
2018-04-03_21:18:11 Temperature_Bathroom values: T: 19.4 H: 52
2018-04-03_21:23:11 Temperature_Bathroom values: T: 19.4 H: 52
2018-04-03_21:28:21 Temperature_Bathroom values: T: 19.4 H: 52
2018-04-03_21:33:21 Temperature_Bathroom values: T: 19.4 H: 52
2018-04-03_21:38:21 Temperature_Bathroom values: T: 19.4 H: 52.3
2018-04-03_21:43:31 Temperature_Bathroom values: T: 19.4 H: 53
2018-04-03_21:48:31 Temperature_Bathroom values: T: 19.4 H: 53
2018-04-03_21:53:36 Temperature_Bathroom values: T: 19.5 H: 53
2018-04-03_21:58:36 Temperature_Bathroom values: T: 19.6 H: 53
2018-04-03_22:03:41 Temperature_Bathroom values: T: 19.6 H: 53
2018-04-03_22:08:41 Temperature_Bathroom values: T: 19.6 H: 54
2018-04-03_22:13:51 Temperature_Bathroom values: T: 19.7 H: 55
2018-04-03_22:18:51 Temperature_Bathroom values: T: 19.8 H: 54.8
2018-04-03_22:23:51 Temperature_Bathroom values: T: 19.8 H: 55
2018-04-03_22:28:56 Temperature_Bathroom values: T: 19.8 H: 54
Das plot widget so definiert:
<div class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false" >
<h3>plot.period</h3>
<div class="hcs-test">
{{ plot.period( "id.PlotTest.1",
["PlotTest.1"],
raw,
"3d",
"0d",
0,
30,
100,
["Bad"],
["#0000FF"],
["line"]) }}
</div>
</div>
</div>
</div>
Im Item-Editor:
Item: PlotTest.1
mode: plot
device: FileLog_Temperature_Bathroom
reading: linesInTheFile
converter: Plotfile FileLog_Temperature_Bathroom
ergebnis siehe Anhang
Du musst unter device das device angeben, von dem die Daten stammen.
Bei dir denke ich Temperature_Bathroom
Ich habe nur noch was in der 99_fronthemUtils.pm für UZSU geändert. Deswegen das Update.
Edit:
Mir fällt grad auf, dass bei mir der FileLog anders ausschaut
2018-04-03_11:16:35 HM_3C92F7_Climate desired-temp: 18.0
2018-04-03_11:16:35 HM_3C92F7_Climate humidity: 57
2018-04-03_11:16:35 HM_3C92F7_Climate measured-temp: 19.3
Wenn die Form so ist, funktioniert meine Abfragemethode nicht. Da bräuchte man ne Regex.
2018-04-03_21:18:11 Temperature_Bathroom values: T: 19.4 H: 52
Man kann aber dem Converter weitere Werte übergeben. Die Position (Standard ist 4), wo gesucht werden soll und einen String für die Regex
(Aufruf ist wie in der Commandref für FileLog)
converter: Plotfile Temperature_Bathroom <column> <regex>
gute idee
Ich habe die FileLog-Funktion überarbeitet und hoffe es funktiniert jetzt!
Es reicht die 31_fronthemDevice.pm und 99_fronthemUtils.pm auszutaschen.
Wie die Einstellungen vorzunehmen sind steht im ersten Beitrag!
Super, funktioniert.
Habe meine komplette Abhandlung, die ich gerade abschicken wollte, bezüglich des get auf das logfile, wie das konstruiert wird und wie es für den Fall konstruiert werden müsste, in die Tonne geworfen. :)
Mit dieser Version funtioniert beides.
Der linke plot bekommt seine Daten von so einem log
2018-04-04_12:38:01 Temperature_Bathroom values: T: 20.3 H: 64
2018-04-04_12:43:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:48:36 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:53:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:59:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:04:36 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:09:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:15:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:20:41 Temperature_Bathroom values: T: 20.3 H: 62.8
2018-04-04_13:25:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:31:16 Temperature_Bathroom values: T: 20.3 H: 62.3
2018-04-04_13:36:36 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:41:56 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:47:16 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:52:36 Temperature_Bathroom values: T: 20.2 H: 62
Der rechte plot bekommt seine Daten von so einem log
2018-04-04_13:34:17 LevelBarnEast temperature: 22
2018-04-04_13:34:17 LevelBarnEast voltage: 5.6
2018-04-04_13:39:48 LevelBarnEast distance: 115
2018-04-04_13:39:48 LevelBarnEast level: 25
2018-04-04_13:39:48 LevelBarnEast liters: 253
2018-04-04_13:39:48 LevelBarnEast temperature: 22
2018-04-04_13:39:48 LevelBarnEast voltage: 5.6
2018-04-04_13:45:19 LevelBarnEast distance: 114
2018-04-04_13:45:19 LevelBarnEast level: 26
2018-04-04_13:45:19 LevelBarnEast liters: 255
2018-04-04_13:45:19 LevelBarnEast temperature: 21.5
2018-04-04_13:45:19 LevelBarnEast voltage: 5.6
Das ist echt super, wie einfach man die plots damit an den Start bekommt 8)
Werde mal einige einbauen und beobachten, wie es sich verhält.
Wow!
Habe es auch gerade probiert und hat auf anhieb geklappt!
Große KLasse! Danke
Ein Frage habe ich noch!
Ich benutze dblog und plot.period.
Nach meinem empfinden werden hier nur max 1 Wert pro Stunde angezeigt, obwohl ich den Wert für 'count' auf 100 festgelegt habe. Ist das So oder habe ich eine Einstellung falsch? Einstellung des Zeitbereiches auf 1 Tag.
Ich habe mal parrallel ein Filelog mitlaufen lassen. Hier kommen alle Daten rüber. Nur bei dblog nur eine begrenzte Anzahl je nach eingestelltem Zeitbereich für die x-Achse!
Danke
Hallo raman,
ich bin neu im Forum und dabei mein FHEM mit SV Stück für Stück aufzusetzen. Dein Beitrag kam mir wie gerufen, da ich mich gerade an die Plots in SV machen wollte. Deinen Code habe ich installiert: Er läuft einwandfrei, auf Anhieb und ohne jegliche Schwierigkeiten. status.log habe ich allerdings (noch) nicht ausprobiert. Ich habe hier einen Raspberry 3 am Laufen und nutze aktuell nur FileLogs. Ich finde die Geschwindigkeit übrigens voll und ganz in Ordnung, wobei das sicherlich von der Größe der Logfiles abhängt (bei mir sind es zur Zeit ca. 6000 Zeilen).
Einziger kleiner Punkt war, dass ich ein wenig hantierten musste, bis ich die Syntax für Logfiles heraus hatte, in denen nur das state-Reading in der 3. Spalte geloggt wird. In diesem Fall muss das Feld reading freibleiben, was mich irritierte, weil ich mit "state" gerechnet hätte.
2018-04-01_00:03:27 heizung_verbraucherkreis_temp_vl 25.10
Ansonsten großes Lob und Dankeschön meinerseits! - Sollte mir noch mehr auffallen, werde ich mich melden.
@cruser1800
It's not a bug, it's a feature! Kombination aus "1d" und "avg" liefert dir den Sundendurchschnitt,
Setze mal in SV mode auf "raw"!
@blue
Noch so ein Sonderfall! In FHEM wird glaube ich bei einem state-Event das state nicht wie bei anderen
Readings mit angegeben.
Wird der Plot dan mit folgender Angabe für den Converter an SV gesendet?
converter: Plotfile heizung_verbraucherkreis_temp_vl 3
bei den anderen convertern setze ich da explizit "state" ein um diese confusion zu verhindern. Macht be den logs evtl auch Sinn.
Zitat von: raman am 05 April 2018, 11:18:17
@blue
Noch so ein Sonderfall! In FHEM wird glaube ich bei einem state-Event das state nicht wie bei anderen
Readings mit angegeben.
Wird der Plot dan mit folgender Angabe für den Converter an SV gesendet?
converter: Plotfile heizung_verbraucherkreis_temp_vl 3
Richtig, exakt so hat es funktioniert und wichtig war eben auch, dass Readings leer bleibt, ansonsten klappt das mit der Column-Nummer nicht. Als Idee: Wie wäre es, wenn du bei dem Reading "state" fest die Spalte 3 nimmst anstatt default die 4? Ja, es wäre dann ein Sonderfall, aber der zieht sich immerhin durch ganz FHEM durch.
Zitat von: raman am 05 April 2018, 11:18:17
@cruser1800
It's not a bug, it's a feature! Kombination aus "1d" und "avg" liefert dir den Sundendurchschnitt,
Setze mal in SV mode auf "raw"!
Hallo raman,
habe ich probiert! Aber das Plot bleibt leer! Vielleicht sollte ich noch erwähnen, dass ich mit 2.9 teste!
Alle andern mode - Einstellungen funktionieren!
Hallo raman, hallo cruser1800,
ich habe gestern Abend dblog installiert und mit deiner Erweiterung getestet. Ich kann das Verhalten, das cruser1800 mit plot.period beschreibt, nachvollziehen: avg mittelt stundenweise (ok, das ist ein Feature, soweit verstanden :) ), aber bei 'raw' bleibt die komplette Grafik leer (siehe Anhang). A propos 'raw': Die Kurve bleibt genauso komplett leer, wenn ich Plotfile verwende (und explizit 'raw' verwende, leer '' oder 'avg' bringt mit Plotfile die gewünschte Kurve zum Vorschein). Die Ursache für das Nichtfunktionieren von 'raw' scheint also unabhängig von Plot und Plotfile zu sein. Ich habe noch nicht in deinen Code schauen können und daher noch nicht genau die Stelle nachvollzogen. Vielleicht mache auch ich was falsch?
Summa summarum: Mir ist es mit dblog und Plot nicht möglich, die Kurve mit Rohwerten darzustellen. Plotfile funktioniert, wie auch schon gestern geschrieben, aber nur mit Modus '' oder 'avg' (nicht 'raw').
Mein Code in SV:
{{ plot.period('p5', ['Heizung.Verbraucherkreis.Temperatur.Vorlauf', 'Heizung.Verbraucherkreis.Temperatur.Ruecklauf'], 'raw', '9h', 'now', 0, 0, 100, ['Vorlauftemp.', 'Rücklauftemp'], [ '#a00', '#00a'], ['line', 'line'], ['', 'Temperatur in °C']) }}
Funktionierend aber nur mit 'avg':
{{ plot.period('p5', ['Heizung.Verbraucherkreis.Temperatur.Vorlauf', 'Heizung.Verbraucherkreis.Temperatur.Ruecklauf'], 'avg', '9h', 'now', 0, 0, 100, ['Vorlauftemp.', 'Rücklauftemp'], [ '#a00', '#00a'], ['line', 'line'], ['', 'Temperatur in °C']) }}
Ein anderer Punkt: Eine Kurve mit 'avg' aktualisiert sich mit neuen (nicht gemittelten) Werten. Ist der Browser eine längere Zeit geöffnet, wird die Kurve ab dem Zeitpunkt des Seitenaufrufs mit den einzelnen Rohwerten mit jedem Event angezeigt. Es sei aber mal dahin gestellt, ob das wirklich ein "Problem" und wichtig ist.
Das mit den Update bei Punkten funktioniert nicht so wie es soll!
Das habe ich noch nicht umgesetzt, aber ich habe dazu eine Idee.
Das mit raw muss ich mir noch genauer anschauen, aber für Plotfile
wird der Modus gar nicht ausgewertet und verwendet. Da ist es auf
fronthem-Seite eigentlich egal, was man angibt. Wie sich das auf
die Auswertung in SV auswirkt muss ich noch mal testen.
Die sV macht nichts mit dem Mode, das aggregieren wird dem Backend überlassen.
Genau genommen kümmert sich die sV aktuell nur um count und wirft frühere Werte raus, wenn neue hinzukommen und der count überschritten wird.
Zudem werden zeitgleiche Werte eliminiert, dadurch können diese rückwirkend angepasst oder auch mehrmals derselbe Datenpunkt gesendet werden.
In Zukunft möchte ich ersteres aber ändern, weil eine Einschränkung auf den angegebenen Zeitbereich wohl sinnvoller wäre als auf die Anzahl.
Anscheinend gibt es noch gewisse Probleme bei der Darstellung mit plot.period, zumindest berichten SmartHomeNG User davon.
Ich konnte diese nicht nachvollziehen. Da ich kürzlich einige umgebaut habe, kann es aber auch nicht ausschliessen.
Bei mir funktioniert raw mit filelog
<div class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false" >
<h3>plot.period</h3>
<div class="hcs-test">
{{ plot.period( "id.PlotTest.1",
["PlotTest.1"],
raw,
"3d",
"0d",
0,
30,
100,
["Bad"],
["#0000FF"],
["line"]) }}
</div>
</div>
</div>
</div>
Mit dem filelog:
2018-04-04_12:38:01 Temperature_Bathroom values: T: 20.3 H: 64
2018-04-04_12:43:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:48:36 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:53:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_12:59:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:04:36 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:09:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:15:16 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:20:41 Temperature_Bathroom values: T: 20.3 H: 62.8
2018-04-04_13:25:56 Temperature_Bathroom values: T: 20.3 H: 63
2018-04-04_13:31:16 Temperature_Bathroom values: T: 20.3 H: 62.3
2018-04-04_13:36:36 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:41:56 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:47:16 Temperature_Bathroom values: T: 20.2 H: 62
2018-04-04_13:52:36 Temperature_Bathroom values: T: 20.2 H: 62
Und:
Item: PlotTest.1
mode: plot
device: Temperature_Bathroom
reading: values
converter: Plotfile FileLog_Temperature_Bathroom 5 T
Ergibt Anhang (linker plot, der rechte hat aber auch raw)
Hallo,
@HCS
Dein Code funktionierte auch bei mir, was mich wirklich (freudig) stutzig machte: Ich denke es liegt aber an dem raw ohne Anführungszeichen. Denn bei mir gab es daraufhin den Effekt im Plot, dass die Anzeige mit Daten aus dbLog wieder gemittelt wurden (Ansicht wie avg) und bei Plotfile die Rohwerte angezeigt wurden. ==> Der Parameter wird also nicht als String interpretiert und das führt dazu, dass einfach die Default-Einstellung übernommen wird. Die widerrum verhält sich gehabt, insbesondere nur für Plotfile. Setze ich "raw" in Anführungszeichen ist der Plott wieder komplett leer. Vielleicht könntest du das auch mal probieren?
@smai
ZitatIn Zukunft möchte ich ersteres aber ändern, weil eine Einschränkung auf den angegebenen Zeitbereich wohl sinnvoller wäre als auf die Anzahl.
Das fände ich ebenfalls sehr sinnvoll und würde ich begrüßen.
@raman + @smai
Wenn sV nichts mit dem Mode am Hut hat und die Anzeige ansonsten funktionert, sollte es doch eher auf fronthem-Seite liegen, dass die Einzelwerte (raw) mit dbLog nicht angezeigt werden? Mir macht es jedenfalls den Anschein, dass die Wertepaare nicht richtig befüllt werden. Warum sollte es sonst mit den FileLogs klappen...
raw ohne Anführungszeichen ist tatsächlich falsch. Das hat nichts mit Plot oder FHEM zu tun, sondern ganz grundsätzlich mit Twig.
Ohne Anführungszeichen wird es als Variablenname interpretiert. Da diese Variable nicht gesetzt ist, kommt wie du vermutest der Standardwert 'avg' zum Tragen.
Gut, dass ich es falsch gemacht habe, sonst hätte ich keinen plot gesehen ;D ;D
Stimmt, mit "raw" bleibt er leer
Was mich nun aber wundert: mit "raw" mault der Template checker mit raw sieht er kein Problem
Line 43
Widget: plot.period
Parameters: "id.PlotTest.1", ["PlotTest.1"], "raw", "4d", "now", 0, 30, 1000, ["Bad"], ["#FF0000"], ["line"]
Parameter Index: 2
Parameter Value: "raw"
Valid Values: avg,sum,min,max,minmax,minmaxavg,raw
Aber der Fehler, dass es mit raw nicht geht, liegt im FHEM-Treiber:
// sV Plots
widget.plot().each(function () {
var list = widget.explode($(this).attr('data-item'));
for (var i = 0; i < list.length; i++) {
if (widget.checkseries(list)) {
var plotItem = io.splitPlotItem(list);
if ($.inArray(plotItem.mode, Array('avg', 'min', 'max', 'sum', 'diff', 'rate', 'on')) >= 0) {
Das müsste sein: avg,sum,min,max,minmax,minmaxavg,raw
Wenn man die Zeile so anpasst:
if ($.inArray(plotItem.mode, Array('avg', 'min', 'max', 'sum', 'diff', 'rate', 'on', 'raw')) >= 0) {
dann geht es auch.
Jetzt muss ich nur noch herausbekommen, was die gültigen modes sind.
Stimmt die Liste, die der Template checker verkündet?
Zitat von: HCS am 06 April 2018, 17:15:18
Jetzt muss ich nur noch herausbekommen, was die gültigen modes sind.
Wobei eigentlich: müsste die Liste der möglichen modes von fronthem bestimmt sein, was dort verstanden wird?
Zitat von: HCS am 06 April 2018, 17:15:18
Das müsste sein: avg,sum,min,max,minmax,minmaxavg,raw
Wenn man die Zeile so anpasst:
if ($.inArray(plotItem.mode, Array('avg', 'min', 'max', 'sum', 'diff', 'rate', 'on', 'raw')) >= 0) {
dann geht es auch.
Bingo, funktioniert! Perfekt! :)
Zitat von: HCS am 06 April 2018, 17:27:37
Wobei eigentlich: müsste die Liste der möglichen modes von fronthem bestimmt sein, was dort verstanden wird?
Ich bin mir nicht ganz sicher (ihr seid schon länger mit FHEM im Geschäft ;) ), aber laut 99_fronthemUtils.pm sind in der Methode "sub Plot(@)" von raman auf Fronthem-Seite die Modes raw,avg,sum,min,max,minmax,minmaxavg definiert.
@smai: Danke für die Ausführung!
Ich ging auch davon aus, dass für "minmax" und "minmaxavg" die Daten in einem Array übergeben werden müssen.
Aber dier Serien werden ja getrennt voneinander jeweils für min, max bzw. avg in SV erwartet.
Also "minmax" und "minmaxavg" funktionieren deshalb nicht, da muss ich einiges abändern.
"min", "max", "avg" und "raw" (mit der Änderung im Treiber) sollten gehen!
Das Updaten der Punkte funktioniert aber noch nicht wie es soll! Das müssen noch ein paar Fallunterscheidungen rein.
Man kann auch mal überlegen, wann bei "avg" bei welcher Zeitangabe welche Durchschnittswerte (Stunden-, Tages-, Wochen-, Monatsdurchschnitt) geliefert weren sollen.
Also z.B. Kombination aus "avg" und "1d" ==> Stundendurchschnitt
"avg" und "1W" ==> Tagesdurchschnitt
...
Bin für Vorschläge offen!
Danke, mit der Änderung im Treiber gehts jetzt auch bei mir!
Die mode Einstellungen "minmax" und "minmaxavg" funktionieren bei mir! Zumindest sieht es wie erwartet aus! ;)
Hallo raman,
Zitat von: raman am 06 April 2018, 18:41:59
Man kann auch mal überlegen, wann bei "avg" bei welcher Zeitangabe welche Durchschnittswerte (Stunden-, Tages-, Wochen-, Monatsdurchschnitt) geliefert weren sollen.
Also z.B. Kombination aus "avg" und "1d" ==> Stundendurchschnitt
"avg" und "1W" ==> Tagesdurchschnitt
...
Bin für Vorschläge offen!
Wäre es nicht am sinnvollsten die Werte einstellbar als optionaler Parameter zu haben? Ich finde man braucht es je nach Daten mal so und so. Deine Zeit-Vorschläge finde ich prinzipiell aber sinnvoll und könnten doch die Standard-Einstellungen sein.
Eigentlich ergeben sich die Abschnitte aus der Gesamtdauer und Anzahl, also (tmin-tmax)/count.
Hallo,
ich kann bei frontherm unter Mode kein Plot auswählen es springt immer wieder auf item.
Woran liegt das ?
gruß und Danke
die Dateien aus post#1 hast Du installiert ? Wenn ja dann noch mal ctrl-f5 im browser damit die neue js editor version verwendet wird.
Zitat von: herrmannj am 04 Mai 2018, 22:38:26
die Dateien aus post#1 hast Du installiert ? Wenn ja dann noch mal ctrl-f5 im browser damit die neue js editor version verwendet wird.
Ja, hab ich. Aber es ist immer noch so das ich 3 zur Auswahl habe (plot item log) egal was ich aus wähle es springt immer auf item zurück.
Somit kann ich auch nichts anderes auswählen.
gruß
Guten Tag,
Ich habe die Plots mit sv2.9 testweise auch bei mir laufen, funktioniert soweit alles einwandfrei. :)
Was mir allerdings aufgefallen ist, dass bei größeren Plots FHEM blockiert, ist es möglich die Datenbankabfrage (sqlite) auch als nonblocking auszuführen?
Zu große Plots (zu viele Daten) werden gar nicht angezeigt, dass liegt aber sicherlich an dem verwendeten langsamen Pi B+, der wird demnächst eh ersetzt und dann nochmal getestet.
Wann kommen die Anpassungen per FHEM Update?
Vielen Dank für die Arbeit. :)
Hallo raman,
Ich habe deine Änderung zum testen der Plots mit SV 2.9 eingespielt und habe eine Plot in in der Smartvisu Seite angelegt.
{{ plot.period('plotKollektor', ['AUSSEN_IstTemperatur_Plot','KG_HEIZUNG_TEMP_Kollektor_Plot','KG_HEIZUNG_TEMP_Pufferspeicher_Plot'], 'avg', '9h', 'now', 0, 0, 100, ['Temp. Außen', 'Temp. Kollektor','Temp. Pufferspeicher'], [ '#a00', '#00a','#a00'], ['line', 'line', 'line'], ['', 'Temperatur in °C']) }}
und habe dann wie im Post #1 die Einstellungen im ITEM-Editor gemacht,
sobald ich die Änderung speicher stürzt FHEM ab und folgende Fehlermeldung steht im Log
Can't use an undefined value as an ARRAY reference at ./FHEM/31_fronthemDevice.pm line 632.
Wenn ich FHEM neustarte läuft es kurz und dann stürzt es wieder ab.
Woran liegt das?
Gruß
Hallo Gigabyte99,
ich hatte auch schon mal solch ein Phänomän. Da lag es an der Definition des "item". Ich hatte den converter falsch angegeben!
Vielleicht hilfts!
Hallo cruser1800,
ich habe jetzt ein bischen probiert, soweit ich das jetzt feststellen kann tritt der Fehler auf wenn ein Plot in Smartvisu definert ist
aber kein "Plot item" in FHEM definert ist bzw. die Berechtigung für das "item" nicht gesetzt ist.
Gibt es eine möglichkeit denn Fehler in FHEM irgendwie abzufangen?
Gruß
Hallo raman, vielen Dank für deine tolle(n) Erweiterung(en). Smartvisu Plots funktionieren mit deiner Anleitung, beim Status.log bin ich allerdings gescheitert. Fehlt da eventuell die User_datei mit den entsprechenden Funktionen?? (Log_SetList) ? Gruß
Hallo zusammen,
ich komme nicht weiter.
Ich habe es wie in Poste 1 Versucht, aber ohne Erfolg.
Ich nutze SV 2.9 mit Fhem und SQLite.
So sieht die Datenbank aus: (Bild: Datenbank)
So sieht der Plot aus:(Bild: Plot1)
So sieht der fronthem ITEM aus (Bild:fronthem)
und so die Fehlermeldung: (Bild: Fehler)
und zuletzt noch mein HTML Code
<div class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>plot.period</h3>
<div class="hcs-test">
{% set plotOptions =
[
{
'update_trigger_gad': 'Wirkarbeit_strom_komuliersw',
'device': 'StromVerbrauch',
'reading': 'Stromverbrauch_countsOverall_EnergyMonth',
'config': {
'name': 'Stromverbrauch komuliert',
'type': 'spline'
}
}
]%}
{{ plot.period('1', 'Wirkarbeit_strom_komuliert', '"avg"', '', '', '', plotOptions, '', '', 300) }}
</div>
</div>
</div>
</div>
kann mir jemand weiterhelfen ??
Danke
Bei dir steht im fronthem Editor
-converter: Plot Datenbank
lass mal das Plot weg. Dort muss nur der Name deines DBlog Devices rein.
-converter: Datenbank
Danke, aber die Fehlermeldung bleibt.
Was mir noch aufgefallen ist, bei Dir steht:
{{ plot.period('1', 'Wirkarbeit_strom_komuliert', '"avg"', '', '', '', plotOptions, '', '', 300) }}
Meiner Meinung nach müsste das so aussehen:
{{ plot.period('1', 'Wirkarbeit_strom_komuliert', 'avg', '', '', '', 'plotOptions', '', '', 300) }}
Zitat von: buchner51 am 02 Dezember 2018, 08:18:35
Hallo zusammen,
ich komme nicht weiter.
Ich habe es wie in Poste 1 Versucht, aber ohne Erfolg.
Ich nutze SV 2.9 mit Fhem und SQLite.
So sieht die Datenbank aus: (Bild: Datenbank)
So sieht der Plot aus:(Bild: Plot1)
So sieht der fronthem ITEM aus (Bild:fronthem)
und so die Fehlermeldung: (Bild: Fehler)
und zuletzt noch mein HTML Code
<div class="block">
<div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
<div data-role="collapsible" data-collapsed="false">
<h3>plot.period</h3>
<div class="hcs-test">
{% set plotOptions =
[
{
'update_trigger_gad': 'Wirkarbeit_strom_komuliersw',
'device': 'StromVerbrauch',
'reading': 'Stromverbrauch_countsOverall_EnergyMonth',
'config': {
'name': 'Stromverbrauch komuliert',
'type': 'spline'
}
}
]%}
{{ plot.period('1', 'Wirkarbeit_strom_komuliert', '"avg"', '', '', '', plotOptions, '', '', 300) }}
</div>
</div>
</div>
</div>
kann mir jemand weiterhelfen ??
Danke
Deine Item Definition sieht ok aus. Allerdings versucht du scheinbar dbPlot.linePlot mit plot.period zu vermischen. Schau dir bitte in der Doku zu smartVisu an, wie ein plot.period definiert wird. Wenn du dazu konkrete Fragen hast, dann helfe ich gern weiter.
Danke habs auch endlich gemerkt.
jetzt geht's ans fein Tuning.
Danke
Hallo,
bei mir funktioniert das mit den Plots nicht, was mache ich falsch? siehe Screenshots!
Gruß Jan
Du hast den gleichen Fehler gemacht wie @buchner51 über dir. plot.period und dbPlot.linePlot kann man nicht mischen! Schau dir bitte in der Doku zu smartVisu an, wie ein plot.period definiert wird.
Hmm,
habe es wie n der Doku gemacht geht nicht.
Gruß Jan
Hi,
schau mal so:
und auch die Dateien aus Poste 1
gruß
Ich habe da nochmal so eine Frage, wie kann ich Current/History gleichzeitig anzeigen lassen?
Ich hab so das Gefühl das nur Current angezeigt wird.
gruß
Hallo,
gehen alle Plot Arten die von Smartvisu unterstützt werden?
Manche gehen bei mir aber z.B. plot.gauge geht bei mir auch nicht.
{{ plot.gauge('', 'schlafzimmer_heizung_istwert_plot', 10, 30, '°', 'Temperatur', 'solid-half', [30,50,70,90], ['#0DE0EC','#55BF3B','#DDDF0D','#DF5353']) }}
Gruß Jan
plot.gauge zeigt aktuelle Werte und nicht historische, deshalb braucht es auch kein DB reading.
ich nutze multiaxis.
gibt es eine Übersicht wer was darstellt bez abruft?
Zitat von: buchner51 am 07 Dezember 2018, 14:24:59
ich nutze multiaxis.
In 2.8 oder develop (aka 2.9)?
Zumindest der in 2.8 integrierte Treiber unterstützt die Series noch nicht. Und beim neueren Treiber weiss ich nicht, ob er mit 2.8 läuft.
Zitat von: buchner51 am 07 Dezember 2018, 14:24:59
gibt es eine Übersicht wer was darstellt bez abruft?
Nein. Ist aber doch recht einfach zu erkennen, ob in einem Plot eine Serie von historischen Werten angezeigt wird oder ob es einzelne (und damit aktuelle) Itemwerte sind.
Trotzdem würde tatsächlich bei den betroffenen Plots eine explizite Erwähnung in der Doku Sinn machen, zumal nicht jedes Backend die Serien unterstützt.
Ich nutze Smartvisu 2.9 von gidhub, wie erkenne ich das?
Gibt es denn eine Möglichkeit beide Datenbanken gleichzeitig angezeigt zu bekommen in der Multiansicht?
wie kann man die Darstellung in html ändern? also voll Bild oder Größe?
gibt es eine dokuseite wo es erklärt ist, ich hab bisher nichts gefunden.
Gruß
Irgendwie verstehe ich keine deiner Fragen.
Zitat von: buchner51 am 08 Dezember 2018, 08:43:14
Ich nutze Smartvisu 2.9 von gidhub, wie erkenne ich das?
Wie erkennst du was?
Zitat von: buchner51 am 08 Dezember 2018, 08:43:14
Gibt es denn eine Möglichkeit beide Datenbanken gleichzeitig angezeigt zu bekommen in der Multiansicht?
Welche beiden Datenbanken und was ist die Multiansicht?
Zitat von: buchner51 am 08 Dezember 2018, 08:43:14
wie kann man die Darstellung in html ändern? also voll Bild oder Größe?
Was meinst du mit "voll Bild", dass der Plot die ganze Seite füllen soll? Die Plots skalieren sich automatisch nach der Breite ihres Containers. Wenn du das Widget also direkt im content Platzhalter nutzt, füllt es auch die ganze Breite.
Zusätzlich kann man wie bei jedem HTML-Element auch CSS einsetzen.
Zitat von: buchner51 am 08 Dezember 2018, 08:43:14
gibt es eine dokuseite wo es erklärt ist, ich hab bisher nichts gefunden.
Was erklärt ist? Wie für jedes Widget gibt es auch für plot.period eine Doku-Seite. In 2.9 musst du dafür nicht mal mehr die Pages ändern, sondern die Doku ist direkt im Menü unter der Konfiguration zu finden.
Hi, ich probiere es nochmal:
Ich nutze Smartvisu 2.9 von gidhub, wie erkenne ob die Current und History verwendet wird?
Ich habs jetzt mal ausprobiert mit Plot.Period, so sieht es besser aus. Aber Plotaxis ist wohl auch neu ab 2.9.
Unter der Doku hab ich zwar den Punkt Blocks gefunden aber kein Code.
Naturgemäss müssen Pots mit Reihen von Daten diese Werte aus der DB holen, solche mit nur jeweils einem Wert pro Item zeigen den aktuellen Wert.
Unterdessen habe ich in der Doku der betroffeneb DB-Plots einen Hinweis platziert.
Was für Code suchst du denn in der Doku?
In der Doku unter Disign -- Blocks sind keine Code Erklärungen, das fehlt einem Anfänger wie mir.
Auch der eine oder andere Code zur voll Ansicht wäre hilfreich.
gruß
Zitat von: buchner51 am 09 Dezember 2018, 14:26:51
In der Doku unter Disign -- Blocks sind keine Code Erklärungen, das fehlt einem Anfänger wie mir.
Das hat interessanterweise bisher noch niemand angemerkt, aber es ist eigentlich berechtigt.
Den Code kannst du dir aber anschauen, indem du einfach die Datei pages/docu/design/design_block.html anschaust.
Zitat von: buchner51 am 09 Dezember 2018, 14:26:51
Auch der eine oder andere Code zur voll Ansicht wäre hilfreich.
Ich weiss noch immer nicht genau, was eine "voll Ansicht" sein soll.
Ich finde auch nicht, dass in der smartVISU eine allgemeine HTML/CSS-Dokumentation enthalten sein muss...
Heyho,
leider bekomme ich es auch nicht hin. Habe die Dateien aus der zip kopiert.
Zur Erklärung:
Die Datenbank speichert minütlich Temperaturwerte in einer SQLite DB mit folgendem Muster
2018-12-10 20:41:17 gz_heizung_temp KNX ist_temp-get: 22.90 °C ist_temp-get 22.90 °C
2018-12-10 20:42:17 gz_heizung_temp KNX ist_temp-get: 22.90 °C ist_temp-get 22.90 °C
2018-12-10 20:43:17 gz_heizung_temp KNX ist_temp-get: 22.90 °C ist_temp-get 22.90 °C
2018-12-10 20:44:17 gz_heizung_temp KNX ist_temp-get: 22.90 °C ist_temp-get 22.90 °C
2018-12-10 20:45:17 gz_heizung_temp KNX ist_temp-get: 22.90 °C ist_temp-get 22.90 °C
Die Definition in der SV ist folgende:
{{ plot.period('', 'gz_plot_day_plot', 'avg', '3h') }}
Kann ich hier das Beispiel überhaupt nutzen, da es ja minütliche Daten sind?
Und die DEF in der fronthem ist (siehe auch Bild im Anhang)
mode: plot
device: gz_heizung_temp
reading: ist_temp-get
converter: Plot myDBLog
Ich würde mich sehr über Erleuchtung freuen.
LG Paul
Hallo,
du hast keine ID drin, die muss immer eindeutig sein. Heist deine Datenbank -myDBLog-?
Und du musst die ersten Dateien (alle drei) einfügen und auf die Berechtigungen achten, ich hatte auch so ein paar Probleme.
Zitat von: buchner51 am 11 Dezember 2018, 20:56:39
Hallo,
du hast keine ID drin, die muss immer eindeutig sein. Heist deine Datenbank -myDBLog-?
Und du musst die ersten Dateien (alle drei) einfügen und auf die Berechtigungen achten, ich hatte auch so ein paar Probleme.
Heyho buchner,
in der SV2.9 muss man keine ID mehr angeben, das ist jetzt optional. Ja die Datenbank heißt wirklich so ::).
Das mit der Berechtigung probiere ich heute Abend mal aus.
Ich könnte mir noch vorstellen, dass die Datenbank einfach zu groß bzw. zu viele Datenpunkte hat (2,5MB ca. 44000 Datenpunkte)
Hallo,
an der Größe liegt es nicht meine ist min 10x so groß.
Gruß
Werden die Dateien aus post 1 eigentlich auch per update verteilt?
Oder gibt es Probleme bei anderen wigets?
Mmmh,
mysteriös, habe eben bei der Wahl des Converter auf die Dropdown- Auswahl gewartet und Plot gewählt und danach noch den Namen der dblog file eingeben. Visuell sieht es genau so aus, wie gestern aber einmal strg + f5 auf der SV Seite und der Plot war auf einmal da.
Danke für die Arbeit von euch @smai , @raman und @herrmannj
Grüße Paul
Hallo Zusammen,
bin gerade auch etwas am Rätseln warum es bei mir nicht funktioniert. Files aus dem Zip natürlich installiert.
Folgendes ist konfiguriert:
{{ plot.period('wz_temperatur_plot','wz.istTemperatur.plot', 'raw') }}
Meldet sich als: wz.istTemperatur.plot.raw.1h.0
mode: plot
device: Zeilenbeleuchtung
reading: temperature
converter: Plotfile zeilenbel_temp 4
2018-12-12_22:15:46 Zeilenbeleuchtung temperature: 22.5 C (measured)
2018-12-12_22:20:55 Zeilenbeleuchtung temperature: 22.5 C (measured)
2018-12-12_22:25:55 Zeilenbeleuchtung temperature: 22.5 C (measured)
2018-12-12_22:30:55 Zeilenbeleuchtung temperature: 22.5 C (measured)
2018-12-12_22:35:55 Zeilenbeleuchtung temperature: 22.5 C (measured)
Es handelt sich um eine Fritz!Dect 200.
Was mache ich falsch?
Danke!
Bist du sicher, dass das FileLog-Device zeilenbel_temp und nicht FileLog_zeilenbel_temp heißt?
Hi Chris46,
das Device heißt in der Tat FileLog_Zeilenbel_Temp. Ich dachte aber, dass ich den Namen der FileLog-Datei angeben muss.
Dieses heißt (und liegt unter): ./log/zeilenbel_temp.log
Habe es aber probeweise mal mit dem Devicenamen (Plotfile FileLog_Zeilenbel_Temp 4) ausprobiert. Hat leider auch nicht geklappt.
Aber danke für den Hinweis ;-)
Dann nimm zusätzlich mal noch die 4 weg, die Spalte wird scheinbar nur beim reading value beachtet bzw. benötigt. Und gib mal noch eine Zeit bei deinem Plot an:
{{ plot.period('wz_temperatur_plot','wz.istTemperatur.plot', 'raw', '6h') }}
Ok, erledigt.
Meldet sich nun als:
wz.istTemperatur.plot.raw.6h.0
Hierfür wurde folgendes eingestellt:
mode: plot
device: Zeilenbeleuchtung
reading: temperature
converter: Plotfile FileLog_Zeilenbel_Temp
cmd set:
Read X
Write X
Funktioniert leider immer noch nicht. Es wird kein Diagramm angezeigt.
Grüße
Einen Hinweis habe ich noch. Es scheint wohl nicht an der Konfig zu liegen. Die scheint nun zu passen mit dem FileLog Device.
Im Log kriege ich folgenden Fehler:
2018.12.13 13:13:53 1: ft_loopback: error doing $result = fronthem::Plotfile($param); Month '-1' out of range 0..11 at ./FHEM/99_fronthemUtils.pm line 38.
Eine Idee warum $mon wohl auf 0 ist? (Zeile 38 in 99_fronthemUtils.pm)
Hallo Zusammen,
ich habe ein Problem mit dem Plot von Datensätzen mit Unterbrechung:
Ich habe die Datenbank auf einen neuen Server transferiert (FHEM währenddessen gestoppt) und muss nun feststellen, dass nur noch die Datensätze geplottet werden, die nach dem erneuten starten von FHEM erzeugt wurden.
Kann mir jmd. sagen woran das liegt bzw. was hier schief läuft? Mein Plot sieht wie folgt aus:
{{plot.period('Plot.Period.Heizung.Temperaturen',['Zentral.Waermepumpe.Sensor.Vorlauftemperatur.pl','Zentral.Waermepumpe.Sensor.Ruecklauftemperatur.pl','Zentral.Waermepumpe.Sensor.Aussentemperatur.pl','Zentral.Waermepumpe.Sensor.WassertemperaturSpeicher.pl'],'raw','24h','now','','','',['Vorlauf','Rücklauf','Aussen','Warmwasser'],['#f00','#f442d9','#0a0','#41caf4'],['line','line','line','line'],['Zeit','Temperatur in °C'],'','','','','',['°C'])}}
Danke und viele Grüße
Sascha
Sicher, dass bei dem Umzug der Datenbank nichts schiefgegangen ist? Klingt mir eher nach einem grundsätzlichen Problem mit der Datenbank und nicht mit smartVISU.
Schau dir diesbezüglich mal DbRep an.
Ich habe nochmal genau die Datenbank durchgesehen. Es lag offensichtlich am übertragen der Datenbank. Der zweite Versuch mit DbRep hat dann geklappt, danke für den Hinweis.
Zitat von: DrBrain_1000 am 27 Januar 2019, 11:43:35
Ich habe nochmal genau die Datenbank durchgesehen. Es lag offensichtlich am übertragen der Datenbank. Der zweite Versuch mit DbRep hat dann geklappt, danke für den Hinweis.
Wann werden die Änderungen denn in den Master Branch eingecheckt? Sind die Änderungen noch in der Testphase? Ich überlege, ob ich noch warte, bis die Änderungen final sind.
PS: funktioniert eigentlich https://github.com/ToGe3688/db_plot_widget (https://github.com/ToGe3688/db_plot_widget)noch?
Zitat von: Kai-Alfonso am 05 Februar 2019, 11:53:11
PS: funktioniert eigentlich https://github.com/ToGe3688/db_plot_widget (https://github.com/ToGe3688/db_plot_widget)noch?
Mit smartVISU 2.9: Ja und Nein. Es werden noch Plots angezeigt aber man kann bspw. die Farben nicht mehr ändern.
Hallo zusammen,
ich habe einen Fehler in der Anzeige der Plots:
in Fhem sieht alles OK aus (siehe Zacken, jeden Tag bei 0 beginnend):
in smartvisu 2.9 sind die Zacken nicht da, erst dachte ich es würde am aufruf liegen aber alles OK.
Hier meine Definition in SV:
<div class="hcs-test">
{{ plot.period('', ['Gas_komuliert','Gas_Day'], 'avg', '1y', 'now', '', '', '', ['Gesamt','Tag'], ['#a00','#070'], '', ['Zeit','Gesamt kWh','Tag kWh'], 'advanced', [1,2], [0,1], ['#f00','#0a0']) }}
</div></div></div>
Kann mir jemand helfen?
Danke
Mit der Aggregation ,,avg" werden die Spitzen natürlich zusammengefasst. Probiere es mal mit ,,raw", allerdings denke ich, dass du mit einem Jahresplot schnell an die Grenzen der Datenmengen kommen wirst.
Hallo,
mit "raw" bekomme ich garnichts angezeigt, auch nicht wenn ich die Datenpunkte auf nur 3600 runter setze.
ich nutze SQL lite.
gruß
Nimm mal einen kürzeren Zeitraum. Die Begrenzung der Datenpunkte funktioniert nicht korrekt.
Hi,
auch wenn das Thema ein wenig verweist ist 8)
Ich würde gerne status.log in Verbindung mit SV 2.9 nutzen. Funktioniert auch soweit, nur habe ich eine Frage: Ist es möglich, das ich im Widget nur die Einträge sehen kann, deren Level im dummy laut svEvents auf error stehen? Warning/Info etc möchte ich nicht sehen.
Zitat von: fame1991 am 13 Dezember 2018, 13:19:09
Einen Hinweis habe ich noch. Es scheint wohl nicht an der Konfig zu liegen. Die scheint nun zu passen mit dem FileLog Device.
Im Log kriege ich folgenden Fehler:
2018.12.13 13:13:53 1: ft_loopback: error doing $result = fronthem::Plotfile($param); Month '-1' out of range 0..11 at ./FHEM/99_fronthemUtils.pm line 38.
Eine Idee warum $mon wohl auf 0 ist? (Zeile 38 in 99_fronthemUtils.pm)
**EDIT**
selbst behoben, in der 99_Utils.pm hat diese Zeile zu Beginn gefehlt:
use Time::Local;
ich bekomme einen ähnlichen Fehler:
error doing $result = fronthem::Plotfile($param); Undefined subroutine &main::timelocal called at ./FHEM/99_fronthemUtils.pm line 38.
Muss man irgendwo noch das Datumformat definieren?
LOG:
2019-10-21_21:26:36 KNX_0305000 setG1: 14.20 °C
FRONTHEM-ITEM
mode:plot
device:KNX_0305000
reading:setG1
converter:Plotfile FileLog_KNX_0305000
PLOT:
{{ plot.period('EG.Buero.Temperature.Plot',
['EG.Buero.Temperature.Plot'],
'raw',
'3d',
'0d',
0,
30,
100,
['Bad'],
['#0000FF'],
['line']) }}
Hallo zusammen,
ich habe ein Problem, ich habe meine Raspberry neu aufgesetzt.
Vorher:
Raspberry mit Fhem, SV2.9, Velux, KNX mit TUL alles läuft super (nur die Plots sind nicht OK)
Jetzt:
Raspberry mit Fhem läuft. SV2.9 ist wohl der Treiber nicht OK, ich kann nichts schalten (Schalter schaltet kurz und springt zurück, Licht blinkt kurz auf).
Ich habe alles soweit von der Datensicherung übernommen.
Kennt das Problem jemand?
Danke für eure Hilfe
@buchner51: nein, aber ich würde an Deiner Stelle erst einmal im FHEM schauen ob Du da die Lichter steuern kannst. Geht ja komfortabel über die TUL "KNX" devices. Sollte das nicht gehen, hast Du ein Problem mit knxd, bzw. FHEM, ansonsten mit SV.
Ich hätte da noch eine Frage an die Autoren:
Kann man über das FRONTHEM device eine Umrechnung hinbekommen?
Ich möchte einen KNX-Wert durch 1000 teilen und diesem im Plot in SV anzeigen, finde aber gerade weder die Möglichkeit wie man dies VOR dem schreiben bzw. NACH dem lesen aus dem Filelog hinbekommt.
Hi Huntercover,
ich habe oben erwähnt das FHEM ok ist.
Ich bin der Meinung das das ein Treiber Problem ist.
gruß
Hi buchner51,
ich hatte nach dem aufsetzen meiner Banane das Problem, das die PHP Version nicht richtig mit meinem Apache zusammen arbeitete. Ich hatte damals mit Armbian experimentiert und einige Probleme mit der falschen PHP Version gehabt.
Zum testen sollte auch der Cache in SmartVISU abgestellt sein. Da hatte ich auch schon umsonst Fehler gesucht.
Bei Problemen auch nicht vergessen, den Browser Cache zu löschen.
Wahnsinn, ich bekomme es einfach nicht hin.
Wenn ich eine Seite öffne dann schalten alle Lichter auf dieser Seite aus.
Aber einschalten geht nicht, sie flackern nur kurz auf und der Visu Schalter springt auf aus.uß und
Die Temperaturwerte werden aber angezeigt??
Die UZSU kann ich auch nicht bedienen, bzw wenn ich diese Aktiviere dann werden die Werte die in FHEM stehen alle gelöscht.
Wo ist mein Fehler nach dem wieder einspielen.
gruß und Danke
könnte ein Problem mit der Definition sein, ich hatte sowas ähnliches beim Dimmen.
Konkret:
- beschreibe mal wie Deine KNX Rückmeldungen aussehen. Ggf. meldet was zurück was widerrum Einfluss auf neue Telegramme seitens SmartVisu hat.
- hast Du Scripte laufen, die per FHEM KNX Telegramme versenden?
- Es gibt mit SmartVisu2.9 ne neue Funktion (delayed versenden) bzw. in der Konfiguration unter "Datenverbindung/Treiber" "Echtzeitdaten". Lese Dich da mal ein. btw. Hast Du die Option ein? Ich habe es aus gelassen.
Nutze den Busmonitor als Debugger. Wer schickt wann welche Signale, etc.
Solltest Du zuvor SmartVisu2.8 laufen haben, kannst Du das auch wieder herstellen, 2.8 und 2.9 funktionieren auch parallel in separaten Ordnern.
Hallo zusammen,
hat noch jemand das Problem, dass einem die Updates für folgende Pakete vorgeschlagen werden und danach die Plots in SV nicht mehr funktionieren?
fronthem
List of new / modified files since last update:
UPD FHEM/01_fronthem.pm
UPD FHEM/31_fronthemDevice.pm
UPD www/pgm2/fronthemEditor.js
Liebe Grüße, Marvin
Hallo zusammen,
Ich habe die Einstellungen wie in Post1 vorgenommen und die Dateien aus der zip hochgeladen.
device: HM_Zisternenpegel (Pegelstand wird mit state ausgelesen)
Logfilename: HM_Zisternenpegel-2020 (aus currentlogfile./log/HM_Zisternenpegel-2020.log)
Datensatz aus Logfile: 2020-02-04_11:22:29 HM_Zisternenpegel 86
Einstellungen ITEM:
mode: plot
device HM_Zisternenpegel
reading: state
converter: Plotfile FileLog_HM_Zisternenpegel-2020
Code im SV:
{{ plot.period( "id.PlotTest.1",["PlotTest.1"], avg, "7d", "now",0,100, 100,["Füllstand in %"], ["default"],["line"]) }}
Die Daten werden in dem Plot bei SV angezeigt.
Aber sobald ich die Seite in Smartvisu neulade, verschwinden meine Daten aus der Plot.
Weiß jemand von euch woran das liegen könnte?
Danke schonmal im Voraus für eure Unterstützung!
Gruß,
Sebastian
Hallo Zusammen,
wenn ich in Smartvisu die Plots aufrufe wird jedesmal mein FHEM log "vollespamt".
Hier mal ein Auszug. Verbos 0 von SynologyDbLog hat leider keine Abhilfe geschaffen.
Jemand ne Idee worans liegen könnte ?
2020.07.06 22:59:31 3: get SynologyDbLog - webchart 2020-07-06_10:59:31 2020-07-06_22:59:31 WT_Wohnzimmer_Weather timerange TIMESTAMP humidity : {"data":[{"TIMESTAMP":"2020-07-06 11:00:34","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:03:13","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:05:37","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:07:47","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:10:47","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:13:32","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:16:03","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:18:19","VALUE":"48"},{"TIMESTAMP":"2020-07-06 11:20:21","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:23:12","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:25:49","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:28:12","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:30:20","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:33:18","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:36:01","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:38:30","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:40:45","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:42:45","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:45:34","VALUE":"49"},{"TIMESTAMP":"2020-07-06 11:48:10","VALUE":"47"},{"TIMESTAMP":"2020-07-06 11:50:30","VALUE":"46"},{"TIMESTAMP":"2020-07-06 11:52:37","VALUE":"45"},{"TIMESTAMP":"2020-07-06 11:55:33","VALUE":"46"},{"TIMESTAMP":"2020-07-06 11:58:14","VALUE":"45"},{"TIMESTAMP":"2020-07-06 12:00:41","VALUE":"44"},{"TIMESTAMP":"2020-07-06 12:02:54","VALUE":"44"},{"TIMESTAMP":"2020-07-06 12:05:56","VALUE":"43"},{"TIMESTAMP":"2020-07-06 12:08:44","VALUE":"43"},{"TIMESTAMP":"2020-07-06 12:11:17","VALUE":"43"},{"TIMESTAMP":"2020-07-06 12:13:36","VALUE":"43"},{"TIMESTAMP":"2020-07-06 12:15:41","VALUE":"42"},{"TIMESTAMP":"2020-07-06 12:18:35","VALUE":"42"},{"TIMESTAMP":"2020-07-06 12:21:15","VALUE":"42"},{"TIMESTAMP":"2020-07-06 12:23:40","VALUE":"42"},{"TIMESTAMP":"2020-07-06 12:25:51","VALUE":"41"},{"TIMESTAMP":"2020-07-06 12:28:51","VALUE":"41
Grüße
Hallo!
Vorab erstmal mein Dank an raman für diese fronthem-smartvisu Adaption. Ich hab es relativ schnell hinbekommen, ein plot.period widget mit Daten aus einer logdb anzeigen zu lassen.
[Raspberry, aktuelles FHEM, smartvisu 2.92, mysql database auf einer synology]
Aber ich mache die gleiche Beobachtung wie Wiesel:
Zitat von: Wiesel am 06 Juli 2020, 23:15:13
wenn ich in Smartvisu die Plots aufrufe wird jedesmal mein FHEM log "vollespamt".
Daher auch meine Frage:
Jemand ne Idee worans liegen könnte ?
Und wie kann man es abstellen?
Beste Güße
-Franz
Nachtrag: Wenn man für das global device den Wert für verbose < 3 setzt, kommen die Datenbankabfragen nicht mehr ins zentrale Log-File. Wäre schön, wenn man das selektiver abstellen könnte.
Zitat von: Wiesel am 06 Juli 2020, 23:15:13
wenn ich in Smartvisu die Plots aufrufe wird jedesmal mein FHEM log "vollespamt".
Hier mal ein Auszug. Verbos 0 von SynologyDbLog hat leider keine Abhilfe geschaffen.
Zitat von: alkazaa am 28 Juli 2020, 13:55:49
Aber ich mache die gleiche Beobachtung wie Wiesel:
Daher auch meine Frage:
Jemand ne Idee worans liegen könnte ?
Und wie kann man es abstellen?
Konnte dieses Problem schon jemand lösen? Ich habe genau dasselbe.
Der String der ausgegeben wird, ist sicherlich der hier aus der Datei 99_fronthemUtils.pm in der Funktion Plot():
my $string = main::fhem('get ' . $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
Ich finde aber nichts wo das geloggt wird. Setzen von verbose 2 für fronthem bzw. fronthemDevice hat nichts gebracht...
Grüße,
ich hatte Probleme mit der Darstellungen von boolean-Werten, da fhem anstatt "1" und "0" z.B. "On/Off", "true/false", "enable/disable" ablegt.
Ich habe mir folgendermaßen beholfen: Ich der Datei 99_fronthemUtils.pm in der Funktion Plot() im Bereich "raw":
if ($mode eq "raw") { # [TIMESTAMP,VALUE]
push(@{$data[0]->{plotdata}[$i]}, main::fronthem_TimeStamp($row->{TIMESTAMP}));
push(@{$data[0]->{plotdata}[$i]}, sprintf("%#.4f", $row->{VALUE}) * 1);
}
Die Zeile:
push(@{$data[0]->{plotdata}[$i]}, sprintf("%#.4f", $row->{VALUE}) * 1);
wie folgt abgeändert
push(@{$data[0]->{plotdata}[$i]}, sprintf("%#.4f", $row->{VALUE} =~ m/^(true|on|enable|down|closed)$/ ? '1' : $row->{VALUE}) * 1);
Die Idee ist, jeden Wert der eine "1" werden soll, in eine "1" zu verwandeln: true|on|enable|down|closed
Alle restlichen Ausdrücke bleiben unverändert. Werte bleiben Werte, alles andere wird ja automatisch "0".
In der smartVISU sieht es dann so aus:
plot.period('pAussenG2', ['Wind.plot', 'Regen.plot'], ['avg', 'raw'], '72h', 'now', [0, 'Off'], [5, 'On'], '', ['Wind [m/s]', 'Regen [-]'], ['#aa0', '#00a'], ['area', 'stair'], '', '', [1,2], [0,1], ['#aa0', '#00a'], ['linear', 'boolean']) }}
War nur eine Idee, wenn es bereits anders ging, würde ich das gern wissen ;)
Moin,
gibt es schon was neues zu dem Problem mit der vollen Logfile ?
get logdb - webchart 2020-11-25_08:41:41 2020-12-02_08:41:41 Temperatur timerange TIMESTAMP state : {"data":[{"TIMESTAMP":"2020-11-25 08:52:39","VALUE":"1.40"},{"TIMESTAMP":"2020-11-25 09:12:39","VALUE":"1.30"}
Grüße
Jessy
Leider nicht dass ich wüßte.
Ich hatte mir kurzzeitig auch beholfen, das global verbose auf 2 zu setzen, aber das kann man auf keinen Fall so lassen, dann bekommt man nämlich gar nichts mehr im Logfile mit.
Ich habe auch schon einmal versucht, rauszufinden woran das wirklich liegt, aber ich kapiers nicht. Wie ich oben geschrieben haben, habe ich zwar die Stelle gefunden wo der String der im Logfile landet herkommt, aber ich verstehe nicht wie der dann ins Logfile kommt.
Benutzt denn keiner der smartvisu-Nutzer die Plots? Das Problem muss doch jeder haben der die Plots nutzt- und dann ist es zumindest bei mir so, dass spätestens ab der Monatsmitte das Logfile so groß ist, dass es etliche Sekunden Ladezeit hat. Von der nicht mehr vorhanden Übersichtlichkeit mal ganz zu schweigen...
Probiert mal euer DBlog device auf verbose 2 zu stellen. Ich glaube das hat bei mir geholfen.
Zitat von: Chris46 am 03 Dezember 2020, 08:57:38
Probiert mal euer DBlog device auf verbose 2 zu stellen. Ich glaube das hat bei mir geholfen.
bringt leider nichts...
Zitat von: Joker am 03 Dezember 2020, 08:50:00.... spätestens ab der Monatsmitte das Logfile so groß ist, dass es etliche Sekunden Ladezeit hat. Von der nicht mehr vorhanden Übersichtlichkeit mal ganz zu schweigen...
Abhilfe wäre eine tägliches logfile. Behebt aber natürlich das Problem im grunde nicht :(
Zitat von: Jessyfoosy am 03 Dezember 2020, 09:29:51
bringt leider nichts...
Dito... DbLog hatte ich testweise auch schon auf verbose 2 gestellt, bringt auch bei mir nichts.
ZitatAbhilfe wäre eine tägliches logfile. Behebt aber natürlich das Problem im grunde nicht :(
Nee, eine Lösung wäre das wirklich nicht...
Ich habe auch nicht gefunden, wo wirklich geloggt wird. (Meine Vermutung: "tief innen" im fhem-code wird bei jedem Aufruf der perl-Funktion fhem() deren output geloggt, sofern das globale verbose>=3 ist).
Zitat von: Joker am 25 Oktober 2020, 20:07:24
Konnte dieses Problem schon jemand lösen? Ich habe genau dasselbe.
Der String der ausgegeben wird, ist sicherlich der hier aus der Datei 99_fronthemUtils.pm in der Funktion Plot():
my $string = main::fhem('get ' . $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
Ich finde aber nichts wo das geloggt wird. Setzen von verbose 2 für fronthem bzw. fronthemDevice hat nichts gebracht...
Diese Überlegung hat mich dann aber zu dem folgenden workaround geführt:
Ich habe in 99_fronthemUtils.pm die kritische Zeile
my $string = main::fhem('get ' . $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
ersetzt durch
my $oldverbose = main::AttrVal("global","verbose","3");
main::fhem("attr global verbose 2");
my $string = main::fhem('get ' . $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
main::fhem("attr global verbose " . $oldverbose);
Scheint bisher ohne Nebenwirkungen zu funktionieren. Aber ich teste weiter...Hat leider doch Nebenwirkungen: die zweimalige Änderung des verbose-attributs ist eine Strukturänderung, die in der FHEM-Oberfläche das rote Fragezeichen neben dem 'Save config' zur Folge hat.
Das ist aber für mich eher akzeptabel als eine volllaufende log-Datei.
-Franz
Hallo!
Das Problem mit der vollgeschriebenen Logdatei ist gelöst: Ich habe die Frage in diesem Forumsbeitrag (https://forum.fhem.de/index.php/topic,116823.0.html) eingestellt und von DS_Starter (https://forum.fhem.de/index.php?action=profile;u=16933) kam die Lösung:
In 99_fronthemUtils.pm ist die Zeile my $string = main::fhem('get ' . $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
zu ersetzen durch my $string = main::CommandGet(undef, $args[0] . ' - webchart ' . $from . ' ' . $to . ' ' . $device . ' ' . $duration . ' TIMESTAMP ' . $reading);
dann tut es ohne 'Nebenwirkungen'.
-Franz
Funktioniert wie ne Eins 8)
Besten Dank, jetzt kann ich mein Logfile auch wieder normal benutzen :)
Hallo,
wir kommen bei einem Thema im folgenden Thread nicht weiter: https://forum.fhem.de/index.php/topic,120711.15.html
Fehler ist bei meinem Update auf 3.0.1 aufgetaucht. In der GAD Liste erscheinen die Plot Variablen nicht und Plot lässt sich nicht auswählen bzw. springt das Feld immer wieder auf Item zurück. Das Verhalten mal in einem GIF im Anhang dargestellt.
Ich hatte das gleiche Problem bereits zu Beginn meiner Installation von smartvisu (2.7). Hier hatte ich auf folgende Dateien irgendwie keine Schreibrechte (mehr).
01_fronthem
31_fronthemDevice
99_fronthemUtils
Damals lag das an meiner schlecht nachgezogenen Nutzerstruktur mit verminderter Rechtevergabe, aber dieses mal kann ich den Fehler ausschließen. Nachdem ich meinem User die Schreibrechte gegeben hatte, ging alles 1 Jahr lang gut und meine Plots liefen wie ne 1 :)
Ich bin mir eigentlich sehr sicher, dass es an fronthem liegt und ich bei der Installation irgendetwas übersehen habe. Hättet ihr vielleicht ein paar Tipps für mich, wo ich neben den drei aufgeführten Dateien und dem Editor noch gucken kann? Würde vielleicht jemand seine drei fronthem Dateien einmal mit mir teilen?
Update: Ich habe ganz sicher ein Problem in der 99_fronthemUtils.pm
2021.05.12 16:01:53 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/31_fronthemDevice.pm line 263.
2021.05.12 16:01:53 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/31_fronthemDevice.pm line 264.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthemUtils_Initialize redefined at ./FHEM/99_fronthemUtils.pm line 13.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_decodejson redefined at ./FHEM/99_fronthemUtils.pm line 17.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_encodejson redefined at ./FHEM/99_fronthemUtils.pm line 21.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_ActualTimeStamp redefined at ./FHEM/99_fronthemUtils.pm line 27.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_TimeStamp redefined at ./FHEM/99_fronthemUtils.pm line 35.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_Time redefined at ./FHEM/99_fronthemUtils.pm line 44.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine fronthem_Duration redefined at ./FHEM/99_fronthemUtils.pm line 84.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine UZSU_execute redefined at ./FHEM/99_fronthemUtils.pm line 150.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine UZSU_getRrules redefined at ./FHEM/99_fronthemUtils.pm line 192.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine UZSU_getCommand redefined at ./FHEM/99_fronthemUtils.pm line 204.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine Log_SetList redefined at ./FHEM/99_fronthemUtils.pm line 278.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine Log_GetList redefined at ./FHEM/99_fronthemUtils.pm line 342.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine UZSU redefined at ./FHEM/99_fronthemUtils.pm line 399.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine AnAus redefined at ./FHEM/99_fronthemUtils.pm line 444.
2021.05.12 16:04:19 1: PERL WARNING: Subroutine NumInvert redefined at ./FHEM/99_fronthemUtils.pm line 489.
2021.05.12 16:04:20 1: PERL WARNING: Subroutine Log redefined at ./FHEM/99_fronthemUtils.pm line 542.
2021.05.12 16:04:20 1: PERL WARNING: Subroutine Plot redefined at ./FHEM/99_fronthemUtils.pm line 594.
2021.05.12 16:04:20 1: PERL WARNING: Subroutine Plotfile redefined at ./FHEM/99_fronthemUtils.pm line 709.
2021.05.12 16:11:06 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4905.
Erneutes Update, die PERL WARNUNGEN sind seitdem auch nicht mehr aufgetaucht. Hatte aus Seite 1 von raman die 99_fronthemUtils.pm genommen. Jedoch kann ich immer noch keine plots auswählen :(
Vielen Dank schonmal!
Halllole
so ist es bei mir auch. Keine Chance. Ich weiss auch nicht was ich noch machen soll..
Grüssle
Steven
Kann jemand erklären, was fronthem macht, um die Plots zu identifizieren? Dann könnte ich prüfen, ob ich an smartVISU irgendetwas geändert habe, was von Relevanz ist.
Größte Änderung bei den Plots in v3.0.1 war das Löschen der veralteten Widgets plot.minmaxavg und plot.multiaxis.
In v3.0.1 hatten wir für die Plots immer noch die seit v2.9 installierte Version von Highcharts (erst in v3.1 upgedated) und im FHEM-Treiber hatte ich in v3.0.1 eine (noch leere) Funktion "stopseries" eingebaut. Hier könnte man mal den alten Treiber aus v2.9 probieren. Dazu muss man aber die Zeile in der .lib/base/base.js auskommentieren, in der stopseries() aufgerufen wird.
Gruß
Wolfram
Ich denke nicht das es an einer deiner Änderungen liegt Wolfram, ich vermute eher das die fronthem Dateien bei einem FHEM Update überschrieben wurden. Da hilft es unter global das attr exclude_from_update mit 01_fronthem.pm 31_fronthemDevice.pm fronthemEditor.js zu setzen und die Dateien nochmal zu ersetzen. Ich habe ein tagesaktuelles FHEM mit smartVISU develop pull von gestern Abend am laufen ind meine Plots gehen nach wie vor.
Zitat von: ReviloEgros am 18 Mai 2021, 09:14:08
Ich denke nicht das es an einer deiner Änderungen liegt Wolfram, ich vermute eher das die fronthem Dateien bei einem FHEM Update überschrieben wurden. Da hilft es unter global das attr exclude_from_update mit 01_fronthem.pm 31_fronthemDevice.pm fronthemEditor.js zu setzen und die Dateien nochmal zu ersetzen. Ich habe ein tagesaktuelles FHEM mit smartVISU develop pull von gestern Abend am laufen ind meine Plots gehen nach wie vor.
Grüße,
das ist nicht nötig. Das Update überschreibt die Dateien nicht.
Meiner Meinung nach installiert man mit
update force https://raw.githubusercontent.com/herrmannj/fronthem/master/controls_fronthem.txt
"einmalig" fronthem. Es ist dann nicht Teil des Update-Vorgangs.
Aber es bringt mich auf eine andere Idee:
Wiederhole doch mal
update force https://raw.githubusercontent.com/herrmannj/fronthem/master/controls_fronthem.txt
So als sauberer Aufsatzpunkt. Dann ersetzt Du die 4 Dateien.
Also ich habe force durchgeführt und kann keine Besserung erkennen. Ein auf SmartVisu 3.1 eingebundener Plot taucht im fronthem einfach nicht auf. :-(
Zitat von: GammaTwin am 19 Mai 2021, 07:53:03
Grüße,
das ist nicht nötig. Das Update überschreibt die Dateien nicht.
Meiner Meinung nach installiert man mit update force https://raw.githubusercontent.com/herrmannj/fronthem/master/controls_fronthem.txt
"einmalig" fronthem. Es ist dann nicht Teil des Update-Vorgangs.
Aber es bringt mich auf eine andere Idee:
Wiederhole doch mal update force https://raw.githubusercontent.com/herrmannj/fronthem/master/controls_fronthem.txt
So als sauberer Aufsatzpunkt. Dann ersetzt Du die 4 Dateien.
Also mit den Dateien aus dem 1. Post in diesem Thread werden die GADs angelegt.
Mal sehen ob ich sie auch bespielen kann.
Zitat von: Dlay am 20 Mai 2021, 13:43:47
Also ich habe force durchgeführt und kann keine Besserung erkennen. Ein auf SmartVisu 3.1 eingebundener Plot taucht im fronthem einfach nicht auf. :-(
@Dlay hat das zugehörige Issue auf GitHub heute mit folgendem Kommentar geschlossen:
The problem can be solved by using the fronthem files in the first post here --> https://forum.fhem.de/index.php/topic,86584.0.html. (also dem ersten Post in diesem Thread hier)
Afterwards block any updates of fronthem in fhem with
attr global exclude_from_update 01_fronthem.pm 31_fronthemDevice.pm fronthemEditor.js 99_fronthemUtils.pm
Gruß
Wolfram
Moin,
vielleicht kann mir mal jemanden helfen, ggf verstehe ich die Einstellungen aber auch nicht ;-)
Also, ich möchte status.log nutzen in meiner Visu. Erstmal nur, um die Stati meiner Fenster + Rollladen zu erfassen. Dazu habe ich testweise ein Rollladen und ein Fensterdevice mit dem Attribut svReadings versehen. Danach werden automatisch Dummy Devices angelegt je Reading.
Beispiel
ZitatsvLog_ASC_ShuttersLastDrive
svLog_Activity
svLog_pct
svLog_state
Das status.log Device in SV soll kumuliert alle Events erfassen, die ich per svReadins definiert habe.
Allerdings scheint es nicht so gedacht zu sein, weil ja im Item Editor nur eine SV Item einem FHEM Device zuordnen kann.
Wie machte ich dass dann oder habe ich einen Denkfehler?
Moin Kai-Alfonso,
smartVISU kann mit dem Widget status.log Nachrichten darstellen, die das Backend in einem einzigen item im JSON-Format bereit stellt. Wenn Du die Stati mehrerer Devices in einem Log gemeinsam anzeigen willst, musst Du diese vorher in einem item sammeln.
Disclaimer: bis hierhin ist die Antwort gesichert. Den Rest reime ich mir zusammen, ohne wirklich Ahnung von Fronthem zu haben.
Zum Sammeln von Log-Einträgen brauchst Du eine readingsGroup, wie sie im ersten Post dieses Threads beschrieben ist. Zitat:
,, Die Readings werden pro "Readings-Gruppe" in einem Dummy-Device gesammelt. Dieses wird
automatisch angelegt. Das so erzeugte Dummy-Device muss dann im Editor mit dem
status.log-Item verknüpft werden. (converter ist Log)"
Gruß
Wolfram
Hallo Wolfram,
der fronthem Converter "Log" scheint das irgendwie anders zu machen und rudimentär funktioniert das auch (siehe Anhang)
Aber, so müsste ich pro Reading ein GAD haben und Readings Changes erzeugen in status.plot keinen neuen Eintrag, sondern der Alter wird upgedatet mit dem neuen Status.
attr Rolllade_Arbeitszimmer svReadins pct ASC_ShuttersLastDrive
Historie löschen
Internals:
FUUID 62fe13ab-f33f-ce3b-a12c-1f2d3d5157673bf6
NAME svLog_ASC_ShuttersLastDrive
NR 63607
STATE send
TYPE dummy
eventCount 9
READINGS:
2022-08-18 15:58:55 Rolllade_Arbeitszimmer ASC_ShuttersLastDrive manual
2022-08-18 15:58:55 state send
Attributes:
svEvents info:alive,ok,online,[O|o]pened,[C|c]onnected,[C|c]losed,[G|g]eschlossen warning:low,[O|o]pen,[O|o]ffen,offline,overload,unreachable error:dead,[D|d]isconnected,unknown,IOerr
PS: ich kann irgendwie keine Bilder im Beitrag inline posten, deswegen leider als Anhang
Grüße,
es schon so, dass jeder Readingname einen Dummy anlegt. Du kannst also nur Readings mit gleichen Namen an ein status.log in die smartVISU übergeben.
Da macht das notify:
define Log notify .* { Log_SetList($NAME,$EVENT) }
Die Prozedur "Log_SetList" befindet sich in der "99_fronthemUtils.pm". Und dort wird der Dummy wie folgt angelegt:
fhem ("define" . " svLog_" . $list . " dummy");
Wobei $list aus dem userattr "Readins" genommen wird:
split(" ", AttrVal($device, "svReadins", ""));
Man müsste also diese Prozedur anders schreiben. Aber wie gibt man Info mit, was zusammen gehört und was nicht?
Hi - Grüß Dich.
Danke für Deine Antwort. Ich habe mal mehrere Device mit gleichen Reading getestet und die kommen jetzt auch in Status.log an. Leider aber sind die Einträge nicht chronologisch oder sortierbar. Außerdem wäre es nett, wenn alte Stati nicht gelöscht werden, dann hätte man so eine Art Eventlog.
Das mit den kumulierten Readings - da müsste man entweder die Prozedur umschreiben oder sich mit doif und setreading ggf behelfen.
Grüße,
ich die 3 betroffen Prozeduren in der "99_fronthemUtils.pm" angepasst und als:
Log2 ergänzt
sub Log2(@)
{
my ($param) = @_;
my $cmd = $param->{cmd};
my $gad = $param->{gad};
my $gadval = $param->{gadval};
my $device = $param->{device};
my $reading = $param->{reading};
my $event = $param->{event};
my @args = @{$param->{args}};
my $cache = $param->{cache};
if ($param->{cmd} eq 'get')
{
$param->{cmd} = 'send';
}
if ($param->{cmd} eq 'log')
{
$param->{cmd} = 'send';
}
if ($param->{cmd} eq 'send')
{
use Encode qw(decode encode);
my $list = main::Log_GetList2($device);
$list = encode("utf8", '[' . $list . ']');
$param->{gad} = $gad;
$param->{gadval} = main::fronthem_decodejson($list);
$param->{gads} = [];
return undef;
}
elsif ($param->{cmd} eq 'rcv')
{
$param->{result} = $gadval;
$param->{results} = [];
return undef;
}
elsif ($param->{cmd} eq '?')
{
return 'usage: log';
}
return undef;
}
Log_GetList2
sub
Log_GetList2($)
{
my ($name) = @_;
my $list = "";
my $level = "info"; # info = green, error = red, warning = yellow (levels for smartvisu status.log)
my @info = split(" ", AttrVal($name, "svRegex", ""));
my @state = split(" ", AttrVal($name, "svEvents", ""));
my $i = 1;
foreach my $key (sort { $b cmp $a } keys %{$defs{$name}{READINGS}})
{
my $reading = $defs{$name}{READINGS}{$key}{VAL};
foreach (@state) {
if ($_ =~ qr/(.*):(.+)/p) {
my $newLevel = $1;
my $states = $2;
$states =~ s/,/|/g;
if($reading =~ /.*:?\s?($states)/)
{
$level = $newLevel;
foreach (@info) {
if ($_ =~ qr/(.*):(.+)/p) {
my $a = $1;
my $b = $2;
$reading =~ s/$a/$b/g;
}
}
}
}
}
my $timestring = $defs{$name}{READINGS}{$key}{TIME};
if ($key =~ qr/(.*)_(.+)/p) {
$key = $1;
} else {
#sollte nur bei state auftreten
}
my $device = AttrVal( $key , "alias", $key );
$timestring =~ s/\s/T/g; # Compatibility for older Browser "2018-03-10T18:34:53"
$list .= '{"message":"'. $device . " - " . $reading . '","time":"' . $timestring . '","level":"' . $level . '"}' . ($i == keys(%{$defs{$name}{READINGS}}) ? "" : ",") if ($key ne "state");
$i++;
}
return $list;
}
Log_SetList2
sub
Log_SetList2($$)
{
my ($device, $event) = @_;
my $reading = "";
my $message = "";
if ($event =~ qr/(.*?):\s+(.*)/p) {
$reading = $1;
$message = $2;
} else {
$reading = "state";
$message = $event;
}
my @info = split(" ", AttrVal($device, "svReadins", ""));
my $list = "";
my $newReading = "";
my $collector = "";
foreach (@info) {
$list = "";
$newReading = "";
$collector = "";
if ($_ =~ qr/(.*?):(.+)/p) {
$list = $1;
$newReading = $2;
if ($newReading =~ qr/(.*?):(.+)/p) {
$newReading = $list . " " . $1;
$list = $2;
$collector = $list
}
} else {
$list = $_;
}
if ($list eq $reading or $list eq $collector)
{
fhem ("set" . " svLog_" . $list . " block");
if ($newReading ne "") {
$reading = $newReading;
}
if(!$defs{"svLog_" . $list}) {
fhem ("define" . " svLog_" . $list . " dummy");
fhem("attr" . " svLog_" . $list . " svEvents info:alive,ok,online,[O|o]pened,[C|c]onnected,[C|c]losed,[G|g]eschlossen warning:low,[O|o]pen,[O|o]ffen,offline,overload,unreachable error:dead,[D|d]isconnected,unknown,IOerr");
}
my @state = split(" ", AttrVal("svLog_" . $list, "svEvents", ""));
foreach (@state) {
if ($_ =~ qr/(.*):(.+)/p) {
my $z = $2;
$z =~ s/,/|/g;
if($reading eq "state") {
fhem ("setreading" . " svLog_" . $list . " " . $device . "_" . $reading . " " . $message);
} elsif ($message =~ /.*:?\s?($z)/) {
fhem ("setreading" . " svLog_" . $list . " " . $device . "_" . $reading . " " . $reading . " " . $1);
} else {
fhem ("setreading" . " svLog_" . $list . " " . $device . "_" . $reading . " " . $message);
}
}
}
fhem ("set" . " svLog_" . $list . " send");
}
}
}
Du kannst alle 3 Prozeduren an die "99_fronthemUtils.pm" amhängen.
Dann musst Du den Conveter auf Log2 stellen.
Und das Wichtigste: Das Attr "svReadins" in den Devices wie folgt anpassen:
attr <device> svReadins <Variable1>:<Variable2>:<Veriabel3>
Variabel1: bleibt wie es ist, das anzuzeigende Reading
Variabel2: bleibt wie es ist, ein Zusatz, kann leer sein
Variable3: !Neu! ein Begriff, der den Dummy bildet unter dem die Readings gesammelt werden sollen. Optional, aber ohne bleibt alles beim alten :)
Probiere es mal aus.
Nachtrag: Das notify ändern
defmod Log notify .* { Log_SetList2($NAME,$EVENT) }
Hi,
erstmal vielen Dank das Du dich dem Thema angenommen hast.
Ich hab mal die 3 Sachen in die 99_fronthemUtils eingetragen.
Attribut ist wie folgt bei allen Rollladen und Fenster gesetzt
svReadins pct:level:xyFenster
<- Rollladen
svReadins state:Status:xyFenster
<- Fenster
Wenn ich das richtig verstehe, wird jetzt ein Dummy xyFenster gebilder mit entsprechenden Readings, welche ich mit Log2 im Converter abfragen kann?
Es wird aber kein Dummy erstellt - evtl noch ein Fehler in der 99_fronthemUtils?
Genau so.
Ich hatte noch etwas vergessen. ::)
das notify muss geändert werden
defmod Log notify .* { Log_SetList2($NAME,$EVENT) }
Der Dummy wird dann "svLog_xyFenster" heißen.
Zitat von: GammaTwin am 19 August 2022, 16:21:59
Genau so.
Ich hatte noch etwas vergessen. ::)
das notify muss geändert werden
defmod Log notify .* { Log_SetList2($NAME,$EVENT) }
Der Dummy wird dann "svLog_xyFenster" heißen.
Alles klar - danke ;D
Das Dummy wird aber immer noch nicht angelegt, stattdessen steht im Log immer
2022.08.19 20:22:46.269 1: ERROR evaluating my $EVENT= $evalSpecials->{'%EVENT'};my $EVTPART0= $evalSpecials->{'%EVTPART0'};my $EVTPART1= $evalSpecials->{'%EVTPART1'};my $NAME= $evalSpecials->{'%NAME'};my $SELF= $evalSpecials->{'%SELF'};my $TYPE= $evalSpecials->{'%TYPE'};{ Log_SetList2($NAME,$EVENT) }: Undefined subroutine &main::Log_SetList2 called at (eval 1721637) line 1.
Beim speichern über den Esitor bekomme ich auch folgende Fehlermeldung/Warnung
ZitatERROR:
Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 887. Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 889. Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 912. Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 921. Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 971.
Kannst Du 3 Prozeduren mal immer direkt hinter die Original setzen.
Also, z.B. Log_SetList2 hinter Log_SetList
Ich bekomme die selbe Fehlermeldung, wenn ich die Prozeduren ans Ende der Datei setze
Global symbol "%defs" requires explicit package name (did you forget to declare "my %defs"?) at ./FHEM/99_fronthemUtils.pm line 1021.
Passt, jetzt geht es.
Wieso bekomme ich beim Fenster_Arbeitszimmer statt des states tilted den state Status 2 angezeigt?
Hier ein List des Device
Historie löschen
Internals:
DEF A9B8C7
FUUID 5f48c24e-f33f-ce3b-d877-e070fc9a57a06f61
FVERSION 10_CUL_HM.pm:0.259770/2022-04-18
HMUART_EG_MSGCNT 8
HMUART_EG_RAWMSG 0500004504A241A9B8C70B98D001026417
HMUART_EG_RSSI -69
HMUART_EG_TIME 2022-08-19 21:47:42
HMUART_OG_MSGCNT 8
HMUART_OG_RAWMSG 0511002C04A241A9B8C70B98D001026417
HMUART_OG_RSSI -44
HMUART_OG_TIME 2022-08-19 21:47:42
IODev HMUART_OG
LASTInputDev HMUART_OG
MSGCNT 16
NAME Fenster_Arbeitszimmer
NR 236
NTFY_ORDER 48-Fenster_Arbeitszimmer
STATE tilted
TYPE CUL_HM
chanNo 01
disableNotifyFn 1
eventCount 11
lastMsg No:04 - t:41 s:A9B8C7 d:0B98D0 01026417
protCmdPend 3 CMDs_pending
protLastRcv 2022-08-19 21:47:42
protRcv 8 last_at:2022-08-19 21:47:42
protResnd 1 last_at:2022-08-19 21:43:37
protSnd 6 last_at:2022-08-19 21:43:32
protState CMDs_pending
rssi_at_HMUART_EG cnt:8 min:-75 max:-68 avg:-71.49 lst:-69
rssi_at_HMUART_OG cnt:8 min:-53 max:-38 avg:-42.5 lst:-44
READINGS:
2022-08-19 13:22:52 Activity alive
2021-06-22 15:41:12 D-firmware 1.0
2021-06-22 15:41:12 D-serialNr papaa9b8c7
2022-08-19 21:43:32 IODev HMUART_OG
2022-08-17 13:46:00 PairedTo 0x0B98D0
2022-08-19 21:47:42 batVoltage 2.3
2022-08-19 21:47:42 battery ok
2022-08-19 21:43:32 cfgState updating
2022-08-19 21:43:37 commState CMDs_pending
2022-08-19 21:47:42 contact tilted (to VCCU)
2022-08-19 19:51:14 powerOn 2022-08-19 19:51:14
2022-08-19 19:51:14 recentStateType info
2022-08-19 19:51:14 sabotageError off
2022-08-19 21:47:42 state tilted
2022-08-19 21:47:42 trigger_cnt 2
RegL_00.:
VAL
cmdStack:
++A0010B98D0A9B8C700040000000000
##A0010B98D0A9B8C701040000000001
##A0010B98D0A9B8C70103
helper:
HM_CMDNR 4
PONtest 0
cSnd ,010B98D0A9B8C700040000000000
getCfgList all
getCfgListNo ,4
lastMsgTm 1660938462.10249
mId F209
peerFriend peerAct,peerVirt
peerIDsState complete
peerOpt 4:custom
regLst 0,1,4p
rxType 20
supp_Pair_Rep 0
ack:
cmds:
TmplKey :no:1660907882.24125
TmplTs 1660907882.24125
cmdKey 1:1:0::Fenster_Arbeitszimmer:F209:01:
cmdLst:
assignHmKey noArg
clear [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan 0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
tplSet_0 -tplChan-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
list [({normal}|full)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 0
det 0
raw 1
tpl 0
io:
flgs 2
newChn +A9B8C7,02,00,00
nextSend 1660938462.39892
rxt 2
vccu VCCU
p:
A9B8C7
00
00
00
prefIO:
mRssi:
mNo 04
io:
HMUART_EG:
-69
-69
HMUART_OG:
-36
-36
peerIDsH:
00000000 broadcast
prt:
bErr 0
sProc 2
sleeping 0
wuReSent 2
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rpt:
IO HMUART_EG
flg A
ts 1660938462.10249
ack:
HASH(0x611f758)
0480020B98D0A9B8C700
rssi:
at_HMUART_EG:
avg -71.5
cnt 8
lst -69
max -68
min -75
at_HMUART_OG:
avg -42.5
cnt 8
lst -44
max -38
min -53
shadowReg:
tmpl:
Attributes:
IOgrp VCCU
actCycle 028:00
actStatus alive
alias Fenster Arbeitszimmer
autoReadReg 4_reqStatus
devStateIcon closed:fts_window_1w tilted:fts_window_1w_tilt open:fts_window_1w_open
expert rawReg
firmware 1.0
genericDeviceType ContactSensor
group Fenster Drehgriff Sensor
homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED
icon hm-sec-win
model HB-Sec-RHS-3
peerIDs 00000000
room Fenster,HomeMatic,Homekit
serialNr papaa9b8c7
svReadins state:Status:xyFenster
und eine Frage vielleicht noch an @wvhn
Hallo Wolfram,
kann man status.log irgendwie sortiere nach Eingang des Events? Und kann man alte Events des selben GAD/Device nicht in der Liste lassen und einen neuen Status oben einfügen? Dann wäre es eine tolle EventLog Basis für die Homeautomation.
Moin Kai-Alfonso,
Eine Sortierfunktion kann man sicher im fhem-Treiber von smartVISU einbauen. Lieber wäre es mir, wenn die Einträge schon sortiert geliefert würden. Ein Eingriff in den Treiber bedeutet immer das Risiko, für andere Anwender Funktionen zu ändern oder sogar abzuschießen. Ich mache mir dazu aber mal Gedanken.
Die Historie muss IMHO im Backend gesammelt werden, da dieses immer aktiv ist. Die Visu läuft ja auf dem Client und der kann eben auch mal im Standby oder ausgeschaltet sein. Nach heutigem Konzept von smartVISU wäre es denkbar, den Treiber so umzubauen, dass er die Einträge sammelt, solange die Seite mit dem Log-Widget angezeigt wird. Sobald man auf eine andere Seite wechselt, ist das Log-item jedoch nicht mehr abonniert. Das zu ändern, wäre ein größerer Umbau.
Gruß
Wolfram
Moin Wolfram,
das habe ich mir schon gedacht - Aufbereitung im Backend und Anzeige in der Visu wäre das beste. Eigentlich hat man mit Filelog (welches im Treiber ja schon für PlotFiles existiert) ja schon das fhemseitige richtige Werkzeug an der Hand. Dort kann ich Events chronologisch von definierten Files reinschreiben lassen. Man müsste dann status.log nur umschreiben, das er auch (einstellbar) x Zeilen einen Logfiles parst und darstelle kann. Dann wären die Daten im Backend und man müsste smartvisuseitig kein datahandling machen
bin ich der einzige, der status.log nutzt oder ist das noch nie jemanden aufgefallen ;-)