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

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

Модератор: immortal

Ответить
Vitamin
Сообщения: 14
Зарегистрирован: Пн мар 23, 2020 1:46 pm
Благодарил (а): 2 раза
Поблагодарили: 0

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

Сообщение Vitamin » Чт июн 11, 2020 10:33 am

Добрый день. Столкнулся с преградой. Есть удлинитель, нужно чтоб при достижении значения 50 и выше срабатывал сценарий один раз, по хорошему, если значение упало ниже 50, а потом снова поднялось, то еще раз. Само значение постоянно меняется, 51, 53, 54. При каждом изменении срабатывает сценарий. Как можно заставить его срабатывать только раз?

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

if (getGlobal('miioSensor_power01.value') > '50') {
 runScript("sendTelegram",array("id"=>'#########',"msg"=>'включен телевизор'));
} 
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 262 раза
Поблагодарили: 455 раз

Re: При достижении значения постоянно выполняет сценарий, а нужно только раз

Сообщение Chainik » Чт июн 11, 2020 10:46 am

Для этого вам надо смотреть не только на текущее значение, но и на предыдущее. Можно завести отдельное свойство, куда сохраняется предыдущее значение. Можно поработать с параметрами "newvalue", "oldvalue" (вроде бы так они называются).
С отдельным свойством будет так:

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

if ((getGlobal('miioSensor_power01.value') > '50') && (getGlobal('miioSensor_power01.ПРЕДЫДУЩЕЕvalue') < '50')) {
 runScript("sendTelegram",array("id"=>'#########',"msg"=>'включен телевизор'));
} 
За это сообщение автора Chainik поблагодарил:
Vitamin (Чт июн 11, 2020 10:53 am)
Рейтинг: 1.16%
Vitamin
Сообщения: 14
Зарегистрирован: Пн мар 23, 2020 1:46 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: При достижении значения постоянно выполняет сценарий, а нужно только раз

Сообщение Vitamin » Чт июн 11, 2020 10:54 am

Спасибо интересный ход. Помогли
Ответить