NEWS
Hilfe bei der Erstellung eines Log Files für die VIS
-
Hallo zusammen,
ich hoffe es kann mir jemand bei der Realisierung meines Anliegens behilflich sein.
Für diverse Fenster und Türen habe ich Datenpunkte erstellt in denen geschrieben wird wann eine Tür oder ein Fenster geöffnet bzw. geschlossen wurde. Sowohl fürs öffnen als auch fürs schließen gibt es separate Datenpunkt (siehe erste Grafik).
Jetzt würde ich gerne diese Einträge, dessen Werte nach jedem Öffnen und Schließen durch den aktuellen Wert überschrieben werden, loggen und in Form eines Logfiles im VIS darstellen lassen.
Bspw. die letzten 10 Einträge für die Haustür.Ein bisschen was habe ich im Forum und auch im Internet gefunden aber das hat mir irgendwie nicht viel weitergeholfen.
Die von mir erstellten Datenpunkte sehen folgendermaßen aus:
Meine Idee war, das ganze über ein Script zu realisieren, welches die x Anzahl generierter Einträge in ein neues Objekt schreibt und dieses Objekt wiederum im VIS genutzt werden kann.
Alternativ dachte ich an den History Adapter; dieser macht ja genau das, was ich gerne haben wollen würde.. nur wie bekommen ich diese Werte, welche sich ja auf mehrere Tage verteilen, ins VIS dargestellt?
Wenn ich mich nicht täusche, erstellt der History Adapter für jeden Tag einen separaten Ordner, was es in dem Fall recht kompliziert macht, das Ganze umzusetzen.. zumindest mit meinen rudimentären skills :-).Ich bedanke mich jetzt schon für eure Unterstütung
ltsalvatore -
-
@sigi234 sagte in Hilfe bei der Erstellung eines Log Files für die VIS:
@ltsalvatore
Logparser Adapterhttps://github.com/iobroker-community-adapters/ioBroker.logparser
ODER.
danke, ich werde mir beide adapter mal in ruhe anschauen.
wobei ich persönlich ein script bevorzugt hätte um nicht noch einen weiteren adapter installieren zu müssen, welches nur für diese eine aufgabe gedacht wäre. Immerhin frisst so ein zusätzlicher adapter ja einiges an ressourcen. -
hallo nochmal..
erst mal danke für den tip mit den adapter.
-
den adapter eventlist find ich interessant und sehr überschaubar. jedoch schreibt dieser alle eingerichteten zustände in einem objekt, was es für mein anliegen unbrauchbar macht. eine option, für jeden zustand ein objekt / eine liste zu erstellen habe ich nicht gefunden.
-
was den adapter logparser angeht, soweit ich sehen kann, scheint dieser in der lage zu sein, für jeden zustand ein objekt anzulegen, aber offen gestanden blick ich selbst mit anleitung nicht durch wie dieser adapter funktionieren soll.
trage ich unter whiltelist ein, welchen zustand ich loggen möchte? wenn ja, wie denn? -
wie bereits im vorherigen post erwähnt, hätte ich das ganze lieber mit einem script gelöst anstelle eines apdaters um auch weitere ressourcen zu sparen. mittlerweile habe ich schon fast 30 adapter installiert und musste erst vorgestern den iobroker von 5 auf 6GB RAM aufrüsten.
deshalb würde es mich freuen, falls doch jemand ein paar anregungen hat, wie man das ganze über ein script realisieren kann.
danke und einen schönen abend noch
ltsalvatore -
-
anyone please
-
@ltsalvatore
Du hast nicht geschrieben wie die Darstellung in Vis aussehen soll.
In einem Log werden die Ereignisse in der Reihenfolge ihres Auftretens protokolliert. Ansatz ohne die zusätzlichen Datenpunkte aus dem ersten Beitrag:const ids = Array.prototype.slice.apply($('*(functions=fenster)')); const idJSON = "0_userdata.0.Fenster.JSON"; var arr = []; if(getState(idJSON).val) arr = JSON.parse(getState(idJSON).val); on(ids, function(dp) { arr.unshift({Name: dp.common.name, Zustand: dp.state.val ? 'offen' : 'geschlossen', seit: formatDate(dp.state.lc, 'DD.MM. hh:mm')}); if(arr.length > 10) arr.pop(); setState(idJSON, JSON.stringify(arr), true); });
Erzeugt wird eine JSON-Table mit dem jüngsten Ereignis zuerst (oben).
-
@paul53 sagte in Hilfe bei der Erstellung eines Log Files für die VIS:
@ltsalvatore
Du hast nicht geschrieben wie die Darstellung in Vis aussehen soll.
In einem Log werden die Ereignisse in der Reihenfolge ihres Auftretens protokolliert. Ansatz ohne die zusätzlichen Datenpunkte aus dem ersten Beitrag:const ids = Array.prototype.slice.apply($('*(functions=fenster)')); const idJSON = "0_userdata.0.Fenster.JSON"; var arr = []; if(getState(idJSON).val) arr = JSON.parse(getState(idJSON).val); on(ids, function(dp) { arr.unshift({Name: dp.common.name, Zustand: dp.state.val ? 'offen' : 'geschlossen', seit: formatDate(dp.state.lc, 'DD.MM. hh:mm')}); if(arr.length > 10) arr.pop(); setState(idJSON, JSON.stringify(arr), true); });
Erzeugt wird eine JSON-Table mit dem jüngsten Ereignis zuerst (oben).
Danke für dein Feedback.
Im VIS soll das Ganze chronologisch von oben nach unten oder von mir aus von unten nach oben dargestellt werden. Wie es bspw. auch beim ical der Fall ist (s.u.).
Und in dieser Auflistung der letzten 10 Zustände soll der Wert von zwei Objekten angezeigt werden. In meinem Fall die beiden Objekte window_closed_since_BDZ und window_open_since_BDZ. aber auch nur wenn der Wert nicht gleich 0 ist, weil der Wert gleich 0 mir in der Auflistung nichts bringt.
Sowas Ähnliches gibt es ja auch bei der mihome app für die Sensoren, aber leider liest der Adapter diese Tabelle nicht aus: