DWD Unwetterwarnung (WFE, Mail und html)

Und jetzt auch mit Screenshot und mit Datei.:rolleyes:

DWD_Prowlversand.TXT (6.92 KB)

Grisu ich habe dein Script installiert und es lief problemlos, herzlichen Dank gute Arbeit.

Mini hinweis für Prowl Newbies wie mich : Vielleicht ist es eindeutiger wenn Du in der Installations Anleitung „ID des Dummy Moduls“ schreibst da die jeweiligen Nutzer vielleicht eigene Namen vergeben haben (ging mir so) und anstelle von „Magic Key“ würde ich lieber die Bezeichnung auf der Webseite „API Key“ verwenden.
Die PHP extension findet man im Posting 26 http://www.ip-symcon.de/forum/f53/iphone-push-notification-ip-symcon-9322/index3.html
Die Prowl Webseite zum einrichten des Kontos und zur Erstellung des API Keys findet man unter Prowl - iOS Push Notifications

Danke für das Feedback BestEx und die Nachreichung der unklaren bzw. fehlenden Informationen.

Viel Spass damit!

Grisu

Ich habe bei der e-mail Funktion folgenden Fehler:


[27-Oct-2012 14:40:56 UTC] PHP Fatal error:  Call to undefined method SMTP::getError() in C:\IPS\scripts\class.phpmailer.php on line 1910

Hat jemand eine Idee?

Folgende Dinge probiert:

[ul]
[li]email per google mail und per t-online versucht zu senden[/li][li]firewall ausgeschalten[/li][li]Dienst neu gestartet[/li][/ul]

Also ich habe es gerade via T-Online getestet und es hat funktioniert.

Thomas,

was steht denn bei Dir in der Zeile 1910 in der class.phpmailer.php?

$lasterror = $this->smtp->getError();

Ich bin scheinbar zu doof dazu. Habe das Skript nach Anleitung in IPS eingebaut bekomme aber immer wenn ich das mailer_connector skript ausführe diverse Fehlermeldungen

Notice: Undefined index: from in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 20

Notice: Undefined index: fname in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 21

Notice: Undefined index: priority in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 22

Notice: Undefined index: htmlsubject in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 23

Notice: Undefined index: htmlhead in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 24

Notice: Undefined index: htmlbody in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 24

Notice: Undefined index: htmlend in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 24

Notice: Undefined index: to in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 26

Notice: Undefined index: tname in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 26
Invalid address:
Notice: Undefined index: reply in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 27

Notice: Undefined index: from in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 27
Invalid address:
Notice: Undefined index: ei_path in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 28

Notice: Undefined index: ei_cid in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 28

Notice: Undefined index: ei_name in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 28

Notice: Undefined index: ei_encoding in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 28

Notice: Undefined index: ei_type in C:\IP-Symcon\scripts\php_mailer_connector.ips.php on line 28
You must provide at least one recipient email address.
Script #33397 Die Mail konnte nicht verschickt werden!>Mailer Error: You must provide at least one recipient email address.

Die Dateien aus dem PHP-Mailer 5.1 sind vorhanden aber scheinbar fehlt mir noch was anderes…

Kann mir jmd sagen was ich hier noch machen muss?

ja, ich glaube, ich kann das :smiley:

Der Mailer Connector ist nicht dazu gedacht, manuell aufgerufen zu werden. Er erwartet ein Array mit Empfängerdaten, mailcontent usw. Er wird quasi nur aus dem DWD-Unwetterscript aufgerufen.

Erstmal Danke für den Hinweis!

Leider klappt das trotzdem nicht. Der versendet keine Mail, egal was ich teste :frowning:

Was mache ich falsch?

spontan würde ich sagen: das Unwetterscript versucht einen Mailversand zu initialisieren. Entweder kommt das beim Mailer-Connector nicht an (Script-ID des mailer-Connectors im Config-Bereich des Unwetterscripts angegeben?)
oder es fehlen noch Config-Daten im mailer-Connector und/oder im Config-Bereich des DWD-Unwetterscripts (Mail-Absender-Adresse + Mailempfänger-Adresse angegeben?)

Das wars :slight_smile:

Hatte die falsche ID vom Mailer-Skript in die Konfig eingetragen

Jetzt läufts einwandfrei :slight_smile:

Danke!

ja prima, freut mich. Und danke für die Rückmeldung :slight_smile:

Hallo Rakentenschnecke,

ich nutze ebenfalls dein Script seit längerem und finde es spitze ! :wink: Vielen Dank.

Eine Frage hätte ich: Kann man es irgendwie so parametrieren, dass er nicht soooo viele Mails versendet ?
Ich habe jetzt von gestern Abend bis heute morgen - über Nacht quasi - ca. 45 Mails bekommen, da hier eine Schnee und Kältewarnung der Stufe 1 vorlag …

Soweit so gut, aber mir würde es reichen, eine Mail zu bekommen wenn eine Änderung des Status (z. B. von 3 auf 2 o.ä.) auftritt.

Ich habe mir jetzt das Script angeschaut und mir ist schon so ungefähr klar :wink: wo das getriggert wird, würde aber ungern selbst Hand anlegen, da ich befürchte dass es hinterher nicht mehr tut :wink:

Ich dachte da so an entweder ein Flag „Nur Mail wenn Statusänderung“ oder sonst irgendwie die Mailversandzeiten parametrierbar zu machen… :wink:

Oder ein kleiner Hinweis, wie ich selbst daran schraube…

Merci soweit…

Oli

Hi Oli,

bei Stufe 1 wird alle 15min versand. Die Intervalle sind pro Warnlevel im Code hart verdrahtet. Du kannst aber z.B. das Intervall für Stufe 1 (etwa Zeile 657) verändern:

nur wär ich damit vorsichtig: im Sommer werden in der Regel kurze Warnintervalle erwartet, da es sich hier meist um sehr kurzfristige Events handelt.

hier (Wechsel Warnstatus):

Soweit so gut, aber mir würde es reichen, eine Mail zu bekommen wenn eine Änderung des Status (z. B. von 3 auf 2 o.ä.) auftritt.

wird zusätzlich immer eine Mail versand.

Hi,

habe ab und zu Probleme mit dem Skript. Dann treten folgende Fehler auf:



Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 370

Notice:  Undefined variable: DEFCON_Status in C:\IP-Symcon\scripts\46357.ips.php on line 560

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 623

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 661

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 663
#100 DEFCON , neue Unwetterwarnung(letzte Mail vor 1.9 Min)

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 664

Notice:  Undefined variable: DEFCON_Status in C:\IP-Symcon\scripts\46357.ips.php on line 744

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 745
#900 IPS Unwetterwarnung: Mail wird versand (letzte Mail vor 1.9 Min)

Notice:  Undefined variable: DEFCON_Value in C:\IP-Symcon\scripts\46357.ips.php on line 785

Mein Skript:


<?

########################################################################################################
/*
 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 											= 'HDH';          // DWD-Key für Ort
	$ort_desc 									= 'Heidenheim';      // 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                             = '';           // 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;

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

	// PHP-Mailer: Empfänger (beliebig erweiterbar)
	$mail_to[0]['to']							= 'jennifer@xxx.xx';     // Mailadresse Mailempfänger
	$mail_to[0]['to_name']					= 'Jennifer';                       // Name Mailempfänger
	$mail_to[1]['to']							= 'bernd@xxx.xx';     											// Mailadresse Mailempfänger
	$mail_to[1]['to_name']					= 'Bernd';                       					// 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;


Gruß und Danke
Ralf

Hi Ralf,

ich denke, das hat mit der geänderten Vorwarnung seitens des DWD vor einigen Wochen zu tun. Das führt vermutlich auch dazu, dass beim aktiven Vorwarnstatus alle 5 Minuten eine Mail versand wird. Ich schau mir das morgen mal genauer an

Hallo Raketenschnecke!

Ich habe bei mir die Warnwiederholung bei Warnstufe 1 jetzt in der Zeile auch auf >55 gesetzt - da Du ja als Hamburger gestern auch den Eisregen mitbekommen haben solltest, war das schon ein bißchen „too much“ (der Eisregen selbst aber insbesondere auch das Mailvolumen)…

Vielleicht kannst Du es ja irgendwie im Webfront konfigurierbar machen? Du kannst so schön mit editierbaren Tabellen umgehen…:wink: (ich meine hier Deinen RS DB Analyzer, hat auch bei mir „aufgeräumt“ und die Arbeit in den Tabellen ist eine neue „Dimension“ IPS-Webfront)

Auf jeden Fall eine super Skript!

Joachim

Bei mir das Gleiche. Ich habe aber diese Einstellung nicht gefunden. Ist das gemeint?

Zeile 685

            elseif(($DEFCON_Value < 2) && ($TimeDelta > 10))     


PS. Danke an Raketenschnecke für das tolle Script, das bei mir seit Monaten problemlos läuft.

Wo finde ich denn den DWD-Key für meinen Ort… :confused: