Ejemplo n.º 1
0
	function get_NextScheduledDate($CircleId) {
		$ProgramId = GetValue(get_ControlId(c_Control_Program, $CircleId));
		$ControlIdLastDate = get_ControlId(c_Control_LastDate, $CircleId);
		$ControlIdNextTime = get_ControlId(c_Control_NextTime, $CircleId);
		switch ($ProgramId) {
			case c_ProgramId_EveryDay:
				$date = get_DateTime($ControlIdLastDate, c_Format_LastDate,
				                     $ControlIdNextTime, c_Format_NextTime)+1*24*60*60;
				break;
			case c_ProgramId_Every2Day:
				$date = get_DateTime($ControlIdLastDate, c_Format_LastDate,
				                     $ControlIdNextTime, c_Format_NextTime)+2*24*60*60;
				break;
			case c_ProgramId_Every3Day:
				$date = get_DateTime($ControlIdLastDate, c_Format_LastDate,
				                     $ControlIdNextTime, c_Format_NextTime)+3*24*60*60;
				break;
			case c_ProgramId_Every4Day:
				$date = get_DateTime($ControlIdLastDate, c_Format_LastDate,
				                     $ControlIdNextTime, c_Format_NextTime)+4*24*60*60;
				break;
			case c_ProgramId_MonWedFri:
				$date = strtotime('next monday');
				if (strtotime('next wednesday')<$date) { $date=strtotime('next wednesday');}
				if (strtotime('next friday')<$date) { $date=strtotime('next friday');}
				break;
			case c_ProgramId_MonTur:
				$date = strtotime('next monday');
				if (strtotime('next thursday')<$date) { $date=strtotime('next thursday');}
				break;
			case c_ProgramId_Sunday:
				$date = strtotime('next sunday');
				break;
			case c_ProgramId_Monday:
				$date = strtotime('next monday');
				break;
			case c_ProgramId_Tuesday:
				$date = strtotime('next tuesday');
				break;
			case c_ProgramId_Wednesday:
				$date = strtotime('next wednesday');
				break;
			case c_ProgramId_Thursday:
				$date = strtotime('next thursday');
				break;
			case c_ProgramId_Friday:
				$date = strtotime('next friday');
				break;
			case c_ProgramId_Saturday:
				$date = strtotime('next saturday');
				break;
			case c_ProgramId_Manual:
				return false;
			default:
			   IPSLogger_Err(__file__, "Unknown ProgramId $ProgramId");
			   Exit;
		}
		if ($date<=time()) {
			$date = strtotime('next day');
		}
		return Date(c_Format_NextDate, $date);
	}
	 *
	 */

	 /** @}*/

	include_once "IPSWatering.inc.php";

   $CircleName         = IPS_GetName($_IPS['EVENT']);
   $categoryId_Circles = IPSUtil_ObjectIDByPath('Program.IPSLibrary.data.modules.IPSWatering.WaterCircles');
   $CircleId           = IPS_GetCategoryIDByName($CircleName, $categoryId_Circles);
   $ControlId          = get_ControlId(c_Control_Active, $CircleId);

	$WaterConfig = get_WateringConfiguration();

	// Wert von Bewässerungs Sensor ermitteln
	$SensorLimit = GetValue(get_ControlId(c_Control_Sensor, $CircleId));
	$SensorValue = false;
	if (array_key_exists(c_Property_Sensor, $WaterConfig[$CircleName])) {
		$SensorPath  = $WaterConfig[$CircleName][c_Property_Sensor];
		if ($SensorPath <> '') {
			$SensorId    = IPSUtil_ObjectIDByPath($SensorPath);
			if ($SensorId===false) {
			   IPSLogger_Wrn(__file__, "Specified Sensor '$SensorPath' could NOT be found");
			} else {
				$SensorValue = GetValue($SensorId);
			}
		}
	}

	if ($SensorValue===false and $SensorLimit>0) {
		IPSLogger_Err(__file__, "Rainfall Sensor NOT defined for Circle '$CircleName'");