FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Leinad am 25 Oktober 2014, 17:43:48

Titel: Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Leinad am 25 Oktober 2014, 17:43:48
Ich möchte mir gerne ein LogFile anlegen, in das ich von Zeit zu Zeit den aktuellen Zählerstand meines Stromzählers eintrage.

Ich stelle mir das so vor, dass in FHEM ein Feld angezeigt wird, in das ich einfach eine Zahl eintrage... danach auf "Set" drücke... und die Zahl wird dann mit Datum in ein LogFile geschrieben.

Das ist doch bestimmt ohne großen Aufwand möglich?
Bin leider ein Dummy... und für alle Infos dankbar!
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: igami am 25 Oktober 2014, 19:29:30
Hi Leinad,

versuch es mal mit einem Dummy dem du als setList ein Textfeld zweist in den du dann den Zählerstand einträgst. Dann noch ein Log zu dem Dummy und fertig


define d_powermeter dummy
attr d_powermeter alias Stromzähler
attr d_powermeter setList kWh:textField
attr d_powermeter stateFormat {''}
attr d_powermeter webCmd kWh

createlog d_powermeter


Grüße
Igami
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Leinad am 25 Oktober 2014, 20:04:49
Genau so habe ich mir das vorgestellt.

Danke!

Aber wenn ich den Wert in das Textfeld schreibe, wird er nicht in das Log übernommen. Wenn ich erst den "Stromzähler" aufrufe und dann über SET, dann geht es.
Ne Idee woran es liegen könnte?
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Leinad am 26 Oktober 2014, 16:28:30
Wenn ich nach Eingabe an irgendeiner Stelle vom Bildschirm clicke, dann geht es auch... nur nicht wenn ich mit Enter bestätige.

Warum ist das so? Kann ich das ändern?
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: igami am 26 Oktober 2014, 17:03:42
Hi Leinad,

da weiß ich leider nicht warum das so ist.
Aber es freut mich, dass es ansonsten deinen Vorstellungen entspricht. Du kannst dann ja ein gelöst an den Thread schreiben.

Grüße
Igami
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Elektrolurch am 26 Oktober 2014, 17:39:35
Habe ich so gelöst:

define Strom dummy
..

group Gas- und Stromverbrauch
room Energie
setList Art:Ablesung,Abrechnung Datum:textField Verbrauch:textField
webCmd Art:Datum:Verbrauch:speichern

Ein notify:

define GasStrom_not notify (Gas|Strom):.* {GasStrom_not($NAME,$EVENT);}

und für die Anzeige eine readingsGroup:

define Verbrauch_rg readingsGroup <Gas-verbrauch> Gas:<letzte-Ablesung>,Letztes-Datum,Letzter-Verbrauch,<Monat>,Verbrauch-Monat Gas:<Abrechnung>,Abrechnungsdatum,Abrechnungsverbrauch,Abs-Verbrauch Gas:<vorraus.&nbsp;Jahr>,Verbrauch-Jahr <Strom-verbrauch> Strom:<letzte-Ablesung>,Letztes-Datum,Letzter-Verbrauch,<Monat>,Verbrauch-Monat Strom:<Abrechnung>,Abrechnungsdatum,Abrechnungsverbrauch,Abs-Verbrauch Strom:<vorraus.&nbsp;Jahr>,Verbrauch-Jahr


Mit den Attributen:
alias Verbrauchsdaten
group Gas- und Stromverbrauch
mapping {'Gas.Letzter-Verbrauch' => 'letzter', 'Gas.Verbrauch-Monat' => 'je Monat', 'Gas.Abrechnungsverbrauch' => 'seit Abrechnung', 'Gas.Abs-Verbrauch' => 'gesamt', 'Gas.Verbrauch-Jahr' => 'geschätzt'}
nolinks 1
nonames 1
nostate 1
notime 1
room Energie
valueFormat {'Gas.Letzter-Verbrauch' => '%d cbm', 'Gas.Verbrauch-Monat' => '%d cbm', 'Gas.Abrechnungsverbrauch' => '%d cbm', 'Gas.Abs-Verbrauch' => '%d cbm', 'Gas.Verbrauch-Jahr' => '%d cbm', 'Strom.Letzter-Verbrauch' => '%d kWh', 'Strom.Verbrauch-Monat' => '%d kWh', 'Strom.Abrechnungsverbrauch' => '%d kWh', 'Strom.Abs-Verbrauch' => '%d kWh', 'Strom.Verbrauch-Jahr' => '%d kWh'}

und den Code im Anhang.

Gruß

Elektrolurch
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Freddy am 11 November 2014, 21:11:43
Hallo ich finde den letzten Eintrag Super.

define GasStrom_not notify (Gas|Strom):.* {GasStrom_not($NAME,$EVENT);}

er erkennt das } nicht als Befehl; hab dann das } im Editor hinzugefüht.

Und in der Zeile:

define GasStrom_not notify (Gas|Strom):.* {GasStrom_not($NAME,$EVENT);}

Abs-Verbrauch Gas:<vorraus.&nbsp;Jahr>,Verbrauch-Jahr <Strom-verbrauch> St

hat er einProblem mit <vorraus.&nbsp;Jahr>,

Sonst sieht gut aus.

Kannst du mir noch sagen ob der Code ein Logfile speichert.

Wenn nein wo müsste ich es hinzufügen?
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Elektrolurch am 02 Dezember 2014, 14:33:15
Hi,

ja, in ./log/Strom.txt und ./log/Gas.txt.
Im Code mal nach "open" suchen...

Elektrolurch
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: reTOric am 18 Januar 2015, 17:38:52
Hallo ich hab lange nach einer möglichkeit Gesucht meinen Gas/Stromverbrauch zu loggen und ich denke mir könnte diese das hier helfen. hab auch soweit alles am laufen. Danke für die ausführliche Erklärung oben. Aber leider kann ich keine Daten eingeben.
Wenn ich Daten in die Felder Datum oder Verbrauch eingebe, wird sofort alles mit "nicht gespeichert" überschrieben. Wenn ich ins Logfile schaue steht dort dann
"3: GasStrom_not return value: Undefined subroutine &main::DiffDatum called at ./FHEM/99_myUtilsEnergie.pm line 53"
In der Line 53 steht "if (($lastdatum ne '') && (DiffDatum($lastdatum,$datum) => 0))"

Ich hoffe Ihr könnt mir helfen.
Liebe Grüße
Henrik
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: CoolTux am 02 Juli 2015, 15:56:49
Ich habe das selbe Problem mit den textField. Anscheind gibt es Probleme wenn man einen anderen webcmd nimmt als state. Kann hier einer helfen?
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Leinad am 03 Juli 2015, 19:47:40
dito, wollte es auch mal testen... Jemand ne Idee wo der Fehler liegt?
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Segler am 03 Januar 2016, 19:08:55
Hinweis an diejenigen, die das Beispiel von Elektrolurch nachrüsten möchten:

Zusätzlich zu den Anmerkungen von Freddy, müssen in dem textField zusätzlich die readingList gesetzt werden, also:

<attr Strom readingList Art Datum Verbrauch>

und für Gas genauso.

Dies hängt mit der Weiterentwicklung von FHEM zusammen.

In dem 99_myUtilsEnergie.pm fehlt tatsächlich die Subroutine für DiffDatum. Die hat Elektrolurch vermutlich in einer anderen Bibliothek seiner Installation. Vielleicht kann er ja den Code für die Sub "DiffDatum" mal hier ablegen, bzw. seine angehängte 99_myUtilsEnergie.pm Datei anpassen.

Gruß Segler


Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: Elektrolurch am 04 Januar 2016, 18:07:06
Ok. Die eine Routine ruft noch andere auf. Ich habe da alles was mit Zeit- und Datumsberechnungen bei mir verwendet wird, in ein Modul gesammelt. Ich hänge mal das Werk aus meiner Anfängerzeit an. :-)

Was ich oben vergessen hatte zu erwähnen, wenn die readings noch keine Wedrte beinhalten, werden sie ja per Definition in einer readingsGroup nicht angezeigt.
Da hilft entweder mit setreading was in die readings schreiben oder seit Neustem kann man in die Definition in der readingsGroup vor das reading ein "!" setzen, dann wird auch das leere Feld angezeigt.

Ich hänge noch Mal die 99_myUtilsEnergie.pm an, da ich da a bisserl geändert hatte.

Elektrolurch
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: whistler81 am 18 April 2017, 13:02:02
Hallo!

möchte jemand den kompletten Code zur Verfügung stellen? Irgendwie bekomme ich das mit den div. Codeschnippsel nicht hin....meine Textbox macht was sie will :)

Danke undLG
Clemens
Titel: Antw:Wie Logfile, in das nur manuell Werte eingetragen werden
Beitrag von: DarkT am 24 Januar 2018, 14:04:40
Nachdem hier lange nicht passiert ist und die Frage aufkam, ob das mal einer zusammen fassen kann.
Ich habe das heute mal durchprobiert:



define Strom dummy
attr Strom group Verräuche
attr Strom readingList Art Datum Verbrauch
attr Strom room Energie
attr Strom setList Art:Ablesung,Abrechnung Datum:textField Verbrauch:textField
attr Strom webCmd Art:Datum:Verbrauch:speichern
define GasStrom_not notify (Gas|Strom):.* {GasStrom_not($NAME,$EVENT);;}
attr GasStrom_not room Energie

define Gas dummy
attr Gas group Verräuche
attr Gas readingList Art Datum Verbrauch
attr Gas room Energie
attr Gas setList Art:Ablesung,Abrechnung Datum:textField Verbrauch:textField
attr Gas webCmd Art:Datum:Verbrauch:speichern

define Verbrauch_rg readingsGroup <Gas-verbrauch> Gas:<letzte-Ablesung>,Letztes-Datum,Letzter-Verbrauch,<Monat>,Verbrauch-Monat Gas:<Abrechnung>,Abrechnungsdatum,Abrechnungsverbrauch,Abs-Verbrauch Gas:<vorraus.Jahr>,Verbrauch-Jahr <Strom-verbrauch> Strom:<letzte-Ablesung>,Letztes-Datum,Letzter-Verbrauch,<Monat>,Verbrauch-Monat Strom:<Abrechnung>,Abrechnungsdatum,Abrechnungsverbrauch,Abs-Verbrauch Strom:<vorraus.Jahr>,Verbrauch-Jahr
attr Verbrauch_rg alias Verbrauchsdaten
attr Verbrauch_rg group Verräuche
attr Verbrauch_rg mapping {'Gas.Letzter-Verbrauch' => 'letzter', 'Gas.Verbrauch-Monat' => 'je Monat', 'Gas.Abrechnungsverbrauch' => 'seit Abrechnung', 'Gas.Abs-Verbrauch' => 'gesamt', 'Gas.Verbrauch-Jahr' => 'geschätzt'}
attr Verbrauch_rg nolinks 1
attr Verbrauch_rg nonames 1
attr Verbrauch_rg nostate 1
attr Verbrauch_rg notime 1
attr Verbrauch_rg room Energie
attr Verbrauch_rg valueFormat {'Gas.Letzter-Verbrauch' => '%d cbm', 'Gas.Verbrauch-Monat' => '%d cbm', 'Gas.Abrechnungsverbrauch' => '%d cbm', 'Gas.Abs-Verbrauch' => '%d cbm', 'Gas.Verbrauch-Jahr' => '%d cbm', 'Strom.Letzter-Verbrauch' => '%d kWh', 'Strom.Verbrauch-Monat' => '%d kWh', 'Strom.Abrechnungsverbrauch' => '%d kWh', 'Strom.Abs-Verbrauch' => '%d kWh', 'Strom.Verbrauch-Jahr' => '%d kWh'}


Dazu dann noch die beiden angehängten Dateien übernehemen und dann klappt das.
Bin mir sicher, dass man dasganze auch noch besser kapseln kann und ich bin auch noch nicht mehr der Funktionalität ganz zufrieden, aber für den Start ist das schon mal OK.

Anmerkung: Die Dateien sind die von Elektrolurch, ich habe Sie nur lauffähig gemacht.