Подключение исполнительных устройств, датчиков, контроллеров.
Модератор: immortal
-
Sergey.Chek
- Сообщения: 107
- Зарегистрирован: Ср фев 13, 2019 9:50 pm
-
Благодарил (а):
219 раз
-
Поблагодарили:
19 раз
Сообщение
Sergey.Chek » Ср мар 03, 2021 9:57 pm
VooDooN писал(а): ↑Ср ноя 13, 2019 12:18 pm
Я прошивал больше года назад на Tasmoto. Работает круглосуточно без проблем. Каждый "пойманный" код от датчика бридж передает через MQTT в MajorDoMo. В МД создал новый класс SonoffRFBridge, у которого есть свойство receivedCode и метод receivedCode. У этого свойства есть настройка "Запускать метод при изменении", где указано запускать receivedCode каждый раз, когда прилетает новое значение в это свойство. Вот каждый код через MQTT передается в свойство receivedCode, откуда оно передается в метод receivedCode. А в методе такой простой php-код:
Код: Выделить всё
switch($params['NEW_VALUE']) {
//Датчик двери
case "45D11F": //Код от датчика двери
setGlobal('Openclose01.status', 1); // В простых устройствах уже есть такой объект для датчика и ему выставляется статус 1
say("Входная дверь открылась.",1); // не обязательная строка, её можно использовать и через простые устройства
break;
//Датчики протечки ------------------
case "B32099": //Датчик протечки под стиралкой
say("ВНИМАНИЕ! Сработал датчик протечки под стиралкой!",2); //Или вместо этого, можно тоже передать статус в простые устройства или запустить скрипт
break;
//------------- и т.д. для каждого датчика, а потом:
default:
if (getGlobal('ThisComputer.logAllUnknownRFCodes')==1) {
say($params['NEW_VALUE'], 0);
}
}
А так же, в свойствах объекте ThisComputer (можно было и в классе SonoffRFBridge, чтобы далеко не ходить) я создал новое свойство logAllUnknownRFCodes. Если там указать значение 1 (в коде выше есть проверка ThisComputer.logAllUnknownRFCodes), то МД будет сообщать о каждом коде от датчика (известном или неизвестном). А если поставить значение 0, то ничего не будет сообщать. Это нужно для удобства, если купили новый датчик и не понятно, какой код он шлет.
Спасибо! Отлично работает с датчиками движения.
А как быть с датчиками открытия-закрытия, чтобы статус менялся 1 или 0? Что нужно изменить в коде? Просто у этого датчика всегда 1.
Спасибо.
Raspberry pi 4
-
andrewee
- Сообщения: 5
- Зарегистрирован: Ср ноя 25, 2020 3:25 pm
- Откуда: Сахалин
-
Благодарил (а):
0
-
Поблагодарили:
0
Сообщение
andrewee » Пн мар 15, 2021 1:46 pm
Sergey.Chek писал(а): ↑Ср мар 03, 2021 9:57 pm
VooDooN писал(а): ↑Ср ноя 13, 2019 12:18 pm
Я прошивал больше года назад на Tasmoto. Работает круглосуточно без проблем. Каждый "пойманный" код от датчика бридж передает через MQTT в MajorDoMo. В МД создал новый класс SonoffRFBridge, у которого есть свойство receivedCode и метод receivedCode. У этого свойства есть настройка "Запускать метод при изменении", где указано запускать receivedCode каждый раз, когда прилетает новое значение в это свойство. Вот каждый код через MQTT передается в свойство receivedCode, откуда оно передается в метод receivedCode. А в методе такой простой php-код:
Код: Выделить всё
switch($params['NEW_VALUE']) {
//Датчик двери
case "45D11F": //Код от датчика двери
setGlobal('Openclose01.status', 1); // В простых устройствах уже есть такой объект для датчика и ему выставляется статус 1
say("Входная дверь открылась.",1); // не обязательная строка, её можно использовать и через простые устройства
break;
//Датчики протечки ------------------
case "B32099": //Датчик протечки под стиралкой
say("ВНИМАНИЕ! Сработал датчик протечки под стиралкой!",2); //Или вместо этого, можно тоже передать статус в простые устройства или запустить скрипт
break;
//------------- и т.д. для каждого датчика, а потом:
default:
if (getGlobal('ThisComputer.logAllUnknownRFCodes')==1) {
say($params['NEW_VALUE'], 0);
}
}
А так же, в свойствах объекте ThisComputer (можно было и в классе SonoffRFBridge, чтобы далеко не ходить) я создал новое свойство logAllUnknownRFCodes. Если там указать значение 1 (в коде выше есть проверка ThisComputer.logAllUnknownRFCodes), то МД будет сообщать о каждом коде от датчика (известном или неизвестном). А если поставить значение 0, то ничего не будет сообщать. Это нужно для удобства, если купили новый датчик и не понятно, какой код он шлет.
Спасибо! Отлично работает с датчиками движения.
А как быть с датчиками открытия-закрытия, чтобы статус менялся 1 или 0? Что нужно изменить в коде? Просто у этого датчика всегда 1.
Спасибо.
У меня датчики односторонние - что на открывание, что на движение, методы думаю подойдут так же - я не пробовал еще
-
andrewee
- Сообщения: 5
- Зарегистрирован: Ср ноя 25, 2020 3:25 pm
- Откуда: Сахалин
-
Благодарил (а):
0
-
Поблагодарили:
0
Сообщение
andrewee » Пн мар 15, 2021 1:49 pm
имеется в виду - на движение получаю код 009000 - на закрытие или открытие 000900 - то есть я не вижу что открылась дверь или закрылась - я вижу только действие - датчики эти гавно от сонофф
-
andrewee
- Сообщения: 5
- Зарегистрирован: Ср ноя 25, 2020 3:25 pm
- Откуда: Сахалин
-
Благодарил (а):
0
-
Поблагодарили:
0
Сообщение
andrewee » Пн мар 15, 2021 1:54 pm
вот не могу привязать приемо-передатчик 433 к апельсинке - ну ни как, ну это другой топик, дабы избавится от моста