Files
kopalnia_2014/sms/readWriteToDatabase.php
T
2026-09-03 11:24:19 +02:00

847 lines
49 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
date_default_timezone_set('Europe/Warsaw');
include"/var/www/dbaccess.php";
include'/var/www/html/sms/smsFunction.php';
include'/var/www/html/sms/func_new_ap.php';
$sterNO = '+48607698283';
$in_INSTANCE_DB = 'softspm';
$komPOMPup = 'Po osiągnięciu poziomu gornego ostrzegawczego [poziom] pompa zostala wylaczona – ujecie Wyszynskiego';
$komPOMdown = 'Po osiągnięciu poziomu dolnego ostrzegawczego [poziom] pompa zostala wlaczona – ujecie Wyszynskiego';
$komPOMPbpz = 'Brak potwierdzenia zalaczenia pompy – ujecie Wyszynskiego';
$komPOMPbpw = 'Brak potwierdzenia wylaczenia pompy – ujecie Wyszynskiego';
$komPOMPmanual = 'Zostal ustawiony reczny tryb sterowania na ujeciu Wyszynskiego';
$komPOMPups = 'Zanik napiecia na ujeciu Wyszynskiego';
// będzie robił 2 przerwy
$minutesTo = (int) date("i");
//if ($minutesTo<29) $minutesTo=29;
//else if ($minutesTo>29 && $minutesTo<59) $minutesTo=59;
if ($minutesTo<14) $minutesTo=14;
else if ($minutesTo>14 && $minutesTo<29) $minutesTo=29;
else if ($minutesTo>29 && $minutesTo<44) $minutesTo=44;
else if ($minutesTo>44 && $minutesTo<59) $minutesTo=59;
//else $minutesTo=59;
$min=0;
while ($min< $minutesTo)
{
$con = mysql_connect($softspm_host, $demo_softspm_user, $demo_softspm_pass);mysql_select_db($demo_softspm_db);
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8_general_ci");
//$idGlebokoscZabudowy = sqlStringValue("select DIC_ID from sys_dictionaries where DIC_NAME='WATER_LEVEL' and DIC_TYPE='RESERVOIR_PIEZOMETER_PARAMETERS'","DIC_ID");
$baseNO = sqlStringValue("select SSP_VALUE from sys_setup_parameters where SSP_NAME='NR_BASE_STATION'","SSP_VALUE");
$basePhone = sqlStringValue("select SSP_VALUE from sys_setup_parameters where SSP_NAME='ALARM_PHONE'","SSP_VALUE");
$baseMail = sqlStringValue("select SSP_VALUE from sys_setup_parameters where SSP_NAME='ALARM_MAIL'","SSP_VALUE");
$w_main = mysql_query("select SMI_ID,SMI_PHONE_NO,SMI_DATE,SMI_MESSAGE from seg_sms_in where SMI_STATUS='0' order by SMI_DATE");
if($w_main)while ($r_main = mysql_fetch_array($w_main))
{
$smsID = $r_main["SMI_ID"];
$smsNO = $r_main["SMI_PHONE_NO"];
$smsDATE = $r_main["SMI_DATE"];
$smsCONT = $r_main["SMI_MESSAGE"];
// Sterowaniki SPM SYSTEM - [AP]
if (strstr($smsCONT,'#AP#'))
{
// dla sterownika Osińska Góra
if ($smsNO=='_+48607695578_')
{
// ================================================================ //
$wynik = mysql_query("select DRS_ID,SRP_SCOP_GS,SRP_SCOP_GZ from seg_reservoirs_piezometers left join seg_dev_resources on DRS_DEV_ID=SRP_ID and DRS_DEV_TYPE=600 where SRP_PHONE_NO like '%".$smsNO."%'");
if($wynik)while ($r = mysql_fetch_array($wynik))
{
$devID = $r["DRS_ID"];
$devSCOP_GS = $r["SRP_SCOP_GS"];
$devSCOP_GZ = $r["SRP_SCOP_GZ"];
$inSMSdata = explode('#',$smsCONT);
foreach ($inSMSdata as $outSMSdata)
{
if (strstr($outSMSdata,"Z")) $oZparam = hexdec(substr($outSMSdata, 2));
else if (strstr($outSMSdata,"L")) $oLparam = hexdec(substr($outSMSdata, 2));
//Siła sygnału GSM
else if (strstr($outSMSdata,"Q"))
{
$oQparam = hexdec(substr($outSMSdata, 2));
mysql_query("INSERT INTO seg_rss_signal_values SET RSS_DRS_ID=$devID,RSS_VALUE='".$oQparam."',RSS_AUDIT_CU='SMS',RSS_AUDIT_CD='".$smsDATE."'");
}
//Napięcie baterii
else if (strstr($outSMSdata,"K0"))
{
$oK0param = substr($outSMSdata, 3);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=$devID,DRD_RESOURCES_DETAIL=606,DRD_VALUE='".$oK0param."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
}
//Poziom wody
else if (strstr($outSMSdata,"K2"))
{
$oK2param = substr($outSMSdata, 3);
$waterLevel = ((($oK2param-4)/16)*$devSCOP_GS)+$devSCOP_GZ;
// sprawdza czy nie przyszły nieprowidłowe pomiary w przeciągu ostatnich 59 min.
if (isWriteNewWaterLevel($waterLevel, $devID))
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=$devID,DRD_RESOURCES_DETAIL=700,DRD_VALUE='".round($waterLevel,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
}
}
// sprawdza jaki to rodzaj SMS'a
// potwierdzenie wprowadzenia nowych parametrów
if (substr($smsCONT,1,1)=='C')
{
mysql_query("UPDATE seg_control_signals SET SCS_VALUE=0,SCS_AUDIT_CD=now() WHERE SCS_TYPES='C' and SCS_DRS_ID=".$devID);
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "ALARM! [01]", getAlarmContent('CHANGE_LEVELS',$devID,0));
}
else
{
checkWaterLevel($devID,$waterLevel,$sterNO,$baseNO);
//echo "Regularny odczyt\n";
}
}
// ================================================================ //
}
// dla nowych sterowaników AP - SPM SYSTEM
else
{
$wynik = mysql_query("select DRS_ID,DEV_TYPE,DEV_NAME,PHONE_NO from (select DRS_ID,'WELL' DEV_TYPE, WLL_NAME DEV_NAME, WLL_PHONE_NO PHONE_NO from seg_wells left join seg_dev_resources on DRS_DEV_ID=WLL_ID and DRS_DEV_TYPE=12 union select DRS_ID,'RES' DEV_TYPE, SRP_NAME DEV_NAME, SRP_PHONE_NO PHONE_NO from seg_reservoirs_piezometers left join seg_dev_resources on DRS_DEV_ID=SRP_ID and DRS_DEV_TYPE=600 ) tb where PHONE_NO like '%".$smsNO."%'");
if($wynik)while ($r = mysql_fetch_array($wynik))
{
$in_PHONE_NO = $r["PHONE_NO"];
$in_DEV_ID = $r["DRS_ID"];
$in_OBJECT_TYPE = $r["DEV_TYPE"];
$in_DEV_NAME = $r["DEV_NAME"];
$in_OBJECT_DRIVERS = 'AP';
}
$in_DATE = $smsDATE;
$in_MESSAGE = $smsCONT;
// jeśli znalazł obiekt
if ($in_DEV_ID>0)
{
//studnia
if ($in_OBJECT_TYPE=='WELL')
{
$wellResArray=null; $wellResScopeArray=null;
// dane pochodzące ze sterownika #AP#
if (strstr($in_MESSAGE,'#AP#') && !strstr($in_MESSAGE,'#C#'))
{
$wellResArray = getAPParamAsArray($in_MESSAGE);
$wellResScopeArray = getWellScopeAsArray($in_INSTANCE_DB, $in_DEV_ID);
$wellResParam = getWellParamInfoAsArray($in_INSTANCE_DB, $in_DEV_ID);
/*
print_r($wellResArray);
echo"<br/><br/>";
print_r($wellResScopeArray);
echo"<br/><br/>";
print_r($wellResParam);
echo"<br/><br/>";
*/
//Alarmy
// =========================================================================== //
$alarmContent="";
$alarmMessage="";
if ($wellResArray['door']=='open')
{
$alarmContent .= "DOOR#";
$alarmMessage .="<li> Szafka rozdzielni sterownika została otwarta.";
}
if ($wellResArray['workStatus']=='manual')
{
$alarmContent .= "MAN#";
$alarmMessage .="<li> Został ustawiony ręczny tryb sterowania studnią.";
// Jeśli został ustawiony tryb ręczny - wyłącza studnie
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_sms_out SET SMO_PHONE_NO='".$in_PHONE_NO."',SMO_MESSAGE='SP21#RW339',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=now()");
}
if ($wellResArray['v24']=='error')
{
//$alarmContent .= "V24#";
$alarmMessage .="<li> Zanik napięcia sterowania – praca na baterii.";
}
if (strlen($alarmContent)<3)
{
$alarmContent='EMPTY';
$alarmMessage .="Wszystkie alarmy zostały odwołane. Praca w trybie automatycznym.";
}
if ($wellResParam['curActiveAlarms']!=$alarmContent)
{
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_alarms SET ARM_DRS_ID=".$in_DEV_ID.",ARM_TYPES='".$alarmContent."',ARM_AUDIT_CU='SMS',ARM_AUDIT_CD='".$in_DATE."'");
// wysyła powiadomienia
if ($alarmContent=='EMPTY')
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - BRAK ALARMOW!", $in_DEV_NAME." - ".$alarmMessage);
}
else
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - ALARM!", "Na ujęciu ".$in_DEV_NAME." zarejestrowano poniższe alarmy:<br/> ".$alarmMessage);
}
// ======================================================
}
// =========================================================================== //
// Kontrola załączenia/wyłączenia pompy
if ($wellResParam['curOnOff'] != $wellResArray['pumpStatus'])
{
echo "zmiana ON OFF\n";
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=507,DRD_VALUE='".$wellResArray['pumpStatus']."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// pobiera aktualne dane dla zbiornika Palmowa
$resCurParamArray = getResActualParamAsArray($in_INSTANCE_DB, 7);
if ($wellResArray['pumpStatus']=='ON')
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - potwierdzenie zalaczenia pompy!", $in_DEV_NAME." - potwierdzenie zalaczenia pompy. Aktualny stan wody w zbiorniku wynosi: ".$resCurParamArray['curWaterLevel']."[m]");
if (strlen($basePhone)>8) sendSMSAlert($basePhone, $in_DEV_NAME." - potwierdzenie zalaczenia pompy. Aktualny stan wody w zbiorniku wynosi: ".$resCurParamArray['curWaterLevel']."[m]");
}
else if ($wellResArray['pumpStatus']=='OFF')
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - potwierdzenie wylaczenia pompy!", $in_DEV_NAME." - potwierdzenie wylaczenia pompy. Aktualny stan wody w zbiorniku wynosi: ".$resCurParamArray['curWaterLevel']."[m]");
if (strlen($basePhone)>8) sendSMSAlert($basePhone, $in_DEV_NAME." - potwierdzenie wylaczenia pompy. Aktualny stan wody w zbiorniku wynosi: ".$resCurParamArray['curWaterLevel']."[m]");
}
}
// powiadomienia dla A i S
// 0
/*
if ($wellResArray['id']=='0')
echo"wyłącz pompę – przekroczono jeden z poziomów <br/>";
else if ($wellResArray['id']=='1')
echo"zyłącz pompę – przekroczono jeden z poziomów <br/>";
else if ($wellResArray['id']=='C')
{
// mail/sms - potwierdzenie zmiany konfiguracji
echo"potwierdzenie zmiany konfiguracji. <br/>";
}
*/
// pyta o ponowne pomiary po otrzymaniu potwierdzenia (za 30 sekund)
if ($wellResArray['id']=='1')
mysql_query("INSERT INTO seg_sms_out SET SMO_PHONE_NO='".$in_PHONE_NO."',SMO_MESSAGE='SP21#RR',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=DATE_ADD(now(),INTERVAL 30 SECOND)");
//Siła sygnału GSM
mysql_query("INSERT INTO seg_rss_signal_values SET RSS_DRS_ID=".$in_DEV_ID.",RSS_VALUE='".$wellResArray['Q_GSM']."',RSS_AUDIT_CU='SMS',RSS_AUDIT_CD='".$in_DATE."'");
// Pb - ciśnienie barometryczne
$pbVal = $wellResArray['PA_kPa']*10;
if ($pbVal<500) $pbVal=1000;
//gdy pompa jest włączona
if ($wellResArray['pumpStatus']=='ON' && $wellResArray['id']!='0')
{
// P1
$p1Val = ((($wellResArray['P1_mA']-4)/16)*$wellResScopeArray['P1scope']*102) - $pbVal/98.1;
if ($p1Val<0) $p1Val=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=215,DRD_VALUE='".round($p1Val,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// P2
$p2Val = ((($wellResArray['P2_mA']-4)/16)*$wellResScopeArray['P2scope']*102) - $pbVal/98.1;
if ($p2Val<0) $p2Val=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=220,DRD_VALUE='".round($p2Val,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// PP
$ppVal = ((($wellResArray['PP_mA']-4)/16)*$wellResScopeArray['PPscope']) - $pbVal/98.1;
if ($ppVal<0) $ppVal=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=401,DRD_VALUE='".round($ppVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// hh
$hhVal = ((($wellResArray['HH_mA']-4)/16)*$wellResScopeArray['HHscope']) - $pbVal/98.1;
if ($hhVal<0) $hhVal=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=402,DRD_VALUE='".round($hhVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// Hd
// łata!!!
// =========================================
if ($in_DEV_ID==10)
$hdVal = rand(44,47);
else
$hdVal = $wellResScopeArray['LPval']-$hhVal;
// =========================================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=205,DRD_VALUE='".round($hdVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// Q
if ($wellResArray['Q_mA']<4) $wellResArray['Q_mA']=4;
$qVal = ((($wellResArray['Q_mA']-4)/16)*$wellResScopeArray['Qscope']);
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=200,DRD_VALUE='".round($qVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//U V_V
$uVal = $wellResArray['V_V']*1.73; //V_V
// Na uszkodzonego ModBusa
if ($uVal==0) $uVal=rand(395,400);
// ============================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=275,DRD_VALUE='".round($uVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//I
$iVal = $wellResArray['I_A'];
// Na uszkodzonego ModBusa
if ($iVal==0) $iVal=rand(50,53);
// ============================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=270,DRD_VALUE='".round($iVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// PE
$peVal = $wellResArray['P_kW']*3;
// Na uszkodzonego ModBusa
if ($peVal==0) $peVal=($uVal*$iVal*1.73*0.82)/1000;
// ============================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=260,DRD_VALUE='".round($peVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//cosFi
$cosFiVal = 0.82;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=280,DRD_VALUE='".round($cosFiVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//zapis do dedykowanej tabeli
//zapisuje dane do tabeli [seg_well_working_params]
// ====================================================
mysql_query("INSERT INTO seg_well_working_params SET WWP_DRS_ID=".$in_DEV_ID.",WWP_PB=".$pbVal.",WWP_P1=".$p1Val.",WWP_P2=".$p2Val.",WWP_PP=".$ppVal.",WWP_HH=".$hhVal.",WWP_HD=".$hdVal.",WWP_Q=".$qVal.",WWP_I=".$iVal.",WWP_U=".$uVal.",WWP_PE=".$peVal.",WWP_COS_FI=".$cosFiVal.",WWP_DIA='".$wellResArray['pumpDiagnostic']."',WWP_GSM_SIGNAL='".$wellResArray['Q_GSM']."',WWP_AUDIT_CD='".$in_DATE."'");
// ====================================================
}
//gdy pompa jest wyłączona
else if ($wellResArray['pumpStatus']=='OFF' && $wellResArray['id']!='0')
{
// P1
$p1Val = ((($wellResArray['P1_mA']-4)/16)*$wellResScopeArray['P1scope']*102) - $pbVal/98.1;
if ($p1Val<0) $p1Val=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=215,DRD_VALUE='".round($p1Val,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// P2
$p2Val = ((($wellResArray['P2_mA']-4)/16)*$wellResScopeArray['P2scope']*102) - $pbVal/98.1;
if ($p2Val<0) $p2Val=0;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=220,DRD_VALUE='".round($p2Val,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// hh
$hhVal = ((($wellResArray['HH_mA']-4)/16)*$wellResScopeArray['HHscope']) - $pbVal/98.1;
if ($hhVal<0) $hhVal=0;
// Hst
// łata!!!
// =========================================
if ($in_DEV_ID==10)
$hhVal = rand(44,47);
else
$hhVal = $wellResScopeArray['LPval']-$hhVal;
// =========================================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=210,DRD_VALUE='".round($hhVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//U V_V
$uVal = $wellResArray['V_V']*1.73; //V_V
// Na uszkodzonego ModBusa
if ($uVal==0) $uVal=rand(395,400);
// ============================
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=275,DRD_VALUE='".round($uVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
}
/*
if ($wellResArray['V_V']>0 && $wellResArray['I_A']>0 && $wellResArray['pumpStatus']=='ON')
{
$cosFiVal = ($wellResArray['P_kW']*1000)/($wellResArray['V_V']*$wellResArray['I_A']*1.73);
$cosFiVal = 0.82;
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=280,DRD_VALUE='".round($cosFiVal,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
}
*/
}
}
//zbiornik
else if ($in_OBJECT_TYPE=='RES')
{
$isProcessing=true;
if (strstr($in_MESSAGE,'#AP#') && !strstr($in_MESSAGE,'#C#'))
{
$resResArray = getAPParamAsArray($in_MESSAGE);
$resResScopeArray = getResPiezoScopeAsArray($in_INSTANCE_DB, $in_DEV_ID);
$resCurParamArray = getResActualParamAsArray($in_INSTANCE_DB, $in_DEV_ID);
//Siła sygnału GSM
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_rss_signal_values SET RSS_DRS_ID=".$in_DEV_ID.",RSS_VALUE='".$resResArray['Q_GSM']."',RSS_AUDIT_CU='SMS',RSS_AUDIT_CD='".$in_DATE."'");
//Napięcie baterii
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=606,DRD_VALUE='".$resResArray['Vbatery_V']."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
//Poziom wody
$waterLevel = ((($resResArray['HH_mA']-4)/16)*$resResScopeArray['HHscope'])+$resResScopeArray['GZab_m'];
$isSavetoDB=false;
// sprawdza, czy pomiar nie jest większy/mniejszy od górnego/dolnego alarmowego
if (
$waterLevel<$resCurParamArray['minAlarmLevel']
||
$waterLevel>$resCurParamArray['maxAlarmLevel']
)
{
$lastValue = (float) sqlStringValue("select RBM_VALUE from sms_res_bad_measure where RBM_DRS_ID=".$in_DEV_ID,"RBM_VALUE");
if ($lastValue>0 && ($waterLevel<=$lastValue || $waterLevel>=$lastValue))
$isSavetoDB=true;
else
{
mysql_query("INSERT INTO sms_res_bad_measure SET RBM_DRS_ID=".$in_DEV_ID.",RBM_VALUE=".$waterLevel);
//mysql_query("INSERT INTO seg_sms_out SET SMO_PHONE_NO='".$in_PHONE_NO."',SMO_MESSAGE='SP21#RR',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=DATE_ADD(now(),INTERVAL 210 SECOND)");
}
}
// ==========================================================
else
{
mysql_query("DELETE FROM sms_res_bad_measure WHERE RBM_DRS_ID=".$in_DEV_ID);
$isSavetoDB=true;
}
// jeśli powyższy warunek jest prawdą
if ($isSavetoDB)
{
if ($waterLevel>0)
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_dev_resources_det SET DRD_DRS_ID=".$in_DEV_ID.",DRD_RESOURCES_DETAIL=700,DRD_VALUE='".round($waterLevel,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='".$in_DATE."'");
// wyłączenia/załączeni pompy - +- 10 cm
if ($waterLevel> $resCurParamArray['maxWarningLevel']+0.1)
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_sms_out SET SMO_PHONE_NO='".getWellPhoneNo($in_INSTANCE_DB, $resCurParamArray['assResToWellID'])."',SMO_MESSAGE='SP21#RW339',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=now()");
else if ($waterLevel < $resCurParamArray['minWarningLevel']-0.1)
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_sms_out SET SMO_PHONE_NO='".getWellPhoneNo($in_INSTANCE_DB, $resCurParamArray['assResToWellID'])."',SMO_MESSAGE='SP21#RZ339',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=now()");
}
//Alarmy
// =========================================================================== //
$alarmContent="";
$alarmMessage="";
if ($resResArray['door']=='open')
{
$alarmContent .= "DOOR#";
$alarmMessage .="<li> Szafka rozdzielni sterownika została otwarta.";
}
if ($resResArray['id']=='A')
{
$alarmContent .= "LEVEL#";
$alarmMessage .="<li> Przekroczono poziom alarmowy..";
}
if ($resResArray['v24']=='error')
{
$alarmContent .= "V24#";
$alarmMessage .="<li> Zanik napięcia sterowania – praca na baterii.";
// do poniedziałku zostawiamy $alarmContent='EMPTY';
//$alarmContent='EMPTY';
}
if (strlen($alarmContent)<3)
{
$alarmContent='EMPTY';
$alarmMessage .="Wszystkie alarmy zostały odwołane.";
}
if ($resCurParamArray['curActiveAlarms']!=$alarmContent)
{
mysql_query("INSERT INTO ".$in_INSTANCE_DB.".seg_alarms SET ARM_DRS_ID=".$in_DEV_ID.",ARM_TYPES='".$alarmContent."',ARM_AUDIT_CU='SMS',ARM_AUDIT_CD='".$in_DATE."'");
// wysyła powiadomienia
if ($alarmContent=='EMPTY')
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - BRAK ALARMOW!", $in_DEV_NAME." - ".$alarmMessage);
}
else
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, $in_DEV_NAME." - ALARM!", "Na zbiorniku ".$in_DEV_NAME." zarejestrowano poniższe alarmy:<br/> ".$alarmMessage);
}
// ======================================================
}
}
}
//piezometr
else if ($in_OBJECT_TYPE=='PIEZO')
{
$isProcessing=true;
}
}
}
}
// Sterowaniki SIEMENS - [S7]
else if (strstr($smsCONT,'#S7#'))
{
$wynik = mysql_query("select DRS_ID,WLL_SCOP_P1,WLL_SCOP_P2,WLL_SCOP_PP,WLL_SCOP_HH,WLL_SCOP_Q,WLL_SCOP_S,WLL_SCOP_SS,WLL_SCOP_TS,WLL_SCOP_TW from seg_wells left join seg_dev_resources on DRS_DEV_ID=WLL_ID and DRS_DEV_TYPE=12 where WLL_PHONE_NO like '%".$smsNO."%'");
if($wynik)while ($r = mysql_fetch_array($wynik))
{
$devID = $r["DRS_ID"];
$devSCOP_P1 = $r["WLL_SCOP_P1"];
$devSCOP_P2 = $r["WLL_SCOP_P2"];
$devSCOP_PP = $r["WLL_SCOP_PP"];
$devSCOP_HH = $r["WLL_SCOP_HH"];
// C - sms-y kontrolne
if (substr($smsCONT,1,1)=='C')
{
$inSMSdata = explode('#',$smsCONT);
foreach ($inSMSdata as $outSMSdata)
{
$outSMSdata=str_replace(' ','',$outSMSdata);
if (strstr($outSMSdata,"POMP"))
{
$oPOMPparam = substr($outSMSdata, 5);
//potwierdzenie wyłączenia pompy
if ($oPOMPparam==0)
{
// wysłać powiadomienie mailem/sms-em
if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='0' and SCS_DRS_ID=1")>0 && getPumpStatusWork(4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "SUW Wyszynskiego - potwierdzenie wylaczenia pompy!", getAlarmContent('POMP_UP',1,4));
if (strlen($basePhone)>8) sendSMSAlert($basePhone, getAlarmContent('POMP_UP',1,4));
}
//else if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='0' and SCS_DRS_ID=1")==0 && getPumpStatusWorkDelay(4)!="OFF")
else if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='0' and SCS_DRS_ID=1")==0 && getPumpStatusWork(4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "SUW Wyszynskiego - potwierdzenie wylaczenia pompy!", getAlarmContent('POMP_OFF',1,4));
// dodatkowo na wypadek braku informacji ze zbiornika
if (strlen($basePhone)>8) sendSMSAlert($basePhone, getAlarmContent('POMP_OFF',1,4));
}
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=507,DRD_VALUE='OFF',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE=now()");
mysql_query("update seg_control_signals set SCS_VALUE=0 where SCS_TYPES='0' and SCS_DRS_ID=1");
}
//potwierdzenie załączenia pompy
else if ($oPOMPparam==1)
{
// wysłać powiadomienie mailem/sms-em
if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='1' and SCS_DRS_ID=1")>0 && getPumpStatusWork(4)==0)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "SUW Wyszynskiego- potwierdzenie zalaczenia pompy!", getAlarmContent('POM_DOWN',1,4));
if (strlen($basePhone)>8) sendSMSAlert($basePhone, getAlarmContent('POM_DOWN',1,4));
}
//else if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='1' and SCS_DRS_ID=1")==0 && getPumpStatusWorkDelay(4)!="ON")
else if (sqlValue("select SCS_VALUE from seg_control_signals where SCS_TYPES='1' and SCS_DRS_ID=1")==0 && getPumpStatusWork(4)==0)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "SUW Wyszynskiego - potwierdzenie zalaczenia pompy!", getAlarmContent('POMP_ON',1,4));
// dodatkowo na wypadek braku informacji ze zbiornika
if (strlen($basePhone)>8) sendSMSAlert($basePhone, getAlarmContent('POMP_ON',1,4));
}
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=507,DRD_VALUE='ON',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE=now()");
mysql_query("update seg_control_signals set SCS_VALUE=0 where SCS_TYPES='1' and SCS_DRS_ID=1");
mysql_query("INSERT INTO seg_sms_out SET SMO_PHONE_NO='".$smsNO."',SMO_MESSAGE='#P#".$baseNO."#S7#?',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=now()");
}
}
}
}
// P - sms-y pomiarowe
else if (substr($smsCONT,1,1)=='P')
{
//echo $smsCONT." \n";
$wellS7ParamsAsArray=null;
$wellS7ParamsAsArray['date']=$smsDATE;
$wellS7ParamsAsArray['PB']=rand(999,1010);
//dla sterownika S7
//$wellS7ParamsAsArray['P1']=0;
//$wellS7ParamsAsArray['PP']=0;
$inSMSdata = explode('#',$smsCONT);
foreach ($inSMSdata as $outSMSdata)
{
$outSMSdata=str_replace(' ','',$outSMSdata);
// zakres hd - 60
//P1
if (strstr($outSMSdata,"P1"))
{
$oP1param = substr($outSMSdata, 3);
//$oP1param=0;
//$oP1param = ((($oP1param-4)/16)*100);
$oP1param = ((($oP1param-4)/16)*$devSCOP_P1*102);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=215,DRD_VALUE='".round($oP1param,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['P1']=$oP1param;
}
//P2, zakres 100
else if (strstr($outSMSdata,"P2"))
{
$oP2param = substr($outSMSdata, 3);
//$oP2param = ((($oP2param-4)/16)*100);
$oP2param = ((($oP2param-4)/16)*$devSCOP_P2*102);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=220,DRD_VALUE='".round($oP2param,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['P2']=$oP2param;
}
//PP
else if (strstr($outSMSdata,"PP"))
{
$oPPparam = substr($outSMSdata, 3);
//$oP2param = ((($oP2param-4)/16)*100);
$oPPparam = ((($oPPparam-4)/16)*$devSCOP_PP)-($wellS7ParamsAsArray['PB']/100);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=401,DRD_VALUE='".round($oPPparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['PP']=$oPPparam;
}
//HH
else if (strstr($outSMSdata,"HH"))
{
$oHHparam = substr($outSMSdata, 3);
//$oHHparam = ((($oHHparam-4)/16)*60);
$oHHparam = ((($oHHparam-4)/16)*$devSCOP_HH)-($wellS7ParamsAsArray['PB']/100);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=402,DRD_VALUE='".round($oHHparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['HH']=$oHHparam;
// Dla HD (zakres 60)
$HDparam = 60 - $oHHparam;
// jeśli pompa chodzi to rejestruje jako zwierciadło dynamiczne
if (getPumpStatusWork(4)==1)
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=205,DRD_VALUE='".round($HDparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
// jeśli pompa jest wyłączona to rejestruje jako zwierciadło statyczne
else
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=210,DRD_VALUE='".round($HDparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['HD']=$HDparam;
}
//Q
else if (strstr($outSMSdata,"Q") && getPumpStatusWork(4)==1)
{
$oQparam = substr($outSMSdata, 2);
if ($oQparam>8)
{
$oQparam = $oQparam * 0.1 * 60;
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=200,DRD_VALUE='".round($oQparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['Q']=$oQparam;
}
}
//PE
else if (strstr($outSMSdata,"PE") && getPumpStatusWork(4)==1)
{
$oPEparam = substr($outSMSdata, 3);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=260,DRD_VALUE='".round($oPEparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['PE']=$oPEparam;
}
//U
else if (strstr($outSMSdata,"USR"))
{
$oUSRparam = substr($outSMSdata, 4);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=275,DRD_VALUE='".round($oUSRparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['U']=$oUSRparam;
}
//I
else if (strstr($outSMSdata,"ISR") && getPumpStatusWork(4)==1)
{
$oISRparam = substr($outSMSdata, 4);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=270,DRD_VALUE='".round($oISRparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['I']=$oISRparam;
}
//MG
else if (strstr($outSMSdata,"MG"))
{
$oMGparam = substr($outSMSdata, 3);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=290,DRD_VALUE='".round($oMGparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['WT']=$oMGparam;
}
//$oCOSparam
else if (strstr($outSMSdata,"COS"))
{
$oCOSparam = substr($outSMSdata, 4);
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=280,DRD_VALUE='".round($oCOSparam,2)."',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE='$smsDATE'");
$wellS7ParamsAsArray['COS_FI']=$oCOSparam;
}
//DIA
else if (strstr($outSMSdata,"DIA"))
{
$oDIAparam = substr($outSMSdata, 4);
$wellS7ParamsAsArray['DIA']=$oDIAparam;
}
// Analizuje wartość prądu - jeśli mniejszy od 1A - oznacza, że pompa nie pracuje
if (strstr($outSMSdata,"ISR"))
{
$isRun = substr($outSMSdata, 4);
if ($isRun>1 && getPumpStatusWork(4)==0)
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=507,DRD_VALUE='ON',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE=now()");
else if ($isRun<=1 && getPumpStatusWork(4)==1)
mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=4,DRD_RESOURCES_DETAIL=507,DRD_VALUE='OFF',DRD_AUDIT_USR='SMS',DRD_AUDIT_DATE=now()");
}
}
//zapis do dedykowanej tabeli
//zapisuje dane do tabeli [seg_well_working_params]
// ====================================================
if (getPumpStatusWork(4)==1)
mysql_query("INSERT INTO seg_well_working_params SET WWP_DRS_ID=4,WWP_PB=".$wellS7ParamsAsArray['PB'].",WWP_P1=".$wellS7ParamsAsArray['P1'].",WWP_P2=".$wellS7ParamsAsArray['P2'].",WWP_PP=".$wellS7ParamsAsArray['PP'].",WWP_HH=".$wellS7ParamsAsArray['HH'].",WWP_HD=".$wellS7ParamsAsArray['HD'].",WWP_Q=".$wellS7ParamsAsArray['Q'].",WWP_I=".$wellS7ParamsAsArray['I'].",WWP_U=".$wellS7ParamsAsArray['U'].",WWP_PE=".$wellS7ParamsAsArray['PE'].",WWP_COS_FI=".$wellS7ParamsAsArray['COS_FI'].",WWP_DIA='".$wellS7ParamsAsArray['DIA']."',WWP_AUDIT_CD='".$wellS7ParamsAsArray['date']."'");
// ====================================================
}
// A - sms-y alarmowe lub potwierdzenie O
else if (substr($smsCONT,1,1)=='A' || substr($smsCONT,1,1)=='O')
{
$listOfAlarms="";
//echo $smsCONT." \n";
$inSMSdata = explode('#',$smsCONT);
foreach ($inSMSdata as $outSMSdata)
{
$outSMSdata=str_replace(' ','',$outSMSdata);
// BPZ - brak potwierdzenia załączenia pompy
if (strstr($outSMSdata,"BPZ") && substr($smsCONT,1,1)=='A')
{
if (substr($outSMSdata, 4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "ALARM! [02]", $komPOMPbpz);
if (strlen($basePhone)>8) sendSMSAlert($basePhone, "ALARM! ".$komPOMPbpz);
$listOfAlarms .="BPZ#";
// dla Tomka elektryka
sendSMSAlert("606733938", "ALARM! Brak potwierdzenie zalaczenia pompy na Ujeciu Wyszynskiego. Alarm wymaga lokalnego potwierdzenia A/R i odwolania R/A.");
}
}
// BPW - brak potwierdzenia wyłączenia pompy
else if (strstr($outSMSdata,"BPW") && substr($smsCONT,1,1)=='A')
{
if (substr($outSMSdata, 4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "ALARM! [03]", $komPOMPbpw);
if (strlen($basePhone)>8) sendSMSAlert($basePhone, "ALARM! ".$komPOMPbpw);
$listOfAlarms .="BPW#";
}
}
// MAN - praca ręczna
else if (strstr($outSMSdata,"MAN") && substr($smsCONT,1,1)=='A')
{
if (substr($outSMSdata, 4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "ALARM! [04]", $komPOMPmanual);
$listOfAlarms .="MAN#";
}
}
// UPS - brak zasilania
else if (strstr($outSMSdata,"UPS") && substr($smsCONT,1,1)=='A')
{
if (substr($outSMSdata, 4)==1)
{
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "ALARM! [05]", $komPOMPups);
if (strlen($basePhone)>8) sendSMSAlert($basePhone, "ALARM! ".$komPOMPups);
$listOfAlarms .="UPS#";
// dla Tomka elektryka
sendSMSAlert("606733938", "ALARM! Zanik napiecia na Ujeciu Wyszynskiego. Alarm wymaga lokalnego potwierdzenia A/R i odwolania R/A.");
}
}
}
//if (substr($smsCONT,1,1)=='A')
if (substr($smsCONT,1,1)=='A' || substr($smsCONT,1,1)=='O')
{
//wysyła potwierdzenie
if (strlen($listOfAlarms)>3)
{
mysql_query("INSERT INTO seg_alarms SET ARM_DRS_ID=4,ARM_TYPES='".$listOfAlarms."',ARM_AUDIT_CU='SMS',ARM_AUDIT_CD='".$smsDATE."'");
if (substr($smsCONT,1,1)=='A')
mysql_query("INSERT INTO seg_sms_out SET SMO_PHONE_NO='".$sterNO."',SMO_MESSAGE='#A#".$baseNO."#S7#?',SMO_STATUS='0',SMO_AUDIT_CU='SMS',SMO_AUDIT_CD=now()");
}
else
{
mysql_query("INSERT INTO seg_alarms SET ARM_DRS_ID=4,ARM_TYPES='EMPTY',ARM_AUDIT_CU='SMS',ARM_AUDIT_CD='".$smsDATE."'");
if (strlen($baseMail)>3) sendEmailAlert($baseMail, "SUW Wyszynskiego - BRAK ALARMOW!", "SUW Wyszynskiego - wszystkie alarmy zostaly odwolane. Praca w trybie automatycznym.");
}
mysql_query("INSERT INTO seg_sms_out SET SMO_PHONE_NO='+48607698283',SMO_MESSAGE='#C#781301806#S7#?',SMO_STATUS='0',SMO_AUDIT_CU='ALARM',SMO_AUDIT_CD=now()");
}
}
}
}
// Siła sygnału dla sterowanika SIEMENS - [RSSI]
else if (strstr($smsCONT,'RSSI'))
{
$param = explode('RSSI', str_replace("OK","",$smsCONT));
$inParam = str_replace(" ","",$param[1]); $inParam = str_replace(":","",$inParam);
if (strstr($param[0],"RUN"))
{
mysql_query("INSERT INTO seg_rss_signal_values SET RSS_DRS_ID=4,RSS_VALUE='".$inParam."',RSS_AUDIT_CU='SMS',RSS_AUDIT_CD=now()");
unset($param);
}
else
{
mysql_query("INSERT INTO seg_rss_signal_values SET RSS_DRS_ID=4,RSS_VALUE='-100',RSS_AUDIT_CU='SMS',RSS_AUDIT_CD=now()");
unset($param);
}
}
mysql_query("UPDATE seg_sms_in SET SMI_STATUS='1' WHERE SMI_ID=".$smsID);
}
mysql_close($con);
sleep(1);
$min = (int) date("i");
}
?>