Метод при изменении свойства вызывается дважды
Добавлено: Вс мар 12, 2023 8:55 pm
Всем доброго дня.
Вводные:
MJDM на виртуалке ubuntu, docker
mosquitto там же, docker.
Есть созданный мной класс объектов.
У объекта имеется метод, который по нажатию переключателя проверяет несколько условий и, если все хорошо, меняет свойство этого объекта по коду
На свойство pumpStatus класса повешен запуск другого метода по изменению. Код:
на это же свойство (pumpStatus) привязан топик mqtt (MJDM командует железякой, посылает команду на включение, а уведомление о выключении присылает железяка, чисто для обновления свойства переключателя)
log_watering только пишет в БД
Столкнулся с любопытной проблемой:
Если запустить метод переключателем, то он как будто отрабатывает дважды: в БД две строки, два сообщения от Алисы
Если запустить метод по ссылке (кнопкой в панели управления), то он отрабатывает один раз
Насколько я понял, дело как раз в том, что и топик mqtt и переключатель привязаны на одно свойство, но вот как это обойти нормально пока не понимаю.
Приложу картинки настроек mqtt и переключателя
Вводные:
MJDM на виртуалке ubuntu, docker
mosquitto там же, docker.
Есть созданный мной класс объектов.
У объекта имеется метод, который по нажатию переключателя проверяет несколько условий и, если все хорошо, меняет свойство этого объекта по коду
Код: Выделить всё
$this->setProperty('pumpStatus', 1);
Код: Выделить всё
if ($this->getProperty('pumpStatus') == 1) {
$this->callMethod('log_watering');
$this->setProperty('latestWatering_epoch', time());
say('включился насос', 2);
}
log_watering только пишет в БД
Столкнулся с любопытной проблемой:
Если запустить метод переключателем, то он как будто отрабатывает дважды: в БД две строки, два сообщения от Алисы
Если запустить метод по ссылке (кнопкой в панели управления), то он отрабатывает один раз
Насколько я понял, дело как раз в том, что и топик mqtt и переключатель привязаны на одно свойство, но вот как это обойти нормально пока не понимаю.
Приложу картинки настроек mqtt и переключателя