102 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| Menu="IPMI:2"
 | |
| Title="Fan Control"
 | |
| ---
 | |
| <?
 | |
| $plugin = "ipmitool-plugin";
 | |
| $cfg    = parse_plugin_cfg($plugin);
 | |
| $sName  = "autofan";
 | |
| $fName  = "/usr/local/emhttp/plugins/$plugin/scripts/$sName";
 | |
| 
 | |
| function temp_val($val) {
 | |
|   global $display;
 | |
|   return $display['unit']=='C' ? $val : round(9/5*$val+32);
 | |
| }
 | |
| function scan_dir($dir, $type = "") {
 | |
|   $out = array();
 | |
|   foreach (array_slice(scandir($dir), 2) as $entry){
 | |
|     $sep   = (preg_match("/\/$/", $dir)) ? "" : "/";
 | |
|     $out[] = $dir.$sep.$entry ;
 | |
|   }
 | |
|   return $out;
 | |
| }
 | |
| function list_pwm() {
 | |
|   $out = array();
 | |
|   exec("find /sys/devices -type f -iname 'pwm[0-9]' -exec dirname \"{}\" +|uniq", $chips);
 | |
|   foreach ($chips as $chip) {
 | |
|     $name = is_file("$chip/name") ? file_get_contents("$chip/name") : "";
 | |
|     foreach (preg_grep("/pwm\d+$/", scan_dir($chip)) as $pwm) {
 | |
|       $out[] = array('chip'=>$name, 'name'=>end(split('/',$pwm)), 'sensor'=>$pwm);
 | |
|     }
 | |
|   }
 | |
|   return $out;
 | |
| }
 | |
| ?>
 | |
| 
 | |
| <form markdown="1" method="POST" action="/update.php" target="progressFrame">
 | |
| <input type="hidden" name="#file" value="<?=$plugin?>/<?=$plugin?>.cfg">
 | |
| <input type="hidden" name="#include" value="plugins/<?=$plugin?>/include/update.autofan.php">
 | |
| <input type="hidden" name="#prefix" value="controller=c&fan=f&pwm=l&low=t&high=T&interval=m">
 | |
| <span class="bitstream" style="float:right;margin-right:12px"><?=exec("$fName -V")?></span>
 | |
| 
 | |
| Fan control function:
 | |
| : <select name="service" size="1">
 | |
|   <?=mk_option($cfg['service'], "0", "Disabled")?>
 | |
|   <?=mk_option($cfg['service'], "1", "Enabled")?>
 | |
|   </select>
 | |
| 
 | |
| PWM controller:
 | |
| : <select name="controller" size="1">
 | |
|   <?=mk_option($cfg['controller'], "", "None")?>
 | |
|   <?foreach (list_pwm() as $pwm):?>
 | |
|   <?=mk_option($cfg['controller'], $pwm['sensor'], "{$pwm['chip']} - {$pwm['name']}")?>
 | |
|   <?endforeach;?>
 | |
|   </select>
 | |
| 
 | |
| PWM fan:
 | |
| : <input type="text" name="fan" value="<?=$cfg['fan']?>" placeholder="Click DETECT"><input type="button" value="Detect" onclick="detectFan();" id="fan" style="margin-top:0">
 | |
| 
 | |
| Minimun PWM value:
 | |
| : <input type="text" name="pwm" value="<?=$cfg['pwm']?>" placeholder="Click DETECT"><input type="button" value="Detect" onclick="detectFanLow();" id="pwm" style="margin-top:0">
 | |
| 
 | |
| Low temperature threshold (°<?=$display['unit']?>):
 | |
| : <input type="number" min="0" max="300" name="low" value="<?=temp_val($cfg['low'])?>" class="narrow">
 | |
| 
 | |
| High temperature threshold (°<?=$display['unit']?>):
 | |
| : <input type="number" min="0" max="300" name="high" value="<?=temp_val($cfg['high'])?>" class="narrow">
 | |
| 
 | |
| Refresh interval (minutes):
 | |
| : <input type="text" name="interval" value="<?=$cfg['interval']?>" class="narrow">
 | |
| 
 | |
| <input type="submit" name="#default" value="Default">
 | |
| : <input type="submit" name="#apply" value="Apply"><input type="button" value="Done" onclick="done()">
 | |
| </form>
 | |
| 
 | |
| <script>
 | |
| function detectFan() {
 | |
|   var pwm = $("select[name=controller] option:selected").val();
 | |
|   if (pwm) {
 | |
|     $("input[name=fan]").val('Please wait...');
 | |
|     $("#fan").val('Detecting ...');
 | |
|     $.get('/plugins/<?=$plugin;?>/include/SystemFan.php',{op:'detect', pwm:pwm},function(data) {
 | |
|       $("input[name=fan]").val(data);
 | |
|       $("#fan").val('Detect');
 | |
|     });
 | |
|   }
 | |
| }
 | |
| function detectFanLow() {
 | |
|   var pwm = $("select[name=controller] option:selected").val();
 | |
|   var fan = $("input[name=fan]").val();
 | |
|   if (pwm && fan) {
 | |
|     $("input[name=pwm]").val('Please wait...');
 | |
|     $("#pwm").val('Detecting ...');
 | |
|     $.get('/plugins/<?=$plugin;?>/include/SystemFan.php',{op:'pwm',pwm:pwm,fan:fan},function(data) {
 | |
|       $("input[name=pwm]").val(data);
 | |
|       $("#pwm").val('Detect');
 | |
|     });
 | |
|   }
 | |
| }
 | |
| $(function() {
 | |
|   //showStatus('<?=$sName?>');
 | |
| });
 | |
| </script>
 |