Bin zwar nicht der Profi, aber ich habe mal aus zwei eins gemacht.
Aus Ralf’s Skript (siehe) und Raketenschecke’s Unwetterwarung (siehe) habe ich mal was zusammengebastelt. Ist garantiert noch Verbesserungswürdig, doch für mich passt es erstmal so. Vielleicht kann der ein oder andere es noch verbessern und hier zur Verfügung stellen.
<?
########################################################################################################
/*
basierend auf Quellscript von RALF und Raketenschnecke 04.07.2012 zusammengeschustert von jnicke 14.11.2015
IPS-Forum (Doku): [DWD Unwetterwarnung (WFE, Mail und html)](http://www.ip-symcon.de/forum/f53/dwd-unwetterwarnung-wfe-mail-html-18782/#post166583)
Quelle: [DWD Wetterdaten (FTP)](https://www.symcon.de/forum/threads/29129-DWD-Wetterdaten-(FTP)) (DWD Wetterdaten (FTP) 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.
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
*/
########################################################################################################
define ('dwd_kennung', 'xyz');
define ('dwd_passwort', 'xyz');
// +++++++++++++++++++++++ Konfig +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Location für Warnmeldungen
// den LocationCode ($ort) bitte aus dem Link zur regionale Wetterwarnung entnehmen (Beispiel: [Deutscher Wetterdienst - Error 404 - Not Found](http://www.wettergefahren.de/dyn/app/ws/html/reports/HHX_warning_de.html) => HHX für Hamburg)
$ort = 'DDX'; // DWD-Key für Ort DDX
$ort_desc = 'Dresden'; // Freitext für Ortsname
$lokal = "Dresden";
// Warnlagebericht (Regionen)
// den Regional-Code bitte aus dem Link zum regionalen Warnlagebericht entnehmen
// (Beispiel: [Deutscher Wetterdienst - Error 404 - Not Found](http://www.wettergefahren.de/dyn/app/ws/html/reports/MS_report_de.html) => "MS" für Bayern)
$region = 'LZ'; // Regional-Code für Warnlageberichte eintragen (leer [''] => Deaktivierung der Warnlageberichte)
$region1 = 'sachsen';
// eigene Variablen deklarieren
$wan_status_ID = -1 ; //Status-ID der I-Net-Verbindung, -1 wenn keine Variable verfügbar ist
// $php_mailer_scriptID = 17714 /*[Scripte\Wetter_Klima_Umwelt\Unwetterwarnungen DWD inaktiv\php_mailer_connector]*/;
// 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
//$DEFCON_Status = '';
$DEFCON_Value = '';
$warnung = "";
// Doku zu den bereitgestellten Daten unter
// ######## ftp://gds15894:cQKbSJNR@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/legend_warnings.pdf
// Die ausgebende Stelle (hier "LZ") entsprechend anpassen
$quelle = 'ftp://'.dwd_kennung.':'.dwd_passwort.'@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/LZ/';
$url = 'ftp://'.dwd_kennung.':'.dwd_passwort.'@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/LZ';
// Folgendes Muster entsprechend anpassen
$pattern = 'WWLZ*_DDX*'; // HZH
// 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");
}
// DWD Warnstatus (Farbcodierung)
$DEFCON[6]['color'] = '#66B5FF'; // blau: keine Warnungen vorher 64B4FF
$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'=>true, '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'=>false,);
$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'=>'',);
$VarNames[11] = array('name'=>'DWD Meldung WFE', 'type'=>3, 'hidden'=>false, 'profil'=>'~TextBox', 'position'=> -90, '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']));
$DWD_WarnText_ID_ID = IPS_GetObjectIDByName($VarNames[11]['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);
}
// Dateinamen im Quellpfad gemäss Pattern in ein Array laden, (, 1) = Sortierung rückwärts
$array = @scandir($quelle.$pattern, 1);
// arry[0] = nur die letzte Datei laden
//$s = file_get_contents( 'ftp://'.dwd_kennung.':'.dwd_passwort.'@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/LZ/'.$array[0] );
//#################
//if(file_exists( 'ftp://'.dwd_kennung.':'.dwd_passwort.'@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/LZ/WWLZ*_HZH*_*' )===false)
if(@scandir($quelle.$pattern)===false)
{ $warnung = '';
$s = '
WWxxxx xxxx 000000
keine Warnung
.
gueltig von: Freitag, 01.01.1970 00:04 Uhr
voraussichtlich bis: Samstag, 01.01.1970 00:05 Uhr
.
am: Freitag, 01.01.1970 00:04 Uhr
.
.
'
;
}
else
{
$s = file_get_contents( 'ftp://'.dwd_kennung.':'.dwd_passwort.'@ftp-outgoing2.dwd.de/gds/gds/specials/warnings/LZ/'.$array[0] );
}
//###############
//if( empty($s) )
// { IPS_LogMessage( IPS_GetName($_IPS['SELF']), "can't get url content"); return; }
// Alle Leerzeilen löschen
$s = preg_replace("/(^[
]*|[
]+)[\s ]*[
]+/", "
", $s);
//echo $s;
$a = explode( "
", $s); // Array aus der Meldung erstellen
$delete = array_shift($a); // erste Zeile mit Sonderzeichen löschen
$delete = array_pop($a); // letzte Zeile mit Sonderzeichen löschen
// Gewittererkennung (Schlagwortsuche im Warnungs-String)
if(strpos($s,"GEWITTER") != false)
{
$Gewitter = true;
}
else
{
$Gewitter = false;
}
// $Gewitter = true;
if ($_IPS['SENDER'] == "Execute")
echo "Gewitter ist "."$Gewitter"."
";
if ($_IPS['SENDER'] == "Execute")
print_r($a);
// div. Anpassungen/Formatierungen bzw. unterdrücken von Texten
while ( list ( $key, $current ) = each ( $a ) ) {
if ( substr_count( $current, "Amtlichexx" )) {
$current = '';
}
if ( substr_count( $current, "WARNLAGEBERICHT für" )) {
$current = '';
}
if ( substr_count( $current, "Sachsen" )) {
$current = '';
}
if ( substr_count( $current, "Wetterdienst" )) {
$current = '';
}
}
$a = str_replace('Amtliche ', "", $a);
$a = str_replace(utf8_decode('gültig von: '), "", $a);
$a = str_replace('gueltig von: ', "", $a);
$a = str_replace('voraussichtlich bis:', "", $a);
$a = str_replace(' Uhr', "", $a);
$a = str_replace('am:', "", $a);
$a = str_replace('Montag, ', "", $a);
$a = str_replace('Dienstag, ', "", $a);
$a = str_replace('Mittwoch, ', "", $a);
$a = str_replace('Donnerstag, ', "", $a);
$a = str_replace('Freitag, ', "", $a);
$a = str_replace('Samstag, ', "", $a);
$a = str_replace('Sonntag, ', "", $a);
// print_r($a);
########################################################################
########################################################################
$ttyp = trim($a[0]);
$tmeldung = trim($a[1]);
$tort = trim($a[2]);
$tvon = trim($a[3]);
$tbis = trim($a[4]);
$tausgabe = trim($a[6]);
$tbeschreibung1 = $a[7];
$tbeschreibung2 = $a[8];
if ( substr_count( $tmeldung, "AUFHEBUNG" )) {
$tbis = '01.01.1970';
$tvon = '01.01.1970';
//$current = '';
//return;
}
$warnung = $tmeldung;
//echo $tvon;
if ($_IPS['SENDER'] == "Execute")
echo date("jS F, Y", strtotime($tvon)). "
";
echo $tvon. "
";
//if (($tvon != '') and ($tbis)){
$gueltig_ab_val = strtotime($tvon). "
";
$gueltig_bis_val = strtotime($tbis). "
";
setValueInteger($gueltig_ab_ID, $gueltig_ab_val);
setValueInteger($gueltig_bis_ID, $gueltig_bis_val);
//}
// auskommetieren für Test/*
if ($gueltig_bis_val >= $unix){
echo "Warnung noch aktiv"."
";
} else {
echo "keine Warnungen"."
";
$warnung = "";
}
// auskommetieren für Test*/
// Warnstatus (ja/nein) setzen
if (empty($warnung)) {
$warnung = "Es sind keine Warnungen für ".$ort_desc." vorhanden.";
SetValueBoolean($id_warn, false);
$Warnstatus = false;
$WarnColor = '#66B5FF'; // blau: keine Warnungen vorher 64B4FF
SetValueString($DWD_WarnText_ID_ID, 'keine aktuellen Warnungen');
SetValueInteger($DEFCON_Status_ID, 6);
} else {
SetValueBoolean($id_warn, true);
$Warnstatus = true;
$WarnColor = '#FF0000'; // rot: Unwetterwarnungen
SetValueString($DWD_WarnText_ID_ID, $s);
SetValueInteger($DEFCON_Status_ID, 3);
}
/*
echo "Warntyp: "."$ttyp"."
";
echo "Meldung: "."$tmeldung"."
";
echo "Ort: "."$tort"."
";
echo "gueltig von: "."$tvon"."
";
echo "gueltig bis: "."$tbis"."
";
echo "von: "."$tausgabe"."
";
echo "T1: "."$tbeschreibung1"."
";
echo "T2: "."$tbeschreibung2"."
";
*/
setValueString($WarnType_WFE_ID , $warnung);
setValueString($wl_timeslot_ID, $tausgabe);
// Doppelte Leerzeichen entfernen
$warnung = preg_replace('/[ ]{2,}/sm', ' ', $warnung);
if ($_IPS['SENDER'] == "Execute")
echo "-----
"."$warnung"."
";
// Definition HTML-Content
$HTML_Header ='
<html>
<head>
<style type="text/css" media="screen"> body { background-color:#efefef;}
</style>
</head>';
$HTML_Table ='
<body scroll="yes">
<table
style="text-align: left; margin-left: auto; margin-right: auto; background-color: rgb(220, 220, 220); width: 880px; 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"></td>
</tr>
<tr>
<td style="width: 716px; color: #333333; background-color: #E2E9FD; text-align: center;" colspan="3"></td>
</tr>';
// Definition 3. RADAR-Pic: Blitzkarte DE (Alternative)
$wo_Blitzkarte ='
<a
href="http://www.wetteronline.de/blitze/" target="_blank">
<img style="width: 222px; height: 225px; alt="Blitzkarte DE"
src="http://www.wetteronline.de/?ireq=true&pid=p_blitze_map&src=blitze/vermarktung/p_blitze_map/www/Track/SAC/green_flat/SAC_Track.gif&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)http://www.wettergefahren.de/DWD/wetter/radar/Radarfilm_WEB_DL.gif
if(($Blitzkarte) && ($Gewitter))
{
$HTML_Radar ='
<tr>
<td style="width: 298px; color: #333333; background-color: #E2E9FD; text-align: right;">
'.$nr_Regenradar.'
<td style="width: 250px; color: #333333; background-color: #E2E9FD; text-align: center;">
<a
href="http://www.wettergefahren.de/DWD/wetter/radar/Radarfilm_WEB_DL.gif" target="_blank">
<img style="width: 190px; height: 225px; alt="DWD Unwetterkarte"
src="http://www.dwd.de/DWD/warnungen/warnapp/json/warning_map.png?'.$unix.'" width= "190" 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: 220px; color: #333333; background-color: #E2E9FD; text-align: center;">
'.$nr_Regenradar.'
<td style="width: 250px; color: #333333; background-color: #E2E9FD; text-align: center;">
<a
href="http://www.dwd.de/DE/Home/home_node.html" target="_blank">
<img style="width: 190px; height: 225px; alt="DWD Unwetterkarte"
src="http://www.dwd.de/DWD/warnungen/warnapp/json/warning_map.png?'.$unix.'" width= "190" 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>
';
// 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);
}
#######################################################################################################################################
// 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("–", "-", $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);
$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;
}
?>
PS: noch zwei Bilder, wobei ich die Warnmeldung Simulieren musste.