Если вы только начинаете осваивать систему 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 раза
Сообщение
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 раз
Сообщение
tarasfrompir » Пт дек 21, 2018 8:54 am
оформ все это циклом если не 2 пользователя а ну так 5 - 10
Спасибо нам ПОМОЖЕТ..!
-
vitar78
- Сообщения: 128
- Зарегистрирован: Пт июл 15, 2016 3:12 am
-
Благодарил (а):
6 раз
-
Поблагодарили:
2 раза
Сообщение
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 раза
Сообщение
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)
-
vitar78
- Сообщения: 128
- Зарегистрирован: Пт июл 15, 2016 3:12 am
-
Благодарил (а):
6 раз
-
Поблагодарили:
2 раза
Сообщение
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 раза
Сообщение
Chainik » Пт дек 21, 2018 12:00 pm
vitar78 писал(а): ↑Пт дек 21, 2018 11:58 am
...
правильно если количество пользователей увеличивается
...
Правильно.
-
Logrus
- Сообщения: 2079
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
313 раз
-
Поблагодарили:
457 раз
Сообщение
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 раза
Сообщение
vitar78 » Пт дек 21, 2018 12:27 pm
Logrus писал(а): ↑Пт дек 21, 2018 12:07 pm
а можно подсмотреть как к примеру у меня состояния активности в комнатах и у пользователей собираются, но это так малюсенький кусочек всего
п.с. постоянно встают волосы дыбом от реализаций простого, через кучу не нужных вычислений, потом жалуются чет все тупит
Пытался по вашему примеру никого нет дома сделать но запутался, и решил что надо сначала у себя реализовать по своей логике для понимания.
-
Logrus
- Сообщения: 2079
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
313 раз
-
Поблагодарили:
457 раз
Сообщение
Logrus » Пт дек 21, 2018 12:45 pm
Пытался по вашему примеру никого нет дома сделать но запутался
вот, а там сейчас на порядок сложнее (((
логика одна, двоичная
- Снимок.PNG (18.47 КБ) 5365 просмотров
относительно этого, сравнить выше и про что сказал
Код: Выделить всё
$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)
Telegram |
Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с
10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) )))
Спасибо