Autor Thema: Temperatursensor Max/Min Werte über notify darstellen  (Gelesen 2477 mal)

Offline klausw

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1877
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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Offline klausw

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1877
Aw: Temperatursensor Max/Min Werte über notify darstellen
« Antwort #1 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 $?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20670
Aw: Temperatursensor Max/Min Werte über notify darstellen
« Antwort #2 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

 

decade-submarginal