Documentation
How can I...?
Many of these scripts use special IP-Symcon functions.
The Command Reference/Module Reference entail further information on how exactly these functions work.
... switch on a device and switch it off again after 60 seconds
... get a list of module names including GUID
... configure an instance from PHP
... find out the remaining number of seconds of a ScriptTimer
... directly include a script by ID
... Output UpdateTime in a separate string variable (1 script - n variables)
... create a timer & variable from PHP
... download a file from the Internet
... load a folder recursively into the MediaPlayer playlist
... export a variable profile
... switch on a device and switch it off again after 60 seconds
if($_IPS['SENDER'] == "TimerEvent") { //From function ... //Turn off the timer IPS_SetScriptTimer($_IPS['SELF'], 0); } else { //To function ... //Turn on the timer IPS_SetScriptTimer($_IPS['SELF'], 60); }
... get a list of module names and GUID
foreach(IPS_GetModuleList() as $mid) { $m = IPS_GetModule($mid); echo $mid."=".$m['ModuleName']."\n"; }
... configure an instance from PHP
//Change property WWWReader_SetPage($id,"http://www.google.com"); //Apply changes IPS_ApplyChanges($id); //Get new URL WWWReader_UpdatePage($id);
... find out the remaining number of seconds of a ScriptTimer
echo GetTimeRemaining($_IPS['SELF']); //Find out by yourself function GetTimeRemaining($id) { $eid=@IPS_GetEventIDByName("ScriptTimer", $id); if($eid === false) { return -1; } else { $e=IPS_GetEvent($eid); if($e['NextRun'] == 0) { return -1; } else { return $e['NextRun'] - microtime(true); } } }
... directly include a script by ID
//Include script with ID 14871 include(IPS_GetScriptFile(14871));
... Output UpdateTime in a separate string variable (1 script - n variables)
//Evaluate event if($_IPS['SENDER'] != "Variable") return; SetValue(CreateVariableIDByName($_IPS['VARIABLE'], 'Updated', 3), date("d.m.y H:i:s")); function CreateVariableIDByName($id, $name, $type) { $vid = @IPS_GetVariableIDByName($name, $id); if($vid===false) { $vid = IPS_CreateVariable($type); IPS_SetParent($vid, $id); IPS_SetName($vid, $name); IPS_SetInfo($vid, "This Variable was created by Script #".$_IPS['SELF']); } return $vid; }
... create a timer & variable from PHP
When the script runs, it sets a timer that starts every six hours and then puts a variable with the time of day as a value between 0-3 into the variable.
//NOTE: //~~~~~~~~ //This script sets itself up automatically when run // //- A variable is set depending on the time of day (0-3) // 0 = 0-6 // 1 = 6-12 // 2 = 12-18 // 3 = 19-24 //----------------------------------------------------------------------------- //From this point nothing needs to be changed //----------------------------------------------------------------------------- if($_IPS['SENDER'] == "Execute") { $eventid = @IPS_GetEventIDByName("Timer", $_IPS['SELF']); if($eventid === false) { $eventid = IPS_CreateEvent(1); //Cyclic IPS_SetEventActive($eventid, true); IPS_SetName($eventid, "Timer"); IPS_SetEventScript($eventid, $_IPS['SELF']); IPS_SetEventCyclic($eventid, 0, 0, 0, 0, 3, 6); } $variableid = @IPS_GetVariableIDByName("Daytime", $_IPS['SELF']); if($variableid === false) { $variableid = IPS_CreateVariable(1); IPS_SetName($variableid, "Daytime"); IPS_SetParent($variableid, $_IPS['SELF']); } } SetValue(IPS_GetVariableIDByName("Daytime", $_IPS['SELF']), floor(date("H") / 6));
... download a file from the Internet
$remoteImage = "https://www.google.com/images/srpr/logo3w.png"; $localImage = IPS_GetKernelDir()."\\media\\image.jpg"; //Download $content = @file_get_contents($remoteImage); if((strpos($http_response_header[0], "200") === false)) { return; } //Save to computer file_put_contents( $localImage, $content );
... load a folder recursively into the MediaPlayer playlist
function WAC_PlayDir($id, $dir) { function ReadRecursive($dir, $subdir = "") { $result = Array(); $files = scandir($dir."/".$subdir); foreach($files as $file) { if(($file != ".") && ($file != "..")) { if(is_dir($dir."/".$subdir."/".$file)) { $res = ReadRecursive($dir, $subdir."/".$file); $result = array_merge($res, $result); } else { $filedir = $subdir."/".$file; $filedir = substr($filedir, 1, strlen($filedir)); $result[] = $filedir; } } } return $result; } $allowed = Array("mp3", "wma"); $files = ReadRecursive($dir); //Use PHP's random number generator //shuffle($files); WAC_ClearPlaylist($id); foreach($files as $file) { $ext = pathinfo($dir."/".$file, PATHINFO_EXTENSION); if(in_array(strtolower($ext), $allowed)) { WAC_AddFile($id, $dir."/".$file); } } WAC_Play($id); }
... export a variable profile
getVariableProfileCreationCode("~Temperature.FHT"); getVariableProfileCreationCode("~Temperature.FHT", "TemperatureTest"); // first function parameter: Profile name, second parameter (optional): new profile name function getVariableProfileCreationCode ($profileName, $newProfileName = "") { $profile = IPS_GetVariableProfile($profileName); if ($profile !== false) { $profileName = (strlen($newProfileName) > 0) ? $newProfileName : $profileName; echo 'IPS_CreateVariableProfile("'.$profileName.'", '.$profile['ProfileType'].');'."\n"; echo 'IPS_SetVariableProfileText("'.$profileName.'", "'.$profile['Prefix'].'", "'.$profile['Suffix'].'");'."\n"; echo 'IPS_SetVariableProfileValues("'.$profileName.'", '.$profile['MinValue'].', '.$profile['MaxValue'].', '.$profile['StepSize'].');'."\n"; echo 'IPS_SetVariableProfileDigits("'.$profileName.'", '.$profile['Digits'].');'."\n"; echo 'IPS_SetVariableProfileIcon("'.$profileName.'", "'.$profile['Icon'].'");'."\n"; foreach ($profile['Associations'] as $association) { echo 'IPS_SetVariableProfileAssociation("'.$profileName.'", '.$association['Value'].', "'.$association['Name'].'", "'.$association['Icon'].'", '.$association['Color'].');'."\n"; } echo "\n"; } }