commit 2ff1f7f0bb3b1b23bb70ca83aa51e767a61b50bb Author: Florian Arndt Date: Thu Aug 8 23:31:32 2013 +0200 Initial version. diff --git a/class.EnerGenieSwitcher.php b/class.EnerGenieSwitcher.php new file mode 100644 index 0000000..3e4b95a --- /dev/null +++ b/class.EnerGenieSwitcher.php @@ -0,0 +1,56 @@ +ip = $ip; + $this->debug = $debug; + } + + /** + * Do the switch + */ + public function doSwitch($switches) { + foreach($switches as $port => $state) { + $ports = array(1 => '', 2 => '', 3 => '', 4 => ''); + $ports[$port] = $state; + $params = array(); + foreach($ports as $port => $state) { + if(in_array($state, array(self::ON, self::OFF))) { + $params['cte'.$port] = $state; + } + } + $this->post_request('http://'.$this->ip, $params); + } + } + + function post_request($url, $fields) { + $fields_string = ''; + foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } + rtrim($fields_string, '&'); + //open connection + $ch = curl_init(); + + // configure + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 5000); + //set the url, number of POST vars, POST data + curl_setopt($ch,CURLOPT_URL, $url); + curl_setopt($ch,CURLOPT_POST, count($fields)); + curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); + + //execute post + $result = curl_exec($ch); + if($this->debug === true) { echo "Calling " . $url . '?' . $fields_string . "\n"; } + + //close connection + curl_close($ch); + } +} diff --git a/test.php b/test.php new file mode 100644 index 0000000..8caf7b6 --- /dev/null +++ b/test.php @@ -0,0 +1,9 @@ +doSwitch(array( + 1 => EnerGenieSwitcher::ON, + 2 => EnerGenieSwitcher::OFF, + 3 => EnerGenieSwitcher::ON, + 4 => EnerGenieSwitcher::OFF +));