Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.
Модератор: immortal
-
Denis_k
- Сообщения: 587
- Зарегистрирован: Сб мар 19, 2016 7:24 pm
-
Благодарил (а):
299 раз
-
Поблагодарили:
27 раз
Сообщение
Denis_k » Пт фев 28, 2020 2:20 pm
xor писал(а): ↑Чт фев 27, 2020 10:52 pm
писал по памяти, а её нету(
$param
s['NEW_VALUE'] , $param
s['OLD_VALUE']
отлично, спасибо, такая конструкция работает
Код: Выделить всё
If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
$open=gg("OpenClose01.status");
if ($open==1)
{say ("Входная дверь закрыта",2);
}
else
{say ("Входная дверь открыта",2);
}
}
MD на raspberry pi3
-
xor
- Сообщения: 2043
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
288 раз
-
Поблагодарили:
629 раз
Сообщение
xor » Вс мар 01, 2020 10:52 am
Denis_k писал(а): ↑Пт фев 28, 2020 2:20 pm
xor писал(а): ↑Чт фев 27, 2020 10:52 pm
писал по памяти, а её нету(
$param
s['NEW_VALUE'] , $param
s['OLD_VALUE']
отлично, спасибо, такая конструкция работает
Код: Выделить всё
If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
$open=gg("OpenClose01.status");
if ($open==1)
{say ("Входная дверь закрыта",2);
}
else
{say ("Входная дверь открыта",2);
}
}
ну, можно подсократить, тут $params['NEW_VALUE'] у вас и есть новое значение OpenClose01.status
Код: Выделить всё
If($params['NEW_VALUE']<>$params['OLD_VALUE'])
{
if ($params['NEW_VALUE']==1)
{say ("Входная дверь закрыта",2);
}
else
{say ("Входная дверь открыта",2);
}
}
- За это сообщение автора xor поблагодарил:
- Denis_k (Вт мар 03, 2020 12:37 am)
-
madbob
- Сообщения: 24
- Зарегистрирован: Пт ноя 25, 2016 11:50 am
- Откуда: Москва
-
Благодарил (а):
10 раз
-
Поблагодарили:
3 раза
Сообщение
madbob » Вс мар 01, 2020 1:54 pm
Chainik писал(а): ↑Чт фев 27, 2020 5:10 pm
Скорее всего при while у вас "набросало" сообщений в очередь и будет проговаривать до второго пришествия (хотя сам метод фактически закончил выполнение).
Попробуйте, как правильно подсказали, добавить в код строчку с SetTimeOut, скажем, с 10-секундной задержкой выполнения).
Код: Выделить всё
If ($this->getProperty('status')) {
say("пожар в гараже",3);
SetTimeOut("MyTimer_33","$this->callMethod('ИМЯ_ТЕКУЩЕГО_МЕТОДА');",10);
}
Все равно проговаривает 1 раз, метод не перезапусается по окончании таймера.
-
Вложения
-
- relay19.jpg (200.41 КБ) 3420 просмотров
Raspberry Pi 3 образ 3.31+GUI ESP12(IoT)кучка+ESP32
-
Chainik
- Сообщения: 1463
- Зарегистрирован: Вс янв 10, 2016 11:05 am
-
Благодарил (а):
261 раз
-
Поблагодарили:
454 раза
Сообщение
Chainik » Вс мар 01, 2020 2:23 pm
madbob писал(а): ↑Вс мар 01, 2020 1:54 pm
...
Код: Выделить всё
If ($this->getProperty('status')) {
say("пожар в гараже",3);
SetTimeOut("MyTimer_33","$this->callMethod('ИМЯ_ТЕКУЩЕГО_МЕТОДА');",10);
}
Все равно проговаривает 1 раз, метод не перезапусается по окончании таймера.
Значит, наверняка проблема с правильностью синтаксиса в том коде, что я предложил. Попробуйте указать имя Объекта.Метода в явном виде.
Код: Выделить всё
SetTimeOut("MyTimer_33","callMethod('Relay19.statusUpdated');",10);
Если вам все же нужен классовый метод, можно написать так:
Код: Выделить всё
$ot=$this->object_title;
SetTimeOut("MyTimer_33","callMethod('".$ot.".statusUpdated');",10);
-
Logrus
- Сообщения: 2088
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
313 раз
-
Поблагодарили:
459 раз
Сообщение
Logrus » Вс мар 01, 2020 3:11 pm
SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction
Telegram |
Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с
10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) )))
Спасибо
-
madbob
- Сообщения: 24
- Зарегистрирован: Пт ноя 25, 2016 11:50 am
- Откуда: Москва
-
Благодарил (а):
10 раз
-
Поблагодарили:
3 раза
Сообщение
madbob » Вс мар 01, 2020 5:13 pm
Код: Выделить всё
if ($this->getProperty('status')) {
say("пожар в гараже",3);
SetTimeOut("Timer_fire_garage","callMethod('Relay19.statusUpdated');",10);
}
Ура! Так заработало в statusUpdated. Даже теща прибежала
))
Logrus писал(а): ↑Вс мар 01, 2020 3:11 pm
SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction
Почему? Чем грозит использование этого кода в методе statusUpdate объекта в Sdevices ?
Спасибо всем за помощь!
Raspberry Pi 3 образ 3.31+GUI ESP12(IoT)кучка+ESP32
-
Logrus
- Сообщения: 2088
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
313 раз
-
Поблагодарили:
459 раз
Сообщение
Logrus » Пн мар 02, 2020 8:40 pm
madbob писал(а): ↑Вс мар 01, 2020 5:13 pm
Код: Выделить всё
if ($this->getProperty('status')) {
say("пожар в гараже",3);
SetTimeOut("Timer_fire_garage","callMethod('Relay19.statusUpdated');",10);
}
Ура! Так заработало в statusUpdated. Даже теща прибежала
))
Logrus писал(а): ↑Вс мар 01, 2020 3:11 pm
SDevices_statusUpdated не предназначен для такого, есть SDevices_logicAction
Почему? Чем грозит использование этого кода в методе statusUpdate объекта в Sdevices ?
Спасибо всем за помощь!
в инжекции есть много лишнего
Telegram |
Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с
10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) )))
Спасибо
-
madbob
- Сообщения: 24
- Зарегистрирован: Пт ноя 25, 2016 11:50 am
- Откуда: Москва
-
Благодарил (а):
10 раз
-
Поблагодарили:
3 раза
Сообщение
madbob » Вт мар 03, 2020 8:33 pm
Logrus писал(а): ↑Пн мар 02, 2020 8:40 pm
в инжекции есть много лишнего
Мне пока не понять
катастрофы, надеюсь, не будет?
Raspberry Pi 3 образ 3.31+GUI ESP12(IoT)кучка+ESP32
-
Logrus
- Сообщения: 2088
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
-
Благодарил (а):
313 раз
-
Поблагодарили:
459 раз
Сообщение
Logrus » Вт мар 03, 2020 9:17 pm
не должно, но лишняя не нужная нагрузка
Telegram |
Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с
10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) )))
Спасибо
-
xor
- Сообщения: 2043
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
-
Благодарил (а):
288 раз
-
Поблагодарили:
629 раз
Сообщение
xor » Вт мар 03, 2020 9:45 pm
madbob писал(а): ↑Вт мар 03, 2020 8:33 pm
Logrus писал(а): ↑Пн мар 02, 2020 8:40 pm
в инжекции есть много лишнего
Мне пока не понять
катастрофы, надеюсь, не будет?
я б вообще вынес крик о пожаре в отдельный скрипт, допустим, FireAlarm
Код: Выделить всё
//script FireAlarm
if (gg('Object.status')) { //кричать, пока свойство=1
say("пожар в гараже",3);
SetTimeOut("Timer_fire_garage","runscript('FireAlarm');",10);
}
а инициировал бы его один раз вызовом из откуда он там вызывается
Код: Выделить всё
//say("пожар в гараже",3);
runscript('FireAlarm');