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-AusgabeNeu:
• 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
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
Auch ein Merci von mir für das Update
Oli
@heschdy,
das wird auch nix mehr
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
Wäre doch auch mal was für IPS
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…
Abschalten ist dann wohl ein leerer String?!
Im String war eine 0 gestanden, hatte ich aber nicht eingetragen gar keine Zeit für sowas
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("–", "-", $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;
}
?>
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
Super, gefällt mir gut
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 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
Hallo Erklärbär,
da hätte ich auch Interesse dran
dann wirst Du Grisu nerven müssen
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