Страница 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.
// Если сигнализация включена
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 Алиса: бла бла бла
начинаю шизеть