protected function listenDLTorrentTemp($cycle = 1) { $this->_logger->log(__METHOD__, array('cycle' => $cycle)); $this->_connector->setParams(array('timeout' => 60)); ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Opening COM connection'); $messages = null; $process = $this; $logger = $process->_logger; $this->_connector->onReceiveMessage = function ($message) use(&$process, &$logger) { // $logger->log(__METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening)); // // $messageId = ListenerLogTemp::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'datalogger'); // // ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId); $logger->log(__METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening)); if (is_null(SMSCommand::setResponse($message))) { $this->_logger->log(__METHOD__ . ' Message type: ' . 'default'); $messageId = ListenerLogTemp::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'datalogger'); ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId); } else { $this->_logger->log(__METHOD__ . ' Message type: ' . 'sms command'); } }; $result = $this->_connector->readData($messages); $this->_logger->log(__METHOD__ . ' Complete listen datalogger.', array('cycle' => $cycle, 'result' => $result)); }
protected function listenTemp() { $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Start listen.', array('source' => $this->source)); $messages = null; $process = $this; $logger = $process->_logger; $this->_connector->onReceiveMessage = function ($message, $station_id, $source_info) use(&$process, &$logger) { $logger->log(__CLASS__ . ' ' . __METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening)); $messageId = ListenerLogTemp::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'server', 0, $source_info); ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId); }; $this->_connector->readData($messages); $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Complete listen.', array('source' => $this->source)); }
public function actionImportMessage() { if (It::isGuest()) { print json_encode(array('errors' => array('Sign in first.'), 'ok' => 0)); CApplication::end(); } $message = isset($_POST['message']) ? trim($_POST['message']) : null; if ($message) { $st = time(); $settings = Settings::model()->find(); ListenerLogTemp::addNew($message, 0, $settings->overwrite_data_on_import, 'import', 0); // ListenerLog::addNew($message, 0, $settings->overwrite_data_on_import, 'import', 0); print json_encode(array('ok' => 1)); } else { print json_encode(array('ok' => 0)); } CApplication::end(); }
public function run() { ListenerProcess::addComment($this->listener->listener_id, 'comment', 'going to start listening for SMS messages, source= ' . $this->source); $this->_connector->onReceiveMessages = function ($messages) { ListenerProcess::addComment($this->listener->listener_id, 'comment', 'found ' . count($messages) . ' messages at modem'); }; $this->_connector->onReceiveMessage = function ($message, $stationId) { $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Found message at modem: ' . $message); /** * if message is not response by sms command * then use default function */ if (is_null(SMSCommand::setResponse($message))) { $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Message type: ' . 'default'); // $messageId = ListenerLog::addNew($message, $this->listener->listener_id, $this->settings->overwrite_data_on_listening, $stationId); $messageId = ListenerLogTemp::addNew($message, $this->listener->listener_id, $this->settings->overwrite_data_on_listening, $stationId); ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Found message at modem, message id:' . $messageId . ', message: ' . $message); } else { $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Message type: ' . 'sms command'); } }; $i = 0; $SMSCOMPort = new SMSCOMPort(); // For send sms command //$SMSCOMPort->COM; //$com = yii::app()->params['com_for_send_sms_command']; if ($this->source == $SMSCOMPort->COM) { ListenerProcess::addComment($this->listener->listener_id, 'sms_command', 'going to start send SMS command, source= ' . $this->source); while (true) { if ($this->synchronization->isMaster()) { $this->grabModemMessages($i++); $this->sendSMSByModem($i); } sleep(20); } } else { while (true) { if ($this->synchronization->isMaster()) { $this->grabModemMessages($i++); } sleep(20); } } }
/** * @var $stationForm configForm * **/ public function run($args) { // error_reporting(null); ini_set('display_errors', 1); $this->_logger = LoggerFactory::getFileLogger('GenerateMessageCommand'); // $this->_logger = LoggerFactory::getConsoleLogger(); $this->_logger->log('start'); // $args: // $args[0] AWS01 // $args[1] "sensors:TS1;TS2;" $station_id_code = false; if (preg_match('/^([A-Z,a-z,0-9]{4,5})$/', $args[0], $matchesStations)) { $station_id_code = $matchesStations[1]; } else { $this->_logger->log(' Station ID can contain only Letters (A-Z) and Figures (1-9), and must be of 4(rain) or 5(AWS) chars length.'); } $sensor_id_codes = array(); if (isset($args[1])) { if (preg_match("/^sensors:([A-Za-z1-9;]+)/", $args[1], $matchesSensors)) { $sensor_id_code = explode(';', $matchesSensors[1]); $sensor_id_codes = array_values($sensor_id_code); $sensor_id_codes_count = count($sensor_id_codes); for ($i = 0; $i < $sensor_id_codes_count; $i++) { if (!preg_match('/^([A-Z,a-z]{2})([1-9]{1})$/', $sensor_id_codes[$i], $matches)) { unset($sensor_id_codes[$i]); $this->_logger->log('Sensor ID should contain two letters and 1 digit. Ex.: TP1'); } } $sensor_id_codes = array_values($sensor_id_codes); } } $station = Station::getStationByCode($station_id_code, array('sensors.handler', 'sensors.features.metric')); // $sql = "SELECT `t1`.`station_sensor_id`, `t1`.`sensor_id_code`, `t2`.`handler_id_code`, `t3`.`feature_code`, `t4`.`code` AS `metric_code` // FROM `".StationSensor::model()->tableName()."` `t1` // LEFT JOIN `".SensorDBHandler::model()->tableName()."` `t2` ON `t2`.`handler_id` = `t1`.`handler_id` // LEFT JOIN `".StationSensorFeature::model()->tableName()."` `t3` ON `t3`.`sensor_id` = `t1`.`station_sensor_id` // LEFT JOIN `".RefbookMetric::model()->tableName()."` `t4` ON `t4`.`metric_id` = `t3`.`metric_id` // WHERE `t1`.`station_id` = '".$station_id."' AND `t1`.`station_sensor_id` IN (".implode(',',$sensor_id).")"; // $res = Yii::app()->db->createCommand($sql)->queryAll(); if ($station) { TimezoneWork::set($station->timezone_id); $sensors = array(); foreach ($station->sensors as $key => $sensor) { if (in_array($sensor->sensor_id_code, $sensor_id_codes) || count($sensor_id_codes) == 0) { if (!isset($sensors[$sensor->station_sensor_id])) { $sensors[$sensor->station_sensor_id] = array('station_sensor_id' => $sensor->station_sensor_id, 'sensor_id_code' => $sensor->sensor_id_code, 'handler_id_code' => $sensor->handler->handler_id_code); } foreach ($sensor->features as $feature) { if (is_object($feature->metric)) { $sensors[$sensor->station_sensor_id]['features'][$feature->feature_code] = $feature->metric->code; } } } } $i = time(); $messages[$i]['timestamp'] = $i; $this->_logger->log(__METHOD__ . ': sensors ' . print_r($sensors['sensor_id_code'], 1)); foreach ($messages as $key => $value) { if ($station->station_type === 'rain') { $messages[$key]['parts'][] = 'D'; $messages[$key]['parts'][] = $station->station_id_code; $messages[$key]['parts'][] = date('ymd', $key); $messages[$key]['parts'][] = date('Hi', $key); $messages[$key]['parts'][] = str_pad(rand(100, 135), 3, "0", STR_PAD_LEFT); $messages[$key]['parts'][] = '00'; } else { $messages[$key]['parts'][] = 'D'; $messages[$key]['parts'][] = $station->station_id_code; $messages[$key]['parts'][] = date('ymd', $key); $messages[$key]['parts'][] = date('Hi', $key); $messages[$key]['parts'][] = '00'; } $sensors_values = array(); if ($sensors) { foreach ($sensors as $k1 => $v1) { $handler = SensorHandler::create($v1['handler_id_code']); $random_value = $handler->getRandomValue($v1['features']); $sensors_values[] = $v1['sensor_id_code'] . $random_value; } shuffle($sensors_values); foreach ($sensors_values as $k1 => $v1) { $messages[$key]['parts'][] = $v1; } } $crc = It::prepareCRC(implode('', $messages[$key]['parts'])); $messages[$key]['parts'][] = $crc; array_push($messages[$key]['parts'], '$'); array_unshift($messages[$key]['parts'], '@'); } $messages_display = array(); $messages_copy = array(); foreach ($messages as $key => $value) { $messages_display[] = implode(' ', $value['parts']); $messages_copy[] = implode('', $value['parts']); } $this->_logger->log(__METHOD__ . ': $messages_copy ' . print_r($messages_copy, 1)); foreach ($messages_copy as $msg) { ListenerLogTemp::addNew($msg, 0, 1, 'import', 0); } } else { $this->_logger->log(__METHOD__ . ': has no stations like ' . $args[0]); } }
protected function listenPollingTemp($cycle = 1) { $this->_logger->log(__CLASS__ . ' ' . __METHOD__, array('cycle' => $cycle)); $this->_connector->setParams(array('timeout' => 60)); // 1min ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Start polling'); $messages = null; $process = $this; $logger = $process->_logger; $this->_connector->onReceiveMessage = function ($message, $stationId) use(&$process, &$logger) { $logger->log(__CLASS__ . ' ' . __METHOD__ . ' New message', array('message' => $message, 'listener_id' => $process->listener->listener_id, 'overwrite' => $process->settings->overwrite_data_on_listening)); $messageId = ListenerLogTemp::addNew($message, $process->listener->listener_id, $process->settings->overwrite_data_on_listening, 'poller', $stationId); ListenerProcess::addComment($process->listener->listener_id, 'comment', 'got msg #' . $messageId); }; $result = $this->_connector->readData($messages); $this->_logger->log(__CLASS__ . ' ' . __METHOD__ . ' Complete listen datalogger.', array('cycle' => $cycle, 'result' => $result)); return $result; }
public function actionImportmsg() { $settings = Settings::model()->find(); $log = new Import(); $log->scenario = 'msg'; $res = $log->prepareTypes(); $source_types = $res['source_types']; $station_types = $res['station_types']; $station_timezones = $res['station_timezones']; if (Yii::app()->request->isPostRequest) { $lines = array(); $counter = 0; foreach (preg_split("/(\r?\n)/", $_POST['Import']['import_data']) as $line) { $line = trim($line); if ($line) { $lines[] = $line; } } if ($lines) { foreach ($lines as $line) { $res = ListenerLogTemp::addNew($line, 0, $settings->overwrite_data_on_import, 'import', $_POST['Import']['source_type']); } $counter = count($lines); It::memStatus($counter . ' new message' . ($counter > 1 ? 's were' : ' was') . ' added to processing'); $this->redirect($this->createUrl('admin/importmsg')); } } $this->render('import', array('form' => $log, 'source_types' => $source_types, 'settings' => $settings)); }
protected function listenESPTorrentTemp($attempt = 0) { $this->_logger->log(__CLASS__ . ' ' . __METHOD__, array('attempt' => $attempt)); $timeout = 10; if ($attempt == 0) { ListenerProcess::addComment($this->listener->listener_id, 'comment', 'trying to connect with ' . $this->source); } else { ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Trying to reconnect with ' . $this->source . '; attempt #' . $attempt . '/3'); } $source_parts = explode(':', $this->source); // creates socket connection with IP:port $fp = @fsockopen($source_parts[0], $source_parts[1], $errno, $errstr, $timeout); if ($fp !== false) { $attempt = 0; ListenerProcess::addComment($this->listener->listener_id, 'connected', 'successfully'); $message = ''; while (!feof($fp)) { $res = fwrite($fp, ' ', 2); //print "\n try write: ".$res; $line = fread($fp, 8192); $line = trim($line); $occurances_dl = strpos($line, '$'); if ($line != '') { $message .= $line; if ($occurances_dl !== false) { $res = ListenerLogTemp::addNew($message, $this->listener->listener_id, $this->settings->overwrite_data_on_listening, 'datalogger'); ListenerProcess::addComment($this->listener->listener_id, 'comment', 'got msg #' . $res); $message = ''; } } } ListenerProcess::addComment($this->listener->listener_id, 'stopped', 'can not receive data anymore - ESP is unreachable'); fclose($fp); } else { ListenerProcess::addComment($this->listener->listener_id, 'cannot_connect', '[' . $errno . '] ' . $errstr); } if ($attempt < 3) { $attempt++; sleep(3); } else { ListenerProcess::addComment($this->listener->listener_id, 'comment', 'Three attempts to reconnect failed. Waiting for 2 minutes before trying to reconnect.'); sleep(120); $attempt = 0; } return $this->listenESPTorrentTemp($attempt); }