Страница 2 из 5

Re: помогите разобратся с скриптом

Добавлено: Пт дек 21, 2018 2:54 pm
vitar78
Logrus писал(а): Пт дек 21, 2018 12:45 pm
Пытался по вашему примеру никого нет дома сделать но запутался
вот, а там сейчас на порядок сложнее (((

логика одна, двоичная
Снимок.PNG
относительно этого, сравнить выше и про что сказал

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

$presence = 0;
$objects = getObjectsByClass('Users');
foreach ($objects as $obj) {
 if (getGlobal($obj['TITLE'] . '.WiFiStatus') == 1) {
  $presence = 1;
  break;
 }
}

if ($presence) {
callMethod('SecurityArmedMode.activate');
} else {
callMethod('SecurityArmedMode.deactivate');
}
метод вызывается по изменению свойства WiFiStatus
это "пример" для сравнения с выше
Сделал скрипт вызывается каждую минуту, но идет спам что режим активирован. что я сделал не правильно ?

Re: помогите разобратся с скриптом

Добавлено: Пт дек 21, 2018 3:42 pm
Chainik
vitar78 писал(а): Пт дек 21, 2018 2:54 pm ...
Сделал скрипт вызывается каждую минуту, но идет спам что режим активирован. что я сделал не правильно ?
Наверное, метод надо вызывать только в том случае, если данный режим в текущий момент не действует. Т.е.:

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

if (gg('SecurityArmedMode.Имя_свойства_статуса_режима') == "1") {
callMethod('SecurityArmedMode.activate');
}
Аналогично и с методом по деактивации режима.

Re: помогите разобратся с скриптом

Добавлено: Пт дек 21, 2018 3:53 pm
Logrus
vitar78 писал(а): Пт дек 21, 2018 2:54 pm Сделал скрипт вызывается каждую минуту, но идет спам что режим активирован. что я сделал не правильно ?
метод вызывается по изменению свойства WiFiStatus
частично уже решит

ну я б выше только как пример рассматривал, т.к. (ну какая охрана от присутствия в сети устройства, она поверх режима никого нет с еще кучей условий - это если все в автомате, и снятие только вручную и т.д.)
все-таки даже если непонятно, код как пример стоит посмотреть (там это решено все и таймер излишен, все по событиям)
так к примеру у меня это промежуточное свойство и запись его идет через проверку на несоответствие, и далее уже проверка что вызвать в режиме естественно с проверкой состояния самого режима

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 5:47 pm
lihodeev
код срабатывает если любое условие выполняется, а надо если оба имеют 1.
SPOILERSPOILER_SHOW
// Если сигнализация включена
if (gg('pirPRH.status')=="1")
//и включен ражим охраны
(gg('ThisComputer.securityMode')=="1");{
// Фиксируем движения в помещении
Say ('кто то в доме неизвестный!!',2);
// Делаем фотку с конкретной камеры
callMethod('Camera01.takeSnapshot');
// Считываем путь до файла
$img='/var/www/html/cms/images/'.gg('Camera01.snapshot');
// Отправляем фотку в телеграм Админу
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAdmin($img);
}
что не так?

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 6:22 pm
Chainik
lihodeev писал(а): Чт апр 04, 2019 5:47 pm код срабатывает если любое условие выполняется, а надо если оба имеют 1.
...
что не так?
Не хватает указания на проверку условий одновременно

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

// Если сигнализация включена
//и включен ражим охраны
if (gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1"){
ДЕЙСТВИЯ
}
UPD: убрал лишний символ ";".

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 7:59 pm
lihodeev

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

// Если сигнализация включена
//и включен ражим охраны
if (gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1");{
ДЕЙСТВИЯ
}
ошибка - syntax error, unexpected '&&' (T_BOOLEAN_AND)
уже перерыл весь синтаксис оператора, вроде все верно, а нет.

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 8:03 pm
Chainik
lihodeev писал(а): Чт апр 04, 2019 7:59 pm ...
ошибка - syntax error, unexpected '&&' (T_BOOLEAN_AND)
уже перерыл весь синтаксис оператора, вроде все верно, а нет.
Наверняка скобки недоставил. Проверьте

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

// Если сигнализация включена
//и включен ражим охраны
if ((gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1"));{
ДЕЙСТВИЯ
}

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 8:23 pm
lihodeev
Наверняка скобки недоставил. Проверьте

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

// Если сигнализация включена
//и включен ражим охраны
if ((gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1"));{
ДЕЙСТВИЯ
}
есть такое, но тогда не работает, ДЕЙСТВИЕ выполняется в любом случае

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 8:29 pm
Chainik
lihodeev писал(а): Чт апр 04, 2019 8:23 pm ...
есть такое, но тогда не работает, ДЕЙСТВИЕ выполняется в любом случае
Действие должно выполнятся только в том случае, когда одновременно оба свойства = "1".
Для отладки, чтобы понять, что происходит, можно временно дописать say

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

// Если сигнализация включена
//и включен ражим охраны
if ((gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1"));{
say("pirPRH=".gg('pirPRH.status'));
say("securityMode=".gg('ThisComputer.securityMode'));
ДЕЙСТВИЯ
}

Re: помогите разобратся с скриптом

Добавлено: Чт апр 04, 2019 9:06 pm
lihodeev
Chainik писал(а): Чт апр 04, 2019 8:29 pm
Действие должно выполнятся только в том случае, когда одновременно оба свойства = "1".
Для отладки, чтобы понять, что происходит, можно временно дописать say

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

// Если сигнализация включена
//и включен ражим охраны
if ((gg('pirPRH.status')=="1") && (gg('ThisComputer.securityMode')=="1"));{
say('бла бла бла',2);
say("pirPRH=".gg('pirPRH.status'));
say("securityMode=".gg('ThisComputer.securityMode'));
ДЕЙСТВИЯ
}
21:04 Алиса: securityMode=1
21:04 Алиса: pirPRH=1
21:04 Алиса: бла бла бла
начинаю шизеть