/c/alertanodocontrolcaido.php
PHP | 986 lines | 635 code | 157 blank | 194 comment | 126 complexity | bb08019cf9f9c4307b0593ea3a6e9f54 MD5 | raw file
Possible License(s): Apache-2.0
- <?php
- include("conexion.php");
- $date1 = new DateTime("now");
- $date1 = $date1->format('Y-m-d H:i:s');
- $sql = "select mail,id_empresa from empresa";
- $consulta = mysql_query($sql, $link);
- if ($datatmp = mysql_fetch_array($consulta)) {
- $mailEmpresa = $datatmp['mail'];
- $id_empresa = $datatmp['id_empresa'];
- }
- //$mailEmpresa = "miguel.barahona@lemsystem.cl";
- $sw =0;
- //MODULO COORDINADOR CAIDO
- $sql = "SELECT distinct id_nodo,fecha FROM `control_riego` WHERE id_nodo in(SELECT distinct id_nodo FROM nodo WHERE tipo_nodo=2) and fecha< date_sub(now(),interval 1 hour)";
- $consulta = mysql_query($sql, $link);
- while ($datatmp = mysql_fetch_array($consulta)) {
- $id_nodoCordinador = $datatmp['id_nodo'];
- $fecha=$datatmp['fecha'];
- $sql2="SELECT * FROM alertas_control where id_nodo='$id_nodoCordinador' and estado=0";
- $consulta2 = mysql_query($sql2, $link);
- if ($datatmp2 = mysql_fetch_array($consulta2)){
- $sw =1;
- }
- else{
- $sql3="INSERT into alertas_control(id_nodo,tipo,fecha,estado,id_empresa) VALUES ('$id_nodoCordinador','nodo','$fecha',0,$id_empresa)";
- $consulta3=mysql_query($sql3, $link);
- $sw =1;
- }
- }
- $sql4="SELECT * FROM alertas_control where estado=0 and id_nodo in (SELECT distinct id_nodo FROM nodo WHERE tipo_nodo = 2)";
- $consulta4=mysql_query($sql4, $link);
- while($datatmp4 = mysql_fetch_array($consulta4)) {
- $id_nodo2=$datatmp4['id_nodo'];
- $id_alerta_control=$datatmp4['id_alerta_control'];
- $sql5="SELECT * FROM control_riego where id_nodo='$id_nodo2' and fecha> date_sub(now(),interval 1 hour)";
- $consulta5=mysql_query($sql5, $link);
- if($datatmp5 = mysql_fetch_array($consulta5))
- {
- $sql6="UPDATE alertas_control set estado=1,fecha_fin = '$date1',update_p = 0 where id_alerta_control='$id_alerta_control'";
- $consulta6=mysql_query($sql6, $link);
- $sw = 0;
- }
- }
- //8-------------------------------------------------------------------------------------------------------------------------------------------------
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //Tomo la ultima fecha en la cual el coordinador volvio y le doy un delta tiempo de 10 min para no generar alertas falsas de los lemvalve o lemcontrol
- $sql4="SELECT * FROM alertas_control where estado=1 and id_nodo in (SELECT distinct id_nodo FROM nodo WHERE tipo_nodo = 2)";
- $consulta4=mysql_query($sql4, $link);
- $deltatiempo = $date1;
- if($datatmp4 = mysql_fetch_array($consulta4)) {
- $fecha_fin=$datatmp4['fecha_fin'];
- $finintentoreset = strtotime($fecha_fin);
- $minutos2 = 10;
- $minutos2 = $minutos2 * 60;
- $finintentoreset+=$minutos2;
- $deltatiempo = date("Y-m-d H:i:s", $finintentoreset);
- }
- if($sw == 0 and $date1 >= $deltatiempo){
- $sql = "SELECT distinct id_nodo,fecha FROM `control_riego` WHERE id_nodo in(SELECT distinct id_nodo FROM nodo WHERE tipo_nodo <> 2) and fecha< date_sub(now(),interval 1 hour)";
- $consulta6 = mysql_query($sql, $link);
- $x=0;
- while ($datatmp = mysql_fetch_array($consulta6)) {
- $id_nodo5[$x] = $datatmp['id_nodo'];
- $fecha=$datatmp['fecha'];
- $sql2="SELECT * FROM alertas_control where id_nodo='$id_nodo5[$x]' and estado=0";
- $consulta2 = mysql_query($sql2, $link);
- if ($datatmp2 = mysql_fetch_array($consulta2)){
- }
- else{
- $sql = "select descripcion from nodo where id_nodo = $id_nodo5[$x]";
- $consulta = mysql_query($sql, $link);
- if ($datatmp = mysql_fetch_array($consulta)) {
- $descripcion[$x] = $datatmp['descripcion'];
- $mensajecaidos = $mensajecaidos . $descripcion[$x] . "-";
- }
- $sql3="INSERT into alertas_control(id_nodo,tipo,fecha,estado,id_empresa) VALUES ('$id_nodo5[$x]','nodo','$fecha',0,$id_empresa)";
- $consulta3=mysql_query($sql3, $link);
- }
- $x++;
- }
-
- $res = explode(",",$mailEmpresa);
-
-
- for ($i=0;$i<count($res);$i++){
- //echo $res[$i];
- $mail = "Estimado. \r\n Se le informa que el nodo $descripcion se encuentra con problemas.\r\n Saludos.";
- //Titulo
- $titulo = "Equipo LemControl Caido";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: Lemsystem < alertas@lemsystem.cl >\r\n";
- //Enviamos el mensaje a tu_dirección_email
- $bool = mail($res[$i] ,$titulo,$mail,$headers);
- if($bool){
- //echo "Mensaje enviado";
- }else{
- //echo "Mensaje no enviado";
- }
- }
-
-
- /*$mail = "Estimado. \r\n Se le informa que el nodo $descripcion se encuentra con problemas.\r\n Saludos.";
- //Titulo
- $titulo = "Equipo LemControl Caido";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: Lemsystem < alertas@lemsystem.cl >\r\n";
- //Enviamos el mensaje a tu_dirección_email
- $bool = mail($mailEmpresa ,$titulo,$mail,$headers);
- if($bool){
- echo "Mensaje enviado";
- }else{
- echo "Mensaje no enviado";
- }
- */
- $sql4="SELECT * FROM alertas_control where estado=0";
- $consulta4=mysql_query($sql4, $link);
- while($datatmp4 = mysql_fetch_array($consulta4)) {
- $id_nodo2=$datatmp4['id_nodo'];
- $id_alerta_control=$datatmp4['id_alerta_control'];
- $sql5="SELECT * FROM control_riego where id_nodo='$id_nodo2' and fecha> date_sub(now(),interval 1 hour)";
- $consulta5=mysql_query($sql5, $link);
- if($datatmp5 = mysql_fetch_array($consulta5))
- {
- $sql6="UPDATE alertas_control set estado=1,fecha_fin = '$date1',update_p = 0 where id_alerta_control='$id_alerta_control'";
- $consulta6=mysql_query($sql6, $link);
- }
- }
- }
- echo $sw;
- if($sw == 0){
- $nodos_negados = "";
- //------------------------------PRESOSTATOS ALERTAS---------------------------------------------------------------------------------
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //MODULO DETECTAR PRESOSTATOS ON
- $y = count($id_nodo5);
- $p =0;
- while($y > $p){
- if($y -1 == $p){
- $nodos_negados = $nodos_negados.$id_nodo5[$p];
- }else{
- $nodos_negados = $nodos_negados.$id_nodo5[$p].",";
- }
- $p=$p+1;
- }
- $p = 0;
- if ($y == $p){
- $nodos_negados = "''";
- }
- //Obtener valvulas que deberian cerrar
- //Obtengo id de programacion_riego que iniciaran
- $sql = "SELECT * FROM `programacion_val` WHERE estado = 1"." and id_nodo not in (".$nodos_negados.")";
- $consulta = mysql_query($sql, $link);
- while ($datatmp = mysql_fetch_array($consulta)) {
- $id_nodo3=$datatmp['id_nodo'];
- $px=$datatmp['px'];
- //obtener valvulas de los nodos que iniciaron
- $sql2 = "SELECT * FROM `control_val` WHERE px = $px and id_nodo = $id_nodo3";
- $consulta2 = mysql_query($sql2, $link);
- $b = 0;
- while ($datatmp2 = mysql_fetch_array($consulta2)) {
- $id_sector=$datatmp2['id_sector'];
- $tiempo_diff_final=$datatmp2['tiempo_diff_final'];
- //Preguntar si hay un riego agendado en este momento para esa valvula
- $sql3 = "SELECT * FROM `programacion_riego` WHERE id_sector = $id_sector and estado = 1";
- $consulta3 = mysql_query($sql3, $link);
- //obter margen de tiempo en el cual puedo gatillar la alerta
- $sql9 = "SELECT * FROM `programacion_riego` WHERE id_sector = $id_sector and estado = 2 order by id_programacion_riego desc";
- $consulta9 = mysql_query($sql9, $link);
- if ($datatmp9 = mysql_fetch_array($consulta9)) {
- $r_fecha_fin=$datatmp9['r_fecha_fin'];
- $deltaEspera = strtotime($r_fecha_fin);
- $tiempo_diff_final = $tiempo_diff_final * 60;
- $deltaEspera+=$tiempo_diff_final;
- $deltaEspera = date("Y-m-d H:i:s", $deltaEspera);
- $deltaEspera2 = strtotime($deltaEspera);
- $deltaEspera2+=180;
- $deltaEspera2 = date("Y-m-d H:i:s", $deltaEspera2);
- }
- //Si no tengo ningun riego qeu se este efectuando en este momento y su presostato esta activo ademas de calzar con los rangos de tiempo
- //se genera una alerta
- if (!$datatmp3 = mysql_fetch_array($consulta3)) {
-
- if ($date1 > $deltaEspera and $date1 < $deltaEspera2) {
- $sql2="SELECT * FROM alertas_valvulas where id_nodo='$id_nodo3' and px='$px' and estado=0";
- $consulta2 = mysql_query($sql2, $link);
- if (!$datatmp2 = mysql_fetch_array($consulta2)){
- $sql4 = "select descripcion from nodo where id_nodo = $id_nodo3";
- $consulta4 = mysql_query($sql4, $link);
- if ($datatmp4= mysql_fetch_array($consulta4)) {
- $descripcion[$b] = $datatmp4['descripcion'];
- }
- //$mail = "Estimado. \r\n Se le informa que el nodo $descripcion se encuentra con problemas.\r\n Saludos.";
- //Titulo
- //$titulo = "Equipo LemControl Caido";
- //cabecera
- //$headers = "MIME-Version: 1.0\r\n";
- //$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- //$headers .= "From: Lemsystem < alertas@lemsystem.cl >\r\n";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa ,$titulo,$mail,$headers);
- //if($bool){
- // echo "Mensaje enviado";
- //}else{
- // echo "Mensaje no enviado";
- //}
- $sql3="INSERT into alertas_valvulas(id_nodo,tipo,fecha,estado,px,id_empresa) VALUES ('$id_nodo3','0','$date1',0,$px,$id_empresa)";
- $consulta3=mysql_query($sql3, $link);
- }
- }
- } $b++;
- }
- }
- //Modulo detectar valvulas que deberian abrir
- //obtengo los riegos que se esten realizando en este momento
- $sql = "SELECT * FROM `programacion_riego` WHERE estado = 1";
- $consulta1 = mysql_query($sql, $link);
- while ($datatmp = mysql_fetch_array($consulta1)){
- $r_fecha_ini=$datatmp['r_fecha_ini'];
- $id_sector=$datatmp['id_sector'];
- //obtengo las valvulas que deberian estar abiertas segun los riegos obtenidos anteriormente
- $sql2 = "SELECT * FROM `control_val` WHERE id_sector = $id_sector"." and id_nodo not in (".$nodos_negados.")";
- $consulta2 = mysql_query($sql2, $link);
- $m =0;
- while ($datatmp2 = mysql_fetch_array($consulta2)) {
- $id_nodo3 = $datatmp2['id_nodo'];
- $px = $datatmp2['px'];
- $tiempo_diff_inicio = $datatmp2['tiempo_diff_inicio'];
- $deltaEspera = strtotime($r_fecha_ini);
- $tiempo_diff_inicio = $tiempo_diff_inicio * 60;
- $deltaEspera+=$tiempo_diff_inicio;
- $deltaEspera = date("Y-m-d H:i:s", $deltaEspera);
- //obtener si las vavulas anterior estan ensendidas
- $sql = "SELECT * FROM `programacion_val` WHERE estado = 1 and px = $px and id_nodo = $id_nodo3";
- $consulta3 = mysql_query($sql, $link);
- if(!$datatmp3 = mysql_fetch_array($consulta3)) {
- if ($date1 > $deltaEspera) {
- //Preguntar si ya existe alguna alerta para este riego ssi no es haci generarla
- $sql2="SELECT * FROM alertas_valvulas where id_nodo='$id_nodo3' and px='$px' and estado=0";
- $consulta5 = mysql_query($sql2, $link);
- if (!$datatmp5 = mysql_fetch_array($consulta5)){
- $sql4 = "select descripcion from nodo where id_nodo = $id_nodo3";
- $consulta4 = mysql_query($sql4, $link);
- if ($datatmp4= mysql_fetch_array($consulta4)) {
- $descripcion[$m] = $datatmp4['descripcion'];
- }
- //$mail = "Estimado. \r\n Se le informa que el nodo $descripcion se encuentra con problemas.\r\n Saludos.";
- //Titulo
- //$titulo = "Equipo LemControl Caido";
- //cabecera
- //$headers = "MIME-Version: 1.0\r\n";
- //$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- //$headers .= "From: Lemsystem < alertas@lemsystem.cl >\r\n";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa ,$titulo,$mail,$headers);
- //if($bool){
- // echo "Mensaje enviado";
- //}else{
- // echo "Mensaje no enviado";
- //}
- $sql3="INSERT into alertas_valvulas(id_nodo,tipo,fecha,estado,px,id_empresa) VALUES ('$id_nodo3','1','$date1',0,$px,$id_empresa)";
- $consulta3=mysql_query($sql3, $link);
- }
- }
- }$m++;
- }
- }
- echo $sql4="SELECT * FROM alertas_valvulas where estado=0 and tipo = 1";echo "</br>";
- $consulta4=mysql_query($sql4, $link);
- while($datatmp4 = mysql_fetch_array($consulta4)){
- $interructor = 0;
- $px=$datatmp4['px'];
- $id_nodo3=$datatmp4['id_nodo'];
- $id_alerta_valvula=$datatmp4['id_alerta_valvula'];
- $fecha_ini=$datatmp4['fecha'];
- $finintentoreset = strtotime($fecha_ini);
- $minutos2 = 10;
- $minutos2 = $minutos2 * 60;
- $finintentoreset+=$minutos2;
- $deltatiempo = date("Y-m-d H:i:s", $finintentoreset);
-
- echo $sql5="SELECT * FROM control_val where id_nodo='$id_nodo3' and px = $px";echo "</br>";
- $consulta5=mysql_query($sql5, $link);
- if($datatmp5 = mysql_fetch_array($consulta5)){
- $id_sector=$datatmp5['id_sector'];
-
- echo $sql5="SELECT * FROM programacion_riego where id_sector = $id_sector and estado = 1";echo "</br>";
- $consulta5=mysql_query($sql5, $link);
- if(!($datatmp5 = mysql_fetch_array($consulta5))){
- echo $interructor = 1;
- }
- }
-
-
-
-
- echo "</br>";
- echo $sql5="SELECT * FROM programacion_val where id_nodo='$id_nodo3' and px = $px order by id_programacion_riego desc";
- echo "</br>";
- $consulta5=mysql_query($sql5, $link);
- if($datatmp5 = mysql_fetch_array($consulta5)){
- $estado=$datatmp5['estado'];
- if($estado == 2 and $date1 > $deltatiempo and $interructor == 1)
- {
- $sql6="UPDATE alertas_valvulas set estado=1,fecha_fin = '$date1',update_p = 0 where
- id_alerta_valvula='$id_alerta_valvula'";
- $consulta6=mysql_query($sql6, $link);
- }
- if($estado == 1 and $date1 > $deltatiempo)
- {
- $sql6="UPDATE alertas_valvulas set estado=1,fecha_fin = '$date1',update_p = 0 where
- id_alerta_valvula='$id_alerta_valvula'";
- $consulta6=mysql_query($sql6, $link);
- }
- }
- }
- $sql4="SELECT * FROM alertas_valvulas where estado=0 and tipo = 0";
- $consulta4=mysql_query($sql4, $link);
- while($datatmp4 = mysql_fetch_array($consulta4)){
- $px=$datatmp4['px'];
- $id_nodo3=$datatmp4['id_nodo'];
- $id_alerta_valvula=$datatmp4['id_alerta_valvula'];
- $fecha_ini=$datatmp4['fecha'];
- $finintentoreset = strtotime($fecha_ini);
- $minutos2 = 10;
- $minutos2 = $minutos2 * 60;
- $finintentoreset+=$minutos2;
- $deltatiempo = date("Y-m-d H:i:s", $finintentoreset);
- $sql5="SELECT * FROM programacion_val where id_nodo='$id_nodo3' and px = $px order by id_programacion_riego desc";
- $consulta5=mysql_query($sql5, $link);
- if($datatmp5 = mysql_fetch_array($consulta5)){
- $estado=$datatmp5['estado'];
- if($estado == 0 or $estado == 2 and $date1 > $deltatiempo)
- {
- $sql6="UPDATE alertas_valvulas set estado=1,fecha_fin = '$date1',update_p = 0 where id_alerta_valvula='$id_alerta_valvula'";
- $consulta6=mysql_query($sql6, $link);
- }
- }
- }
- //----------------------------------------------------------Fin riego presostatos----------------------------------------------------------------------------
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //-----------------------------------------------------------Riegos No Iniciados----------------------------------------------------------------------------
- $sql4="SELECT * FROM programacion_riego where estado=3 and intentos = 4";
- $consulta4=mysql_query($sql4, $link);
- while($datatmp4 = mysql_fetch_array($consulta4)){
- $id_programacion_riego=$datatmp4['id_programacion_riego'];
- if ($mail == 0){
- $sql6="UPDATE programacion_riego set mail=1 where id_programacion_riego='$id_programacion_riego'";
- $consulta6=mysql_query($sql6, $link);
- }
- }
- //-------------------------------------------------------------Inicio alertas caudal-----------------------------------------------------------------------
- //include("conexion.php");
- //$link = mysql_connect("localhost", "root", "lempi12345");
- //mysql_select_db("temporal_lem_db",$link);
- //mysql_query("SET NAMES 'utf8'",$link);
- $sql = "select mail,id_empresa from empresa";
- $consulta = mysql_query($sql, $link);
- if ($datatmp = mysql_fetch_array($consulta)) {
- $id_empresa = $datatmp['id_empresa'];
- //$mailEmpresa = $datatmp['mail'];
- }
- //$ahora = new DateTime("now");
- //$ahora = $ahora->format('Y-m-d H:i:s');
- //$ahora = $ahora->format('Y-m-d H:i:s');
- $riegos="no";
- $id_sensores_regando[0]=0;
- $j=0;
- $z=0;
- $sql = "Select TIMESTAMPDIFF(MINUTE, r_fecha_ini,now()) as diferencia_ini,TIMESTAMPDIFF(MINUTE, p_fecha_fin,now())
- as diferencia_fin, id_sector,sector ,id_nodo from programacion_riego where estado=1 and id_nodo not in ($nodos_negados) and n_orden_riego_sector != '0'";// alertas para riegos manuales????
- $consulta = mysql_query($sql, $link);
- while ($datatmp = mysql_fetch_array($consulta)) {
- $riegos="si";
- $id_nodo = $datatmp['id_nodo'];
-
- $id_sector = $datatmp['id_sector'];
-
- $sector = $datatmp['sector'];
-
- $intervalo_inicio= $datatmp['diferencia_ini'];
-
- $intervalo_fin=$datatmp['diferencia_fin'];
-
-
- $sql_tabla_muestra="SELECT nombre_tabla_muestra_mensual, nombre from nodo where id_nodo='$id_nodo'";
- $consulta_tabla_riego = mysql_query($sql_tabla_muestra, $link) or die(mysql_error());
- $objeto5 = mysql_num_rows($consulta_tabla_riego);
- if($datatmp = mysql_fetch_array($consulta_tabla_riego)) {
- $nombre_tabla_muestra_mensual=$datatmp['nombre_tabla_muestra_mensual'];
- $nombre=$datatmp['nombre'];
- }
-
-
-
-
- //se guardan siempre los id de lemcontrol asociados a un riego (se asume que tiene caudalimetro).
- //en un futuro evaluar posibilidad que sea mas de un sector con caudalimetro para el riego del sector final (ejemplo: regar un sector que requiera de 2 pozos con 2 bombas)
- //y cada bomba tiene su caudal
- $sql2 = "Select caudal_inferior,caudal_superior, caudal_normal, pulso_minuto,caudal_pulso,id_sensor,tiempo_diff_final,tiempo_diff_inicio from control_riego where id_nodo=$id_nodo and id_sector=$id_sector";
- $consulta2 = mysql_query($sql2, $link);
- while ($datatmp2 = mysql_fetch_array($consulta2)) {
-
- $caudal_inferior = $datatmp2['caudal_inferior'];
-
- $caudal_superior = $datatmp2['caudal_superior'];
-
- $caudal_normal = $datatmp2['caudal_normal'];
-
- $pulso_minuto = $datatmp2['pulso_minuto'];
-
- $caudal_pulso = $datatmp2['caudal_pulso'];
-
- $id_sensor = $datatmp2['id_sensor'];
-
- $tiempo_diff_inicio = $datatmp2['tiempo_diff_inicio'];
-
- $tiempo_diff_final = $datatmp2['tiempo_diff_final'];
-
- //le doy 10 min de diferencia entre el inicio y el fin
- if (($intervalo_inicio>$tiempo_diff_inicio)&&($intervalo_fin<$tiempo_diff_final)){
-
- if($j==0){
- $id_sensores_regando[$j]=$id_sensor;
- }else{
- if($id_sensores_regando[$j-1]!=$id_sensor){
- $id_sensores_regando[$j]=$id_sensor;
- }
- }
-
- $sqlultimodato = "select fecha from $nombre_tabla_muestra_mensual where id_sensor=$id_sensor order by fecha desc LIMIT 1";
- $consultaultimodato = mysql_query($sqlultimodato, $link);
- if($datatmpultimodato = mysql_fetch_array($consultaultimodato)) {
- $fecha_ultimo_dato=$datatmpultimodato['fecha'];
-
- }
-
-
- $sql6 = "SELECT * FROM alerta_caudal where estado=0 and id_sensor=$id_sensor and id_sector=$id_sector";
- $consulta6 = mysql_query($sql6, $link);
- if($datatmp6 = mysql_fetch_array($consulta6)) {
- $alertas=1;
-
- }else{
- $alertas=0;
- }
-
- $sqlm3 = "select m3 from configuracion where id_sensor = $id_sensor";
- $consulta3m = mysql_query($sqlm3, $link);
- if ($datatmpm3 = mysql_fetch_array($consulta3m)) {
- $m3porpulso = $datatmpm3['m3'];
- }
-
- $sql3 = "select mail_activado,descripcion from sensor where id_sensor=$id_sensor";
- $consulta3 = mysql_query($sql3, $link);
- //$calculocaudal = 0;
- //$fechaanterior = 0;
- if ($datatmp3 = mysql_fetch_array($consulta3)) {
- $mail_activado = $datatmp3['mail_activado'];
- //echo "\n";
- $descripcion = $datatmp3['descripcion'];
- //echo "<br>";
-
-
- //ver estado despues
- //CAMBIAR INTERVALO A 10 MINUTOS!!!!!!!!!!!!!!!!
- $sql4 = "SELECT valor, fecha FROM $nombre_tabla_muestra_mensual where id_sensor='$id_sensor' and fecha> date_sub(now(),interval 10 minute) order by fecha asc";
- $consulta4 = mysql_query($sql4, $link);
- $calculocaudal = 0;
- $valor_anterior = 0;
- $fecha_anterior = 0;
- $valor_ini=0;
- $q=0;
- while ($datatmp4 = mysql_fetch_array($consulta4)) {
-
- $value_d = $datatmp4['valor'] * 10;
- $fecha_d = $datatmp4['fecha'];
- if ($valor_ini != 0) {
- $diff = (abs(strtotime($fecha_d) - strtotime($fecha_anterior)) / 60);
- $factor = $m3porpulso / $diff * 60;
- if ($diff > 1) {
- if (($value_d - $valor_anterior) > 65535) {
- $valor_anteanterior = $valor_anterior;
- $valor_anterior = $value_d - 0.3;
- }
- if (($value_d - $valor_anterior) >= 0) {
- //$datosensorcaudalsintime[$q]=round($value_d*$m3porpulso-$valor_anterior*$m3porpulso,2)*60;// iba *10
- $datosensorcaudal[$q] = round(($value_d - $valor_anterior) * $factor, 2); // iba *10
- } else {
-
- if (($value_d - $valor_anterior + 65535) > ($valor_anterior - $valor_anteanterior) * 2) {// el problema es cuando $q=0
- $datosensorcaudal[$q] = $datosensorcaudal[$q-1];
-
- } else {
- //echo ($valor_anteanterior*10);
- //$datosensorcaudalsintime[$q]=round($datatmp4['valor']*10*$m3porpulso-$valor_anterior*10*$m3porpulso+65535,2)*60;// iba *10
- $datosensorcaudal[$q] = round(($value_d - $valor_anterior + 65535) * $factor, 2); // iba *10
-
- }
- }
- /* if($asd ==1){
- $fechadatosensorcaudal[$q]=$datatmp4['fecha'];
- } */
- $fechadatosensorcaudal[$q] = $fecha_d;
- $valor_anteanterior = $valor_anterior;
- $fecha_anterior = $fecha_d;
- $valor_anterior = $value_d;
- $q++;
- }
- } else {
- $valor_anteanterior = $valor_anterior;
- $valor_anterior = $value_d;
- $fecha_anterior = $fecha_d;
- $valor_ini = 1;
- }
- }
-
-
- if(isset($datosensorcaudal)){
- $contador=count($datosensorcaudal);
- //echo "contador de sensores";
- $contadorsensores=count($id_sensores_regando);
- $caudal_supremo=$datosensorcaudal[$contador-1];
- $fecha_suprema=$fechadatosensorcaudal[$contador-1];
- }else{
- $contador=0;
- }
-
- //$valor_actual=$datosensorcaudal[$contador-1];
- if ($contador!=0){ //el if si entrega una diferencia de 0 significa que el dato llego igual, por ende dejo de salir agua
- if($datosensorcaudal[$contador-1]>$caudal_superior){
- //echo "mando correo se se paso sobre el umbral";
-
- if($alertas==0){//ver si entro en una alerta superior y altiro en una inferior
- $mensaje_alerta_caudal[$j]=$sector.'+'.$id_nodo.'+'.$caudal_supremo.'+'.$caudal_superior.'+cs';
- if($mail_activado==1){
- $mail = "Sector: $sector "."<br>"."id_nodo: $id_nodo "."<br>"." Valor: $caudal_supremo sobre umbral superior ($caudal_superior)"."<br>"." Fecha: '$fecha_suprema' \r\n";
- //Titulo
- $titulo = "Alerta sobre umbral superior en $sector.";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: alertas@lemsystem.cl";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa, $titulo, $mail, $headers);
- if ($bool) {
- //echo "Mensaje enviado";
- } else {
- //echo "Mensaje no enviado";
- }
- }
-
- $sql5 = "INSERT into alerta_caudal(id_sensor,id_sector,tipo,fecha_ini,estado,id_empresa) VALUES ('$id_sensor','$id_sector','cs','$fecha_suprema',0,$id_empresa)";
-
- ; $consulta5 = mysql_query($sql5, $link);
- }
-
- }else if($datosensorcaudal[$contador-1]<$caudal_inferior){
- //echo "mando correo se se paso bajo el umbral";
-
- if($alertas==0){
- $mensaje_alerta_caudal[$j]=$sector.'+'.$id_nodo.'+'.$caudal_supremo.'+'.$caudal_inferior.'+ci';
- if($mail_activado==1){
- $mail = "Sector: $sector "."<br>"."id_nodo: $id_nodo "."<br>"." Valor: $caudal_supremo bajo umbral inferior ($caudal_inferior)"."<br>"." Fecha: '$fecha_suprema' \r\n";
- //Titulo
- $titulo = "Alerta bajo umbral inferior en $sector.";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: alertas@lemsystem.cl";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa, $titulo, $mail, $headers);
- if ($bool) {
- //echo "Mensaje enviado";
- } else {
- //echo "Mensaje no enviado";
- }
- }
-
- echo $sql5 = "INSERT into alerta_caudal(id_sensor,id_sector,tipo,fecha_ini,estado,id_empresa) VALUES ('$id_sensor','$id_sector','ci','$fecha_suprema',0,$id_empresa)";
- echo "hola";
- $consulta5 = mysql_query($sql5, $link);
- }
- }else{
- if($alertas==1){
- //echo "<br>";
- $sql7 = "select TIMESTAMPDIFF(MINUTE,fecha_ini,'$fecha_ultimo_dato') as diferencia,fecha_ini,
- fecha_fin,id_alerta from alerta_caudal where id_sensor=$id_sensor and (tipo='ci' or tipo='cs') and id_sector=$id_sector order by fecha_ini desc LIMIT 1";
- //cs = caudal superior y ci= caudal inferior
- $consulta7 = mysql_query($sql7, $link);
- if ($datatmp7 = mysql_fetch_array($consulta7)) {// existe una alerta anterior
- //echo "<br>";
- $diferencia=$datatmp7['diferencia'];
- //echo "<br>";
- $id_alerta=$datatmp7['id_alerta'];
- //echo "<br>";
- $fecha_fin=$datatmp7['fecha_fin'];
-
- if($diferencia>4){// tiempo para cerrar la alerta o
- if($datosensorcaudal[$contador-1]<$caudal_superior && $datosensorcaudal[$contador-1]>$caudal_inferior){
- //echo "<br>";
- $sql8 = "UPDATE alerta_caudal set estado=1,fecha_fin=now(),update_p=0 where id_alerta='$id_alerta'";
- $consulta8 = mysql_query($sql8, $link);
- //echo "updateo la alerta $id_alerta";
- }
- }
-
- }
- }
- }
- }else{
- //echo "no hay datos en los ultimos 10 min";
- }
- }
- }else{
- $sql7 = "select id_alerta from alerta_caudal where id_sensor=$id_sensor and (tipo='ci' or tipo='cs') and
- id_sector=$id_sector and estado=0 order by fecha_ini desc LIMIT 1";
- //cs = caudal superior y ci= caudal inferior
- $consulta7 = mysql_query($sql7, $link);
- if ($datatmp7 = mysql_fetch_array($consulta7)) {// existe una alerta anterior
- //echo "<br>";
- //$diferencia=$datatmp7['diferencia'];
- //echo "<br>";
- $id_alerta=$datatmp7['id_alerta'];
- //echo "<br>";
- //$fecha_fin=$datatmp7['fecha_fin'];
-
- //if($diferencia>20){// tiempo para cerrar la alerta
- //echo "<br>";
- $sql8 = "UPDATE alerta_caudal set estado=1,fecha_fin=now(),update_p=0 where id_alerta='$id_alerta'";
- $consulta8 = mysql_query($sql8, $link);
- //echo "updateo la alerta $id_alerta";
- //}
-
- }
- }
-
- }
- $j=$j+1;
-
- }
- $id_sensores_regando[0]=0;
- $j=0;
- $z=0;
- $sql = "SELECT a.id_nodo,a.id_sector,a.sector, TIMESTAMPDIFF(MINUTE, a.r_fecha_ini,now()) as intervalo_inicio,
- TIMESTAMPDIFF(MINUTE, a.r_fecha_fin,now()) as intervalo_fin FROM programacion_riego a INNER JOIN (SELECT MAX( id_programacion_riego ) AS maxid FROM programacion_riego
- WHERE id_nodo not in ($nodos_negados) AND (estado=2 or estado=6) AND p_fecha_ini < NOW() and p_fecha_fin>DATE_SUB(now(), INTERVAL 15 minute) and n_orden_riego_sector != 0 group by id_nodo) as b on a.id_programacion_riego = b.maxid";// alertas para riegos manuales????
- $consulta = mysql_query($sql, $link);
- while ($datatmp = mysql_fetch_array($consulta)) {
- $riegos="si";
- $id_nodo = $datatmp['id_nodo'];
-
- $id_sector = $datatmp['id_sector'];
-
- $sector = $datatmp['sector'];
-
- $intervalo_inicio= $datatmp['intervalo_inicio'];
-
- $intervalo_fin=$datatmp['intervalo_fin'];
-
-
- $sql_tabla_muestra="SELECT nombre_tabla_muestra_mensual, nombre from nodo where id_nodo='$id_nodo'";
- $consulta_tabla_muestra = mysql_query($sql_tabla_muestra, $link) or die(mysql_error());
- $objeto5 = mysql_num_rows($consulta_tabla_muestra);
- if($datatmp = mysql_fetch_array($consulta_tabla_muestra)) {
- $nombre_tabla_muestra_mensual=$datatmp['nombre_tabla_muestra_mensual'];
- $nombre=$datatmp['nombre'];
- }
-
-
-
-
- //se guardan siempre los id de lemcontrol asociados a un riego (se asume que tiene caudalimetro).
- //en un futuro evaluar posibilidad que sea mas de un sector con caudalimetro para el riego del sector final (ejemplo: regar un sector que requiera de 2 pozos con 2 bombas)
- //y cada bomba tiene su caudal
- //echo "entro al riego";
- $sql2 = "Select caudal_inferior,caudal_superior, caudal_normal, pulso_minuto,caudal_pulso,id_sensor from control_riego where id_nodo=$id_nodo and id_sector=$id_sector";
- $consulta2 = mysql_query($sql2, $link);
- while ($datatmp2 = mysql_fetch_array($consulta2)) {
-
- $caudal_inferior = $datatmp2['caudal_inferior'];
-
- $caudal_superior = $datatmp2['caudal_superior'];
-
- $caudal_normal = $datatmp2['caudal_normal'];
-
- $pulso_minuto = $datatmp2['pulso_minuto'];
-
- $caudal_pulso = $datatmp2['caudal_pulso'];
-
- $id_sensor = $datatmp2['id_sensor'];
-
- //le doy 10 min de diferencia entre el fin
- if ($intervalo_fin<15 && $intervalo_fin>2){
-
- if($j==0){
- $id_sensores_regando[$j]=$id_sensor;
- }else{
- if($id_sensores_regando[$j-1]!=$id_sensor){
- $id_sensores_regando[$j]=$id_sensor;
- }
- }
-
- $sqlultimodato = "select fecha from $nombre_tabla_muestra_mensual where id_sensor=$id_sensor order by fecha desc LIMIT 1";
- $consultaultimodato = mysql_query($sqlultimodato, $link);
- if($datatmpultimodato = mysql_fetch_array($consultaultimodato)) {
- $fecha_ultimo_dato=$datatmpultimodato['fecha'];
-
- }
-
-
- //echo "<br>";
- $sql6 = "SELECT * FROM alerta_caudal where estado=0 and id_sensor=$id_sensor and id_sector=$id_sector";
- $consulta6 = mysql_query($sql6, $link);
- if($datatmp6 = mysql_fetch_array($consulta6)) {
- $alertas=1;
-
- }else{
- $alertas=0;
- }
- //echo "<br>";
-
- $sqlm3 = "select m3 from configuracion where id_sensor = $id_sensor";
- $consulta3m = mysql_query($sqlm3, $link);
- if ($datatmpm3 = mysql_fetch_array($consulta3m)) {
- $m3porpulso = $datatmpm3['m3'];
- }
-
- $sql3 = "select mail_activado,descripcion from sensor where id_sensor=$id_sensor";
- $consulta3 = mysql_query($sql3, $link);
- //$calculocaudal = 0;
- //$fechaanterior = 0;
- if ($datatmp3 = mysql_fetch_array($consulta3)) {
- $mail_activado = $datatmp3['mail_activado'];
- //echo "\n";
- $descripcion = $datatmp3['descripcion'];
- //echo "<br>";
-
-
- //ver estado despues
- //CAMBIAR INTERVALO A 10 MINUTOS!!!!!!!!!!!!!!!!
- $sql4 = "SELECT valor, fecha FROM $nombre_tabla_muestra_mensual where id_sensor='$id_sensor' and fecha> date_sub(now(),interval 10 minute) order by fecha asc";
- $consulta4 = mysql_query($sql4, $link);
- $calculocaudal = 0;
- $valor_anterior = 0;
- $fecha_anterior = 0;
- $valor_ini=0;
- $q=0;
- while ($datatmp4 = mysql_fetch_array($consulta4)) {
-
- $value_d = $datatmp4['valor'] * 10;
- $fecha_d = $datatmp4['fecha'];
- if ($valor_ini != 0) {
- $diff = (abs(strtotime($fecha_d) - strtotime($fecha_anterior)) / 60);
- $factor = $m3porpulso / $diff * 60;
- if ($diff > 1) {
- if (($value_d - $valor_anterior) > 65535) {
- $valor_anteanterior = $valor_anterior;
- $valor_anterior = $value_d - 0.3;
- }
- if (($value_d - $valor_anterior) >= 0) {
- //$datosensorcaudalsintime[$q]=round($value_d*$m3porpulso-$valor_anterior*$m3porpulso,2)*60;// iba *10
- $datosensorcaudal[$q] = round(($value_d - $valor_anterior) * $factor, 2); // iba *10
- } else {
-
- if (($value_d - $valor_anterior + 65535) > ($valor_anterior - $valor_anteanterior) * 2) {// el problema es cuando $q=0
- $datosensorcaudal[$q] = $datosensorcaudal[$q-1];
-
- } else {
- //echo ($valor_anteanterior*10);
- //$datosensorcaudalsintime[$q]=round($datatmp4['valor']*10*$m3porpulso-$valor_anterior*10*$m3porpulso+65535,2)*60;// iba *10
- $datosensorcaudal[$q] = round(($value_d - $valor_anterior + 65535) * $factor, 2); // iba *10
-
- }
- }
- /* if($asd ==1){
- $fechadatosensorcaudal[$q]=$datatmp4['fecha'];
- } */
- $fechadatosensorcaudal[$q] = $fecha_d;
- $valor_anteanterior = $valor_anterior;
- $fecha_anterior = $fecha_d;
- $valor_anterior = $value_d;
- $q++;
- }
- } else {
- $valor_anteanterior = $valor_anterior;
- $valor_anterior = $value_d;
- $fecha_anterior = $fecha_d;
- $valor_ini = 1;
- }
- }
-
-
- if(isset($datosensorcaudal)){
- $contador=count($datosensorcaudal);
- //echo "contador de sensores";
- $contadorsensores=count($id_sensores_regando);
- $caudal_supremo=$datosensorcaudal[$contador-1];
- $fecha_suprema=$fechadatosensorcaudal[$contador-1];
- }else{
- $contador=0;
- }
-
- //$valor_actual=$datosensorcaudal[$contador-1];
- if ($contador!=0){//el if si entrega una diferencia de 0 significa que el dato llego igual, por ende dejo de salir agua
- if($datosensorcaudal[$contador-1]>0){//si es 0, significa que dejo de salir agua, si no seta saliendo agua y se definira dentro de este if si es umbral superior o inferior
- if($datosensorcaudal[$contador-1]>$caudal_superior){
- //echo "mando correo se se paso sobre el umbral";
-
- if($alertas==0){//ver si entro en una alerta superior y altiro en una inferior
- $mensaje_alerta_caudal_terminado[$j]=$sector.'+'.$id_nodo.'+'.$caudal_supremo.'+'.$caudal_superior.'+cs';
- if($mail_activado==1){
- $mail = "Sector: $sector "."<br>"."id_nodo: $id_nodo "."<br>"." Valor: $caudal_supremo sobre umbral superior ($caudal_superior)"."<br>"." Fecha: '$fecha_suprema' \r\n";
- //Titulo
- $titulo = "Alerta sobre umbral superior en $sector.";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: alertas@lemsystem.cl";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa, $titulo, $mail, $headers);
- if ($bool) {
- //echo "Mensaje enviado";
- } else {
- //echo "Mensaje no enviado";
- }
- }
-
- $sql5 = "INSERT into alerta_caudal(id_sensor,id_sector,tipo,fecha_ini,estado,id_empresa) VALUES ('$id_sensor','$id_sector','cs','$fecha_suprema',0,$id_empresa)";
-
- $consulta5 = mysql_query($sql5, $link);
- }
-
- }else if($datosensorcaudal[$contador-1]<$caudal_inferior){
- //echo "mando correo se se paso bajo el umbral";
-
- if($alertas==0){
- $mensaje_alerta_caudal_terminado[$j]=$sector.'+'.$id_nodo.'+'.$caudal_supremo.'+'.$caudal_inferior.'+ci';
- if($mail_activado==1){
- $mail = "Sector: $sector "."<br>"."id_nodo: $id_nodo "."<br>"." Valor: $caudal_supremo bajo umbral inferior ($caudal_inferior)"."<br>"." Fecha: '$fecha_suprema' \r\n";
- //Titulo
- $titulo = "Alerta bajo umbral inferior en $sector.";
- //cabecera
- $headers = "MIME-Version: 1.0\r\n";
- $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
- //dirección del remitente
- $headers .= "From: alertas@lemsystem.cl";
- //Enviamos el mensaje a tu_dirección_email
- //$bool = mail($mailEmpresa, $titulo, $mail, $headers);
- if ($bool) {
- //echo "Mensaje enviado";
- } else {
- //echo "Mensaje no enviado";
- }
- }
-
- $sql5 = "INSERT into alerta_caudal(id_sensor,id_sector,tipo,fecha_ini,estado,id_empresa) VALUES ('$id_sensor','$id_sector','ci','$fecha_suprema',0,$id_empresa)";
-
- $consulta5 = mysql_query($sql5, $link);
- }
- }else{
- if($alertas==1){
- //echo "<br>";
- $sql7 = "select TIMESTAMPDIFF(MINUTE,fecha_ini,'$fecha_ultimo_dato') as diferencia,fecha_ini,
- fecha_fin,id_alerta from alerta_caudal where id_sensor=$id_sensor and (tipo='ci' or tipo='cs') and id_sector=$id_sector order by fecha_ini desc LIMIT 1";
- //cs = caudal superior y ci= caudal inferior
- $consulta7 = mysql_query($sql7, $link);
- if ($datatmp7 = mysql_fetch_array($consulta7)) {// existe una alerta anterior
- //echo "<br>";
- $diferencia=$datatmp7['diferencia'];
- //echo "<br>";
- $id_alerta=$datatmp7['id_alerta'];
- //echo "<br>";
- $fecha_fin=$datatmp7['fecha_fin'];
-
- if($diferencia>20){// tiempo para cerrar la alerta
- //echo "<br>";
- $sql8 = "UPDATE alerta_caudal set estado=1,fecha_fin=now(),update_p=0 where id_alerta='$id_alerta'";
- $consulta8 = mysql_query($sql8, $link);
- //echo "updateo la alerta $id_alerta";
- }
-
- }
- }
- }
- }
- }else{
- //echo "no hay datos en los ultimos 10 min";
- }
- }
- }else{
- $sql7 = "select id_alerta,fecha_ini from alerta_caudal where id_sensor=$id_sensor and (tipo='ci' or tipo='cs') and
- id_sector=$id_sector and estado=0 order by fecha_ini desc LIMIT 1";
- //cs = caudal superior y ci= caudal inferior
- $consulta7 = mysql_query($sql7, $link);
- if ($datatmp7 = mysql_fetch_array($consulta7)) {// existe una alerta anterior
- //echo "<br>";
- //$diferencia=$datatmp7['diferencia'];
- //echo "<br>";
- $id_alerta=$datatmp7['id_alerta'];
- $fecha_ini_alerta=$datatmp7['fecha_ini'];
- //echo "<br>";
- //$fecha_fin=$datatmp7['fecha_fin'];
-
- //if($diferencia>20){// tiempo para cerrar la alerta
- //echo "<br>";
- $sql8 = "UPDATE alerta_caudal set estado=1,fecha_fin=now(),update_p=0 where id_alerta='$id_alerta'";
- $consulta8 = mysql_query($sql8, $link);
- //echo "updateo la alerta $id_alerta";
- //}
-
- }
- }
-
- }
- $j=$j+1;
- }
- if($riegos=="no"){
- $sql8 = "UPDATE alerta_caudal set estado=1,fecha_fin=now(),update_p=0 where estado=0";
- $consulta8 = mysql_query($sql8, $link);
- }
-
-
- //---------------------------------------------------------Fin alerta caudal---------------------------------------------------------------
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ?>