Страница 1 из 1

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

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

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

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

2. вариант

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

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

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

благодарю

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

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

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

$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);
}
Таким образом, если статус по каким-то причинам не соответствует фактическому состоянию реле, при первом исполнении метода статус "синхронизируется" с реальным состоянием релюшки.

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

Добавлено: Пт май 17, 2019 10:19 am
yden
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 это не применимо?

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

Добавлено: Пт май 17, 2019 10:25 am
Chainik
Честно говоря, не знаю, может и не применимо.

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

Добавлено: Вт июн 18, 2019 9:33 am
ZyaK
у меня по MQTT все релюхи, код выглядит вот так

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

global $session; //Обращаемся к глобальной переменной
if (preg_match('/включи/uis',$original)) {
   sayTo("Включаю весь свет в спальне", 2, $session->data['TERMINAL']);
  callMethod("Lamp1_4.turnOn");
  callMethod("Lamp1_5.turnOn");
} elseif (preg_match('/выключи/uis',$original)) {
  sayTo("Выключаю яркий свет в спальне", 2, $session->data['TERMINAL']);
 callMethod("Lamp1_4.turnOff");
} else {
 sayTo("Непонятно что со светом в спальне", 2, $session->data['TERMINAL']);
}