Script: Luftdrucktrend ermitteln

Ich habe für eine kleine Trendvorhersage zwei Scripte erstellt.
Mein System stellt den Luftdruck bereit. Der Trend muss selbst ermittelt werden.
Die „offiziellen“ Trendvorhersagen beachten den Trend der letzten 3 Sunden
(in den letzten 3 Stunden leicht steigend…) und den Trend der letzten Stunde
(…in der letzen Stunde stark fallend). Zusammenfassend: Erst leicht steigend, dann stark fallend.
Es gibt einen Wetterumschwung und es deutet sich ein Sturm an…
Zu diesen Texten werden Symbole zugeordnet. In diesem Beispiel wäre es dieses:
ld-04.png

Schritte:

  1. Die in den beiden Scripts aufgeführten Variablen anlegen
  2. Die ID des Sensors im Script hinterlegen
  3. Die Archiv-ID wird automatisch ermittelt
    4.1 Script „Luftdrucktrend“ neu anlegen, das Script „Luftdrucktrend“ reinkopieren
    4.2 Ereignis: „Täglich alle 1 Stunden“ zuordnen
    5.1 Script „Luftdrucktrend txt“ neu anlegen, das Script „Luftdrucktrend txt“ reinkopieren
    5.2 Ereignis: „Täglich alle 1 Stunden“ zuordnen
    6.1 symbole.zip herunterladen und entpacken
    6.2 Symbole unter „/var/lib/symcon/webfront/user/LDTrendIcons“ (IPS unter Ubuntu 16.04) speichern

Nun werden jede Stunde die ermittelten Werte in die jeweiligen Variablen geschrieben.
Es wird der Dateiname des Symboles zugeordnet. Die Darstellung des Symbols im WebFront habe ich noch nicht gelöst.
Vielleicht kann mir da jemand einen Tip geben…

Matthias

Script „Luftdrucktrend“


<?
/*
 ################################################################################
 # IP-Symcon Programm                                                           #
 #                                                                              #
 # Beschreibung : Luftdrucktrend ermitteln (aus Archivdaten)                    #
 # Create date  : 2016-09-06                                                    #
 # Last change  : 2016-10-07                                                    #
 # Version      : 0.01                                                          #
 # Datei        : 21488.ips.php                                                 #
 # Autor        : Matthias Herold                                               #
 # Copyright    :                                                               #
 ################################################################################
 */

// Hardware
$ID_ld  	   = 47824 /*[7 Technik\7.22 HomeMatic CCU\HomeMatic Variablen CCU\homeduino_garden_baro]*/ ; // Variablen-ID

// Variablen (Float mit einer Nachkommastelle)
$ID_ld_1h   = 27554 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_1h]*/;
$ID_ld_3h   = 49183 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_3h]*/;
$ID_ld_12h  = 31321 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_12h]*/;
$ID_ld_24h  = 34016 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_24h]*/;

//--config end--------------------


//  letzte Stunde
Ldtrend(1, $ID_ld_1h, $ID_ld);

//  letzte 3 Stunden
Ldtrend(3, $ID_ld_3h, $ID_ld);

//  letzte 12 Stunden
Ldtrend(12, $ID_ld_12h, $ID_ld);

//  letzte 24 Stunden
Ldtrend(24, $ID_ld_24h, $ID_ld);


function Ldtrend($lasthours, $varid, $ID_ld)
{
$ID_Archive = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]; // Archiv Handler ID wird automatisch ausgelesen
$ZeitraumVON = time()- (3600 * $lasthours);
$ZeitraumBIS = time();
$LogDatenAR = AC_GetLoggedValues($ID_Archive, $ID_ld, $ZeitraumVON, $ZeitraumBIS, 0);
$id_ld = (count($LogDatenAR)-1);
$current_ld = $LogDatenAR[0]["Value"];
$last_ld = $LogDatenAR[$id_ld]["Value"];
$ld_tendenz = round($current_ld - $last_ld,1);

SetValue($varid, $ld_tendenz);
}
?>

Script „Luftdrucktrend txt“


<?
/*
 ################################################################################
 # IP-Symcon Programm                                                           #
 #                                                                              #
 # Beschreibung : Luftdrucktrend-Texte ermitteln                                #
 # Create date  : 2016-09-06                                                    #
 # Last change  : 2016-10-07                                                    #
 # Version      : 0.01                                                          #
 # Datei        : 25596.ips.php                                                 #
 # Autor        : Matthias Herold                                               #
 # Copyright    :                                                               #
 ################################################################################
 */

// Hardware
$ID_ld  	    = 47824 /*[7 Technik\7.22 HomeMatic CCU\HomeMatic Variablen CCU\homeduino_garden_baro]*/ ; // Variablen-ID

// Icons unter /var/lib/symcon/webfront/user/LDTrendIcons ablegen

// Variablen (Float)
$ID_ld_1h    = 27554 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_1h]*/;
$ID_ld_3h    = 49183 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktendenz_3h]*/;
// Variablen (String)
$ID_ld_txt3h = 57481 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktrend 3h text]*/;
$ID_ld_txt1h = 32646 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktrend 1h text]*/;
$ID_ld_txtl  = 50955 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktrend lang txt]*/;
$ID_ld_icon  = 44208 /*[99 meine Projekte\0 Klima+Wetter\UMW Luftdrucktrend\Luftdrucktrend Icon]*/;

$ld1h = getValueFloat($ID_ld_1h);
$ld3h = getValueFloat($ID_ld_3h);
$trend_icon = "";
$trend = 0;

//--config end--------------------

// Werte für 3h (Standard in Wettermeldungen)
// $trend3h = "";
if (($ld3h <= -3.0)) 							{$trend3h = "stark fallend";}
if (($ld3h > -3.0)and($ld3h <= -1.0)) 		{$trend3h = "schwach fallend";}
if (($ld3h > -1.0)and($ld3h < 1.0))			{$trend3h = "stabil";}
if (($ld3h >= 1.0)and ($ld3h < 3.0))		{$trend3h = "schwach steigend";}
if (($ld3h >= 3)) 								{$trend3h = "stark steigend";}

setValueString($ID_ld_txt3h,$trend3h);

// Werte für 1h (zur Berechnung der Trendvorschau)
if (($ld1h <= -3.0)) 							{$trend1h = "stark fallend";}
if (($ld1h > -3.0)and($ld1h <= -1.0)) 		{$trend1h = "schwach fallend";}
if (($ld1h > -1.0)and($ld1h < 1.0))			{$trend1h = "stabil";}
if (($ld1h >= 1.0)and ($ld1h < 3.0))		{$trend1h = "schwach steigend";}
if (($ld1h >= 3)) 								{$trend1h = "stark steigend";}

setValueString($ID_ld_txt1h,$trend1h);

// Trendvorschau
if (($trend3h == "stark steigend")	 and ($trend1h == "stark steigend")) 	{$trend = "Konstant stark steigend"; 							$trend_icon = "ld-01.png";}
if (($trend3h == "stark steigend") 	 and ($trend1h == "schwach steigend")) {$trend = "Erst stark steigend, dann schwach steigend"; 	$trend_icon = "ld-01.png";}
if (($trend3h == "stark steigend") 	 and ($trend1h == "stabil"))   			{$trend = "Erst stark steigend, dann stabil";  				$trend_icon = "ld-03.png";}
if (($trend3h == "stark steigend") 	 and ($trend1h == "schwach fallend")) 	{$trend = "Erst stark steigend, dann schwach fallend";   $trend_icon = "ld-02.png";}
if (($trend3h == "stark steigend") 	 and ($trend1h == "stark fallend"))		{$trend = "Erst stark steigend, dann stark fallend";     $trend_icon = "ld-04.png";}

if (($trend3h == "schwach steigend") and ($trend1h == "stark steigend"))  	{$trend = "Erst schwach steigend, dann stark steigend"; 	$trend_icon = "ld-01.png";}
if (($trend3h == "schwach steigend") and ($trend1h == "schwach steigend")) {$trend = "Konstant schwach steigend"; 						$trend_icon = "ld-01.png";}
if (($trend3h == "schwach steigend") and ($trend1h == "stabil"))   			{$trend = "Erst schwach steigend, dann stabil";  			$trend_icon = "ld-03.png";}
if (($trend3h == "schwach steigend") and ($trend1h == "schwach fallend"))	{$trend = "Erst schwach steigend, dann schwach fallend"; $trend_icon = "ld-02.png";}
if (($trend3h == "schwach steigend") and ($trend1h == "stark fallend")) 	{$trend = "Erst schwach steigend, dann stark fallend";   $trend_icon = "ld-04.png";}

if (($trend3h == "stabil")  			 and ($trend1h == "stark steigend")) 	{$trend = "Erst stabil, dann stark steigend"; 				$trend_icon = "ld-09.png";}
if (($trend3h == "stabil")   			 and ($trend1h == "schwach steigend")) {$trend = "Erst stabil, dann schwach steigend"; 			$trend_icon = "ld-09.png";}
if (($trend3h == "stabil")   			 and ($trend1h == "stabil"))   			{$trend = "Konstant stabil"; 										$trend_icon = "ld-05.png";}
if (($trend3h == "stabil")   			 and ($trend1h == "schwach fallend"))  {$trend = "Erst stabil, dann schwach fallend";	 			$trend_icon = "ld-04.png";}
if (($trend3h == "stabil")   			 and ($trend1h == "stark fallend")) 	{$trend = "Erst stabil, dann stark fallend"; 				$trend_icon = "ld-04.png";}

if (($trend3h == "schwach fallend")  and ($trend1h == "stark steigend")) 	{$trend = "Erst schwach fallend, dann stark steigend";	$trend_icon = "ld-09.png";}
if (($trend3h == "schwach fallend")  and ($trend1h == "schwach steigend")) {$trend = "Erst schwach fallend, dann schwach steigend";	$trend_icon = "ld-09.png";}
if (($trend3h == "schwach fallend")  and ($trend1h == "stabil"))   			{$trend = "Erst schwach fallend, dann stabil";				$trend_icon = "ld-08.png";}
if (($trend3h == "schwach fallend")  and ($trend1h == "schwach fallend"))  {$trend = "Konstant schwach fallend";							$trend_icon = "ld-06.png";}
if (($trend3h == "schwach fallend")  and ($trend1h == "stark fallend"))  	{$trend = "Erst schwach fallend, dann stark fallend";		$trend_icon = "ld-06.png";}

if (($trend3h == "stark fallend")  	 and ($trend1h == "stark steigend")) 	{$trend = "Erst stark fallend, dann stark steigend";		$trend_icon = "ld-09.png";}
if (($trend3h == "stark fallend")  	 and ($trend1h == "schwach steigend")) {$trend = "Erst stark fallend, dann schwach steigend";	$trend_icon = "ld-07.png";}
if (($trend3h == "stark fallend")  	 and ($trend1h == "stabil"))   			{$trend = "Erst stark fallend, dann stabil";					$trend_icon = "ld-08.png";}
if (($trend3h == "stark fallend")  	 and ($trend1h == "schwach fallend"))  {$trend = "Erst stark fallend, dann schwach fallend";		$trend_icon = "ld-06.png";}
if (($trend3h == "stark fallend")  	 and ($trend1h == "stark fallend"))  	{$trend = "Konstant stark fallend";								$trend_icon = "ld-06.png";}

setValueString($ID_ld_txtl,$trend);
setValueString($ID_ld_icon,$trend_icon);

?>

symbole.zip (7.37 KB)

Hallo MHerold,

nette Idee, danke fürs teilen.

Das mit den Icons funktioniert so nicht. Du kannst glaub ich nicht einer String-Variable ein Bild zuordnen.
Wenn dann musst Du das in html packen. Und ich hab gerade in den Scripts nichts mit Zielpfaden zu den Bildern gefunden. Werden die überhaupt vom Script/IPS gefunden?

Versuche gerade noch Deine Scripts unter Win anzupassen.

Melde mich wieder wenns was neues gibt.

Dafür gibt es das Medien Element dem ordnest Du eine Grafik zu
IPS_SetMediaFile — IP-Symcon :: Automatisierungssoftware