DWD Unwetterwarnung (WFE, Mail und html)

war das gestern um die Mittagszeit (ca 11-13 Uhr)? da hatte ich bei GMX eine Verzögerung von 1h

So genau kann ichs nicht mehr nachvollziehen. Ich hatte es gleich gelöscht.

Beim nächsten Mal achte ich mal darauf.

Hallo Unwetterfreunde,
passend zum heutigen Freiteg, den 13. ein kleines Update. Es wurde nur der Code im Unwetterscript (13687 DWD Unwetterwarnung.ips.php) geändert, Ihr braucht auch keine Änderungen im Konfig-Bereich machen.
Einfach den Code ab Zeile 60 austauschen, fertig!

Änderungen lt. Changelog:

13.07.2012:
Änderungen/Bugfixes
• Behoben: alte IPS-Befehlssätze (IPS <V2.5) bereinigt
• Behoben: Warnlagebericht wird nun auch bei bestehender Unwetterwarnung zum vorgesehenem Zeitpunkt verschickt
• kontextbezogenes Mail-Subject optimiert(„Warnlagebericht“, „IPS Warnstatus: DEFCON 3 (Wetterwarnungen)“, „Änderung Warnlevel(von DEFCON 2 auf DEFCON 3)“, „IPS Warnstatus: DEFCON 2 (Wetterwarnungen), Warnwiederholung“ etc.)
• FineTuning der HTML-Ausgabe

Neu:
• Warnstatus-Legende als Mailfooter eingebaut
• DEFCON-Status in Mail-Content übernommen

Danke für das update. Gerade eingebaut und läuft problemlos

Hallo,

Von mir auch eine grosse Danke, läuft wunderbar .

prima, freut mich. Und heute sind ja wieder reichlich „Events“ geplant. Im Moment sieht es so aus, als kämen sie auch zur Auslieferung
:D:D

DWD Warnkarte 2012-07-14.png

Hi,

bekomme nach dem Update auf die aktuelle Version folgende Fehlermeldung nach einem E-Mail Versand:

IPS-Err-IPS_Unwetter  2012-07-14 17:02:29.082  1 ist keine WFC-Modul ID!
  133 in IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
  827 in 53351.ips.php (call IPSLogger_Err)

Hab mir das ehrlich gesagt noch nicht so wirklich angeschaut, da ich meine Masterarbeit bis 26.07 schreiben muss und noch nicht mal die Hälfte geschrieben habe :smiley:

Auch ein Merci von mir für das Update :wink:

Oli

@heschdy,
das wird auch nix mehr :smiley:

die Fehlermeldung besagt, dass du in der Variable (Objektbaum) „WFC IDs (PopUp)“ eine ID (genauer ID Nr. 1) stehen hast, die nicht zu einem WFC gehört

Ich denke momentan auch nur noch in PCI Express und Thunderbolt Standards :smiley:

Wäre doch auch mal was für IPS :loveips:

die Fehlermeldung besagt, dass du in der Variable (Objektbaum) „WFC IDs (PopUp)“ eine ID (genauer ID Nr. 1) stehen hast, die nicht zu einem WFC gehört

Ok, das ist neu… :slight_smile:
Abschalten ist dann wohl ein leerer String?!
Im String war eine 0 gestanden, hatte ich aber nicht eingetragen :smiley: gar keine Zeit für sowas :wink:

kann es sein, dass du nicht die aktuelle Version hast? ich hab nämlich genau für die 0 eine Änderung in der Prüflogik gemacht, die das toleriert (bei mir eben gecheckt: bei 0 keine Fehlermeldung).
Wenn ältere Version: ja, leeres Feld entspricht „abschalten“
Wenn neue Version (13.07.2012) Leer oder 0 entspricht abschalten

Habe eigentlich die aus der Zip Datei vom 14.07.


<?

########################################################################################################
/*
 basierend auf Quellscript von RALF angepasst von Raketenschnecke 04.07.2012
 IPS-Forum (Doku): http://www.ip-symcon.de/forum/f53/dwd-unwetterwarnung-wfe-mail-html-18782/#post166583
 Quelle: http://www.ip-symcon.de/forum/f53/wetterwarnung-5890/index7.html#post77285 (DWD Unwetterwarnung Ralf)

	Scipt läuft anschließend eigenständig alle 5 Minuten.
	Falls eine Anzeige der DWD-Informationen gewünscht wird, kann ein Link vom Modul "DWD Unwetterwarnungen"
	an eine beliebige Stelle in WFE erstellt werden.
	Das Script setzt eine funktionierende PHP-Mailer-Konfiguration (V 5.1) im Script "PHP_Mailer CONNECTOR" voraus.

	DEFCON-Status Übersicht
   	DEFCON 6 = DWD keine Warnungen (blau), Mail 1x bei Erreichen von DEFCON6 (Warnmeldung aufgehoben)
		DEFCON 5 = DWD UV-Warnung (magenta), Mail 1x bei Erreichen von DEFCON5
		DEFCON 4 = DWD Hitzewarnung (schweinchenrosa), Mail 1x bei Erreichen von DEFCON4
		DEFCON 3 = DWD Wetterwarnungen (gelb), Mail 1x bei Erreichen von DEFCON3
		DEFCON 2 = DWD Warnungen vor markantem Wetter (orange), Mail 1x alle 60 Min
		DEFCON 1 = DWD Unwetterwarnungen (rot), Mail 1x alle 15 Min
		DEFCON 0 = DWD Warnungen vor extremem Unwetter (violett), Mail 1x alle 15 Min

*/
########################################################################################################

// +++++++++++++++++++++++ Konfig +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	// Location für Warnmeldungen
   // den LocationCode ($ort) bitte aus dem Link zur regionale Wetterwarnung entnehmen (Beispiel: http://www.wettergefahren.de/dyn/app/ws/html/reports/HHX_warning_de.html => HHX für Hamburg)
	$ort 											= 'HHX';          // DWD-Key für Ort
	$ort_desc 									= 'Hamburg';      // Freitext für Ortsname

	// Warnlagebericht (Regionen)
	// den Regional-Code bitte aus dem Link zum regionalen Warnlagebericht entnehmen
	// (Beispiel: http://www.wettergefahren.de/dyn/app/ws/html/reports/MS_report_de.html => "MS" für Bayern)
	$region                             = 'SG';           // Regional-Code für Warnlageberichte eintragen (leer [''] => Deaktivierung der Warnlageberichte)

	// eigene Variablen deklarieren
	$wan_status_ID 							= -1 ; //Status-ID der I-Net-Verbindung, -1 wenn keine Variable verfügbar ist
	$php_mailer_scriptID                = 27229 /*[System\php mailer\php_mailer_connector]*/;

	// PHP-Mailer: Absender
	$mailContent['from']						= 'ips@.biz';               // Absender-Mailadresse
	$mailContent['reply']					= 'ralf@.biz';               // Reply-Mailadresse
	$mailContent['fname']					= 'IPS Unwetterwarnung';                  // Absender-Name
	$subject_praefix							= 'IPS Warnstatus Hamburg: ';                     // Mail-Betreff
	$mailprio                           = 2;                                      // Mail-Priorität "High", wenn angegebener DEFCON-Status unterschritten wird

	// PHP-Mailer: Empfänger (beliebig erweiterbar)
	$mail_to[0]['to']							= 'ips@.biz';     // Mailadresse Mailempfänger
	$mail_to[0]['to_name']					= 'IPS';                       // Name Mailempfänger
	$mail_to[1]['to']							= '';     											// Mailadresse Mailempfänger
	$mail_to[1]['to_name']					= '';                       					// Name Mailempfänger

	// RADAR-Pics: Auswahl mit oder ohne Radarbild und bis zu welchem Warnstatus
	$WFE_Radar                          = 6;    				// DEFCON-Status, bis zu dem RADAR-Pics ins WFE/WFE-Popup ausgeliefert werden ('-1' => Auslieferung abschalten)
	$Mail_Radar                         = 6;     			// DEFCON-Status, bis zu dem RADAR-Pics per Mail ausgeliefert werden ('-1' => Auslieferung abschalten)
	$Blitzkarte                         = true;           // true: tauscht bei Gewitter-Warnmeldungen das SAT24-PIC gegen die Wetteronline-Blitzkarte DE

// +++++++++++++++++++++++ Konfig Ende +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// IPS-Library einbinden
	if(file_exists(IPS_GetKernelDir().'scripts/IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php'))
	{
	   include 									IPS_GetKernelDir().'scripts/IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php';
	   define 									("c_LogId", "IPS_UnwetterDWD");
	}
	elseif(file_exists(IPS_GetKernelDir().'scripts/IPSLogger.ips.php'))
	{
	   include 									IPS_GetKernelDir()."scripts/IPSLogger.ips.php";
	   define 									("c_LogId", "IPS_UnwetterDWD");
	}

// PHP-Mailer fixe Konfig
	$mailContent['html']						= 1;
	$mailContent['ei_path']					= 'http://www.wettergefahren.de/dyn/app/ws/maps/'.$ort.'_timeline.png';
	$mailContent['ei_cid']					= 'DWD_Timeline';
	$mailContent['ei_name']					= 'Timeline';
	$mailContent['ei_encoding']			= 'base64';
	$mailContent['ei_type']					= 'application/octet-stream';
	$mailContent["htmlhead"]         	= '';
	$mailContent["htmlend"]         		= '
<br>
<table
 style="text-align: left; width: 750px; height: 200px; background-color: rgb(220, 220, 220); font-family: Arial;  font-family: Arial; font-size: 10pt;"
 border="0" cellpadding="2" cellspacing="2" class="app_ws_content_text">
  <tbody>
    <tr>
      <td style="font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(226,233,253);">Warnstatus</td>
      <td style="font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(226,233,253);">Bedeutung</td>
      <td style="font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(226,233,253);">Mailintervall</td>
    </tr>
    <tr>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(100, 180, 255);">DEFCON
6</td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(100, 180, 255);">keine
Warnungen
      </td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(100, 180, 255);">Mail
1x bei Erreichen von DEFCON6 (Warnmeldung aufgehoben)</td>
    </tr>
    <tr>
      <td style="color: rgb(51, 51, 51); background-color: fuchsia;">DEFCON
5</td>
      <td style="color: rgb(51, 51, 51); background-color: fuchsia;">UV-Warnung</td>
      <td style="color: rgb(51, 51, 51); background-color: fuchsia;">Mail
1x bei Erreichen von DEFCON5</td>
    </tr>
    <tr>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(204, 153, 255);">DEFCON
4</td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(204, 153, 255);">Hitzewarnung</td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(204, 153, 255);">Mail
1x bei Erreichen von DEFCON4</td>
    </tr>
    <tr>
      <td style="color: rgb(51, 51, 51); background-color: yellow;">DEFCON
3</td>
      <td style="color: rgb(51, 51, 51); background-color: yellow;">Wetterwarnungen</td>
      <td style="color: rgb(51, 51, 51); background-color: yellow;">Mail
1x bei Erreichen von DEFCON3</td>
    </tr>
    <tr>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(250, 150, 0);">DEFCON
2</td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(250, 150, 0);">Warnungen
vor
markantem Wetter</td>
      <td
 style="color: rgb(51, 51, 51); background-color: rgb(250, 150, 0);">Mail
1x alle 60 Min</td>
    </tr>
    <tr>
      <td style="color: rgb(51, 51, 51); background-color: red;">DEFCON
1</td>
      <td style="color: rgb(51, 51, 51); background-color: red;">Unwetterwarnungen</td>
      <td style="color: rgb(51, 51, 51); background-color: red;">Mail
1x alle 15 Min</td>
    </tr>
    <tr>
      <td
 style="background-color: rgb(140, 0, 191); color: rgb(51, 51, 51);">DEFCON
0</td>
      <td
 style="background-color: rgb(140, 0, 191); color: rgb(51, 51, 51);">Warnungen
vor
extremem Unwetter</td>
      <td
 style="background-color: rgb(140, 0, 191); color: rgb(51, 51, 51);">Mail
1x alle 15 Min</td>
    </tr>
  </tbody>
</table>

<br>
<table style="text-align: left; width: 750px; height: 132px; font-family: Arial; font-size: 10pt;"
 border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td
 style="width: 73px; height: 50px; text-align: left; vertical-align: middle;  font-weight: bold;"
 colspan="4" rowspan="1">
      <span style="color: #888888;">dieses
Unwetter wird Ihnen präsentiert von:</span>
      </td>
    </tr>
    <tr>
      <td
 style="text-align: center; vertical-align: middle; width: 197px; height: 58px;">
      <a
 href="http://www.raketenschnecke.net/rs-wetter/rss-wetter-cams/"
 target="_blank"><img alt="www.raketenschnecke.net"
 style="border: 0px solid ; width: 201px; height: 30px;"
 src="http://www.raketenschnecke.net/wp-content/uploads/2012/04/LogoRS.net_.png"
 valign="bottom" height="30" hspace="0" vspace="5"
 width="201"></a></td>
      <td
 style="text-align: center; vertical-align: middle;  font-weight: bold;width: 73px; height: 58px;">
 <span style="color: #888888;">und</span></td>
      <td
 style="text-align: left; vertical-align: middle; width: 199px; height: 58px;">
      <a href="http://www.ip-symcon.de" target="_blank"><img
 alt="www.raketenschnecke.net"
 style="border: 0px solid ; width: 201px; height: 55px;"
 src="http://www.ip-symcon.de/fileadmin/templates/img/ipSymconLogo.png"
 valign="bottom" height="55" hspace="0" vspace="5"
 width="201"></a></td>
      <td style="text-align: center; width: 250px; height: 58px;">
      </td>
    </tr>
  </tbody>
</table>



';

// DWD Warnstatus (Farbcodierung)
	$DEFCON[6]['color']     				= '#64B4FF';    // blau:    keine Warnungen
	$DEFCON[6]['status']    				= 'keine Warnungen';
	$DEFCON[5]['color']     				= '#FF00FF';    // magenta:    UV-Warnung
	$DEFCON[5]['status']    				= 'UV-Warnung';
	$DEFCON[4]['color']     				= '#CC99FF';    // schweinchenrosa:    Hitzewarnungen
	$DEFCON[4]['status']    				= 'Hitzewarnung';
	$DEFCON[3]['color']     				= '#FFFF00';    // gelb:    Wetterwarnungen
	$DEFCON[3]['status']    				= 'Wetterwarnungen';
	$DEFCON[2]['color']     				= '#FA9600';    // orange:  Warnungen vor markantem Wetter
	$DEFCON[2]['status']    				= 'Warnungen vor markantem Wetter';
	$DEFCON[1]['color']     				= '#FF0000';    // rot:     Unwetterwarnungen
	$DEFCON[1]['status']    				= 'Unwetterwarnungen';
	$DEFCON[0]['color']     				= '#AF0064';    // violett: Warnungen vor extremen Unwetter
	$DEFCON[0]['status']    				= 'Warnungen vor extremen Unwetter';

// DWD Warntypen, "Amtliche Warnung vor...:"
	$Warntyp                         	= array();
	$Warntyp[]                       	= 'keine amtliche Warnung';
	// "Amtliche Warnung vor...:"
	$Warntyp[]                       	= 'Windböen';
	$Warntyp[]                       	= 'Starkwind';
	$Warntyp[]                       	= 'Starkwindwarnung';
	$Warntyp[]                       	= 'Sturmwarnung';
	$Warntyp[]                       	= 'Sturmböen';
	$Warntyp[]                       	= 'schweren Sturmböen';
	$Warntyp[]                       	= 'Orkanartigen Böen';
	$Warntyp[]                       	= 'extremen Orkanböen';
	$Warntyp[]                       	= 'Orkanböen';
	$Warntyp[]                       	= 'heftigem Starkregen';
	$Warntyp[]                       	= 'Starkregen';
	$Warntyp[]                       	= 'Hagel';
	$Warntyp[]                       	= 'extrem ergiebigem Dauerregen';
	$Warntyp[]                       	= 'ergiebigem Dauerregen';
	$Warntyp[]                       	= 'Dauerregen';
	$Warntyp[]                       	= 'Extrem starkem Schneefall';
	$Warntyp[]                       	= 'starkem Schneefall';
	$Warntyp[]                       	= 'leichtem Schneefall';
	$Warntyp[]                       	= 'Schneefall';
	$Warntyp[]                       	= 'extrem starken Schneeverwehung';
	$Warntyp[]                       	= 'starken Schneeverwehung';
	$Warntyp[]                       	= 'Schneeverwehung';
	$Warntyp[]                       	= 'Glätte';
	$Warntyp[]                       	= 'Glatteis';
	$Warntyp[]                       	= 'starkem Tauwetter';
	$Warntyp[]                       	= 'Tauwetter';
	$Warntyp[]                       	= 'Nebel';
	$Warntyp[]                       	= 'strengem Frost ';
	$Warntyp[]                       	= 'Frost';
	$Warntyp[]                       	= 'schwerem Gewitter mit extremen Orkanböen';
	$Warntyp[]                       	= 'Schwerem Gewitter';
	$Warntyp[]                       	= 'starkem Gewitter';
	$Warntyp[]                       	= 'Gewitter';
	$Warntyp[]                       	= 'hoher UV-Index';
	$Warntyp[]                       	= 'Hitze';
	$Warntyp[]                       	= 'Hitzewarnung';
	$Warntyp[]                       	= 'Testwarnung';                             // muuuuaaahhhh!
	// +++ !!! letzter Eintrag im Array !!! +++
	$Warntyp[]                       	= 'keinen Warnstatus identifiziert';

// Variablen-Definitionen
	$VarNames[0]         					= array('name'=>'DWD DEFCON Status', 'type'=>1, 'hidden'=>false, 'profil'=>'DWD.Unwetter.Warnstatus', 'position'=> -100, 'default_value'=>6,);
   $VarNames[1]         					= array('name'=>'DWD Unwetterwarnung WFE', 'type'=>3, 'hidden'=>false, 'profil'=>'~HTMLBox', 'position'=> -50, 'default_value'=>'',);
   $VarNames[2]         					= array('name'=>'gültig ab (UNIX-Timestamp)', 'type'=>1, 'hidden'=>true, 'profil'=>'~UnixTimestamp', 'position'=> 0, 'default_value'=>0,);
   $VarNames[3]         					= array('name'=>'gültig bis (UNIX-Timestamp)', 'type'=>1, 'hidden'=>true, 'profil'=>'~UnixTimestamp', 'position'=> 0, 'default_value'=>0,);
   $VarNames[4]         					= array('name'=>'last Infomail (UNIX-Timestamp)', 'type'=>1, 'hidden'=>true, 'profil'=>'~UnixTimestamp', 'position'=> 0, 'default_value'=>time(),);
   $VarNames[5]         					= array('name'=>'UnwetterWarnungAktiv', 'type'=>0, 'hidden'=>true, 'profil'=>'', 'position'=>0, 'default_value'=>true,);
   $VarNames[6]         					= array('name'=>'DWD Warntyp', 'type'=>1, 'hidden'=>true, 'profil'=>'', 'position'=> 0, 'default_value'=>count($Warntyp),);
   $VarNames[7]         					= array('name'=>'DWD Warntyp WFE', 'type'=>3, 'hidden'=>false, 'profil'=>'~TextBox', 'position'=> -90, 'default_value'=>'keinen Warnstatus identifiziert',);
   $VarNames[8]         					= array('name'=>'Mailversand', 'type'=>0, 'hidden'=>true, 'profil'=>'~Switch', 'position'=> 0, 'default_value'=>true,);
   $VarNames[9]         					= array('name'=>'Warnlagebericht', 'type'=>3, 'hidden'=>true, 'profil'=>'', 'position'=> 0, 'default_value'=>'07:00',);
   $VarNames[10]         					= array('name'=>'WFC IDs (PopUp)', 'type'=>3, 'hidden'=>true, 'profil'=>'', 'position'=> 0, 'default_value'=>'',);

// übergeordnete Instanz identifizieren
	$Parent           						= IPS_GetParent($_IPS['SELF']);
	$ParentModul								= IPS_GetObject($Parent);

// UNIX-Timestamp
	$unix                               = time();

// Auto-Update (überprüft, ob alle Objekte im Baum vorhanden sind
	for($i=0;$i<count($VarNames);$i++)
	{
	   if(@IPS_GetObjectIDByName($VarNames[$i]['name'], IPS_GetParent($_IPS['SELF'])) == false)
		{
			$Update 								= true;     // Update-Status auf true setzen
			$i 									= 9999;     // Abbruch der Schleife bei fehlendem Objekt

		}
		else
		{
			$Update 								= false;     // alle Objekte vorhanden -> Update-Status auf false setzen
		}

	}

// DWD Warnmeldungen Auswertelogik
if(($ParentModul['ObjectType'] == 1) && ($ParentModul['ObjectName'] == 'DWD Unwetterwarnungen') && ($Update == false))
{

	// Variablen identifizieren
	   $DEFCON_Status_ID 					= IPS_GetObjectIDByName($VarNames[0]['name'], IPS_GetParent($_IPS['SELF']));
	   $id_text             				= IPS_GetObjectIDByName($VarNames[1]['name'], IPS_GetParent($_IPS['SELF']));
	   $gueltig_ab_ID       				= IPS_GetObjectIDByName($VarNames[2]['name'], IPS_GetParent($_IPS['SELF']));
	   $gueltig_bis_ID      				= IPS_GetObjectIDByName($VarNames[3]['name'], IPS_GetParent($_IPS['SELF']));
	   $last_Infomail_ID    				= IPS_GetObjectIDByName($VarNames[4]['name'], IPS_GetParent($_IPS['SELF']));
	   $id_warn             				= IPS_GetObjectIDByName($VarNames[5]['name'], IPS_GetParent($_IPS['SELF']));
	   $WarnType_ID             			= IPS_GetObjectIDByName($VarNames[6]['name'], IPS_GetParent($_IPS['SELF']));
    	$WarnType_WFE_ID          			= IPS_GetObjectIDByName($VarNames[7]['name'], IPS_GetParent($_IPS['SELF']));
    	$Mailversand_ID          			= IPS_GetObjectIDByName($VarNames[8]['name'], IPS_GetParent($_IPS['SELF']));
    	$wl_timeslot_ID                  = IPS_GetObjectIDByName($VarNames[9]['name'], IPS_GetParent($_IPS['SELF']));
    	$WFC_IDs_ID                  		= IPS_GetObjectIDByName($VarNames[10]['name'], IPS_GetParent($_IPS['SELF']));

	// IPS Werte auslesen
		$DEFCON_LastValue       			= getValueInteger($DEFCON_Status_ID);
		$last_Infomail_val      			= getValueInteger($last_Infomail_ID);
		$gueltig_ab_lastval     			= getValueInteger($gueltig_ab_ID);
		$gueltig_bis_lastval     			= getValueInteger($gueltig_bis_ID);
		$wl_timeslot	                  = getValueString($wl_timeslot_ID);

	// WAN-Status checken
		if($wan_status_ID <0)
		{
			$wan_status_val = true;
		}
		else
		{
	   	$wan_status_val 					= getValueBoolean($wan_status_ID);
	   }


	// Warnmeldung von DWD Webseite auslesen
		if ($wan_status_val == true)											//ausführen nur wenn I-Net verbindung ok
		{

			// warnfarbe auslesen und Warnstatus ermitteln (DEFCON4-0)
			$DWD_URL       					= 'http://www.dwd.de/dyn/app/ws/html/reports/'.$ort.'_warning_de.html';
			$WarnColor 							= file_get_contents($DWD_URL);

			if(strpos($WarnColor,"#")!==false)                                      // Zur Simulation von Warnstatus auf true setzen (Standard = false)
			{                                                                      // und Zeile 206 entkommentieren
				$WarnColor		= substr($WarnColor, strpos($WarnColor,"#"), 7);
				//Debug
					//echo $WarnColor;
					//$WarnColor = $DEFCON[6]['color'];                              // nur zur Simulation von Warnstatus! (Standard: auskommentiert)

				for($i=0;$i<count($DEFCON);$i++)
				{
				   if($WarnColor == $DEFCON[$i]['color'])
				   {
				      $DEFCON_Value  	= $i;
				      setValueInteger($DEFCON_Status_ID, $DEFCON_Value);
				      $DEFCON_Status    = "DEFCON $i (".$DEFCON[$i]['status'].")";
				   }
				}
			}
			else
			{
			   $DEFCON_Value  			= count($DEFCON)-1;
				$WarnColor 					= $DEFCON[$DEFCON_Value]['color'];
				SetValue($DEFCON_Status_ID, $DEFCON_Value);
				$DEFCON_Status    		= "DEFCON $DEFCON_Value (".$DEFCON[$DEFCON_Value]['status'].")";
			}

			// Mail-Priorität festlegen
			if($DEFCON_Value < $mailprio)
			{
			   $mailContent['priority']       = 1;
			}
			else
			{
			   $mailContent['priority']       = 3;
			}

			// URL zeigt auf die detailierte Warnung des gewünschten Ortes (anklicken in der Warnkarte)
			$s = file_get_contents( $DWD_URL.'#WS_ANCHOR_0' );
			$warnung = "";

			if( empty($s) )
			   {  IPS_LogMessage( IPS_GetName($_IPS['SELF']), "can't get url content");   return;  }
		 	$a = explode( "
", $s);
			$w = preg_grep( '#</p>#', $a);

			while ( list ( $key, $val ) = each ( $w ) )
			{
			    $current = formatText( str_replace("</p>","",$val) );
			    if ( substr_count( $current, "Amtliche " )) {
			       $current = '<strong>' . $current . '</strong>';
			    }
			    if ( substr_count( $current, "am:" )) {
			       $current .= '<br />';
			    }
			    // Um Platz zu sparen, die Ausgabe einiger Zeilen unterdrücken
			    switch ($current) {
			        case "DWD / RZ Hamburg ":
			            $warnung .= '---<br />';
			        break;
			        default:
			            $warnung .= $current . '<br />';
			        break;
			    }
			}
		   //echo $s;

		   // Gewittererkennung (Schlagwortsuche im Warnungs-String)
			if(strpos($s,"GEWITTER") != false)
			{
				$Gewitter = true;
			}
			else
			{
				$Gewitter = false;
			}

			// Warntyp auslesen:
			// String auf ersten Teil der Warnmeldung einkürzen
			$string_key0         = 'Amtliche Warnung';
			$string_key1         = '<p>';
			$split               =  explode($string_key1, $s);
			if(isset($split[1]))
			{
				$s1 = preg_replace('/([a-z][a-z-A-Z]*)/', ';', $split[1]);
				$s1                  = str_replace(',',';', $s1);
				$s1	               = explode(';', $s1);
			}

   		//print_r($s1);

			// durchsucht den verbleibenden Quellcode nach Warntyp lt. Definitions-Array $Warntyp
			$Warntyp_int      	= -1;
			$Warntyp_string      = '';

			if(isset($split[1]))
			{
			   $needles          = array('</p>', '<', '/', chr(10), chr(13));
				$split[1]				= trim(str_replace($needles,'', $split[1]));
				setValueString($WarnType_WFE_ID, $split[1]);

				for($s=0;$s<count($s1);$s++)
				{

				   $needles          = array('</p>', '<', '/', chr(10), chr(13));
				   $s1[$s]				= trim(str_replace($needles,'', $s1[$s]));
				   //echo $s1[$s]."
";
					for($w=0;$w<count($Warntyp);$w++)
					{

					   if(($s1[$s] == utf8_encode($Warntyp[$w])) || ($s1[$s] == utf8_encode(strtoupper(toUpper($Warntyp[$w])))))
					   {

						   setValueInteger($WarnType_ID, $w);
						   //echo "ID = ".$Warntyp[$w]."
";
						   $s    					= 9999;                    // Abbruch, wenn 1. Warntyp-Definition im String gefunden wurde
						   $w    					= 9999;                    // Abbruch, wenn 1. Warntyp-Definition im String gefunden wurde
					   }

					}
				}
				// Warntyp konnte nicht identifiziert werden


			}

			else
			{
			   setValueString($WarnType_WFE_ID, $Warntyp[0]);
			   setValueInteger($WarnType_ID, 0);
			}

			// "gültig von" + "gültig bis" ermitteln
				$tmp      				= explode(' ', $warnung);

				if(count($tmp)>1)
				{
					for($i=0;$i<count($tmp);$i++)                   // Timestamp für "gültig ab" ermitteln
					{
					   if(strpos($tmp[$i], 'von:') !== false)
						{
							$S_Key = $i + 2;
					   	$i = 1000;              						// wenn Wert gefunden: Schleifenabbruch
					   }
					}
					$gueltig_ab_val      = @mktime(substr($tmp[$S_Key + 1], 0, 2), substr($tmp[$S_Key + 1], 3, 2), 0, substr($tmp[$S_Key], 3, 2), substr($tmp[$S_Key], 0, 2), substr($tmp[$S_Key], 6, 4));
					setValueInteger($gueltig_ab_ID, $gueltig_ab_val);
					for($i=0;$i<count($tmp);$i++)							// Timestamp für "gültig bis" ermitteln
					{
					   if(strpos($tmp[$i], 'bis:') !== false)
					   {
							$E_Key = $i + 2;
							$i = 1000;              						// wenn Wert gefunden: Schleifenabbruch
					   }
					}
					$gueltig_bis_val     = @mktime( substr($tmp[$E_Key + 1], 0, 2), substr($tmp[$E_Key + 1], 3, 2), 0, substr($tmp[$E_Key], 3, 2), substr($tmp[$E_Key], 0, 2), substr($tmp[$E_Key], 6, 4));
				   setValueInteger($gueltig_bis_ID, $gueltig_bis_val);
			   }
			   else
			   {
			   	$gueltig_ab_val      = 0;
					setValueInteger($gueltig_ab_ID, $gueltig_ab_val);
					$gueltig_bis_val     = 0;
				   setValueInteger($gueltig_bis_ID, $gueltig_bis_val);
				}

			// Debug
				//echo $S_Key."
";
				//echo $E_Key."
";
				//echo date("d.m.Y H:i", $gueltig_ab_val)."
";
				//echo date("d.m.Y H:i", $gueltig_bis_val)."
";
				//print_r($tmp);

			// Warnstatus (ja/nein) setzen
			if (empty($warnung)) {
			   $warnung = "Es sind keine Warnungen für ".$ort_desc." vorhanden.";
			    SetValueBoolean($id_warn, false);
			    $Warnstatus      = false;
			} else {
			    SetValueBoolean($id_warn, true);
			    $Warnstatus      = true;
			}

			// Warnlagebericht
			if($region != '')
			{
				$Warnlage_link       = 'http://www.wettergefahren.de/dyn/app/ws/html/reports/'.$region.'_report_de.html';
				$WL_s 					= file_get_contents($Warnlage_link);
				$WL                  = explode("
",$WL_s);
				$WL_Title            = preg_replace("/[^a-zA-Z0-9 üöäß-]/","", utf8_decode(strip_tags($WL[20])));
				$WL_Body_array       = array_slice(explode("<p>",$WL_s), 2);
				$WL_Body_array       = array_slice(explode("<p>",$WL_s), 2, count($WL_Body_array)-2);
				//print_r($WL_Body_array);

				$WL_Body          = '';
				for($i=0;$i<count($WL_Body_array);$i++)
				{
				   if($i == 2) $WL_Body          .= '<br><br>';
				   $WL_Body          .= utf8_decode(str_replace('</p>', '', $WL_Body_array[$i]));
				   if($i == count($WL_Body_array)-2) $WL_Body          .= '<br>';
				}
			}

// Definition HTML-Content
$HTML_Header ='
<html>
<head>
	<style type="text/css" media="screen"> body { background-color:#efefef;}
  </style>
</head>';
$HTML_Table ='
<body scroll="no">
<table
 style="text-align: left; margin-left: auto; margin-right: auto; background-color: rgb(220, 220, 220); width: 750px; font-family: Arial;"
 border="0" cellpadding="2" cellspacing="2">
  <tbody>
    <tr>
      <td style="width: 20px; color: #333333; background-color: '.$WarnColor.';" colspan="1" rowspan="6"></td>
      <td style="width: 716px; color: #333333; background-color: #E2E9FD; text-align: left; font-weight: bold;" colspan="3">'.$DEFCON_Status.'</td>
    </tr>
    <tr>
      <td style="width: 716px; color: #333333; background-color: #E2E9FD; text-align: center;" colspan="3"><img src="http://www.wettergefahren.de/dyn/app/ws/maps/'.$ort.'_timeline.png?'.$unix.'"></img></td>
    </tr>';

// Definition 3. RADAR-Pic: Blitzkarte DE (Alternative)
$wo_Blitzkarte ='
				<a
				 href="http://www.wetteronline.de/blitze/Deutschland.htm" target="_blank">
				 <img  style="width: 222px; height: 225px; alt="Blitzkarte DE"
						src="http://www.wetteronline.de/cgi-bin/img2www?URL=blitze/vermarktung/p_blitze_map/www/DL.jpeg&LANG=de?'.$unix.'" width="222" height="225"></a></img></td>';

// Definition 1. RADAR-Pic: Regenradar DE
$nr_Regenradar ='
				<a
				 href="http://www.niederschlagsradar.de" target="_blank">
				 <img  style="width: 222px; height: 225px; alt="Niederschlagsradar DE"
						src="http://www.niederschlagsradar.de/image.ashx?type=blitz&lightning?'.$unix.'" width="222" height="225"></a></img></td>';

// HTML-Fragment "Radar" zusammenbauen (abhängig vom Gewitterstatus)
if(($Blitzkarte) && ($Gewitter))
{
$HTML_Radar ='
   	<tr>
      	<td style="width: 293px; color: #333333; background-color: #E2E9FD; text-align: right;">
			'.$nr_Regenradar.'
      	<td style="width: 155px; color: #333333; background-color: #E2E9FD; text-align: center;">
			<a
				 href="http://www.wettergefahren.de/app/ws/index.jsp?view=flash&land_code=DE&height=x&warn_type=0)" target="_blank">
				 <img style="width: 159px; height: 225px; alt="DWD Unwetterkarte"
				 src="http://www.wettergefahren.de/dyn/app/ws/maps/DE_x_x_0.gif?'.$unix.'" width= "159" height= "225"></a></img></td>
			<td style="width: 305px; color: #333333; background-color: #E2E9FD; text-align: left;">
			'.$wo_Blitzkarte.'
		</tr>
';
}
else
{
$HTML_Radar ='
   	<tr>
      	<td style="width: 216px; color: #333333; background-color: #E2E9FD; text-align: center;">
			'.$nr_Regenradar.'
      	<td style="width: 155px; color: #333333; background-color: #E2E9FD; text-align: center;">
			<a
				 href="http://www.wettergefahren.de/app/ws/index.jsp?view=flash&land_code=DE&height=x&warn_type=0" target="_blank">
				 <img style="width: 159px; height: 225px; alt="DWD Unwetterkarte"
				 src="http://www.wettergefahren.de/dyn/app/ws/maps/DE_x_x_0.gif?'.$unix.'" width= "159" height= "225"></a></img></td>
			<td style="width: 305px; color: #333333; background-color: #E2E9FD; text-align: center;">
			<a
				 href="http://www.sat24.com/de" target="_blank">
				 <img style="width: 318px; height: 225px; alt="Satellitenbild DE Sat24"
				 src="http://www.sat24.com/image.ashx?country=de&type=loop&sat=vis?'.$unix.'" width= "318" height= "225"></a></img></td>
		</tr>';
}




// Warnlagebericht zusammen dengeln, wenn keine DEFCON-Warnungen aktiv sind bzw. wenn der Timeslot für Warnlagebericht erreicht ist
	$te      = mktime((int)substr($wl_timeslot, 0, 2), (int)substr($wl_timeslot, 3, 2), 0, date("m", time()),  date("d", time()),  date("Y", time()));
	$ts      = $te - (60*5);

	if(($DEFCON_Value == count($DEFCON)-1) && ($region != '') || ((time() > $ts) && (time() < $te) && ($region != '')))
	{
	   $HTML_Warnings ='';
	   $HTML_WarnLTitle ='
	   <tr>
	      <td style="width: 716px; color: #333333; background-color: #E2E9FD; font-family: Arial; font-weight: bold; font-size: 12pt;" colspan="3">'.$WL_Title.'</td>
		</tr>';
		$HTML_WarnLBody ='
	   <tr>
	      <td style="width: 716px; color: #333333; background-color: #E2E9FD; font-family: Arial;  font-size: 10pt;" colspan="3">'.$WL_Body.'</td>
		</tr>';
		$HTML_WarnLage = $HTML_WarnLTitle.$HTML_WarnLBody;
	}
	else
	{
	   $HTML_Warnings ='
			<tr>
	      <td style="width: 716px; color: #333333; background-color: #E2E9FD; font-family: Arial; font-size: 10pt;" colspan="3">'.$warnung.'</td>
			</tr>';
	   $HTML_WarnLage = '';

	}

$HTML_Footer ='

  </tbody>
</table>
</body>
</html>
';


			// Mail-Versand
			$Mailversand       	= false;                              									// Default-Mailversand = false
			$Aenderung         	= '';                                                          // Mail-Subject-Zusatz (bei Änderung Gültig bis)
			$TimeDelta        	= round(((time() - $last_Infomail_val)/60), 1);     				// Delta zwischen jetzt und letztem Mailversand in Minuten


				if(($DEFCON_LastValue == 6) && ($DEFCON_Value < 6))     										// Wechsel von DEFCON 6 auf jeden anderen Status
				{
				   echo "#100 DEFCON $DEFCON_Value, neue Unwetterwarnung(letzte Mail vor $TimeDelta Min)
";
				   if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#100 DEFCON $DEFCON_Value, neue Unwetterwarnung(letzte Mail vor $TimeDelta Min)");
				   $Mailversand       	= true;
				   $Aenderung         	= ', erstmalige Warnmeldung';
				}
				elseif (($DEFCON_LastValue < 6) && ($DEFCON_LastValue == $DEFCON_Value) && ($gueltig_bis_lastval == $gueltig_bis_val))        		// Warnstatus ist kleiner als DEFCON 6 und ändert sich nicht
				{
				   if(($DEFCON_Value == 2) && ($TimeDelta > 55))         									// DEFCON 2: Mailversand alle 60 Min
				   {
			         echo "#200 DEFCON $DEFCON_Value 60Min Intervall: Mailintervall erreicht(letzte Mail vor $TimeDelta Min)
";
			         if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#200 DEFCON $DEFCON_Value 60Min Intervall: Mailintervall erreicht (letzte Mail vor $TimeDelta Min)");
			         $Mailversand       = true;
			         // Mailsubject
			         $Aenderung         	= ', Warnwiederholung';                   // Wiederholung Warnmeldung gemäss Warnintervall

				   }
				   elseif(($DEFCON_Value < 2) && ($TimeDelta > 10))        																// DEFCON 1-0: Mailversand alle 15 Min
				   {
				      echo "#210 DEFCON $DEFCON_Value 15Min Intervall: Mailintervall erreicht(letzte Mail vor $TimeDelta Min)
";
				      if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#210 DEFCON $DEFCON_Value 15Min Intervall: Mailintervall erreicht (letzte Mail vor $TimeDelta Min)");
			         $Mailversand       = true;
			         // Mailsubject
			         $Aenderung         	= ', Warnwiederholung';                   // Wiederholung Warnmeldung gemäss Warnintervall
				   }
				   else
				   {
				   echo "#299 DEFCON $DEFCON_Value: Mailintervall nicht erreicht(letzte Mail vor $TimeDelta Min)
";
				   if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#299 DEFCON $DEFCON_Value: Mailintervall nicht erreicht(letzte Mail vor $TimeDelta Min)");
				   }
				}
				elseif (($DEFCON_LastValue < 6) && ($DEFCON_LastValue != $DEFCON_Value))            // Warnstatus ist kleiner als DEFCON 6 und ändert sich
				{
					echo "#300 DEFCON $DEFCON_Value, Statusänderung: Mail wird versand (letzte Mail vor $TimeDelta Min)
";
					if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#300 DEFCON $DEFCON_Value, Statusänderung: Mail wird versand (letzte Mail vor $TimeDelta Min)");
				   $Mailversand       = true;
				   $Aenderung         	= ', Änderung Warnlevel (von DEFCON '.$DEFCON_LastValue.' auf DEFCON '.$DEFCON_Value.')';
				}
				elseif(($DEFCON_LastValue < 6) && ($DEFCON_Value == 6))        							// Wechsel auf DEFCON 6 von jedem anderen Status (Entwarnung versenden)
				{
					echo "#400 DEFCON $DEFCON_Value Entwarnung(letzte Mail vor $TimeDelta Min)
";
					if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#400 DEFCON $DEFCON_Value Entwarnung(letzte Mail vor $TimeDelta Min)");
			      $Mailversand       = true;
			      $Aenderung         	= ', aufgehoben: DEFCON '.$DEFCON_LastValue;
				}
				elseif(($gueltig_bis_lastval != $gueltig_bis_val) &&  ($DEFCON_LastValue == $DEFCON_Value))                                 	// bei Änderung von "gültig bis" (Warnung wird verlängert oder verkürzt)
				{
					echo "#500 DEFCON $DEFCON_Value Änderung Gültigkeit(letzte Mail vor $TimeDelta Min)
";
					if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#500 DEFCON $DEFCON_Value Änderung Gültigkeit(letzte Mail vor $TimeDelta Min)");
			      $Mailversand       	= true;
			      $Aenderung         	= ', Änderung Warndauer';
				}
				else
				{
				   echo "#998 DEFCON $DEFCON_Value: keine Statusänderung(letzte Mail vor $TimeDelta Min)
";
				   if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#998 DEFCON $DEFCON_Value: keine Statusänderung(letzte Mail vor $TimeDelta Min)");
				}

			//Versandstatus Warnlagebericht (1x täglich)
			if(($region !='') && ($wl_timeslot != ''))
			{

				// Wenn Timeslot erreicht, Variablen für Warnlagebericht-Versand ändern
				if((time() > $ts) && (time() < $te))
				{
					$Mailversand 		= true;
					$subject_praefix  = '';
					$DEFCON_Status 	= 'Warnlagebericht';
					$Aenderung     	= '';

					echo "#600 IPS Unwetterwarnung: Timeslot Warnlagebericht erreicht
";
					if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#600 IPS Unwetterwarnung: Timeslot Warnlagebericht erreicht");
				}
			}

			// Mailversand & WFE-Popup via PHP-mailer (als HTML-Mail)
			if (($Mailversand) && (getValueBoolean($Mailversand_ID)))
			{
				// Timestamp Mailversand setzen
				SetValueInteger($last_Infomail_ID, time());

				//print_r($mailContent);
				$mailContent["htmlsubject"]			= $subject_praefix.$DEFCON_Status.$Aenderung ;
				if(( $DEFCON_Value <= $Mail_Radar) && ($Mail_Radar >= 0))
				{
				   $Mail_body   	= $HTML_Header.$HTML_Table.$HTML_Radar.$HTML_Warnings.$HTML_WarnLage.$HTML_Footer;
				}
				else
				{
				   $Mail_body  	= $HTML_Header.$HTML_Table.$HTML_Warnings.$HTML_WarnLage.$HTML_Footer;
				}
	         $mailContent["htmlbody"]            = $Mail_body;

	         // Übergabe Mailcontent für n Empfänger an php_Mail_connector Script
	         if (IPS_SemaphoreEnter('php_mailer', 3000))
	         {
		         for($m=0;$m<count($mail_to);$m++)
		         {
		            if(($mail_to[$m]['to'] != '') && ($mail_to[$m]['to_name'] != ''))             // Prüfung, ob Empfänger-Angaben vollständig
		            {
			            $mailContent['to']											= $mail_to[$m]['to'];
							$mailContent['tname']										= $mail_to[$m]['to_name'];
							IPS_RunScriptEx($php_mailer_scriptID, $mailContent);
						}
					}
					echo "#900 IPS Unwetterwarnung: Mail wird versand (letzte Mail vor $TimeDelta Min)
";
					if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#900 IPS Unwetterwarnung: Mail wird versand (letzte Mail vor $TimeDelta Min)");
               IPS_SemaphoreLeave('php_mailer');
				}
				else
				{
					echo "#996 IPS Unwetterwarnung: Fehler im Mailversand! PHP-Mailer in Benutzung
";
					if(function_exists("IPSLogger_Err")) IPSLogger_Err(c_LogId, "#996 IPS Unwetterwarnung: Fehler im Mailversand! PHP-Mailer in Benutzung");
				}
			}
			elseif((!getValueBoolean($Mailversand_ID)) && ($Mailversand))           // echo nur dann, wenn DEFCON-Status einen Versand vorsieht, Mailstatus-ID aber "false" ist
			{
				echo "#999 IPS Unwetterwarnung: Mail wird NICHT versand (Mail deaktiviert, letzte Mail vor $TimeDelta Min)
";
				if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#999 IPS Unwetterwarnung: Mail wird NICHT versand (Mail deaktiviert, letzte Mail vor $TimeDelta Min)");
			}


			// Content für WFE zusammenstellen
			if(( $DEFCON_Value <= $WFE_Radar) && ($WFE_Radar >= 0))
			{
			   $WFE_Content   	= ($HTML_Table.$HTML_Radar.$HTML_Warnings.$HTML_WarnLage.$HTML_Footer);
			}
			else
			{
			   $WFE_Content   	= ($HTML_Table.$HTML_Warnings.$HTML_WarnLage.$HTML_Footer);
			}
			// ablegen der Warnmeldung als html-Datei .....
				$Script_ID        	= $_IPS['SELF'];
				$path 					= IPS_GetKernelDir().'webfront\user	mp' ;
				$Filename 				= $path.'\DWD_Unwetter_'.$ort.'_'.$Script_ID.'.html';

         // Ordner anlegen, wenn nicht vorhanden

				if (!is_dir($path))
				mkdir ($path  , 0777, true);

			// schreiben der html-Datei
				$handle 					= fopen($Filename,"w");
				fwrite($handle, $WFE_Content);
				fclose($handle);

			// Schreiben der IPS String-Variable
				SetValueString($id_text, $WFE_Content);

			// WFE-PopUps abschicken (wenn konfiguriert)
			if(($Mailversand) && (getValueString($WFC_IDs_ID) != ''))
			{
			   // Timestamp Mailversand setzen
				SetValueInteger($last_Infomail_ID, time());
				$WFC_Array        = explode(";",getValueString($WFC_IDs_ID));
				for($i=0;$i<count($WFC_Array);$i++)
				{
				   // prüfen, ob WFC-ID ein WF-Konfigurator ist
				   if(@IPS_GetInstance((int)$WFC_Array[$i])['ModuleInfo']['ModuleID'] == '{3565B1F2-8F7B-4311-A4B6-1BF1D868F39E}')
				   {
						WFC_SendPopup((int)$WFC_Array[$i], "IPS Unwetter-Warnstatus: DEFCON $DEFCON_Value", $WFE_Content);
					}
					elseif(($WFC_Array[$i] !='') || ($WFC_Array[$i] !=0))
					{
					   echo "#997 IPS Unwetterwarnung: Fehler in Script #".$_IPS['SELF']."! WFC-PopUp Nr.#".$i+1 ." ist keine WFC-Modul ID!
";
						if(function_exists("IPSLogger_Err")) IPSLogger_Err(c_LogId, "#997 IPS Unwetterwarnung: Fehler in Script #".$_IPS['SELF']."! WFC-PopUp Nr.#".$i+1 ." ist keine WFC-Modul ID!");
					}
				}
			}
	}
	else
	{
	   if(function_exists("IPSLogger_Err")) IPSLogger_Err(c_LogId, "Script #".$_IPS['SELF']." Unwetterwarnung: fehlerhafte WAN-Connection");
	}


}

#######################################################################################################################################
// Install-Routinen
elseif($_IPS['SENDER'] == 'Execute')
{
	// Profil DWD.DEFCON anlegen
	if (IPS_VariableProfileExists("DWD.Unwetter.Warnstatus"))  IPS_DeleteVariableProfile("DWD.Unwetter.Warnstatus");
	IPS_CreateVariableProfile("DWD.Unwetter.Warnstatus", 1);
	IPS_SetVariableProfileValues("DWD.Unwetter.Warnstatus", 0, 7, 1); //PName, Minimal, Maximal, Schrittweite
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 0, "DEFCON 0", "", 11403362); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 1, "DEFCON 1", "", 16711680); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 2, "DEFCON 2", "", 16422144); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 3, "DEFCON 3", "", 16776960); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 4, "DEFCON 4", "", 13408767); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 5, "DEFCON 5", "", 16711935); //P-Name, Value, Assotiation, Icon, Color
	IPS_SetVariableProfileAssociation("DWD.Unwetter.Warnstatus", 6, "DEFCON 6", "", 6534143); //P-Name, Value, Assotiation, Icon, Color

	if((($ParentModul['ObjectType'] != 1) && ($ParentModul['ObjectName'] != 'DWD Unwetterwarnungen')) || ($Update == true))
	{
	   if(($ParentModul['ObjectType'] != 1) && ($ParentModul['ObjectName'] != 'DWD Unwetterwarnungen'))
	   {
		   // Dummy-Instanz anlegen und Script drunterhängen
	      $ModulID				= IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
	      IPS_SetName($ModulID, 'DWD Unwetterwarnungen');
	      IPS_SetParent($ModulID, $Parent);
	      IPS_SetParent($_IPS['SELF'], $ModulID);
	      IPS_SetHidden($_IPS['SELF'], true);
	      IPS_ApplyChanges($ModulID);
      }
      // Variablen anlegen - wenn nicht vorhanden
      // 1. vorhandene Vars auslesen
      $ModulID					= IPS_GetParent($_IPS['SELF']);
      for($i=0;$i<count($VarNames);$i++)
		{
		   if(@IPS_GetObjectIDByName($VarNames[$i]['name'], IPS_GetParent($_IPS['SELF'])) == false)
		   {
		   $VarID				= IPS_CreateVariable($VarNames[$i]['type']);
		   IPS_SetName($VarID, $VarNames[$i]['name']);
		   IPS_SetHidden($VarID, $VarNames[$i]['hidden']);
		   IPS_SetPosition($VarID, $VarNames[$i]['position']);
		   IPS_SetParent($VarID, $ModulID);
		   SetValue($VarID, $VarNames[$i]['default_value']);
			}
			// Profile zuweisen
			$VarID				= IPS_GetObjectIDByName($VarNames[$i]['name'], IPS_GetParent($_IPS['SELF']));
			IPS_SetVariableCustomProfile($VarID, $VarNames[$i]['profil']);
		}

	}

	 echo "#9999 IPS Unwetterwarnung: Install ready (neue Objekte angelegt)
";
	 if(function_exists("IPSLogger_Dbg")) IPSLogger_Dbg(c_LogId, "#9999 IPS Unwetterwarnung: Install ready (neue Objekte angelegt)");

}
else
{
	echo "Script #".$_IPS['SELF']." Unwetterwarnung: ohne Ergebnis gelaufen (keine Objekte gefunden/Objekte fehlerhaft
";
	if(function_exists("IPSLogger_Err")) IPSLogger_Err(c_LogId, "Script #".$_IPS['SELF']." Unwetterwarnung: ohne Ergebnis gelaufen (keine Objekte gefunden/Objekte fehlerhaft)");
}


// Timer-Management
	 IPS_SetScriptTimer($_IPS['SELF'], 5*60);

// Textformatierung
	function formatText($text)
	{
	    $text = html_entity_decode($text);
	    $text = str_replace("ö", "ö", $text);
	    $text = str_replace("Ãœ", "Ü", $text);
	    $text = str_replace("ü", "ü", $text);
	    $text = str_replace("ä", "ä", $text);
	    $text = str_replace("ß", "ß", $text);
	    $text = str_replace("&ndash;", "-", $text);
	    $text = str_replace('&#039;', "`", $text);
	    $text = str_replace("&", "&", $text);
	    $text = str_replace("Ö", "Ö", $text);
	    $text = str_replace("„", "\"", $text);
	    $text = str_replace("“", "\"", $text);
	    $text = str_replace("–", "-", $text);
	    $text = str_replace("„", "\"", $text);
	    $text = str_replace("“", "\"", $text);
	    $text = str_replace("„", "\"", $text);
	    $text = str_replace("–", "-", $text);
	    $text = str_replace("–", "-", $text);
	    $text = str_replace("Ä", "Ä", $text);
	    return $text;
	}
// Sonderbuchstaben in Großbuchstaben
	function toUpper($text)
	{
	    $text = html_entity_decode($text);
	    $text = str_replace("ü", "Ü", $text);
	    $text = str_replace("ö", "Ö", $text);
	    $text = str_replace("ä", "Ä", $text);
	    return $text;
	}
?&gt;


anbei ein Beispiel, wie man selbst aus Unwetterwarnungen eine Statistik-Tapete basteln kann (noch DRAFT!):

der DEFCON-Status wird in der IPS-DB mitgeloggt, daraus lassen sich die Anzahl der Warntage pro Warnlevel und Zeitraum ermitteln (DEFCON x Σ Warntage).

weiterhin habe ich die Kennzahl „Warnsumme“ kreiert: ein Produkt aus Warnlevel und Dauer. So kann man Periode für Periode vergleichen, ob die Unwetter zunehmen oder nicht.

Momentan -mangels Daten - noch nicht so spannend, aber nach 10-20 Jahren sieht das schon anders aus :smiley:

Super, gefällt mir gut :slight_smile:

Super Erweiterung.

DANKE.

Gruss
B71

Wirklich ein tolles Tool!

Habe es am Sonntag installiert und es lief auf Anhieb problemlos.

Die ersten sommertypischen Warnungen vor Starkregen :smiley: sind für unseren Kreis auch bereits eingetroffen. In den nächsten Tagen versuche ich mal PROWL einzubinden. (Wenn es der Familienrat zulässt:D)

Gruß!

Grisu

hi Grisu,
prima wenns läuft.
Zu Prowl: ich gehöre nicht der i-Fraktion an und kann wenig dazu sagen. Da das Script aber alle relevanten Daten per Array an das PHP-Mailer Script übergibt, müsste Gleiches auch für Prowl möglich sein. Ich müsste dann halt eine weitere Schnittstelle für ein Prowl-Script bereit stellen.
Melde Dich einfach, wenn Du soweit bist, dann schauen wir mal, was geht :wink:

Hallo Erklärbär,

da hätte ich auch Interesse dran

dann wirst Du Grisu nerven müssen :smiley:
wie gesagt: wen ich die entsprechenden Anforderungen hab, kann ich schauen, ob ich die entsprechende Schnittstelle einbauen kann (sehe ich aber kein Problem drin)

So hatte ich das doch auch verstanden :smiley: