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

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение vitar78 » Пт дек 21, 2018 1:36 am

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

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

$adm = getGlobal('admin'.'.'.'WiFiStatus');
$and = getGlobal('Andrey'.'.'.'WiFiStatus');
if (($adm && $and)==0);
{
  callMethod('SecurityArmedMode'.'.'.'activate	');
}
if else (($adm) == 1);
{
callMethod('SecurityArmedMode'.'.'.'deactivate	');
 }
if else (($and) == 1);
{
callMethod('SecurityArmedMode'.'.'.'deactivate	');
 }
Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

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

Сообщение Lerych » Пт дек 21, 2018 7:57 am

vitar78 писал(а):
Пт дек 21, 2018 1:36 am
Пишу код который при пропадании устройств из сети будет включать режим охраны
но никак не получается заставить работать правильно
надо чтоб при доступности любого устройства выключался режим а при отсутствии всех устройств режим активировался.

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

$adm = getGlobal('admin'.'.'.'WiFiStatus');
$and = getGlobal('Andrey'.'.'.'WiFiStatus');
if (($adm && $and)==0);
{
 
}
if else (($adm) == 1);
{
callMethod('SecurityArmedMode'.'.'.'deactivate	');
 }
if else (($and) == 1);
{
callMethod('SecurityArmedMode'.'.'.'deactivate	');
 }
Синтаксис написания у тебя странный. Надо просто писать:
$adm = getGlobal('admin.WiFiStatus');
и
callMethod('SecurityArmedMode.activate');
Логику пока не смотрел
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

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

Сообщение tarasfrompir » Пт дек 21, 2018 8:54 am

оформ все это циклом если не 2 пользователя а ну так 5 - 10
Спасибо нам ПОМОЖЕТ..!
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение vitar78 » Пт дек 21, 2018 11:26 am

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

$adm = getGlobal('admin.WiFiStatus');
$and = getGlobal('Andrey.WiFiStatus');
for (($adm && $and)==0);
{
 callMethod('SecurityArmedMode.activate');
}
for (($adm) == 1);
{
callMethod('SecurityArmedMode.deactivate');
 }
for (($and) == 1);
{
callMethod('SecurityArmedMode.deactivate');
 }
 
попробовал оформить циклом но как это обыгрывать
Последний раз редактировалось vitar78 Пт дек 21, 2018 11:53 am, всего редактировалось 1 раз.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Пт дек 21, 2018 11:47 am

vitar78 писал(а):
Пт дек 21, 2018 11:26 am
...
попробовал оформить циклом но как это обыгрывать
Можно попробовать так:

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

//тут мы инвертируем статусы (т.е. если был 1, получим 0, и наоборот)
$adm = abs(getGlobal('admin.WiFiStatus') - 1);
$and = abs(getGlobal('Andrey.WiFiStatus') - 1);
$NoBody = $adm * $and;
//$NoBody, равное "0", будет означать, что кто-то есть
if ($NoBody == 0) {
callMethod('SecurityArmedMode.deactivate');
} else {
callMethod('SecurityArmedMode.activate');
}
Только если у единственного постояльца смартфон ночью разрядится... Наряд с хлебом-солью встречать придется... ;)
За это сообщение автора Chainik поблагодарил:
vitar78 (Пт дек 21, 2018 11:56 am)
Рейтинг: 1.16%
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение vitar78 » Пт дек 21, 2018 11:58 am

Chainik писал(а):
Пт дек 21, 2018 11:47 am
vitar78 писал(а):
Пт дек 21, 2018 11:26 am
...
попробовал оформить циклом но как это обыгрывать
Можно попробовать так:

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

//тут мы инвертируем статусы (т.е. если был 1, получим 0, и наоборот)
$adm = abs(getGlobal('admin.WiFiStatus') - 1);
$and = abs(getGlobal('Andrey.WiFiStatus') - 1);
$NoBody = $adm * $and;
//$NoBody, равное "0", будет означать, что кто-то есть
if ($NoBody == 0) {
callMethod('SecurityArmedMode.deactivate');
} else {
callMethod('SecurityArmedMode.activate');
}
Только если у единственного постояльца смартфон ночью разрядится... Наряд с хлебом-солью встречать придется... ;)
правильно если количество пользователей увеличивается

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

//тут мы инвертируем статусы (т.е. если был 1, получим 0, и наоборот)
$adm = abs(getGlobal('admin.WiFiStatus') - 1);
$and = abs(getGlobal('Andrey.WiFiStatus') - 1);
$ts1 = abs(getGlobal('test1.WiFiStatus') - 1);
$ts2= abs(getGlobal('test2.WiFiStatus') - 1);
$NoBody = $adm * $and * test1 * test2;
//$NoBody, равное "0", будет означать, что кто-то есть
if ($NoBody == 0) {
callMethod('SecurityArmedMode.deactivate');
} else {
callMethod('SecurityArmedMode.activate');
}
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Пт дек 21, 2018 12:00 pm

vitar78 писал(а):
Пт дек 21, 2018 11:58 am
...
правильно если количество пользователей увеличивается
...
Правильно.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Пт дек 21, 2018 12:07 pm

а можно подсмотреть как к примеру у меня состояния активности в комнатах и у пользователей собираются, но это так малюсенький кусочек всего
п.с. постоянно встают волосы дыбом от реализаций простого, через кучу не нужных вычислений, потом жалуются чет все тупит
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение vitar78 » Пт дек 21, 2018 12:27 pm

Logrus писал(а):
Пт дек 21, 2018 12:07 pm
а можно подсмотреть как к примеру у меня состояния активности в комнатах и у пользователей собираются, но это так малюсенький кусочек всего
п.с. постоянно встают волосы дыбом от реализаций простого, через кучу не нужных вычислений, потом жалуются чет все тупит

Пытался по вашему примеру никого нет дома сделать но запутался, и решил что надо сначала у себя реализовать по своей логике для понимания.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Пт дек 21, 2018 12:45 pm

Пытался по вашему примеру никого нет дома сделать но запутался
вот, а там сейчас на порядок сложнее (((

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

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

$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
это "пример" для сравнения с выше
За это сообщение автора Logrus поблагодарили (всего 2):
vitar78 (Пт дек 21, 2018 2:45 pm) • semkyskov (Сб авг 01, 2020 3:27 pm)
Рейтинг: 2.33%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить