Ich möchte gern Werte aus zwei Geräten (ein Temperaturmessgerät und mein Gaszähler) über einen längeren Zeitraum erfassen. Dazu habe ich ein FileLog definiert
Internals:
DEF ./log/GasTemperaturRegression.log FileLog_GasTemperaturRegression.*
FD 27
NAME FileLog_GasTemperaturRegression
NOTIFYDEV FileLog_GasTemperaturRegression.*
NR 70
NTFY_ORDER 50-FileLog_GasTemperaturRegression
REGEXP FileLog_GasTemperaturRegression.*
STATE active
TYPE FileLog
currentlogfile ./log/GasTemperaturRegression.log
logfile ./log/GasTemperaturRegression.log
READINGS:
2018-12-15 15:51:51 linesInTheFile 463
2018-12-15 15:51:51 logEntry HASH(0xbb60af0)
Attributes:
logtype text
userReadings logEntry {}
und der Eintrag wird ausgelöst durch folgenden Perlbefehl
sub RegressionSetzen(){
my $Daten = "Gas: ";
$Daten .= ReadingsVal("Gasrechner", "Heizungskeller_Gas_EnergyCostDay","")." Min: ";
$Daten .= ReadingsVal("BresserTemeo_1","tmin","")." Max: ".ReadingsVal("BresserTemeo_1", "tmax","");
fhem("setreading FileLog_GasTemperaturRegression logEntry ".$Daten);
}
Rufe ich den Code auf, wird auch der Eintrag korrekt vorgenommen. Zum selben Zeitpunkt wird aber mir unverständlicher Text in den Logfile geschrieben:
2018-12-15_15:51:51 FileLog_GasTemperaturRegression logEntry: Gas: 5.964 Min: -0.4 Max: 00.9
2018-12-15_15:51:51 FileLog_GasTemperaturRegression logEntry: HASH(0xbb60af0)
Weiß jemand was ich falsch mache?
<edit> Ich war immer davon ausgegangen, dass man bei usereadings die Klammern setzen muss. Das ist aber falsch.
Was willst du denn erreichen? Warum so und nicht per Userreading?
Zitat von: herrmannj am 15 Dezember 2018, 17:28:42
Warum so und nicht per Userreading?
Weil ich da nicht erfolgreich war. Ich will nur die Logeinträge erreichen, mehr nicht. Ich habe das nicht anders geschafft.
naja, muss jeder selber wissen.
Ohne weitere Infos wer wie was aufruft kann man nur raten. Geraten: nimm das "{}" beim userreading raus
Zitat von: herrmannj am 15 Dezember 2018, 18:24:29
Ohne weitere Infos wer wie was aufruft kann man nur raten.
Danke für den Tipp, das {} nehme ich raus. Aber wieso reichen die Infos nicht aus? Oben steht das list des Gerätes und der Aufruf des Perl-Codes erfolgt in YAAHM, was aber mW belanglos ist - denn der Fehler erscheint schon, wenn ich das in der Kommandozeile eingebe.