Wie Logfile, in das nur manuell Werte eingetragen werden

Begonnen von Leinad, 25 Oktober 2014, 17:43:48

Vorheriges Thema - Nächstes Thema

Leinad

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!

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Leinad

#2
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?

Leinad

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?

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Elektrolurch

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
configDB und Windows befreite Zone!

Freddy

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?

Elektrolurch

Hi,

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

Elektrolurch
configDB und Windows befreite Zone!

reTOric

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

CoolTux

Ich habe das selbe Problem mit den textField. Anscheind gibt es Probleme wenn man einen anderen webcmd nimmt als state. Kann hier einer helfen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Leinad

dito, wollte es auch mal testen... Jemand ne Idee wo der Fehler liegt?

Segler

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



Elektrolurch

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
configDB und Windows befreite Zone!

whistler81

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

DarkT

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.