function port20031_gettemp($num_temp, $climat) { global $wpdb; //read name temp datchik SELECT `name1wire` FROM `wp_port20031_name1wire` WHERE `id` = $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "SELECT `name1wire` FROM `" . $table_name . "` WHERE `id` =" . $num_temp . ""; $res = $wpdb->get_col($sql, 0); $val = $res[0]; $port20031_pathownet = "" . get_option('port20031_pathownet') . ""; if (file_exists($port20031_pathownet)) { //echo "<br>Файл $port20031_pathownet существует<br>"; //require_once $port20031_pathownet; } else { $port20031_pathownet = "ownet.php"; } require_once $port20031_pathownet; //update_option('port20031_pathownet2', $port20031_pathownet); //require_once "/opt/owfs/share/php/OWNet/ownet.php"; //require_once "/opt/owfs/share/php/OWNet/ownet.php"; unset($ow); $port20031_portownet = get_option('port20031_portownet'); $ow = new OWNet("tcp://localhost:" . $port20031_portownet . ""); $temp1 = null; $i = 900; while ($temp1 == null) { $temp1 = $ow->read($val . "/temperature"); $i = $i + 1; if (1000 == $i) { $temp1 = $i; } } unset($ow); if ($temp1 > $climat + 1) { return 0; } elseif ($temp1 < $climat) { return 1; } else { return 0; } }
/** * Query %OWNet daemon */ public function Query() { $host = $this->GetHost(); $port = $this->GetPort(); $connect = "{$host}:{$port}"; $ow = new OWNet("tcp://" . $connect); if ($ow) { //we are connected, proceed $this->debug(__FUNCTION__, "Connected to '{$connect}'"); // retrieve owfs directory from given root $ow_dir = $ow->dir($this->ow_path); if ($ow_dir && isset($ow_dir['data_php'])) { //walk through the retrieved tree $dirs = explode(",", $ow_dir['data_php']); if (is_array($dirs) && count($dirs) > 0) { foreach ($dirs as $dev) { #print_r($ow->dir($dev)); $data = array(); $caps = ''; /* read standard device details */ //get family id $fam = $ow->read("{$dev}/family"); if (!$fam) { continue; } //not a device path //get device id $id = $ow->read("{$dev}/id"); //get alias (if any) and owfs detected device description as type $alias = $ow->get("{$dev}/alias"); $type = $ow->get("{$dev}/type"); if (!$type) { $type = "1Wire Family " . $fam; } //assign names for ips categories $name = $id; if ($alias) { $name = $alias; $caps = 'Name'; } //save date $data['Date'] = date('Y-m-d H:i:s', time()); //get varids $addr = "{$fam}.{$id}"; //print "$id ($alias): Type $type Family $fam\n"; //retrieve device specific data switch ($fam) { case '28': //DS18B20 temperature sensors //DS18B20 temperature sensors case '10': //DS18S20 temperature sensors //DS18S20 temperature sensors case '22': //DS1820 temperature sensors $temp = trim($ow->read("{$dev}/temperature", true)); if (strlen($temp) > 0) { //store new temperature value $this->debug(__FUNCTION__, "{$type} {$id} ({$alias}): {$temp}"); $data['Name'] = $name; $data['Id'] = $addr; $data['Typ'] = $type; $data['Temp'] = sprintf("%4.1f", $temp); //print " Alias '$alias',Temp $temp\n"; $caps .= ';Temp'; $this->SendWSData($caps, $data); $this->log_data($data); } break; default: IPS_LogMessage(__CLASS__, "{$id} ({$alias}): Type {$type} Family {$fam} not implemented yet"); } } //for } else { //no device fount IPS_LogMessage(__CLASS__, "No 1Wire Device found"); } } else { //dir command failed, stop here $this->debug(__FUNCTION__, "Dir using {$this->ow_path}' failed"); } } else { //no object, connect has been failed, stop here IPS_LogMessage(__CLASS__, "Connect to '{$connect}' failed"); } }