Страница 4 из 7

Re: Мониторинг состояния системы

Добавлено: Пн окт 01, 2018 7:26 am
Logrus
я тогда из- за этого уточнял, обошел так, в коннекте есть

Код: Выделить всё

if ($online == 1) {
 $this->setProperty('status', 'Включен');
 $this->setProperty('statuscolor', 'green');
 if ($Sensor) {
  sg($Sensor . '.status', 1);
 }
} else {
 $this->setProperty('status', 'Выключен');
 $this->setProperty('statuscolor', 'red');
 if ($Sensor) {
  sg($Sensor . '.status', 0);
 }
}
п.с. 1 - онлайн, 2 - оффлайн, 0 -
если в устройствах онлайн привязано в объект.свойство

Re: Мониторинг состояния системы

Добавлено: Пн сен 09, 2019 3:36 pm
ansid
Вопрос: есть много методов проверяющих доступность по пингу разных узлов, переменные каждого метода работают только в нем? т.е. если в разных методах будут переменные red, details и т.д., то не будут ли они мешать друг другу?

Re: Мониторинг состояния системы

Добавлено: Пн сен 09, 2019 3:52 pm
Chainik
ansid писал(а): Пн сен 09, 2019 3:36 pm Вопрос: есть много методов проверяющих доступность по пингу разных узлов, переменные каждого метода работают только в нем? т.е. если в разных методах будут переменные red, details и т.д., то не будут ли они мешать друг другу?
Переменные с одинаковым названием, расположенные внутри разных методов, мешать друг другу не будут.

Re: Мониторинг состояния системы

Добавлено: Пн сен 09, 2019 5:30 pm
ansid
Chainik писал(а): Пн сен 09, 2019 3:52 pm
ansid писал(а): Пн сен 09, 2019 3:36 pm Вопрос: есть много методов проверяющих доступность по пингу разных узлов, переменные каждого метода работают только в нем? т.е. если в разных методах будут переменные red, details и т.д., то не будут ли они мешать друг другу?
Переменные с одинаковым названием, расположенные внутри разных методов, мешать друг другу не будут.
Создал класс remoteState, свойства remColor, remDetails, remTitle, методы remchanged и remcheck, объект remping. Метод remcheck с таким содержанием:

Код: Выделить всё

$details=array();

$red_state=0;
$yellow_state=0;

if (!isOnline('ansid')) {  // в модуле "Устройства Online" должна быть запись с IP-адресом либо названием "192.168.0.1"
 $red_state=1;
 $details[]="Не доступен шлюз и беспроводная сеть";
}

if ($red_state) {
 $state='red';
 $state_title='Красный'; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title='Жёлтый';  
} else {
 $state='green';
 $state_title='Зелёный';   
}

$this->setProperty('remDetails',implode(". ",$details));

if ($this->getProperty('remColor')!=$state) {
 $this->setProperty('remColor',$state);
 $this->setProperty('remTitle',$state_title);
 if ($state!='green') {
  say("Уровень системы связи изменился на ".$state_title.".");
  say(implode(". ",$details));
 } else {
  say("Уровень системы связи восстановился на ".$state_title);
 }
 $this->callMethod('remChanged');
}
и пункт меню с таким содержанием:

Код: Выделить всё

ANSID:  <span style="color:%remping.remColor%">%remping.remTitle%</span> %remping.remDetails%
показывает просто "ANSID"

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 7:34 am
nick7zmail
Метод то выполняется? Проверяли ручным запуском?
ansid писал(а): Пн сен 09, 2019 3:36 pm Вопрос: есть много методов проверяющих доступность по пингу разных узлов, переменные каждого метода работают только в нем? т.е. если в разных методах будут переменные red, details и т.д., то не будут ли они мешать друг другу?
В соседних методах на одном уровне - нет. А вот метод объекта, к примеру, если он настроен отдельно, может:
1) отключить родительский метод класса
2) перезаписать переменные (точнее не совсем переменные, а свойства...на переменные, как таковые, не должен вроде влиять...хотя не проверял), которые там выставлялись (или наоборот классовый перезапишет, в зависимости от порядка запуска)

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 9:46 am
ansid
nick7zmail писал(а): Вт сен 10, 2019 7:34 am Метод то выполняется? Проверяли ручным запуском?
Не могу найти, где вручную запустить метод.

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 10:05 am
nick7zmail
Либо командой cm('Объект.метод'); либо где то в редактировании метода была ссылочка test внизу...ну это у метода объекта (не класса).

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 10:57 am
ansid
nick7zmail писал(а): Вт сен 10, 2019 10:05 am Либо командой cm('Объект.метод'); либо где то в редактировании метода была ссылочка test внизу...ну это у метода объекта (не класса).
Добился, того, что показывает "ANSID: Красный Не доступен", но не реагирует на реальное состояние хоста. В pinghosts состояние online, а метод этого не видит. Метод переделал в такой вид(взял из systemState):

Код: Выделить всё

$details=array();
$red_state=0;
$yellow_state=0;

if (!isOnline('192.168.9.109')) {
 $yellow_state=1;
 $details[]=LANG_GENERAL_NO_INTERNET_ACCESS;
}

if ($red_state) {
 $state='red';
 $state_title=LANG_GENERAL_RED; 
} elseif ($yellow_state) {
 $state='yellow';
 $state_title=LANG_GENERAL_YELLOW;  
} else {
 $state='green';
 $state_title=LANG_GENERAL_GREEN;   
}

$new_details=implode(". ",$details);
if ($this->getProperty("remDetails")!=$new_details) {
 $this->setProperty('remDetails',$new_details);
}

if ($this->getProperty('remColor')!=$state) {
 $this->setProperty('remColor',$state);
 $this->setProperty('remTitle',$state_title);
 if ($state!='green') {
  say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_CHANGED_TO." ".$state_title.".");
  say(implode(". ",$details));
 } else {
  say(LANG_GENERAL_COMMUNICATION_STATE." ".LANG_GENERAL_RESTORED_TO." ".$state_title);
 }
 $this->callMethod('remChanged');
}

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 11:11 am
ansid
Совсем запутался. Создается класс remoteState, в нем объект remping, в объекте свойства (remTitle, remColor, remDetails) и методы remcheck и remchanged. Правильно? Добрался до создания методов, нет кнопки добавить метод.

Re: Мониторинг состояния системы

Добавлено: Вт сен 10, 2019 11:43 am
Divan
Методы можно добавлять только в основном объекте, а в под объекте, методы можно только настраивать. Смотрите скриншот ниже.