'; require_once("soap.php"); //$cl = new SyndisConnector("http://172.21.11.101/SyndisSpm.wsdl"); //zmienić URL na inny - ten kieruje na moj komputer //$cl->__setLocation('http://172.21.11.101:3615/'); ini_set('soap.wsdl_cache_enabled',0); ini_set('soap.wsdl_cache_ttl',0); $cl = new SyndisConnector("http://172.22.64.101/SyndisSpm.wsdl"); //zmienić URL na inny - ten kieruje na moj komputer $cl->__setLocation('http://172.22.64.101:3615/'); echo 'connected ...
'; echo 'Start: '.date("Y-m-d H:i:s").'

'; $scriptDate = date("Y-m-d H:i:s"); date_default_timezone_set('Europe/Warsaw'); require_once("func.php"); require_once("dbaccess.php"); $polacz = mysql_connect($db_host, $db_user, $db_user_pass) or die ('cannot connect to db'); mysql_select_db($db_name); mysql_query("SET NAMES utf8"); mysql_query("SET CHARACTER_SET utf8_general_ci"); function convertData($insertDate) { unset($res); //re-contruct to format $res = date('Y-m-d H:i:s', strtotime($insertDate)); return $res; } function time_to_int($inParam) { unset($outParam); $outParam = (float) str_replace(array(' ','-',':'), array('','',''), $inParam); return $outParam; } function objectToArray($d) { if (is_object($d)) { // Gets the properties of the given object // with get_object_vars function $d = get_object_vars($d); } if (is_array($d)) { /* * Return array converted to object * Using __FUNCTION__ (Magic constant) * for recursive call */ return array_map(__FUNCTION__, $d); } else { // Return array return $d; } } // pobieramy tablice studni $ile_zmian=0; $well_array=null; $wynik = mysql_query("select WLL_NAME from seg_wells,seg_well_pump_eng_rel where RWL_WLL_ID=WLL_ID and WLL_CAT_DIC_ID in (18,19)"); if($wynik)while ($r = mysql_fetch_array($wynik)) { $well_array[] = $r["WLL_NAME"]; } $wl = $cl->GetWellsDataAsArray($well_array); for($i=0; $i'; //echo "Name: ". $wl['wells'][$i]['well']['id']."
"; unset($wellLastStatusArray); $wellLastStatusArray = sqlGetResAsArray("select * from seg_dev_resources_det where DRD_ID=(select max(DRD_ID) from seg_dev_resources_det where DRD_RESOURCES_DETAIL=507 and DRD_DRS_ID=(select DRS_ID from seg_dev_resources,seg_wells where DRS_DEV_TYPE=12 and DRS_DEV_ID=WLL_ID and WLL_NAME='".$wl['wells'][$i]['well']['id']."'))"); // jeśli nie zwraca żadnych wyników - sprawdza w tabeli historycznej if (count($wellLastStatusArray)<=0) { unset($wellLastStatusArray); $wellLastStatusArray = sqlGetResAsArray("select * from seg_dev_resources_det_his where DRD_ID=(select max(DRD_ID) from seg_dev_resources_det_his where DRD_RESOURCES_DETAIL=507 and DRD_DRS_ID=(select DRS_ID from seg_dev_resources,seg_wells where DRS_DEV_TYPE=12 and DRS_DEV_ID=WLL_ID and WLL_NAME='".$wl['wells'][$i]['well']['id']."'))"); } // =========================================================================================================================== //echo 'SYNDIS STATUS: '.$wl['wells'][$i]['pumpOnOff']['value'].' - '.$syndisStatus.'
'; //echo 'syndisStatus: '.$syndisStatus.'

'; //echo 'LAST STATUS: '.$wellLastStatusArray[0]['DRD_VALUE'].'
'; //echo "Przed Data SYNDIS: ". convertData($wl['wells'][$i]['pumpOnOff']['date'])." >>> ".time_to_int(convertData($wl['wells'][$i]['pumpOnOff']['date']))."
"; //echo "Przed Data LAST: ". $wellLastStatusArray[0]['DRD_AUDIT_DATE']." >>> ".time_to_int($wellLastStatusArray[0]['DRD_AUDIT_DATE'])."
"; //echo'
'; /* $old_date = convertData($wl['wells'][$i]['pumpOnOff']['date']); $new_date = date("Y-m-d H:i:s",strtotime("+30 seconds",strtotime(convertData($wl['wells'][$i]['pumpOnOff']['date'])))); echo'OLD: '.$old_date.' , NEW: '.$new_date.'
'; echo'Studnia: '.$wl['wells'][$i]['well']['id']. '['.$wellLastStatusArray[0]['DRD_DRS_ID'].']'; echo'
'; echo'Czas SYNDIS: '.time_to_int(convertData($wl['wells'][$i]['pumpOnOff']['date'])); echo'
'; echo'Czas SYNDIS do porównania: '.time_to_int(date("Y-m-d H:i:s",strtotime("+30 seconds",strtotime(convertData($wl['wells'][$i]['pumpOnOff']['date']))))); echo'
'; echo'Ostatni czas studnia: '.time_to_int($wellLastStatusArray[0]['DRD_AUDIT_DATE']); echo'
'; echo'Ostatni czas studnia do orównania: '.time_to_int(date("Y-m-d H:i:s",strtotime("+30 seconds",strtotime($wellLastStatusArray[0]['DRD_AUDIT_DATE'])))); echo'
'; */ // sprawdza czy ostatni pomiar w SoftSPM jest taki sam jak w SYNDIS (jeśli w Syndis jest świeższy) //if( time_to_int(convertData($wl['wells'][$i]['pumpOnOff']['date'])) > time_to_int($wellLastStatusArray[0]['DRD_AUDIT_DATE'])) // 2020-03-05 // dodane dodatkowe 30 sekund, żeby zwiększyć różnicę if ( time_to_int(convertData($wl['wells'][$i]['pumpOnOff']['date'])) > time_to_int(date("Y-m-d H:i:s",strtotime("+30 seconds",strtotime($wellLastStatusArray[0]['DRD_AUDIT_DATE'])))) ) { //echo'Zarejestrował różnice dat
'; //echo "Data SYNDIS: ". convertData($wl['wells'][$i]['pumpOnOff']['date'])." >>> ".strtotime(convertData($wl['wells'][$i]['pumpOnOff']['date']))."
"; //echo "Data LAST: ". $wellLastStatusArray[0]['DRD_AUDIT_DATE']." >>> ".strtotime($wellLastStatusArray[0]['DRD_AUDIT_DATE'])."
"; // porównuje statusy if ($syndisStatus != $wellLastStatusArray[0]['DRD_VALUE']) { //echo'Zarejestrował różnice
'; //echo "Status: ". $wl["wells"][$i]["pumpOnOff"]["value"]."
"; //echo "Translate : ".$syndisStatus."
"; //echo "wellLastStatusArray: ".$wellLastStatusArray[0]['DRD_VALUE']."
"; //"INSERT INTO seg_dev_resources_det SET DRD_DRS_ID=123,DRD_RESOURCES_DETAIL=507,DRD_VALUE='ONNNNNN',DRD_DESCRIPTION='121212',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_AUDIT_DATE='2001-01-01'" if (empty($wellLastStatusArray[0]['DRD_DRS_ID']) || $wellLastStatusArray[0]['DRD_DRS_ID']<=0) { unset($wellLastStatusArray); $wellLastStatusArray = sqlGetResAsArray("select DRS_ID as DRD_DRS_ID from seg_dev_resources,seg_wells where DRS_DEV_TYPE=12 and DRS_DEV_ID=WLL_ID and WLL_NAME='".$wl['wells'][$i]['well']['id']."'"); } // wpis o załączeniu pompy if ($wl['wells'][$i]['pumpOnOff']['value']==1 || $syndisStatus == "ON") { mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$wellLastStatusArray[0]['DRD_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='ON',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_AUDIT_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."'"); mysql_query("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='ON',WST_DRS_ID='".$wellLastStatusArray[0]['DRD_DRS_ID']."',WST_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."'"); } // wpis o załączeniu pompy else { // zabezpieczeni przed zerowym powodem wyłącznika if ($wl['wells'][$i]['pumpOnOffReason']['value']==0) $wl['wells'][$i]['pumpOnOffReason']['value'] = 1318; mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$wellLastStatusArray[0]['DRD_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='OFF',DRD_DESCRIPTION='".$wl['wells'][$i]['pumpOnOffReason']['value']."',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_AUDIT_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."'"); mysql_query("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='OFF',WST_DRS_ID='".$wellLastStatusArray[0]['DRD_DRS_ID']."',WST_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."'"); } //wpisuje do tabeli inforację, że trzeba przebudować tabele softspm_rep.rep_002_avg_pump_working mysql_query("INSERT INTO softspm_rep.rep_002_is_set_new_onoff_signals SET ISN_STATUS_VAL='".$syndisStatus."',ISN_DRS_ID='".$wellLastStatusArray[0]['DRD_DRS_ID']."',ISN_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."'"); $ile_zmian++; } } } // ========================================================================================================================= // // Jeśli był zarejestrowany błędny status, a przyszedł poprawny - pobiera historię wyłączników // Łata na problemy w SYNDIS // sprawdza 15 powtóerzń, aż minie 15*20 sek, aż pobiorą się pomiary ze sterownika do bufora //elseif ($wl['wells'][$i]['pumpOnOff']['flag']=="CORRECT" && count($isNotrealiableSaved)>0) //elseif ($wl['wells'][$i]['pumpEfficiency']['flag']=="CORRECT" && count($isNotrealiableSaved)>0 && $isNotrealiableSaved[0]['NOT_LICZ']>$ilePowtorzen_02) elseif ($wl['wells'][$i]['transmissionState']['value']==1 && count($isNotrealiableSaved)>0 && $isNotrealiableSaved[0]['NOT_LICZ']>$ilePowtorzen_02) { //echo'Flaga CORRECT, ale jest po statusie NOTREALIABLE
'; // pobiera ostatnio zarejestrowany pomiar wyłącznika unset($lasArrayOnOff); //$lasArrayOnOff = sqlGetResAsArray("select * from seg_dev_resources_det where DRD_ID=(select max(DRD_ID) from seg_dev_resources_det where DRD_RESOURCES_DETAIL=507 and DRD_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID']." and DRD_AUDIT_USR='SYNDIS')"); $lasArrayOnOff = sqlGetResAsArray("select * from seg_dev_resources_det where DRD_ID=(select max(DRD_ID) from seg_dev_resources_det where DRD_RESOURCES_DETAIL=507 and DRD_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID'].")"); //konwertuje date na UTC // ========================================= $getCurMonth = (int) date('m'); if ($getCurMonth>3 && $getCurMonth<11) $offset = 2 * 60 * 60; else $offset = 60 * 60; // ========================================= $utcDate = date('Y-m-d\TH:i:s\Z', strtotime($lasArrayOnOff[0]['DRD_AUDIT_DATE'])- $offset); //pobiera historię unset($hisOnOffArray); $hisOnOffArray = objectToArray($cl->GetPumpSwitchAndReasonsHistory($wl['wells'][$i]['well']['id'],$utcDate)); //jeśli tablica zwrócona z SYNDIS posiada rekody - są zwracane. if (count($hisOnOffArray['probes'])>0 && $isNotrealiableSaved[0]['NOT_DRS_ID']>0) { //tworzy tablicę z wyłącznikami, które zostaną zarejestrowane jako nowe - z historii unset($onoffTempNewArray); for ($ile=0; $ile'; // echo 'LAST: '.time_to_int($lasArrayOnOff[0]['DRD_AUDIT_DATE']).'
'; // '
'; // jeśli aktualna data jest większa od ostatnio zapisanej - wpisuje do bazy //if ( time_to_int(convertData($hisOnOffArray['probes'][$ile]['date'])) > time_to_int($lasArrayOnOff[0]['DRD_AUDIT_DATE']) ) if ( time_to_int(convertData($hisOnOffArray['probes'][$ile]['date'])) > time_to_int(date("Y-m-d H:i:s",strtotime("+30 seconds",strtotime($lasArrayOnOff[0]['DRD_AUDIT_DATE'])))) ) { unset($newOnOffStatus); $newOnOffStatus = (int) $hisOnOffArray['probes'][$ile]['value']; if ($newOnOffStatus==1) { $newOnOffStatus='ON'; mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='".$newOnOffStatus."',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_AUDIT_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='".$newOnOffStatus."',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_AUDIT_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo'
'; mysql_query("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='".$newOnOffStatus."',WST_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',WST_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='".$newOnOffStatus."',WST_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',WST_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo'
'; } else { if ($hisOnOffArray['probes'][$ile]['reason']==0) $hisOnOffArray['probes'][$ile]['reason'] = 1318; $newOnOffStatus = 'OFF'; mysql_query("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='".$newOnOffStatus."',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_DESCRIPTION='".$hisOnOffArray['probes'][$ile]['reason']."',DRD_AUDIT_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo("INSERT INTO seg_dev_resources_det SET DRD_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',DRD_RESOURCES_DETAIL=507,DRD_VALUE='".$newOnOffStatus."',DRD_EXPORT_SEGAP='1',DRD_AUDIT_USR='SYNDIS',DRD_DESCRIPTION='".$hisOnOffArray['probes'][$ile]['reason']."',DRD_AUDIT_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); echo'
'; mysql_query("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='".$newOnOffStatus."',WST_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',WST_DESCRIPTION='".$hisOnOffArray['probes'][$ile]['reason']."',WST_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo("INSERT INTO softspm_rep.rep_002_avg_pump_working SET WST_STATUS_VAL='".$newOnOffStatus."',WST_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',WST_DESCRIPTION='".$hisOnOffArray['probes'][$ile]['reason']."',WST_DATE='".convertData($hisOnOffArray['probes'][$ile]['date'])."'"); // echo'
'; } $onoffTempNewArray[] = array( 'id' => $isNotrealiableSaved[0]['NOT_DRS_ID'], 'stat' => $newOnOffStatus, 'date' => convertData($hisOnOffArray['probes'][$ile]['date']) ); } // jeśli system podczas braku łączności zarejestrował zmianę wyłączników to sprawdza historię pomiarów i ją zapisuje if (count($onoffTempNewArray)>0) { // usuwa wszystkie wpisy, poza tymi o pełnej godzinie mysql_query("delete from rep_soap_syndis_update5min_nra_onoff where SUD_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID']." and SUD_AUDIT_CD not like '%:00:%'"); // pobiera listę pomiarów z bufora i sprawdza stan zarejestrowanych wyłączników - jeśli ON - to wpisuje unset($getBufforData); $getBufforData = sqlGetResAsArray("select SUD_ID,SUD_AUDIT_CD from rep_soap_syndis_update5min_nra_onoff where SUD_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID']." and SUD_DATE_Q>='".$lasArrayOnOff[0]['DRD_AUDIT_DATE']."' order by SUD_AUDIT_CD"); for ($liTmp=0; $liTmp='".$lasArrayOnOff[0]['DRD_AUDIT_DATE']."' order by SUD_AUDIT_CD"); //usuwa wszystkie wpisy z bufora mysql_query("DELETE FROM rep_soap_syndis_update5min_nra_onoff WHERE SUD_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID']); } } */ // na koniec zapisania operacji historycznych - usuwa dane z bufora } //wpisuje do tabeli inforację, że trzeba przebudować tabele softspm_rep.rep_002_avg_pump_working mysql_query("INSERT INTO softspm_rep.rep_002_is_set_new_onoff_signals SET ISN_STATUS_VAL='".$newOnOffStatus."',ISN_DRS_ID='".$isNotrealiableSaved[0]['NOT_DRS_ID']."',ISN_DATE=now()"); } mysql_query("UPDATE rep_soap_syndis_notrealiable_onoff SET NOT_END_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."',NOT_END_VALUE='".$syndisStatus."',NOT_END_FLAG='CORRECT',NOT_AUDIT_END_DATE=now(),NOT_LICZ_LAST_DATE='".$lasArrayOnOff[0]['DRD_AUDIT_DATE']."' WHERE NOT_ID=".$isNotrealiableSaved[0]['NOT_ID']); // dodaje do tabeli wpis, że trzeba przeanalizować dane nadmiarowe mysql_query("INSERT INTO rep_clean_notrealiable SET CNT_DRS_ID=".$isNotrealiableSaved[0]['NOT_DRS_ID'].",CNT_AUDIT_DATE='".$lasArrayOnOff[0]['DRD_AUDIT_DATE']."'"); } // ========================================================================================================================= // // podbija licznik NOT_LICZ w tabeli rep_soap_syndis_notrealiable_onoff // ========================================================================================================================= // //elseif ($wl['wells'][$i]['pumpEfficiency']['flag']=="CORRECT" && count($isNotrealiableSaved)>0 && $isNotrealiableSaved[0]['NOT_LICZ']<$ilePowtorzen_01) elseif ($wl['wells'][$i]['transmissionState']['value']==1 && count($isNotrealiableSaved)>0 && $isNotrealiableSaved[0]['NOT_LICZ']<$ilePowtorzen_01) { $newLicznik = $isNotrealiableSaved[0]['NOT_LICZ']+1; mysql_query("UPDATE rep_soap_syndis_notrealiable_onoff SET NOT_LICZ=".$newLicznik." WHERE NOT_ID=".$isNotrealiableSaved[0]['NOT_ID']); } // ========================================================================================================================= // // jeśli pomiar jest niewiarygodny a jest już jaiś wpis, to "zeruje licznik", ustawia wartość licznika na 1 // ========================================================================================================================= // //elseif ($wl['wells'][$i]['pumpEfficiency']['flag']=="NOTREALIABLE" && count($isNotrealiableSaved)>0) elseif ($wl['wells'][$i]['transmissionState']['value']==0 && count($isNotrealiableSaved)>0) { mysql_query("UPDATE rep_soap_syndis_notrealiable_onoff SET NOT_LICZ=1 WHERE NOT_ID=".$isNotrealiableSaved[0]['NOT_ID']); } // ========================================================================================================================= // // brak łączności i brak aktualnie aktywnego wpisu //elseif ($wl['wells'][$i]['pumpOnOff']['flag']=="NOTREALIABLE") // ========================================================================================================================= // //elseif ($wl['wells'][$i]['pumpEfficiency']['flag']=="NOTREALIABLE" && count($isNotrealiableSaved)==0) elseif ($wl['wells'][$i]['transmissionState']['value']==0 && count($isNotrealiableSaved)==0) { // pobiera informacje o studni unset($wellArray); $wellArray = sqlGetResAsArray("select * from seg_dev_resources,seg_wells where DRS_DEV_TYPE=12 and DRS_DEV_ID=WLL_ID and WLL_NAME='".$wl['wells'][$i]['well']['id']."'"); mysql_query("INSERT INTO rep_soap_syndis_notrealiable_onoff SET NOT_DRS_ID=".$wellArray[0]['DRS_ID'].",NOT_WELL_ID=".$wellArray[0]['WLL_ID'].",NOT_WELL_NAME='".$wellArray[0]['WLL_NAME']."',NOT_WHEN_DATE='".convertData($wl['wells'][$i]['pumpOnOff']['date'])."',NOT_WHEN_VALUE='".$syndisStatus."',NOT_WHEN_FLAG='NOTREALIABLE',NOT_AUDIT_WHEN_DATE=now()"); } // ========================================================================================================================= // } //mysql_query("truncate table softspm_rep.rep_002_avg_pump_working"); //mysql_query("insert into softspm_rep.rep_002_avg_pump_working select null,DRD_VALUE,DRD_DRS_ID,DRD_AUDIT_DATE from (select * from seg_dev_resources_det where DRD_RESOURCES_DETAIL=507 union select * from seg_dev_resources_det_his where DRD_RESOURCES_DETAIL=507) tb order by DRD_DRS_ID,DRD_AUDIT_DATE,DRD_ID"); mysql_close($polacz); echo 'Zmieniono '.$ile_zmian.' stanów załączenia/wyłączenia dla studni.

'; echo 'Finish: '.date("Y-m-d H:i:s").'
'; ?>