Дергать релюшку, 2 варианта

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
yden
Сообщения: 73
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Дергать релюшку, 2 варианта

Сообщение yden » Пт май 17, 2019 9:01 am

Здравствуйте.
Подскажите пожалуйста, как будет правильнее.
Объект мдм реле, связан по mqtt с исполнительным устройством (ардуинка, есп, мега). Фрагменты кода, включающее это реле.
1. вариант кода:

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

if (!gg('ReleSvetSan.status')) sg('ReleSvetSan.status', 1);
Мдм проверяет включено ли реле, если нет - включить.

2. вариант

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

sg('ReleSvetSan.status', 1);
Мдм без проверки состояния дергает релюшку.

1 вариант вроде более предпочтителен, но если по какой то причине статус реле остался в мдм как "включен", а на самом деле нет, то мдм его никогда не включит. Нужно вручную передергивать статус.
2 вариант постоянно дергает релюшку. Каждую минуту (если стоит в onnewminute - например для света). Этот вариант избавлен от проблемы 1 варианта. Но не повредит ли функционированию\быстродействию в целом всего мдм?

благодарю
Chainik
Сообщения: 824
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 99 раз
Поблагодарили: 237 раз

Re: Дергать релюшку, 2 варианта

Сообщение Chainik » Пт май 17, 2019 9:58 am

Я пошел другим путем. Статус реле выставляется из метода после проверки фактического состояния реле.

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=7&cmd=get");
if ($state == "ON") {
 setGlobal('Relay_014-07.status', 1);
} else {
 setGlobal('Relay_014-07.status', 0);
}
Таким образом, если статус по каким-то причинам не соответствует фактическому состоянию реле, при первом исполнении метода статус "синхронизируется" с реальным состоянием релюшки.
yden
Сообщения: 73
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 13 раз
Поблагодарили: 1 раз

Re: Дергать релюшку, 2 варианта

Сообщение yden » Пт май 17, 2019 10:19 am

Chainik писал(а):
Пт май 17, 2019 9:58 am
Я пошел другим путем. Статус реле выставляется из метода после проверки фактического состояния реле.

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

$state = file_get_contents("http://192.168.0.14/sec/?pt=7&cmd=get");
if ($state == "ON") {
 setGlobal('Relay_014-07.status', 1);
} else {
 setGlobal('Relay_014-07.status', 0);
}
Таким образом, если статус по каким-то причинам не соответствует фактическому состоянию реле, при первом исполнении метода статус "синхронизируется" с реальным состоянием релюшки.
Сенк
Я как понимаю для mqtt это не применимо?
Chainik
Сообщения: 824
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 99 раз
Поблагодарили: 237 раз

Re: Дергать релюшку, 2 варианта

Сообщение Chainik » Пт май 17, 2019 10:25 am

Честно говоря, не знаю, может и не применимо.
Ответить