Простые устройства / Simple Devices

Новые релизы, обновления и т.п.

Модератор: immortal

timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Простые устройства / Simple Devices

Сообщение timurufa86 » Чт дек 19, 2019 4:29 pm

а так будет работать
echo "start metod\n";
if ($this->getProperty('status') == 1){
//$w1 =
new EvTimer(2, 0, function () {
echo "2 секунды прошло\n";
if ($this->getProperty('status') == 1){
$this->setProperty('Mstatus',1);
}

});
}else{
echo "mstatus=0\n";
$this->setProperty('Mstatus',0);}
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Простые устройства / Simple Devices

Сообщение timurufa86 » Чт дек 19, 2019 4:35 pm

tarasfrompir писал(а):
Чт дек 19, 2019 3:54 pm
timurufa86 писал(а):
Чт дек 19, 2019 3:49 pm
можете мне подсказать как в методе сделать таймер на 2-3 секунды
берем переменную
ждем 2-3 секунды
опять берем переменную
сравниваем ее с предыдущим значением
выполняем что либо по условию
так есть вот такое - https://mdminfo.ru/wiki/%D0%9A%D0%B0%D1 ... 1%8B%D0%B5
и что эти данные дадут ?? мне нужно не сравнивать два значения на смену а проверять значение по ИСТЕЧЕНИИ ОПРЕДЕЛЕННОГО ВРЕМЕНИ в одном методе (за один запуск метода)
а эти олд и нью тут не прокатят ну можно их приминить но мне все равно нужен отчет времени
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Простые устройства / Simple Devices

Сообщение timurufa86 » Чт дек 19, 2019 5:08 pm

все вроде дошло буду при смене статуса 1 или 0
1 засекать время в unix time
2 при смене статуса на 0 буду в методе от нынешнего времени вычитать засеченное время
3 если разнице меньше 2 секунд то значит движения не было если больше то значит было и включаем свет
что скажете такое будет работать??) конечно это все с большой погрешностью..((
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 30 раз

Re: Простые устройства / Simple Devices

Сообщение freesh » Чт дек 19, 2019 5:10 pm

timurufa86 писал(а):
Чт дек 19, 2019 4:35 pm
tarasfrompir писал(а):
Чт дек 19, 2019 3:54 pm
timurufa86 писал(а):
Чт дек 19, 2019 3:49 pm
можете мне подсказать как в методе сделать таймер на 2-3 секунды
берем переменную
ждем 2-3 секунды
опять берем переменную
сравниваем ее с предыдущим значением
выполняем что либо по условию
так есть вот такое - https://mdminfo.ru/wiki/%D0%9A%D0%B0%D1 ... 1%8B%D0%B5
и что эти данные дадут ?? мне нужно не сравнивать два значения на смену а проверять значение по ИСТЕЧЕНИИ ОПРЕДЕЛЕННОГО ВРЕМЕНИ в одном методе (за один запуск метода)
а эти олд и нью тут не прокатят ну можно их приминить но мне все равно нужен отчет времени
У тебя включение света в методе StatusUpdated (или какой он там, MotionDetected?)
Ну вариант сохранять ещё в какое-то свойсво timestamp и проверять разницу во времени между сработками, это будет тоже самое истечение опеределенного времени.
За это сообщение автора freesh поблагодарил:
timurufa86 (Чт дек 19, 2019 6:47 pm)
Рейтинг: 1.16%
Raspberry pi3, xiaomi, sonoff rf.
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Простые устройства / Simple Devices

Сообщение timurufa86 » Чт дек 19, 2019 6:47 pm

freesh писал(а):
timurufa86 писал(а):
Чт дек 19, 2019 4:35 pm
tarasfrompir писал(а):
Чт дек 19, 2019 3:54 pm
timurufa86 писал(а):
Чт дек 19, 2019 3:49 pm
можете мне подсказать как в методе сделать таймер на 2-3 секунды
берем переменную
ждем 2-3 секунды
опять берем переменную
сравниваем ее с предыдущим значением
выполняем что либо по условию
так есть вот такое - https://mdminfo.ru/wiki/%D0%9A%D0%B0%D1 ... 1%8B%D0%B5
и что эти данные дадут ?? мне нужно не сравнивать два значения на смену а проверять значение по ИСТЕЧЕНИИ ОПРЕДЕЛЕННОГО ВРЕМЕНИ в одном методе (за один запуск метода)
а эти олд и нью тут не прокатят ну можно их приминить но мне все равно нужен отчет времени
У тебя включение света в методе StatusUpdated (или какой он там, MotionDetected?)
Ну вариант сохранять ещё в какое-то свойсво timestamp и проверять разницу во времени между сработками, это будет тоже самое истечение опеределенного времени.
Я про это какраз и написал выше


Отправлено с моего iPhone используя Tapatalk
timurufa86
Сообщения: 65
Зарегистрирован: Вт фев 17, 2015 8:40 pm
Благодарил (а): 19 раз
Поблагодарили: 2 раза

Re: Простые устройства / Simple Devices

Сообщение timurufa86 » Чт дек 19, 2019 6:53 pm

freesh писал(а):
timurufa86 писал(а):
Чт дек 19, 2019 4:35 pm
tarasfrompir писал(а):
Чт дек 19, 2019 3:54 pm
timurufa86 писал(а):
Чт дек 19, 2019 3:49 pm
можете мне подсказать как в методе сделать таймер на 2-3 секунды
берем переменную
ждем 2-3 секунды
опять берем переменную
сравниваем ее с предыдущим значением
выполняем что либо по условию
так есть вот такое - https://mdminfo.ru/wiki/%D0%9A%D0%B0%D1 ... 1%8B%D0%B5
и что эти данные дадут ?? мне нужно не сравнивать два значения на смену а проверять значение по ИСТЕЧЕНИИ ОПРЕДЕЛЕННОГО ВРЕМЕНИ в одном методе (за один запуск метода)
а эти олд и нью тут не прокатят ну можно их приминить но мне все равно нужен отчет времени
У тебя включение света в методе StatusUpdated (или какой он там, MotionDetected?)
Ну вариант сохранять ещё в какое-то свойсво timestamp и проверять разницу во времени между сработками, это будет тоже самое истечение опеределенного времени.
Я про это какраз и написал выше


Отправлено с моего iPhone используя Tapatalk
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Простые устройства / Simple Devices

Сообщение nick7zmail » Пт дек 20, 2019 6:52 am

timurufa86 писал(а):
Чт дек 19, 2019 10:07 am
Привет всем! возникла проблема иногда срабатывает датчик движения в комнате и ночью включается свет и мешает спать..)) кто как реализовал блокировку датчика движения? именно интересует логика . Я пока сделал по времени, что со столькито ночи до столькито не давать датчику срабатывать , но это очень тупо (((
Ну как бы работает - значит правильно сделали =D. На самом деле так и пишется...если время попадает в интервал (функция timeBetween), то включаем свет, иначе ничего не делаем... Вот такая логика.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Простые устройства / Simple Devices

Сообщение xor » Пт дек 20, 2019 6:53 pm

timurufa86 писал(а):
Чт дек 19, 2019 10:07 am
Привет всем! возникла проблема иногда срабатывает датчик движения в комнате и ночью включается свет и мешает спать..)) кто как реализовал блокировку датчика движения? именно интересует логика . Я пока сделал по времени, что со столькито ночи до столькито не давать датчику срабатывать , но это очень тупо (((
если хотите не тупо, можете кроме времени учитывать всё, что есть в системе -
режим Темно, ВсеСпят(естественно, если этот режим не сбрасывается этим датчиком движения), и т.д.
Вот у меня один дд включает свет с учётом тёмного времени суток с поправкой на облачность, временем сработки будильника, контролем состояния лампы и тупым заданием времени:

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

$withClouds = timeConvert(gg('weather_my.SunRise')) + gg('weather_my.clouds')*60*0.3 + 600;// учтём облачность при рассвете
if((gg('DarknessMode.active') || time()<$withClouds) && gg('noorelay6.status') == 0 && $params['NEW_VALUE']){
 if(!timebetween("01:00",gg("AlarmWork.start"))){//не включать ночью до будильника
   cm('noorelay6.turnOn');
 }
 setTimeOut('noorelay6_auto',"cm('noorelay6.turnOff');",10*60);
}
if($params['NEW_VALUE'] == 0 ){
 cm('noorelay6.turnOff');
}
Nilov
Сообщения: 7
Зарегистрирован: Пт дек 20, 2019 9:57 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Простые устройства / Simple Devices

Сообщение Nilov » Пт дек 20, 2019 11:29 pm

Имеется датчик наличия сетевого напряжения 220в, опрос по MQTT каждые 20 секунд. Сеть есть имеем 0, сеть пропала имеем 1.
Пытаюсь настроить в методах чтобы в Телеграм приходило сообщение - Пропало напряжение/Восстановлено напряжение.
Пару лет назад настраивал (делал через Blockly) подобное и всё работало, сейчас не получается. Итог: статус в телеграмм приходит, но каждые 20 секунд - Восстановлено напряжение...
Искал по форуму, нашел код, и комментарий к нему - эти параметры передаются при вызове связанного метода и по ним можно определить действительно ли изменялось значение. если не изменялось, то ничего не делаем и выходим из метода. Но у меня из этого ничего не получилось((

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

if ($params['NEW_VALUE']==$params['OLD_VALUE']) return;
В простых устройствах создал датчик состояния, в методах следующий код:

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

if ($params['NEW_VALUE']==$params['OLD_VALUE']) return;
if (getGlobal('Sensor_state01'.'.'.'value') == 0) {
  say('Восстановлено напряжение', 10);
}
if (getGlobal('Sensor_state01'.'.'.'value') == 1) {
  say('Пропало напряжение', 10);
}
Может кто подскажет или направит в нужном направлении?
freesh
Сообщения: 189
Зарегистрирован: Сб окт 12, 2019 2:10 pm
Благодарил (а): 6 раз
Поблагодарили: 30 раз

Re: Простые устройства / Simple Devices

Сообщение freesh » Пт дек 20, 2019 11:33 pm

Nilov писал(а):
Пт дек 20, 2019 11:29 pm
Имеется датчик наличия сетевого напряжения 220в, опрос по MQTT каждые 20 секунд. Сеть есть имеем 0, сеть пропала имеем 1.
Пытаюсь настроить в методах чтобы в Телеграм приходило сообщение - Пропало напряжение/Восстановлено напряжение.
Пару лет назад настраивал (делал через Blockly) подобное и всё работало, сейчас не получается. Итог: статус в телеграмм приходит, но каждые 20 секунд - Восстановлено напряжение...
Искал по форуму, нашел код, и комментарий к нему - эти параметры передаются при вызове связанного метода и по ним можно определить действительно ли изменялось значение. если не изменялось, то ничего не делаем и выходим из метода. Но у меня из этого ничего не получилось((

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

if ($params['NEW_VALUE']==$params['OLD_VALUE']) return;
В простых устройствах создал датчик состояния, в методах следующий код:

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

if ($params['NEW_VALUE']==$params['OLD_VALUE']) return;
if (getGlobal('Sensor_state01'.'.'.'value') == 0) {
  say('Восстановлено напряжение', 10);
}
if (getGlobal('Sensor_state01'.'.'.'value') == 1) {
  say('Пропало напряжение', 10);
}
Может кто подскажет или направит в нужном направлении?
Я бы сделал без return а :

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

if ($params['NEW_VALUE']!=$params['OLD_VALUE']) {
if (getGlobal('Sensor_state01'.'.'.'value') == 0) {
  say('Восстановлено напряжение', 10);
}
if (getGlobal('Sensor_state01'.'.'.'value') == 1) {
  say('Пропало напряжение', 10);
}
}
Raspberry pi3, xiaomi, sonoff rf.
Ответить