вопросы от новичка

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: вопросы от новичка

Сообщение fandaymon » Пн июл 09, 2018 1:19 pm

Denis_k писал(а):
Пн июл 09, 2018 1:05 pm
fandaymon писал(а):
Пн июл 09, 2018 12:44 pm
А если в консоли дать команду brLinkCommand('sp3_2.off'), розетка её отработает? Если да, то возможно просто время таймера неправильно выставляется
попробовал выполнить, получил несколько ошибок, выполнение такой строки

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

cm('sp3_2.turnOff');
тоже проходит с ошибками, но розетка выключается
впрочем скорее всего ошибка именно с выставлением времени таймера, потому, что не отрабатывают оба таймера
fandaymon писал(а):
Пн июл 09, 2018 12:44 pm
Ну и в принципе странно делать несколько таймеров, чтобы выключить розетку и послать сообщение. Обычно просто запускают сценарий, в котором написаны все эти команды.
если конструкция используется "в одном месте", то особого смысла в сценарии не вижу
Ну можно тогда просто в одном таймере всё это написать -

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

setTimeOut("1_1","brLinkCommand('Вентилятор1.Off');sg('Вентилятор1.status',0);sayReply('Выключаю вытяжку ...',2);",gg('zad_vent1.sec'));
За это сообщение автора fandaymon поблагодарил:
Denis_k (Пн июл 09, 2018 1:49 pm)
Рейтинг: 1.16%
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: вопросы от новичка

Сообщение Logrus » Пн июл 09, 2018 1:23 pm

Logrus писал(а):
Пн июл 09, 2018 1:05 pm
нет не отработает, это же команда на рм про по рф, а сп3 по вай-фай через свойства-методы-в модуле
попробовал выполнить, получил несколько ошибок, выполнение такой строки
ну наверное нужно привести эти ошибки и вообще разобраться с настройками, то гложут ... ;)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Samir77
Сообщения: 95
Зарегистрирован: Чт фев 02, 2017 7:30 pm
Благодарил (а): 755 раз
Поблагодарили: 9 раз

Re: вопросы от новичка

Сообщение Samir77 » Пн мар 11, 2019 9:49 pm

Logrus писал(а):
Вт фев 06, 2018 9:34 pm
ypiter2006 писал(а):в телеграмме был вопрос
возможно это то что нужно
в SDevices/SOpenClose в метод logicAction у объекта "входная дверь"

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

$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if (!$status) {
    ClearTimeOut($ot.'_passed');
    say("Входная дверь закрыта",2);
}

if ($passed < 60 && $status) {
    $newTimeout = 60;
    say("Входная дверь открыта",2);
} elseif ($passed < 90 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуту",2);
} elseif ($passed < 240 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуты",2);
} elseif ($passed < 1900 && $status) {
    $newTimeout = 300;
    say("Входная дверь открыта ".round($passed/60)." минут",2);
}

if ($newTimeout > 0) {
    setTimeOut($ot.'_passed','callMethod("'.$ot.'.logicAction");',$newTimeout);
}
это на входную дверь:
при открытой - Входная дверь открыта, Входная дверь открыта 1 минуту, Входная дверь открыта 3 минуты, Входная дверь открыта 5 минут и далее с 5-ти минутным интервалом до 30 минут включительно
при закрытой - Входная дверь закрыта

п.с. у датчика от броадлинк в свойства 0 при закрытой, 1 при открытой, у сяоми наоборот


Все кричат иди на форум в чате не спросить у всех все работает...
Вопрос вот в чем и сама проблема у меня как то странно отрабатывает этот код, может конечно лишнего туда напихал, но все же, то задержки в телегу приходят спустя 2 минуты, и уже потом знать что дверь открыта радости мало...
И что самое интересное , если в свойствах менять значение сначала на 0 (открыто) а потом пытаться поменять на 1(закрыто) то в браузере страница начинает тупо висеть.... Я уже не знаю как и что...
если не сложно .. то помоги..

$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if ($status)
{
say('Входная дверь закрыта', 2);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll("Входная дверь закрыта");
//сбросить таймер
ClearTimeOut($ot . '_passed');
//в режим
setTimeOut($ot . '_presence', "cm('Rooms.Check');", 600);
//проверяем когда в последний раз срабатывало событие "Входная дверь"
$last_register = registeredEventTime('entranceClosed');
//регистрируем событие "Входная дверь"
registerEvent('entranceClosed', $this->description, 7);
if ($last_register == '-1' || (time() - $last_register) > 7200)
{
if (round(getHistoryValue('NobodyHomeMode.active', time() - 600, true)) == 1)
{
runScriptSafe('Greeting');
}
}
}
elseif ($passed < 60 && !$status)
{
$newTimeout = 60;

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll("Входная дверь закрыта");
//добавить камеру
}
elseif ($passed < 90 && !$status)
{
$newTimeout = 120;
say('Входная дверь открыта одну минуту', 1);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll("Входная дверь открыта одну минуту");
}
elseif ($passed < 240 && !$status)
{
$newTimeout = 180;
say('Входная дверь открыта три минуты', 1);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll("Входная дверь открыта три минуты");
}
elseif ($passed < 1800 && $status)
{
$newTimeout = 300;
say('Входная дверь открыта ' . round($passed/60) . ' минут', 3);
}
else
{
//если больше аларм (ну смс, астериск отправить)
say('Тревога!', 3);
playSound("alarm.mp3");
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendMessageToAll("Тревога");
}

if ($newTimeout > 0)
{
setTimeOut($ot . '_passed', 'cm("' . $ot . '.logicAction");', $newTimeout);
}

Это сам код...
Вложения
5.PNG
5.PNG (8.09 КБ) 4401 просмотр
4.PNG
4.PNG (34.68 КБ) 4401 просмотр
3.PNG
3.PNG (41.12 КБ) 4401 просмотр
2.PNG
2.PNG (39.01 КБ) 4401 просмотр
1.PNG
1.PNG (12.77 КБ) 4401 просмотр
ASUS ASPIRE 5739G Windows 7 + Raspberry Pi3 + Broadlink + Sonoff
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: вопросы от новичка

Сообщение Logrus » Вт мар 12, 2019 12:46 am

ну с месяц назад помнится в лс кидал все это по самому минимуму, работало?

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

$ot = $this->object_title;
$status = $this->getProperty('status');

$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if ($status) {
 clearTimeOut($ot . '_passed');
 say('Входная дверь закрыта', 2);
}
elseif ($passed < 60 && $status == 0) {
 $newTimeout = 60;
 say('Входная дверь открыта', 2);
} 
elseif ($passed < 90 && $status == 0) {
 $newTimeout = 120;
 say('Входная дверь открыта одну минуту', 2);
}
elseif ($passed < 240 && $status == 0) {
 $newTimeout = 120;
 say('Входная дверь открыта три минуты', 2);
}
elseif ($passed < 1600 && $status == 0) {
 $newTimeout = 300;
 say('Входная дверь открыта ' . round($passed/60) . ' минут', 2);
} else {
 //если больше аларм
 say('Аларм! Дверь!!!', 3);
}

if ($newTimeout > 0) {
 setTimeOut($ot . '_passed', 'callMethod("' . $ot . '.logicAction");', $newTimeout);
}
в жалобе выше вижу использование тлг, он вообще нормально работает или тормозит, то что-то такое в чатике помнится :)
двоит сообщения только с двери (отправка по сай и через модуль?) или со всего (если со всего при чем тут дверь?)?
на скринах выше у тлг самый высший приоритет, зачем? сай тоже приходит в тлг если в модуле не задран "Приоритет истории" для данного пользователя (по умолчанию там 0)
За это сообщение автора Logrus поблагодарил:
Samir77 (Вт мар 12, 2019 2:07 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
Samir77
Сообщения: 95
Зарегистрирован: Чт фев 02, 2017 7:30 pm
Благодарил (а): 755 раз
Поблагодарили: 9 раз

Re: вопросы от новичка

Сообщение Samir77 » Вт мар 12, 2019 2:14 pm

Logrus писал(а):
Вт мар 12, 2019 12:46 am
ну с месяц назад помнится в лс кидал все это по самому минимуму, работало?

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

$ot = $this->object_title;
$status = $this->getProperty('status');

$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if ($status) {
 clearTimeOut($ot . '_passed');
 say('Входная дверь закрыта', 2);
}
elseif ($passed < 60 && $status == 0) {
 $newTimeout = 60;
 say('Входная дверь открыта', 2);
} 
elseif ($passed < 90 && $status == 0) {
 $newTimeout = 120;
 say('Входная дверь открыта одну минуту', 2);
}
elseif ($passed < 240 && $status == 0) {
 $newTimeout = 120;
 say('Входная дверь открыта три минуты', 2);
}
elseif ($passed < 1600 && $status == 0) {
 $newTimeout = 300;
 say('Входная дверь открыта ' . round($passed/60) . ' минут', 2);
} else {
 //если больше аларм
 say('Аларм! Дверь!!!', 3);
}

if ($newTimeout > 0) {
 setTimeOut($ot . '_passed', 'callMethod("' . $ot . '.logicAction");', $newTimeout);
}
в жалобе выше вижу использование тлг, он вообще нормально работает или тормозит, то что-то такое в чатике помнится :)
двоит сообщения только с двери (отправка по сай и через модуль?) или со всего (если со всего при чем тут дверь?)?
на скринах выше у тлг самый высший приоритет, зачем? сай тоже приходит в тлг если в модуле не задран "Приоритет истории" для данного пользователя (по умолчанию там 0)
Сергей!!! Ни каких жалоб!!! Я может и сам что навертел... Тут больше крик о помощи! Уж простите что нагрузил! :?
Двоит только с герконов открытия и закрытия...Приоритеты ставил так что бы хоть как то получать уведомление об открытии и закрытии.
Сделал тестовый сай .. говорит и прилетает сразу..
ASUS ASPIRE 5739G Windows 7 + Raspberry Pi3 + Broadlink + Sonoff
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: вопросы от новичка

Сообщение Logrus » Вт мар 12, 2019 11:55 pm

ну на ненормальное поведение жалуешься, на вопросы не отвечаешь, сути так и не понял, чую через месяц следующая итерация будет ;)
За это сообщение автора Logrus поблагодарил:
Samir77 (Пн мар 25, 2019 1:29 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Sergey.Chek
Сообщения: 107
Зарегистрирован: Ср фев 13, 2019 9:50 pm
Благодарил (а): 219 раз
Поблагодарили: 19 раз

Re: вопросы от новичка

Сообщение Sergey.Chek » Сб мар 28, 2020 9:22 pm

Logrus писал(а):
Вт фев 06, 2018 9:34 pm
ypiter2006 писал(а):в телеграмме был вопрос
возможно это то что нужно
в SDevices/SOpenClose в метод logicAction у объекта "входная дверь"

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

$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if (!$status) {
    ClearTimeOut($ot.'_passed');
    say("Входная дверь закрыта",2);
}

if ($passed < 60 && $status) {
    $newTimeout = 60;
    say("Входная дверь открыта",2);
} elseif ($passed < 90 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуту",2);
} elseif ($passed < 240 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуты",2);
} elseif ($passed < 1900 && $status) {
    $newTimeout = 300;
    say("Входная дверь открыта ".round($passed/60)." минут",2);
}

if ($newTimeout > 0) {
    setTimeOut($ot.'_passed','callMethod("'.$ot.'.logicAction");',$newTimeout);
}
это на входную дверь:
при открытой - Входная дверь открыта, Входная дверь открыта 1 минуту, Входная дверь открыта 3 минуты, Входная дверь открыта 5 минут и далее с 5-ти минутным интервалом до 30 минут включительно
при закрытой - Входная дверь закрыта

п.с. у датчика от броадлинк в свойства 0 при закрытой, 1 при открытой, у сяоми наоборот
У меня 0 при открытой, 1 при закрытой. Что нужно в коде изменить? Спасибо.
Raspberry pi 4
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: вопросы от новичка

Сообщение Chainik » Сб мар 28, 2020 9:57 pm

Sergey.Chek писал(а):
Сб мар 28, 2020 9:22 pm
...
У меня 0 при открытой, 1 при закрытой. Что нужно в коде изменить? Спасибо.
Попробуйте убрать из кода восклицательный знак.
За это сообщение автора Chainik поблагодарил:
Sergey.Chek (Сб мар 28, 2020 10:48 pm)
Рейтинг: 1.16%
Sergey.Chek
Сообщения: 107
Зарегистрирован: Ср фев 13, 2019 9:50 pm
Благодарил (а): 219 раз
Поблагодарили: 19 раз

Re: вопросы от новичка

Сообщение Sergey.Chek » Сб мар 28, 2020 10:07 pm

Chainik писал(а):
Сб мар 28, 2020 9:57 pm
Sergey.Chek писал(а):
Сб мар 28, 2020 9:22 pm
...
У меня 0 при открытой, 1 при закрытой. Что нужно в коде изменить? Спасибо.
Попробуйте убрать из кода восклицательный знак.
Убрал. При закрытии говорит, дверь закрыта и сразу же в догонку говорит дверь открыта.
Raspberry pi 4
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: вопросы от новичка

Сообщение Chainik » Сб мар 28, 2020 10:28 pm

Тогда надо вернуть восклицательный знак и попробовать действовать "в лоб". Инвертируем значение переменной на входе.
После строчки

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

$status = $this->getProperty('status');
вставляем фрагмент

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

If ($status <> 0) {
$status = 0;
} else {
$status = 1;}
По идее должно помочь.
За это сообщение автора Chainik поблагодарил:
Sergey.Chek (Сб мар 28, 2020 10:49 pm)
Рейтинг: 1.16%
Ответить