/** * Title * * Description * * @access public */ function updateDisplay($id) { if (!defined('ONEWIRE_SERVER')) { return 0; } $rec = SQLSelectOne("SELECT * FROM owdisplays WHERE ID='" . $id . "'"); if (!$rec['ID']) { return 0; } $ow = new OWNet(ONEWIRE_SERVER); $device = '/' . $rec['UDID']; $rec['UPDATE_LATEST'] = time(); $rec['UPDATE_NEXT'] = time() + (int) $rec['UPDATE_INTERVAL']; $rec['VALUE'] = str_replace("\r", '', $rec['VALUE']); $text = explode("\n", $rec['VALUE']); for ($i = 1; $i <= $rec['ROWS']; $i++) { $line = $i . ",1:" . $text[$i - 1]; $line = processTitle($line); $ow->set($device . "/LCD_H/screenyx", str_pad($line, 40)); } SQLUpdate('owdisplays', $rec); }
function cron_job($atts, $content = null) { //$this->port20031_sendmesagealert('*****@*****.**','*****@*****.**','*****@*****.**','алерт'); //дергаем крон global $wpdb; //chek temp alarm //$to = "*****@*****.**"; //$subject = 'wp_mail function test'; //$message = 'This is a test of the wp_mail function: wp_mail is working'; //$headers = ''; //$sent_message = wp_mail( $to, $subject, $message, $headers ); /* $headers = 'From: My Name <*****@*****.**>' . "\r\n"; wp_mail('*****@*****.**', 'Тема', 'Содержание', $headers); */ //на основе расписаний заносим состояние ключей //получаем список включения ключей с сортировкой по ключу и типу расписания //$table_name = $wpdb->prefix . "port20031_job"; //тут логика включения ключей //require_once $port20031_pathownet; $port20031_pathownet = "" . get_option('port20031_pathownet') . ""; if (file_exists($port20031_pathownet)) { //echo "<br>Файл $port20031_pathownet существует<br>"; //require_once $port20031_pathownet; } else { //echo "<br>Файл $port20031_pathownet не существует<br>"; //include internal ownet.php $port20031_pathownet = "ownet.php"; //require_once $port20031_pathownet; } //ini_set('memory_limit', '-1'); 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 . ""); $dir = array(); $dir = $ow->dir('/'); $t = array(); $tt = array(); $ttt = ''; $temp1 = null; if (!is_array($dir)) { $dir = array(); array_push($dir, "port20031", $_ = null); } foreach ($dir as $key => $val) { if ($key == 'data') { $t = explode(',', $val); } } foreach ($t as $key => $val) { //работа с датчиками температуры , сбор if (strrpos($val, '28.')) { $temp1 = null; $i = 0; while ($temp1 == null) { $temp1 = $ow->read($val . "/temperature"); $i = $i - 1; if (-100 == $i) { $temp1 = $i; } } //ищем устройство в списке , если нет добавляем и определяем id $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "SELECT id FROM " . $table_name . " WHERE `id_type`=1 AND `name1wire`='" . $val . "' ;"; $res = $wpdb->get_col($sql, 0); $res1 = $res[0]; if ($res1 != null) { //уже есть в списке $table_name = $wpdb->prefix . "port20031_log_temp"; $sql1 = "INSERT INTO " . $table_name . "( `id_name`, `temp_val`) VALUES ('" . $res1 . "','" . $temp1 . "')"; $wpdb->query($sql1); $temp1 = null; } else { //нет в списке заносим $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "INSERT INTO " . $table_name . "( `name1wire`, `id_type`) VALUES ('" . $val . "',1);"; $wpdb->query($sql); //$sql ="SELECT id FROM ".$table_name." WHERE `id_type`=1 AND `name1wire`='".$val."' ;"; //$res1=$wpdb->query($sql); //$table_name = $wpdb->prefix . "port20031_log_temp"; //$sql ="INSERT INTO ".$table_name."( `id_name`, `temp_val`) VALUES ('".$res1."','".$temp1."')"; //$wpdb->query($sql); $temp1 = null; } $temp1 = null; } elseif (strrpos($val, '3A.')) { //ищем устройство в списке , если нет добавляем и определяем id //устройства 2413 канал А ключ , канал В статус устройства //канал А ключ; $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "SELECT id FROM " . $table_name . " WHERE `id_type`=2 AND `name1wire`='" . $val . "' ;"; $res = $wpdb->get_col($sql, 0); $res1 = $res[0]; if ($res1 != null) { //уже есть в списке , выставляем уровень по таблице стате //$table_name = $wpdb->prefix . "port20031_log_key"; //$sql1 ="INSERT INTO ".$table_name."( `id_name`, `temp_val`) VALUES ('".$res1."','".$temp1."')"; //$wpdb->query($sql1); //$temp1 =null; } else { //нет в списке заносим $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "INSERT INTO " . $table_name . "( `name1wire`, `id_type`) VALUES ('" . $val . "',2);"; $wpdb->query($sql); } //канал В ключ;канал В статус устройства $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "SELECT id FROM " . $table_name . " WHERE `id_type`=3 AND `name1wire`='" . $val . "' ;"; $res = $wpdb->get_col($sql, 0); $res13 = $res[0]; if ($res13 != null) { //уже есть в списке , //расчет состояния по расписанию key_id=$res13 $states = 0; //read jobs for $table_name = $wpdb->prefix . "port20031_job"; $sql = "SELECT `schedulers`, `key_id`, `type_id`, `temp_id`, `autostop_climate`, `time1`, `time2`, `job_data`,`id`\nFROM `" . $table_name . "` WHERE `key_id`=" . $res13 . "\nORDER BY `type_id`; "; $res0 = $wpdb->get_col($sql, 0); $res1 = $wpdb->get_col($sql, 1); $res2 = $wpdb->get_col($sql, 2); $res3 = $wpdb->get_col($sql, 3); $res4 = $wpdb->get_col($sql, 4); $res5 = $wpdb->get_col($sql, 5); $res6 = $wpdb->get_col($sql, 6); $res7 = $wpdb->get_col($sql, 7); $res8 = $wpdb->get_col($sql, 8); if ($res0) { for ($i = 0; $i <= count($res0) - 1; $i++) { //echo "".$res0[$i]."=>".$res1[$i]."=>".$res2[$i]."=>".$res3[$i]."=>".$res4[$i]."=>".$res5[$i] //."=>".$res6[$i]."=>".$res7[$i]."=>".$res8[$i].'<br>'; if (0 < $this->port20031_activday($res0[$i], $res7[$i], $res8[$i])) { //echo "<br>find job<br>"; $states = $states + $this->port20031_job($res2[$i], $res3[$i], $res4[$i], $res5[$i], $res6[$i]); } else { $states = $states + 0; } } } //update program state for key if (0 < $states) { //заносим 1 в програм состояние датчика WHERE `key_id`=".$res13." //UPDATE `wp_port20031_state_key` SET `state_program`=1 WHERE `key_id` = $table_name33 = $wpdb->prefix . "port20031_state_key"; $sql33 = "UPDATE `" . $table_name33 . "` SET `state_program`=1 WHERE `key_id` =" . $res13 . " "; $wpdb->query($sql33); } else { //заносим 0 в програм состояние датчика WHERE `key_id`=".$res13." $table_name33 = $wpdb->prefix . "port20031_state_key"; $sql33 = "UPDATE `" . $table_name33 . "` SET `state_program`=0 WHERE `key_id` =" . $res13 . " "; $wpdb->query($sql33); } //расчет состояния по расписанию //set for program $table_name1 = $wpdb->prefix . "port20031_state_key"; $sql22 = "SELECT `state_program` FROM `" . $table_name1 . "` WHERE `key_id`=" . $res13 . " "; $res22 = $wpdb->get_col($sql22, 0); $res12 = $res22[0]; if ($res12 > 0) { $res12 = 1; } $ow->set($val . "/PIO.A", $res12); //читаем статус и заносим в базу $key11 = null; $key11 = $ow->read($val . "/sensed.B"); //$ow1->read ('/3A.E3420D00000018/sensed.B') if ($key11 != 1) { $key11 = $ow->read($val . "/sensed.B"); } if ($key11 != 1) { $key11 = 0; } $table_name1 = $wpdb->prefix . "port20031_state_key"; $sql1 = "UPDATE `" . $table_name1 . "` SET `state_real`=" . $key11 . " WHERE `key_id`=" . $res13 . ""; //$sql1 ="INSERT INTO ".$table_name."( `id_name`, `temp_val`) VALUES ('".$res1."','".$temp1."')"; //echo $sql1; $wpdb->query($sql1); } else { //нет в списке заносим $table_name = $wpdb->prefix . "port20031_name1wire"; $sql = "INSERT INTO " . $table_name . "( `name1wire`, `id_type`) VALUES ('" . $val . "',3);"; $wpdb->query($sql); //получаем номер ключа $table_name1 = $wpdb->prefix . "port20031_name1wire"; $sql11 = "SELECT id FROM " . $table_name1 . " WHERE `id_type`=3 AND `name1wire`='" . $val . "' ;"; $res11 = $wpdb->get_col($sql11, 0); $num111 = $res11[0]; $key11 = null; $key11 = $ow->read($val . "/sensed.B"); //$ow1->read ('/3A.E3420D00000018/sensed.B') if ($key11 != 1) { $key11 = 0; } //заносим в таблицу состояния ключей $table_name2 = $wpdb->prefix . "port20031_state_key"; $sql2 = "INSERT INTO " . $table_name2 . "( `key_id`, `state_program`, `state_real`)\n\t\t\t\t\tVALUES (" . $num111 . ",0," . $key11 . ")"; $wpdb->query($sql2); } //$key11 =null; } //тут логика включения ключей //1-read job //2-обрабатываем строки //тут логика включения ключей //чистка старого //1 day = 86400 sec $table_name = $wpdb->prefix . "port20031_log_temp"; //$sql ="DELETE FROM ".$table_name." WHERE `temp_data` < (now()- INTERVAL 5 SECOND ) ;"; $sql = "DELETE FROM " . $table_name . " WHERE `temp_data` < (now()- INTERVAL 10 DAY);"; $wpdb->query($sql); //delete bad temperatyre $table_name = $wpdb->prefix . "port20031_log_temp"; $sql = "DELETE FROM " . $table_name . " WHERE `temp_val`=-100;"; $wpdb->query($sql); //чистка старого //работа с датчиками температуры , сбор } $z = get_option('port20031_sensortempalarm'); if (1000 != $z) { //chek alert //name temp sensor $table_name = $wpdb->prefix . "port20031_name1wire"; $query = "\n\t\t\tSELECT `name1wire` FROM `" . $table_name . "` WHERE `id`= " . $z . "\n\t\t\t"; $cta = $wpdb->get_col($query, 0); $ctaname = $cta[0]; if ($ctaname != NULL) { // $temp1 = null; $i = 900; while ($temp1 == null) { $temp1 = $ow->read($ctaname . "/temperature"); $i = $i + 1; if (1000 == $i) { $temp1 = $i; } } if ($temp1 > get_option('port20031_alarmtempownet')) { //send alarm $table_name44 = $wpdb->prefix . "port20031_alarm"; $sql44 = "INSERT INTO `" . $table_name44 . "`( `type_id`) VALUES (1)"; //echo '<br>'.$sql44.'<br>'; $wpdb->query($sql44); } } } //send alarm update_option('port20031_act_alarm', "checked"); if (get_option('port20031_act_alarm') == "checked") { $this->port20031_sendmesagealert(); } unset($ow); return; }