Trendfunktion

ich hab in den letzten Tagen an einem Weather-Display für ein 10"-Androiden rumgebastelt. Hier sind natürlich auch Trendanzeigen interessant. Dabei ist quasi als Abfallprodukt eine Funktion entstanden, die u.A. den Trend eines Wertes (z.B. Druck, Temperatur etc.) ermittelt, in dem die Durchschnittswerte 2 frei wählbarer Zeiträume verglichen werden.

die Funktion wird wie folgt aufgerufen:


function TrendFunction($Object_ID, $actual, $last, $tolerance , $time_delta)

wobei die letzten beiden Parameter optional sind.

[ul][li]$actual entspricht dem aktuellen Betrachtungszeitraum (in Minuten, Bild 1 Punkt 1.) für den aktuellen Durchschnittswert[]$last entspricht dem Vergleichszeitraum (in Minuten, Bild 1 Punkt 3.), zu dem ebenfalls ein Durchschnitsswert gebildet wird[]$tolerance (optional) gibt an, welche Toleranz überschritten werden muss, um steigende oder fallende Tendenzen zu diagnostizieren (default = 0)[*]$time_delta (optional, Bild 1 Punkt 2.) gibt an, wieviele Minuten die beiden Zeitfenster $actual und $last auseinander liegen sollen (default = 0)
[/li][/ul]

ich nutze diese Funktion z.B. um die Trendpfeile im Bild 2 zu steuern (nicht lachen, das Weather-Display ist noch in einer ganz frühen Draft :smiley: )

hier im Detail die Funktions-Doku:

Funktion zur Berechnung von Tendenzen
zur Ermittlung von Tendenzen werden die Durchschnittswerte von 2 Perioden ermittelt verglichen: actual und last.
Beträgt die Abweichung des Durchschnittswert der actual-Periode mehr als 0 (+ Toleranz) zum Durchschnittswert der Vergleichsperiode,
wird eine steigende Tendenz (‚1‘, int) zurück gegeben. Beträgt die Abweichung des Durchschnittswert der actual-Periode weniger
als 0 (-Toleranz) zum Durchschnittswert der Vergleichsperiode, wird eine sinkende Tendenz (’-1’, int) zurückgeben. Weicht der aktuelle
Durchnittswert um weniger als die Toleranz vom Durchnittswert der Vergleichsperiode ab, wird eine gleichbleibende Tendenz ( ‚0‘, int)
zurück gegeben.

  [b]Input:[/b]
     $Object_ID      	= Variablen-ID der geloggten Daten
     $actual           = Zeitraum für aktuellen Durchschnittswert in Minuten(integer), Zeitraum beginnt Jetzt -$actual
     $last             = Vergleichszeitraum in Minuten(integer), Zeitraum beginnt Jetzt - last -$actual,  Zeitraum endet Jetzt -$actual
     $tolerance        = optional, Toleranz für Tendenz-Berechnung, absolut('5.1', float) oder %('5.0%' String), bezogen auf den actual- Wert, default = 0
     $time_delta       = optional, zeitlicher Abstand zwischen $actual und $last in Minuten(integer), default = 0

 [b]Output:[/b]
  	[Obj_ID] => 37806                   = IPS Variablen-ID, welche abgefragt wurde
  	[Tendenz] => 1                      = Ergebnis Tendenz (-1 = sinkend, 0 = gleichbleibend, 1 = steigend)
  	[Avg_act] => 9776.1818181818        = Durchschnittswert aus $actual-Zeitraum
  	[Max_act] => 12807                  = Maximalwert aus $actual-Zeitraum
  	[Min_act] => 6522                   = Minimalwert aus $actual-Zeitraum
  	[ts_act] => 10.07.2012 08:44:00     = Startzeitpunkt des $actual-Zeitraums
  	[te_act] => 10.07.2012 08:54:00     = Endzeitpunkt des $actual-Zeitraums
  	[Avg_last] => 6449.6363636364       = Durchschnittswert aus vorhergehendem Vergleichszeitraum ($last-Zeitraum)
  	[Max_last] => 7136                  = Maximalwert aus $last-Zeitraum
  	[Min_last] => 5307                  = Minimalwert aus $last-Zeitraum
  	[ts_last] => 10.07.2012 08:34:00    = Startzeitpunkt des $last-Zeitraums
  	[te_last] => 10.07.2012 08:44:00    = Endzeitpunkt des $last-Zeitraums
  	[Toleranz] => 977.61818181818       = absolute Toleranz (bezogen auf [Value_act])
  	[Delta] => 3326.5454545455          = absolute Abweichung ([Value_act] - [Value_last])

Schlagwörter Forensuche: Tendenz, Trend, Entwicklung, Statistik, Wetter, AC_GetLoggedValues

IPS TrendFunktion 2012-07-10.zip (139 KB)

Jetzt hab ich mich extra per Browser hier her begeben um mir das anzuschauen, aber ist ja alles leer - kein neues Internet und keine Trendfunktion zu finden … :wink:

Grüße

Andreas

Sent from my iPhone using Tapatalk

Das ist eindrücklich - danke! Aber für wiederkehrende (zirkadiane) Werte, wäre nicht eine Fourier-Analyse aussagekräftiger? Die Fast Fourier Transform kann die Interaktion von Tagesschwankunken und Saisonalschwankungen beschreiben. Dazu gibt es sogar fix-und-fertige PHP libraries.