FHEM Forum

FHEM => Automatisierung => Thema gestartet von: klausw am 10 Juni 2013, 15:47:30

Titel: Temperatursensor Max/Min Werte über notify darstellen
Beitrag von: klausw am 10 Juni 2013, 15:47:30
hallo zusammen,

ich versuchte die Tagesmaxima und -minima meines Temperatursensors separat im Raum darzustellen.
Diese Werte werden per avarage Befehl in den Readings des Tempsensors abgelegt:

(siehe Anhang / see attachement)

Für Max und Minwert habe ich je einen Dummy angelegt.
Meine Idee war nun, per notify die Werte aus den Readings des Tempsensors bei jeder Aktualisierung zu übernehmen.
Das sieht wie folgt aus:
define Temp_noti notify GPIO4_DS1820_000802294cab { \
my $maxwert = sprintf("Maximum: %.1f °C", ReadingsVal("GPIO4_DS1820_000802294cab","T_max_day",0));; \
my $minwert = sprintf("Minimum: %.1f °C", ReadingsVal("GPIO4_DS1820_000802294cab","T_min_day",0));; \
fhem "set Temp_max $maxwert";; \
fhem "set Temp_min $minwert"}


Leider kommen nicht die entsprechenden Werte zurück:

(siehe Anhang / see attachement)


Wenn ich allerdings das Gleiche in der Kommandozeile von FHEMWEB eingebe:
{my $maxwert = sprintf("Maximum: %.1f °C", ReadingsVal("GPIO4_DS1820_000802294cab","T_max_day",0));; my $minwert = sprintf("Minimum: %.1f °C", ReadingsVal("GPIO4_DS1820_000802294cab","T_min_day",0));; fhem "set Temp_max $maxwert";; fhem "set Temp_min $minwert"}

Dann funktioniert es:

(siehe Anhang / see attachement)


Hat jemand eine Idee, was ich falsch mache?

Grüße
Klaus
Titel: Aw: Temperatursensor Max/Min Werte über notify darstellen
Beitrag von: klausw am 11 Juni 2013, 11:15:42
auf die Gefahr hin, das es ein Selbstgespräch wird ;)

ich habe es hinbekommen, vielleicht hilf es jemandem:

define Temp_noti notify GPIO4_DS1820_000802294cab { \
my $maxwert = ReadingsVal("GPIO4_DS1820_000802294cab","T_max_day",0);; \
$maxwert = "$maxwert °C";; \
my $minwert = ReadingsVal("GPIO4_DS1820_000802294cab","T_min_day",0);; \
$minwert = sprintf('%%.1f °C',$minwert);; \
fhem "set Temp_max $maxwert";; \
fhem "set Temp_min $minwert"}


Max und Minwert habe ich zum probieren unterschiedlich erzeugt...
Zum einen funktioniert es nicht, in einem String eine Abfrage zu machen, vermutlich ein typischer Anfängerfehler bei Perl.
Bei sprintf muss das "%" Zeichen doppelt genommen werden. Vielleicht habt ihr nen Tip für mich, wieso. Für was steht das einzelne $?
Titel: Aw: Temperatursensor Max/Min Werte über notify darstellen
Beitrag von: rudolfkoenig am 11 Juni 2013, 11:20:05
> Bei sprintf muss das "%" Zeichen doppelt genommen werden. Vielleicht habt ihr nen Tip für mich, wieso.

http://fhem.de/commandref.html#notify (//fhem.de/commandref.html#notify)