Hallo zusammen,
habe mal etwas entwickelt.
@raketenschnecke: Habe mich für die automatische Anlage von Variablen etc. in deinem Script informiert und einige Sachen übernommen. Vielen Dank für den guten Unterricht!
Das Script sollte in ein neu anzulegendes Script kopiert werden und die nowendigen Anpassungen laut Doku im Script durchgeführt werden. Günstigerweise in der gleichen Kategorie, in der auch das DWD-Module von Raketenschnecke angelegt wurde(dieses muß bereits vorhanden sein!).
Prowlscript einmalig ausführen und die Variablen werden angelegt. Danach nochmals per Ausführen das Script starten um den Sync-Vorgang mit den Variablen vom DWD-Modul abzuschließen.Hierbei wird auch bereits eine PUSH-Meldung abgesetzt. Trigger etc werden selbstständig mit angelegt.
Die Variable ‚Unwetterwarnung an Prowl senden‘ kann man für einen Schalter im WFE einsetzen. Dann muss diese noch mit einem Schalterskript in den Einstellungen versehen werden.(Ich hab sie dann mit einem Link in das Webfront eingebaut)
Die Variable ‚DWD: Prowl: Meldung ab Stufe‘ gibt an, ab welcher Stufe Meldungen gesendet werden. Diese kann im Objetbaum individuell angepasst werden.
Die Warnlevel der Prowlmeldung können individuell im Coding ab Zeile 88 angepasst werden.
Schauen wir mal, wie es bei euch funtkioniert.
Screenshot und Codedatei wurden im nächsten Threade nachgereicht.
Und natürlich: Alles auf eigene Gefahr! 
<?
########################################################################################################
/* Prowlerweiterung für das Modul DWD Unwetterwarnung von Raketenschneck
Erstellt durch Grisu am 19.07.2012 in Teilen an das Script von Raketenschnekce angelehnt
Quelle/Doku http://www.ip-symcon.de/forum/f53/dwd-unwetterwarnung-wfe-mail-html-18782/#post166583 (DWD Unwetterwarnung Raketenschneckelf)
Vorraussetzung: - Das Module von Raketenschneck muss bereits installiert sein.
- eigener MagicKey für Prowl muss im Konfigurationsteil angegeben sein
- $DWD_Unwetter_ID(ID des Moduls DWD Unwetterwarnung von Raketenschnecke) muss manuell vor dem ersten Start
eingetragen werden
Scipt läuft anschließend eigenständig auf Trigger DWD DEFCON Status aus dem Module DWD Wetterwarnungen von Raketenschnecke.
*/
########################################################################################################
//Includes
include('ProwlPHP.php');
//Konfigurationsbeginnn
$prowl = new Prowl('3452727634654'); // hier dein Magic-Key rein
$DWD_Unwetter_ID = 23455 /*[Wetterwarnungen\DWD Unwetterwarnungen]*/; //ID des Moduls DWD Unwetterwarnung von Raketenschnecke
//Konfigurationsende
//Selbstinstallationen angelehnt an Raketenschneckes Skript
// Variablen-Definitionen
$VarNames[0] = array('name'=>'DWD: Prowl: Meldung ab Stufe', 'type'=>1, 'hidden'=>true, 'profil'=>'DWD.Unwetter.Warnstatus', 'position'=> -100, 'default_value'=>3,);
$VarNames[1] = array('name'=>'DWD_letzter_Unwetterstatus', 'type'=>1, 'hidden'=>true, 'profil'=>'DWD.Unwetter.Warnstatus', 'position'=> -50, 'default_value'=>6,);
$VarNames[2] = array('name'=>'Unwetterwarnung an Prowl senden', 'type'=>0, 'hidden'=>true, 'profil'=>'~Switch', 'position'=> 0, 'default_value'=>1,);
// übergeordnete Instanz identifizieren
$Parent = IPS_GetParent($_IPS['SELF']);
$ParentModul = IPS_GetObject($Parent);
// 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
$DEFCON_Status_ID = IPS_GetObjectIDByName('DWD DEFCON Status', $DWD_Unwetter_ID); //aus DWD-Module
// $i = 9999; // Abbruch der Schleife bei fehlendem Objekt
}
else
{
$Update = false; // alle Objekte vorhanden -> Update-Status auf false setzen
}
}
//Hauptteil
if(($ParentModul['ObjectType'] == 1) && ($ParentModul['ObjectName'] == 'DWD Prowlversand') && ($Update == false))
{
//Variablen identifizieren
$DEFCON_this_LastValue = IPS_GetObjectIDByName($VarNames[1]['name'], IPS_GetParent($_IPS['SELF']));
$DEFCON_Status_ID = IPS_GetObjectIDByName('DWD DEFCON Status', $DWD_Unwetter_ID); //aus DWD-Module
$DEFCON_Prowlstatus_ID = IPS_GetObjectIDByName($VarNames[0]['name'], IPS_GetParent($_IPS['SELF']));
$DEFCON_Warn_Type = IPS_GetObjectIDByName('DWD Warntyp WFE', $DWD_Unwetter_ID); //aus DWD-Module
$DEFCON_to_Prowl = IPS_GetObjectIDByName($VarNames[2]['name'], IPS_GetParent($_IPS['SELF']));
//Variablen auslesen
IPS_SLEEP(600);
$DEFCON_LastValue = getValueInteger($DEFCON_this_LastValue);
$DEFCON_NewValue = getValueInteger($DEFCON_Status_ID);
$prowlsendprio = getValueInteger($DEFCON_Prowlstatus_ID);
$event = getValueString($DEFCON_Warn_Type);
$sent_to_prowl = getValueBoolean($DEFCON_to_Prowl);
//dem neuen, evtl zu meldendem DEFCON-Stati den Prowl-Stati zuordnen - kann nach Nutzerbelieben geändert werden
switch ($DEFCON_NewValue) {
case 0: //DEFCON 0
$prowlprio = 2;
case 1:
$prowlprio = 1;
case 2:
$prowlprio = 0;
case 3:
$prowlprio = 0;
case 4:
$prowlprio = 1;
case 5:
$prowlprio = -2;
case 6: //DEFCON 6
$prowlprio = -2;
}
//Auswertung, ob gemeldet werden soll
if ($sent_to_prowl == true) //soll überhaupt versendet werden
{
if ($event <> 'Warnlagebericht') //nichts verschicken
{
if ($DEFCON_LastValue <> $DEFCON_NewValue) //nur bei Statusänderung eine Meldung abgeben
{
if($DEFCON_NewValue <= $prowlsendprio) //liegt DEFCON über der Meldeschwelle?
{
$prowl->push(array(
'application'=>'IPS-Unwetterwarn.',
'event'=> 'DEFCON '.$DEFCON_NewValue,
'description'=>utf8_encode($event),
'priority'=>$prowlprio));
}
else
{
$prowl->push(array(
'application'=>'IPS-Unwetterwarn.',
'event'=> 'DEFCON '.$DEFCON_NewValue,
'description'=>utf8_encode('Reduzierung der Warnstufe'),
'priority'=>$prowlprio));
}
}
}
}
//Ende Hauptteil
//Abschlussarbeiten
$DEFCON_LastValue = setValueInteger($DEFCON_this_LastValue,$DEFCON_NewValue);
}
// Install-Routinen
elseif($_IPS['SENDER'] == 'Execute')
{
if((($ParentModul['ObjectType'] != 1) && ($ParentModul['ObjectName'] != 'DWD Prowlversand')) || ($Update == true))
{
if(($ParentModul['ObjectType'] != 1) && ($ParentModul['ObjectName'] != 'DWD Prowlversand'))
{
// Dummy-Instanz anlegen und Script drunterhängen
$ModulID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetName($ModulID, 'DWD Prowlversand');
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']);
}
//Trigger anlegen
$eid = IPS_CreateEvent(0); //Ausgelöstes Ereignis
IPS_SetEventTrigger($eid, 1, $DEFCON_Status_ID); //Bei Änderung von Variable mit ID 15754
IPS_SetParent($eid, $_IPS['SELF']); //Ereignis zuordnen
IPS_SetEventActive($eid, true); //Ereignis aktivieren
}
echo "#9999 IPS Unwetterwarnung Prowl: Install ready (neue Objekte angelegt)
";
}
else
{
echo "Script #".$_IPS['SELF']." DWD Prowlversand: ohne Ergebnis gelaufen (keine Objekte gefunden/Objekte fehlerhaft
";
}
?>