FileLog vom SMAEM mit angepassten Intervallen loggen

Begonnen von Stargazer, 04 Juli 2016, 13:47:53

Vorheriges Thema - Nächstes Thema

Stargazer

Hallo zusammen,

der Heiko hatte mir mit dem SMAEM Modul im Nachbarthread sehr unter die Arme gegriffen und "den Karren aus den Dreck gezogen".
Da will ich mich nochmals herzlich für bedanken. Ich hatte mit ihm heute morgen bereits kurz in dem Thread über die Auswertung mit FileLog und SVG Plots geschrieben.

Ich hatte das gestern Abend auch noch gemacht und es lief ganz gut. Doch habe ich den Fehler gemacht und die Logs in 2 Sekunden Taktung anlegen lassen.
Wie dem RasPi dann heute Morgen ging, könnt ihr euch sicherlich denken  :o.
Nachdem ich die das LogFile und den SVG-Plot "deleted" hatte, wollte ich nochmals neu anfangen mit dem Loggen. Aber diesesmal mit deutlich längerem Intervall.
Doch nun meine Frage:

Wie definiere ich so einen Log mit, meinetwegen 300 Sekunden Intervall, wo ich dann noch einen SVG-Plot von machen kann.
Da stehe ich voll auf dem Schlauch, habe Google schon den ganzen Vormittag belästigt. Doch irgendwie ist mir das noch nicht so ganz klar.
Ich hatte mal mit "at *00:05:00" experimentiert, doch da konnte ich keinen Plot erzeugen.
Wie es so ist, wird es bei mir auch so sein...95% der Probleme sitzen vor dem Bildschirm... :-\.

Viele Grüße und vielen Dank an euch..!

André

DS_Starter

Hi Andre,
Mir ist auch noch etwas dazu eingefallen. Schau mal in der Commandref nach dem Attribut event-min-interval.
Wahrscheinlich ist es die Möglichkeit die du suchst. Dieses Attr könntest du im SMAEM setzen um nicht nicht vor Ablauf von 300 Sek neue Events in das Logfile schreiben zu lassen. Alternativ könntest du das Intervall im SMAEM auf 300 Sek setzen. Aber das war nicht deine Absicht wenn ich dich richtig verstanden habe.

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

Stargazer

#2
Grüß dich, Heiko !

Ich hatte das heute Morgen einmal mit 120s versucht. Weiß aber nicht, ob er das für die LogFile übernimmt. Ob ich da noch einen Befehl setzen muss.
Hier mal ein Ausschnitt aus der fhem.cfg:

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define SMA_Energymeter SMAEM
attr SMA_Energymeter event-min-interval state:120
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum

Also wenn ich jetzt einen Log mitschreiben lassen würde, sollte er sich an den 120s orientieren, wie du schreibst.
Ich mache das jetzt einfach nochmal und gucke was passiert.

Viele Grüße und besten Dank

André


PS.: Habe gerade das Filelog so gestartet. Ich habe jetzt, wenn ich mir die Log-Datei direkt angucke, alle 6 Sekunden einen Eintrag.

DS_Starter

#3
Du musst das Attribut ,"Intervall" im SMAEM auf 120 Sek setzen. Dann sollte das klappen.

Edit:  Kommando zurück,  ich glaube du müßtest event-min-interval mehr spezifizieren . Schau mal in die Commandref.

Edit2: setze mal zusätzlich event-on-change-reading nur auf die Events die du loggen willst. Und spezifiziere das event-min-interval für die Readings. Aber ich müsste auch in der Commandref nachschauen. Geht grad schlecht ...
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Stargazer

#4
Hallo zusammen,

meine fhem.cfg sieht derzeit so aus. Hatte mich da nochmal etwas umgeschaut:

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define SMA_Energymeter SMAEM
attr SMA_Energymeter event-min-interval state:120
attr SMA_Energymeter event-on-change-reading state
attr SMA_Energymeter event-on-update-reading .*
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum


Ich hatte dann vorhin das Log erstellt und mir die Datei im Editor angesehen. Da wurde dann im 2 Sekundentakt geloggt.
Könnte der Code so passen ? Denn hatte ich aus dem Wiki.

Könnte es sein, dass ich den FileLog_SMA_Energymeter mit den 3 events definieren müsste ?
Es handelt sich ja im speziellen um den FileLog, nicht um die Hardware.

Irgendwie kann ich auch die fhem.cfg im Editor nicht bearbeiten... .

Viele Grüße und vielen Dank

André

PS.: Das FileLog lässt dahingehend keine Attribute zu. Oder habe ich da noch etwas vergessen...

DS_Starter

#5
Hi Andre,

sorry für das Durcheinander vorhin, hatte keine Zeit  ;)

Jetzt habe ich es bei mir ausprobiert. Funktioniert prima. Setze die Readings von SMAEM die du generell loggen willst im Attribut "event-on-update-reading". Setze gleichzeitig die Readings für die die Zeit 120 Sek gelten soll im Attribut "event-min-interval". Das kann eine durch Komma getrennte Kombi der Form "<Reading>:<Periode>" sein.

Also zum Beispiel:

event-on-update-reading:   state,Saldo_Wirkleistung,Bezug_WirkP_Zaehler_Diff,Einspeisung_WirkP_Zaehler_Diff,Einspeisung_WirkP_Verguet_Diff
event-min-interval :           state:120
interval :                           61


In dem Beispiel werden alle in event-on-update-reading definierten Readings geloggt da sie Events erzeugen. Das passiert alle 61 sek (interval), außer für "state" das erst nach Ablauf von 120 sek seit dem letzten logging wieder geschrieben wird.
Mit even-on-change-reading hat das Konstrukt bei mir nicht funktioniert.

Die fhem.cfg im Editor zu bearbeiten ist keine gute Idee solange man sich nicht 100% klar darüber ist was man da tut. Brauchst du auch nicht, mache alles im FHEMWEB in der Detailansicht von SMAEM.
Am Filelog brauchst du nichts ändern. Es nimmt die Events entgegen die kommen und loggt sie.

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

Stargazer

Hallo Heiko,

mal wieder 1000 Dank an dich !

Ich habe es vorhin eingegeben, komme aber nicht so recht weiter. Es sieht derzeit so aus.

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define SMA_Energymeter SMAEM
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum


Die Altlasten mit den Attributen sind weg.
Meinst du folgenden Befehl so für die Konsole ?

attr SMAEM event-on-update-reading:   SMA_EnergymeterXXXXXXXXXX_Bezug_Wirkleistung,SMA_EnergymeterXXXXXXXXXX_Einspeisung_Wirkleistung

Wenn ich den eingebe, gibt mir die Konsole folgendes aus: Please define SMAEM first
Das SMAEM ist doch schon als SMA_Energymeter definiert.

Irgendwie komisch. Aber ich bin wahrscheinlich nur zu blöd... :-[

Viele Grüße

André

DS_Starter

#7
Nein bist du nicht, ich setze nur zu viel als bekannt voraus.

Ich habe "SMAEM" als Synonym für das Gerät verwendet -> Bei dir heißt es natürlich "SMA_Energymeter".

Die Attribute setzt du einfach (nicht in der Befehlszeile oben) in der Attribute-Sektion von SMA_Energymeter. Wählst das entsprechende Attribut in der Dropdownliste aus und gibst die Werte wie gewünscht ein. Nimm mein Beispiel als Vorlage und achte auf Kommata.

In Anhang ist ein Bild von der Attribute-Sektion die ich meine.

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

Stargazer

#8
Hallo Heiko,

ich habe mich vorhin nochmals in Ruhe dabei gesetzt.
Jetzt hat er die Attribute übernommen.
Der Interval bei dir ist ja die Ausleserate von FHEM vom Energy Meter, oder ?

Ich habe jetzt mal ein LOG angelegt und nachgesehen. Er loggt derzeit mit den folgenden Einstellungen in der cfg nur die Einspeiseleistung:

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define SMA_Energymeter SMAEM
attr SMA_Energymeter event-min-interval :120
attr SMA_Energymeter event-on-update-reading : SMA_Energymeter1900235883_Bezug_Wirkleistung, SMA_Energymeter1900235883_Einspeisung_Wirkleistung
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum
define FileLog_SMA_Energymeter FileLog ./log/SMA_Energymeter-%Y.log SMA_Energymeter


Ich habe schon etwas probiert, von wegen den Leerfeldern bei dem Doppelpunkt bei dem reading oder auch zwischen den Feldern, Bezug und Einspeisung..das Komma.. .
Jetzt muss man nur noch die Fehler finden. Die Readings bleiben derzeit auch stehen...

Viele Grüße und besten Dank für alles..

André

PS.: Habs am laufen. Es darf kein Doppelpunkt geben. Jetzt gucke ich mir noch den Log an.

DS_Starter

Hi Andre,

du hast in der fhem.cfg:   

attr SMA_Energymeter event-min-interval :120


gesetzt,   richtig wäre hier z.B.: 


attr SMA_Energymeter event-min-interval SMA_Energymeter1900235883_Einspeisung_Wirkleistung:120,SMA_Energymeter1900235883_Bezug_Wirkleistung:120


D.h.  event-min-interval  <Readingname>:<Periode>. Dann steht bei dir hinter event-on-update-reading ein ":".  Das gehört dort nicht hin.
Hier ist zum Vergleich mein Abschnitt in der fhem.cfg:


######################################################################
##  neue SMA-Meter Einbindung mit 77_SMAEM-Modul
######################################################################
define SMA_Energymeter SMAEM
attr SMA_Energymeter disableSernoInReading 1
attr SMA_Energymeter event-min-interval state:120
attr SMA_Energymeter event-on-update-reading state,Saldo_Wirkleistung,Bezug_WirkP_Zaehler_Diff,Einspeisung_WirkP_Zaehler_Diff,Einspeisung_WirkP_Verguet_Diff,Bezug_WirkP_Kosten_Diff
attr SMA_Energymeter feedinPrice 0.1269
attr SMA_Energymeter group SMA Energy Meter
attr SMA_Energymeter icon measure_power_meter
attr SMA_Energymeter interval 61
attr SMA_Energymeter powerCost 0.2122
attr SMA_Energymeter room Energie
attr SMA_Energymeter stateFormat state Watt, ToGrid (+) , FromGrid (-)


Aber bitte versuche soweit es geht auf die direkte Editierung in der cfg zu verzichten solange du noch nicht sicher bist. Man macht eh alles am Sichersten über das FHEMWEB.
Setze ruhig auch das Attribut "disableSernoInReading " = 1. Dann werden die Readings auf ein erträgliches Maß gekürzt.

Du hast recht, interval ist bei mir die Ausleserate vom Energymeter, d.h. eigentlich kommen jede Sekunde Werte per Broadcast rein, nur wird das Modul dadurch angewiesen nur alle 61 Sekunden die Readings zu setzen und die Events auszulösen.

Vielleicht wäre es günstig wenn du für den Anfang auch z.B. 20 Sekunden einstellst um deinem FHEM ein wenig "Luft" zu lassen. Wenn alles funktioniert kannst du mit diesem Wert ja spielen.

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

Stargazer

Hallo Heiko,

danke für deine Einblicke in den Code.
Bei mir sieht es jetzt so aus:

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
define SMA_Energymeter SMAEM
attr SMA_Energymeter event-min-interval SMA_Energymeter1900235883_Einspeisung_Wirkleistung 120,SMA_Energymeter1900235883_Bezug_Wirkleistung 120
attr SMA_Energymeter event-on-update-reading SMA_Energymeter1900235883_Bezug_Wirkleistung,SMA_Energymeter1900235883_Einspeisung_Wirkleistung
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum
define FileLog_SMA_Energymeter FileLog ./log/SMA_Energymeter-%Y.log SMA_Energymeter


Setze ich vor den 120 einen Doppelpunkt, bleibt die Geschichte stehen und reagiert nur noch auf das manuelle aktualisieren der Webpage.
Mit dieser Konstellation loggt er die beiden Werte alle 2 Sekunden. Man kann so aber trotzdem schon recht gut leben.
Komisch nur, das er sich garnicht an den 120 Sekunden Vorgabe stört.

Viele Grüße und vielen Dank

André

DS_Starter

#11
Hi Andre,

naja laut Commandref gehört bei event-min-interval zwischen das Reading und die Periode ein ":". Eigenartig dass fhem bei dir dann rumzickt, das kann ich mir momentan nicht erklären. Bei mir funktioniert es.
Vielleicht haben diese ungewöhnlich langen Readingnamen einen negativen Effekt. Setz mal bitte das Attribut "disableSernoInReading" = 1.
Mal schauen wie es dann aussieht.

EDIT: Nicht vergessen die ":" wieder zu setzen bei event-min-interval  ;)

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

Stargazer

Hi Heiko,

das mit Attribut "disableSernoInReading" = 1 hab ich gemacht.
Es bleibt nur das "state" stehen und es läuft wieder nix.
Setze ich den Wert wieder auf 0, so läuft alles wieder mit dem angegeben Interval.

Alles sehr seltsam.... . Das kann man sich manchmal einfach nicht erklären.
Ich probiere das mit dem Plot trotzdem mal. Ich schreibe dir morgen mal, wie das klappt.
Aber jetzt wo nur die beiden Werte geloggt werden, läuft der RasPi wesentlich entspannter.

VG und vielen Dank

André

DS_Starter

#13
Ja ist schon spät heute.
Mach ruhig auch mal ein paar Screenshots. Das ist anschaulicher.

EDIT: achso ehe ich es vergesse. Wird "disableSernoInReading" geändert 0/1 werden alle Readings zunächst gelöscht und erst in der nächsten Empfangsperiode wieder neu angelegt. Es kann also einen Moment dauern. Und da du nur alle 120 Sekunden Events erzeugst wären das eben 2 Minuten.
Vielleicht ist es für den Anfang günstig wenn du mein vorhin reinkopiertes Beispiel 1:1 nachbaust. Dann sollte alles funktionieren und eine Grundlage für weitere Versuche.

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

Stargazer

Good Morning, Forum !

So...ich habe den Log eingach mal als Plot laufen lassen. Die LogFile ist im Moment 5,4MB groß.
Und das Problem ist, dass der Raspi nun an seine Grenzen der CPU kommt.
Der Pi3 Modell B kommt am Donnerstag sodass ich am Freitag dieses System auf das leistungsfähigere Board übertragen kann.
Die beiden Log-Daten werden immer noch im 2 Sekunden Rhythmus geloggt.
Und das Aufarbeiten kostet eben Rechenpower, die der Alt-RasPi nicht hat.

Wenn ich jetzt das Bild aufrufe, erhalte ich weiterhin die aktuellen Werte, doch der Graph wird nicht mehr geladen.
Schade eigentlich...aber naja..da muss ich mal weiter gucken.. .

Viele Grüße

André