Tendenzen berechnen und ausgeben

Begonnen von iceman, 05 Juni 2014, 13:42:45

Vorheriges Thema - Nächstes Thema

justme1968

dir fehlt das schließende einfache anführungszeichen nach dem "-" genau vor ,humidity.

... return "-" ' ,humidity...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

iceman

Hi,

Danke, nachdem ich neben dem ' auch noch ein } eingefügt hab, geht es jetzt! Das valueFormat muss also wie folgt aussehen:

attr TempHygro valueFormat { temperature => "%.1f °C",trend_temperature => '{if($VALUE<0){return"v"}elsif($VALUE>0){return"^"};; return "-"}',humidity =>"%.1f %%",trend_humidity => '{if($VALUE<0){return"v"}elsif($VALUE>0){return"^"};; return "-"}'}

Jetzt hab ich mir aber beim einbauen meine Plots zerschossen. Wenn ich die Logfiles richtig deute, wird seitdem ich die userReadings und Events eingebaut habe nichts mehr in die Logfiles für die Plots geschrieben. Wie kann ich das wieder fixen?

Ich meine momentane cfg für ein Device:

# Wohnen
define Wohnen CUL_WS 7 [0,0]
attr Wohnen event-on-change-reading temperature,humidity
attr Wohnen group Haus
attr Wohnen room Temperaturen
attr Wohnen sortby 01
attr Wohnen userReadings trend_humidity:humidity difference {ReadingsVal("Wohnen","humidity",0)}, trend_temperature:temperature difference {ReadingsVal("Wohnen","temperature",0)}
define FileLog_Wohnen FileLog ./log/Wohnen-%Y.log Wohnen:T:.*
attr FileLog_Wohnen logtype temp4hum6:Temp/Hum,text
attr FileLog_Wohnen room 9.90_Logs

define weblink_Wohnen SVG FileLog_Wohnen:temp4hum6:CURRENT
attr weblink_Wohnen group Haus
attr weblink_Wohnen label "Wohnen Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_Wohnen room 07_Wohnen
define SVG_Wohnen SVG FileLog_Wohnen:temp4hum6:CURRENT
attr SVG_Wohnen label "Wohnen Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_Wohnen room Plots



heinzfo

#17
Hallo betateilchen

[GELÖST] userReadings <NAME> measured-temp_trend difference { ReadingsVal("HeizungSzMotor_Clima","measured-temp",0) }

Ich bin Deinem Beispiel gefolgt, habe das notify, die 3 dummy´s und die 99_myUtils.pm Einträge erstellt.

Die beiden dummy´s für _neu und _alt nehmen die entsprechenden Werte an.

Wo ich nicht weiterkomme, ist der Umgang mit der Funktion tendenz.
Der entsprechende dummy wird nicht gefüllt, muss ich noch ein notify bauen, aber wie?

notify

Internals:
   DEF        HeizungSz_Climate.measured-temp.* { n_tempCheck }
   NAME       szTempTendenz
   NR         1374
   NTFY_ORDER 50-szTempTendenz
   REGEXP     HeizungSz_Climate.measured-temp.*
   STATE      2017-10-31 13:25:15
   TYPE       notify
   READINGS:
     2017-10-31 12:03:43   state           active
Attributes:
   room       Schlafzimmer


99_myUtils.pm

##########
#
# temperature check
#
sub n_tempCheck {
my $d;
$d = Value("HeizungSz_ClimateT_neu");
CommandSet(undef, "HeizungSz_ClimateT_alt $d");
$d = ReadingsVal("HeizungSz_Climate","measured-temp","");
CommandSet(undef, "HeizungSz_ClimateT_neu $d");
return;
}

##########
#
# find icon for temperature change
#
sub tendenz($$;$) {
#↑→↓
my ($alt,$neu,$t) = @_;
return '↑' if ($alt < $neu); # steigend
return $t if ($alt == $neu); # gleich
return '↓' if ($alt > $neu); # fallend
}


dummy

Internals:
   NAME       HeizungSz_ClimateT_sig
   NR         1377
   STATE      tendenz
   TYPE       dummy
   READINGS:
     2017-10-31 12:19:04   state           ???
Attributes:
   room       Schlafzimmer


Ich will die Tendenz weiter verwenden um Aktionen nur bei fallen oder steigen auszulösen.

Beste Grüße
Heinz