ReadingsNum at und Rechnen mit Readings für Stomstatistik

Begonnen von jnewton957, 09 Januar 2017, 20:19:04

Vorheriges Thema - Nächstes Thema

jnewton957

Hallo,

ich stehe vor einer riesen Herausforderung, deren Lösung meine FHEM Installation enorm weiter bringen würde.

Ich lese über Udo´s IR Lesekopf meinen Stromzähler aus. Der liefert bauartbedingt aber nur wenige Daten.
Faktisch nur "Zählerstand-Tarif1-Bezug".

Ich habe daraus schon weitere Werte gemacht:
Zhlerstand-Tarif1-Bezug_max_day            25353.3
Zhlerstand-Tarif1-Bezug_max_month        25353.3
Zhlerstand-Tarif1-Bezug_min_day             25347.9
Zhlerstand-Tarif1-Bezug_min_month         25253.0

Was ich aber nicht hinbekomme, ist diese Werte für Anzeigen der Vortrageswerte, Monatswerte, Jahreswerte aufzubereiten.

Idee: Jeden Tag um 23:59 Uhr schreibe ich die Differenz (Zhlerstand-Tarif1-Bezug_max_day - Zhlerstand-Tarif1-Bezug_min_day) in  define EM_day_pre_1 dummy

Herausforderung:
define ermittlung_energie_lesekopf_tag at *23:59:20 {fhem("set EM_day_pre_1" . (ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_max_day',''))-ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_min_day',''))}
Coding funktioniert nicht.
Wo ist bitte mein Fehler ???

Dann möchte ich jeden die Werte des aktuellen Monats aufsummieren und in ein dummy schreiben:
define EM_month dummy
define ermittlung_energie_monat at *23:59:30 {fhem("set EM_month" . (ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_max_day',''))-ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_min_month',''))}

Coding funktioniert nicht.
Wo ist bitte mein Fehler ???

Dann möchte ich jeweils den Monatsendwerte wegschreiben für jeweils vormonatsberechnungen sowie Verrgleiche mit dem Monat des Vorjahres (Jan 16 vergleich mit Jan 17)
define EM_month_1701 dummy
define ermittlung_EM_month_1701 at 2017-01-31T23:57:00 {fhem("set EM_month_1701" . (ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_max_month',''))-ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_min_month',''))}

Dann gibt es eben EM_month_1701 bis EM_month_1712.
Coding funktioniert nicht. (habe es mit einem aktuellen Datum ausprobiert)
Wo ist bitte mein Fehler ???

Kann mir bitte jemand helfen.

Danke
Grüße
Jörg


FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

marvin78

#1
Was sagt denn das Log?

Schreibe deine Werte zunächst in Variablen und dann schau dir mal an, ob wirklich alle Klammern sinnvoll sind. Überlege, ob es wirklich sinnvoll ist, einem numerischen Wert, einen leeren String als Fallback zuzuweisen. Es fehlen Leerzeichen.

Beispiel:

*23:59:20 {
  my $zaehler1=ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_max_day',0);
  my $zaehler2=ReadingsNum('zaehler','Zhlerstand-Tarif1-Bezug_min_day',0);
  my $sum=$zaehler1-$zaehler2;
  fhem("set EM_day_pre_1 ". $sum);
}


Code für DEF in der Detailansicht, NICHT für die Config.

Noch besser: Code in die myUtils auslagern.

betateilchen

Zitat von: marvin78 am 09 Januar 2017, 20:45:34
Noch besser: Code in die myUtils auslagern.

und dann noch den Variablennamen $zaehler2 richtig schreiben ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78