<?php
		// necesita $camara y $conn y init_array previo.
		// regresa : $fumigacion (id) estadocamara(si esta o =0 no fumigando), $estadocamara, $temperatura[$i],$digital[$dig], $flag; $numcamaras
		// regresa : metroscuadrados,tempminima,tipofumigacion,nombrecamara,medicionesconcentraciones(3 o 5).
	$critico = 45;
	$noregistrado=0;
	$noregistradocamara=0;
	//$forzarlectura=0;
	//$forzarcamara=1;
	session_start();
?>


<?
	if (!session_is_registered('xfumigacion')) {
		session_register('xfumigacion');	
		$noregistrado=1;
	}
	if	(is_null($xfumigacion[$camara])) {
		$noregistrado=1;
	}
	if (!session_is_registered('xestadocamara')) {
		session_register('xestadocamara');
	} 
	if (!session_is_registered('xtemperatura')) {
		session_register('xtemperatura');
	} 
	if (!session_is_registered('xdigital')) {
		session_register('xdigital');
	} 
	if (!session_is_registered('xtempminima')) {
		session_register('xtempminima');
	} 
	if (!session_is_registered('xtipofumigacion')) {
		session_register('xtipofumigacion');
	}
	if (!session_is_registered('xtipodosis')) {
		session_register('xtipodosis');
	} 	
	if (!session_is_registered('xtempfalla')) {
		session_register('xtempfalla');
		$noregistrado=1;
	} 
	if (!session_is_registered('xflag')) {
		session_register('xflag');
	} 
	if (!session_is_registered('xrangotemperatura')) {
		session_register('xrangotemperatura');
	} 
	if (!session_is_registered('xrangotemperaturaold')) {
		session_register('xrangotemperaturaold');
		$xrangotemperaturaold[$camara]=10;
	} 
		

// *******************************	
// camara****	(datos fijos)
// *******************************
	if (!session_is_registered('xmetroscuadrados')) {
		session_register('xmetroscuadrados');
		$noregistradocamara=1;
	} 
	if (!session_is_registered('xnombrecamara')) {
		session_register('xnombrecamara');	
	}
	if ($xnombrecamara[$camara]=="") {
		$noregistradocamara=1;
	}
	if (!session_is_registered('xmedicionesconcentraciones')) {
		session_register('xmedicionesconcentraciones');
		$noregistradocamara=1;
	} 
	if (!session_is_registered('xmodanalogo')) {
		session_register('xmodanalogo');
	} 
	if (!session_is_registered('xmoddigital')) {
		session_register('xmoddigital');
	} 	
	// CAMARA SOLAMENTE**************************
	// **********************************
	if ($forzarcamara==1 || $noregistradocamara==1) {
		//$forzarlectura=1;		
		$xfumigacion[$camara] = 33;
		$sql = "SELECT * FROM fum_camara where id=" . $camara;
		$resultado = mssql_query($sql,$conn) or die("No puede leer camara".$sql);
		if (!$resultado) {
			echo "<b>Error de busqueda</b>";
			exit;
		}
		$numcamaras = rows_affected();
		if ($numcamaras == 0) {
			echo "No existe camara!\n";
			exit;
		}
		echo "------------------------<br>";
		echo "Revisando $camara camara<br>";
		echo "------------------------<br>";
		$xmetroscuadrados[$camara]= mssql_result($resultado, 0, "metroscuadrados");
		$xnombrecamara[$camara]= mssql_result($resultado, 0, "nombre");
		echo "Metros Cuadrado :".$xmetroscuadrados[$camara]."<br>";
		echo "Nombre Camara   :".$xnombrecamara[$camara]."<br>";
		$xmedicionesconcentraciones[$camara]= mssql_result($resultado, 0, "mediciones_concentraciones");
		echo "Mediciones :".$xmedicionesconcentraciones[$camara]."<br>";
		$sensoresanalogos[$camara]= trim(mssql_result($resultado, 0, "sensoresanalogos"));
		$ubicacionarray=split("[|]",$sensoresanalogos[$camara]);
		if (count($ubicacionarray)==18) {
			echo "Sensores Analogos:".count($ubicacionarray)." de 18 (correcto)<br>";
		} else {
			echo "Sensores Analogos:".count($ubicacionarray)." de 18 <b>incorrecto, volviendo valores por defecto.</b><br>";
			$sensoresanalogos[$camara]="1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0";
			$ubicacionarray=split("[|]",$sensoresanalogos[$camara]);
			$sql="update fum_camara set sensoresanalogos='1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|0' where id=$camara";
			$resultado2 = mssql_query($sql,$conn) or die("No puede actualizar camara<br>".$sql."- $tmp" );		
		}
		for ($i=0;$i<18;$i++) {
			for ($e=$i+1;$e<18;$e++) {
				if ($ubicacionarray[$e]==$ubicacionarray[$i] and $ubicacionarray[$i]!='0') {
					echo "&nbsp;&nbsp;<b>Sensor ".$ubicacionarray[$i]." usado en dos partes :</b>".$analogos[$i]." y ".$analogos[$e]."</b><br>";
				}
			}
		}
		$e=-1;		
		foreach ($analogos as $i) {
			$e++;
			//$xmodanalogo[$i][$camara] = mssql_result($resultado, 0, $i);
			$xmodanalogo[$i][$camara] = $ubicacionarray[$e];
		}
		foreach ($digitales as $i) {
			$xmoddigital[$i][$camara] = mssql_result($resultado, 0, $i);
		}
		mssql_free_result($resultado);
	}
// *******************************	
// fin camara lectura****	
// *******************************	
	
	
	//$forzarlectura=1;
	
	if ($forzarlectura==1 || $noregistrado==1) {
		$xtempminima[$camara]=5555;			
		echo "temperatura minima limpia<br>";
		$sql = "SELECT * FROM fum_fumigacion where camara=" . $camara . " and estadofumigacion>=1 and estadofumigacion<=10 order by inicio DESC";
		$resultado2 = mssql_query($sql,$conn) or die("No puede leer fumigacion");
		if (!$resultado2) {
			echo "<b>Error de busqueda</b>";
			exit;
		}
		$filas = rows_affected();
		if ($filas != 0) {
			$xflag[$camara] = mssql_result($resultado2, 0, "flag");		
			$xfumigacion[$camara] = mssql_result($resultado2, 0, "id");
			$xestadocamara[$camara] = mssql_result($resultado2, 0, "estadofumigacion");
			// debido a que solo se lee forzado (enginer_right), no es necesario mantenerlos en session
			$inicio = mssql_result($resultado2, 0, "inicio"); 
			$finventilador = mssql_result($resultado2, 0, "finventilador");
			$fin = mssql_result($resultado2, 0, "fin");			
			// ...
			$xtipofumigacion[$camara] = mssql_result($resultado2, 0, "tipofumigacion");
			$xrangotemperaturaold[$camara]=mssql_result($resultado2, 0, "rangotemperatura");
			$xtipodosis[$camara]=mssql_result($resultado2, 0, "tipodosis");					
		} else {			
			// si no hay fumigacion asignada a esa camara entonces el estado es idle.
			$xflag[$camara]=0;
			$nombre="";
			$xfumigacion[$camara] = 0;
			$xestadocamara[$camara] = 0;
			$xrangotemperaturaold[$camara]=10;
			$xtipodosis[$camara]=0;
		}
		$tempfalla = 0;
		
		foreach ($analogos as $i) {
			$temp = $xmodanalogo[$i][$camara];
			if ($temp != 0) {
				$sql = "SELECT * from motorlecturas WHERE lecturadirmodulo=" . $temp . " and lecturadirmemoria=257";
				$resultado2 = mssql_query($sql,$conn) or die("No puede leer motorlectura<br>".$sql);
				$conectado = mssql_result($resultado2, 0, "lecturavalor");
				$x1= rows_affected();
				if ($x1<=0) {
					echo "No esta definido lecturadirmodulo=$temp y lecturadirmemoria=257.<br>";
					echo "&nbsp;&nbsp;<b>Voy a intentar crearlos yo mismo</b><br>";
					$sql="INSERT INTO MOTORLECTURAS (LecturaDirModulo,LecturaDirMemoria,LecturaValor,LecturaError,LecturaSalto) VALUES ($temp,257,450,0,1)";
					$resultado2 = mssql_query($sql,$conn) or die("&nbsp;&nbsp;No puede crear motorlectura<br>".$sql);
					$x1= rows_affected();
					if ($x1>0) {
						echo "&nbsp;&nbsp;<b>Ok creado exitosamente.<blink>(Debera reiniciar el motor de lectura)</blink></b><br>";
					}
				}
				$conectado = $conectado & 0x03;
				mssql_free_result($resultado2);
				$sql = "SELECT * from motorlecturas WHERE lecturadirmodulo=" . $temp . " and lecturadirmemoria=256";
				$resultado2 = mssql_query($sql,$conn) or die("No puede leer motorlectura");
				$xtemperatura[$i][$camara] = mssql_result($resultado2, 0, "lecturavalor");
				$x1= rows_affected();
				if ($x1<=0) {
					echo "No esta definido lecturadirmodulo=$temp y lecturadirmemoria=256.<br>";
					echo "&nbsp;&nbsp;<b>Voy a intentar crearlos yo mismo</b><br>";
					$sql="INSERT INTO MOTORLECTURAS (LecturaDirModulo,LecturaDirMemoria,LecturaValor,LecturaError,LecturaSalto) VALUES ($temp,256,450,0,1)";
					$resultado2 = mssql_query($sql,$conn) or die("&nbsp;&nbsp;No puede crear motorlectura<br>".$sql);
					$x1= rows_affected();
					if ($x1>0) {
						echo "&nbsp;&nbsp;<b>Ok creado exitosamente.<blink>(Debera reiniciar el motor de lectura)</blink></b><br>";
					}
					$xtemperatura[$i][$camara]=0;
				}				
				if ($conectado == 0x03 || $xtemperatura[$i][$camara]==-555) {
					$xtemperatura[$i][$camara]=-555;
					$xtempminima[$camara]=$xtemperatura[$i][$camara];
					echo "temperatura minima asignada a <b>".($xtemperatura[$i][$camara]/10)."</b><br>";
					
					if (strpos($i,"ulpa")>0) { $tempfalla=10; }
					if (strpos($i,"mbiente")>0) { $tempfalla=11; }
					if (strpos($i,"vaporador")>0) { $tempfalla=12; }
					//break (1); // foreach
				} else {
					if ($xtemperatura[$i][$camara]<$xtempminima[$camara]) { $xtempminima[$camara]=$xtemperatura[$i][$camara]; 
						echo "temperatura minima asignada a ".($xtemperatura[$i][$camara]/10)."<br>";					
					}	
					if ($xtemperatura[$i][$camara] < 45) {						
						if (strpos($i,"ulpa")>0) { $tempfalla=7; }
						if (strpos($i,"mbiente")>0) { $tempfalla=8; }
						if (strpos($i,"vaporador")>0) { $tempfalla=9; }						
						//break (1); // foreach
					}					
				}
				if ($tempfalla!=0) {
					echo "temperatura $i status : <b>$tempfalla</b><br>";		
				}
			} else {
				$xtemperatura[$i][$camara]=555;
				
			}
		}
		
		$dosistemp=0;
		$rangodosis=0;
		$tempminima=$xtempminima[$camara];

		switch($xtipodosis[$camara]) {
		case 1:
			if ($tempminima<110 ) { $dosistemp=0; $rangodosis=0;}
			if ($tempminima>=110 && $tempminimina<115) {  $rangodosis=1;}
			if ($tempminima>=115 && $tempminimina<160) {  $rangodosis=2;}
			if ($tempminima>=160 && $tempminimina<165) {  $rangodosis=3;}
			if ($tempminima>=165 && $tempminimina<210) {  $rangodosis=4;}
			if ($tempminima>=210 && $tempminimina<215) {  $rangodosis=5;}
			if ($tempminima>=215) {  $rangodosis=6;}
			break;
		case 2:
			if ($tempminima<135 ) { $dosistemp=0; $rangodosis=0;}
			if ($tempminima>=135 && $tempminimina<140) {  $rangodosis=1;}
			if ($tempminima>=140) {  $rangodosis=2;}
			break;			
		default:
			if ($tempminima<45 ) { $dosistemp=0; $rangodosis=0;}
			if ($tempminima>=45 && $tempminimina<50) {  $rangodosis=1;}
			if ($tempminima>=50 && $tempminimina<100) {  $rangodosis=2;}
			if ($tempminima>=100 && $tempminimina<105) { $rangodosis=3;}
			if ($tempminima>=105 && $tempminimina<155) {  $rangodosis=4;}
			if ($tempminima>=155 && $tempminimina<160) {  $rangodosis=5;}
			if ($tempminima>=160 && $tempminimina<210) {  $rangodosis=6;}
			if ($tempminima>=210 && $tempminimina<215) {  $rangodosis=7;}
			if ($tempminima>=215 && $tempminimina<265) {  $rangodosis=8;}
			if ($tempminima>=265 && $tempminimina<270) { $rangodosis=9;}
			if ($tempminima>=270 ) {  $rangodosis=10;}
			break;
		}
		if ($rangodosis>$xrangotemperaturaold[$camara]) {
			$rangodosis=$xrangotemperaturaold[$camara];
		}
		$dosistemp=$rangos[$rangodosis];
		
		$xrangotemperatura[$camara]=$rangodosis;
		$xtempfalla[$camara]=$tempfalla;
		foreach ($digitales as $dig) {
			$tmp = $xmoddigital[$dig][$camara];
			$sql = "SELECT * from motorlecturas WHERE lecturadirmodulo=" . $tmp . " and lecturadirmemoria=1280";
			$resultado2 = mssql_query($sql,$conn) or die("No puede leer motorlectura<br>".$sql."- $tmp" );
			$xdigital[$dig][$camara] = mssql_result($resultado2, 0, "lecturavalor");

				$x1= rows_affected();
				if ($x1<=0) {
					echo "No esta definido lecturadirmodulo=$tmp y lecturadirmemoria=1280.<br>";
					echo "&nbsp;&nbsp;<b>Voy a intentar crearlos yo mismo</b><br>";
					$sql="INSERT INTO MOTORLECTURAS (LecturaDirModulo,LecturaDirMemoria,LecturaValor,LecturaError,LecturaSalto) VALUES ($tmp,1280,450,0,1)";
					$resultado2 = mssql_query($sql,$conn) or die("&nbsp;&nbsp;No puede crear motorlectura<br>".$sql);
					$x1= rows_affected();
					if ($x1>0) {
						echo "&nbsp;&nbsp;<b>Ok creado exitosamente.<blink>(Debera reiniciar el motor de lectura)</blink></b><br>";
					}
				}			
			$x1="<b>Desconocido</b>";
			if ($xdigital[$dig][$camara]==768) {
				$x1="Cerrado";
			}
			if ($xdigital[$dig][$camara]==256) {
				$x1="Abierto";
			}
			
			echo "Digital $dig en estado $x1 <br>";				
		}		
		mssql_free_result($resultado2);
		// actualizacion datos para el grafico.
		// son 50 datos por camara, o sea la camara 1, id=(camara*50)-49
		$tmp5=($camara*50)-49;
		$sql="select * from fum_temperaturas where camara=$camara order by fecha DESC;";	
		$resultado2 = mssql_query($sql,$conn) or die("No puede leer motorlectura<br>".$sql );
		$filas = rows_affected();
		if ($filas==0) {
			$ultima_fecha = 0;
			$ultimo_registro=$tmp5;
		} else {
			$ultima_fecha= mssql_result($resultado2, 0, "fecha");
			$ultimo_registro= mssql_result($resultado2, 0, "id")+1;
			if ($ultimo_registro>=($camara*50)+1) {
				$ultimo_registro=$tmp5;
			}			
		}
		if ($ultima_fecha<$fechaactual and $servidor) {
			// $sql="update fum_temperaturas set fecha=".($fechaactual+300).", camara=$camara, valor=".$xtempminima[$camara]." ,leyenda=' '";
			$sql="update fum_temperaturas set fecha=".($fechaactual+300).", camara=$camara , valor=".$xtempminima[$camara];
			
			$sql.=" where id=$ultimo_registro;"; // , leyenda=' '
			$resultado2 = mssql_query($sql,$conn) or die("No puede leer fum_temperaturas<br>".$sql."- $tmp" );
			
			echo "columnas afectadas x:$resultado2 <br>";
			$filas = rows_affected ();
			if ($filas==0) {
				$sql="insert into fum_temperaturas(id,fecha,camara,valor,leyenda)";
				$sql.=" values($ultimo_registro,".($fechaactual+300).",$camara,".$xtempminima[$camara].",' ');";
				$resultado2 = mssql_query($sql,$conn) or die("No puede leer fum_temperaturas<br>".$sql."- $tmp" );
			}
		}		
	}
	// datos comunes que siempre suceden...
	if ($xtipodosis[$camara]==1) {
		$rangos=array(0,64,64,56,56,48,48); // rangos de temperatura cajas madera.
	}
	if ($xtipodosis[$camara]==2) {
		$rangos=array(0,64,64); // rangos de temperatura frutillas	
	}		
	$metroscuadrados=$xmetroscuadrados[$camara];
	$nombrecamara=$xnombrecamara[$camara];	
	$medicionesconcentraciones=$xmedicionesconcentraciones[$camara];
	$fumigacion=$xfumigacion[$camara];
	$estadocamara=$xestadocamara[$camara];
	$flag=$xflag[$camara];
	$tipofumigacion=$xtipofumigacion[$camara];
	$rangotemperatura=$xrangotemperatura[$camara];
	$tempminima=$xtempminima[$camara];
	$tempfalla=$xtempfalla[$camara];
	foreach ($analogos as $i) {
		$temperatura[$i]=$xtemperatura[$i][$camara];
	}
	foreach ($digitales as $i) {
		$digital[$i]=$xdigital[$i][$camara];
	}
	$forzarlectura=0;


	
?>
