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é
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
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.
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 ...
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...
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
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é
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
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.
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
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é
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
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é
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
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é
Hallo Heiko,
ich nochmal. Ich habe vorhin den Interval des SMA_Energymeters auf 5 gesetzt. Dann orientiert er sich wirklich auch mit 5 Sekunden im loggen.
Wenn du bei dir die Ausleserate auf 1 Sekunde stellst und dir dann das Log anschaust, ist das da bei deinem jetzigen Code auch so ?
Viele Grüße und vielen Dank
André
Hallo Andre,
wenn ich interval auf "1" setze, schreibt der Energymeter auch jede Sekunde in die Datenbank (ich verwende DbLog).
Das sieht dann so aus:
2016-07-05_17-54-11__SMA_Energymeter__Bezug_WirkP_Kosten_Diff 0.0000
2016-07-05_17-54-11__SMA_Energymeter__Bezug_WirkP_Zaehler_Diff 0
2016-07-05_17-54-11__SMA_Energymeter__Einspeisung_WirkP_Verguet_Diff 0.0001
2016-07-05_17-54-11__SMA_Energymeter__Einspeisung_WirkP_Zaehler_Diff 0.0004
2016-07-05_17-54-11__SMA_Energymeter__Saldo_Wirkleistung 1304.0
2016-07-05_17-54-12__SMA_Energymeter__Bezug_WirkP_Kosten_Diff 0.0000
2016-07-05_17-54-12__SMA_Energymeter__Bezug_WirkP_Zaehler_Diff 0
2016-07-05_17-54-12__SMA_Energymeter__Einspeisung_WirkP_Verguet_Diff 0.0000
2016-07-05_17-54-12__SMA_Energymeter__Einspeisung_WirkP_Zaehler_Diff 0.0003
2016-07-05_17-54-12__SMA_Energymeter__Saldo_Wirkleistung 1286.7
2016-07-05_17-54-13__SMA_Energymeter__Bezug_WirkP_Kosten_Diff 0.0000
2016-07-05_17-54-13__SMA_Energymeter__Bezug_WirkP_Zaehler_Diff 0
2016-07-05_17-54-13__SMA_Energymeter__Einspeisung_WirkP_Verguet_Diff 0.0001
2016-07-05_17-54-13__SMA_Energymeter__Einspeisung_WirkP_Zaehler_Diff 0.0004
2016-07-05_17-54-13__SMA_Energymeter__Saldo_Wirkleistung 1265.5
2016-07-05_17-54-14__SMA_Energymeter__Bezug_WirkP_Kosten_Diff 0.0000
Lass dich durch die Darstellung nicht irritieren, ist ein Datenbankauszug.
Demgegenüber wird das "state"-Reading nur alle 120 Sekunden geloggt wegen der Angabe event-min-interval = state:120
2016-07-05_17-53-05__SMA_Energymeter__state 1252.8
2016-07-05_17-55-06__SMA_Energymeter__state 1380.2
2016-07-05_17-57-06__SMA_Energymeter__state 602.4
2016-07-05_17-59-07__SMA_Energymeter__state 469.6
Anbei noch ein Screenshot in dem du sehr gut die Angaben in den Attributen siehst.
Ich habe es auch mit anderen Intervallen probiert .... klappt immer so wie beschrieben.
Versuche doch bei dir mal die Einstellungen exakt von mir zu übernehmen mit einem Interval von zunächst 30 Sekunden. Wenn alles zufiedenstellend läuft taste dich runter an deinen "Grenzwert".
Wenn dein fhem mit derart kleinen Intervallen von 1 Sek nicht zurecht kommt liegt es sicherlich an der Systemperformance/ Leistungsfähigkeit insgesamt.
Jede Sekunde zu loggen ist wirklich sehr ambitioniert und der Sinn erschließt sich mir nicht wirklich.
Grüße
Heiko
Hallo Heiko,
das mit dem state bei 120 Sekunden hatte ich vorhin noch probiert.
Das loggt er dann bei mir auch alle 120 Sekunden mit. Das passt.
Das state würde mir beim loggen auch vollkommen ausreichen, bei 120 Sekunden.
Umso schlanker läuft das System, ganz klar. Nur die Live-Daten hätte ich halt gerne noch öfter.
Ich habe das "attr SMA_Energymeter event-min-interval state:120" erst einmal herausgenommen:
# 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-update-reading SMA_Energymeter1900235883_Bezug_Wirkleistung,SMA_Energymeter1900235883_Einspeisung_Wirkleistung
attr SMA_Energymeter interval 1
attr SMA_Energymeter room Wechselrichterraum
define SVG_FileLog_SMA_Energymeter_1 SVG FileLog_SMA_Energymeter:SVG_FileLog_SMA_Energymeter_1:CURRENT
attr SVG_FileLog_SMA_Energymeter_1 plotsize 400,180
attr SVG_FileLog_SMA_Energymeter_1 room Wechselrichterraum
define FileLog_SMA_Energymeter FileLog ./log/SMA_Energymeter-%d.log SMA_Energymeter
Ich weiß derzeit nicht, warum er so reagiert. Der Name wird, wie du schon eingangs erwähntest, beim RasPi 3 kürzer gewählt.
Ich kann mir das bald anders nicht vorstellen. Denn bei dem state:120 funktioniert das ja, nur bei dem SME_Energymeter nicht.
Und bei dir geht es ja. Mit kürzerer Bezeichnung. Das lässt mich dahingehend echt noch grübeln.
Ab Freitag bin ich wieder an Board. Sind auf einem Kurztripp, die nächsten 2 Tage.
Am Donnerstag soll ja der RasPi 3 kommen und da bin ich mal gespannt, wie das läuft
Vielen herzlichen Dank und bis Freitag..
André
Hallo zusammen,
da will ich mich nochmal kurz melden. Ich werde in den nächsten Tagen FHEM auf dem neuen RasPi 3 installieren und denke, dass da etwas mehr Performance bei herum kommt. Ich logge derzeit im 3 Sekunden Intervall. Das scheint ganz gut zu klappen.
Das Energy Meter läuft also bis dato sehr gut in FHEM. Nun bin ich auch am überlegen, ob ich unserem Sunny Boy 4000TL auch eine Speedwire schnittstelle spendieren soll. Das sollte mit dem passendem Modul ja eigentlich auch gut gehen.
Wie sind da eure Erfahrungen ?
Wenn ich in den nächsten Tagen FHEM auf dem RPi 3 installiere und das Energy Meter neu definieren muss, so bekommt das definitv einen kürzeren Namen.
Denn komischerweise läuft es bei Heiko tadellos, bei mir jedoch nicht. Da haben wir das wohl auf die Länge der Gerätezuordung geschoben.
Da bin ich gespannt, ob das besser funktioniert.
Viele Grüße
André