'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 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