atlo
21.Ноябрь.2022 06:20:50
1
Добрый день
Помогите код написать
Есть физический объект(датчик подключенный по протоколу zigbee)
В Каналах MQTT собираются данные и к ним можно обратиться
atlo:
Устройство Контрол(devName) Тип Значение(newValue)
Button battery value 100(значение заряда баттарейки)
Button contact text true(значение открытие закрытие двери)
Нужно объеденить переменные из 2 объектов в один объект, чтобы проще их вызвать(обратиться)
JavaScript я не когда не изучал поэтому могу чего то не правильно написать.
Если я правильно понял из примеров на сайте Примеры правил — Wiren Board whenChanged
То whenChanged это функция которая обращается к объекту (в мое случае Datchik window/contact) и Datchik window/battary (название переменных одинаковые
newValue, devName, cellName )
Есть код который отрабатывает изменение переменной параметра newValue(Значение) и отправляет сообщение в телеграмм(боту)
// Датчик открытия окна zigbee
defineRule("Zigbee", {
whenChanged: "Datchik window/contact", // встроенная функция при изменение которой можно выполнять условия(срабатывает если к примеру было открытие двери (изменение параметра contact у объекта Datchik window ))
then: function(newValue, devName, cellName) {
//zigbee
if (newValue === 'false') {
SendTelegramMsg('Сработал датчик открытия окна zigbee, вход: ' + devName); // Call global function
log("Message датчик открытия окна zigbee, вход:" + devName); // Write to debug console log message
}
}
});
И есть второй код при изменение параметра баттарейки тоже отправляет код
//тест скрипт батарейки на door
defineRule("Zigbee-batary", {
whenChanged: "Datchik window/battery",
then: function(newValue, devName, cellName) {
//zigbee
if (newValue < 80) {
SendTelegramMsg('Заряд батарейки: ' + newValue); // Call global function
}
}
});
По отдельности они у меня работают, но мне надо чтобы значение(уровень заряда) батарейки отправлялся в сообщение при открытии двери
То есть добавить из объекта Datchik window / battery(параметры newValue, devName) в объект с такими же
параметрами “Datchik window/contact”(newValue, devName).
Помогите переменную значение заряда баттарейки из объекта Datchik window/battery переместить в объект Datchik window/contact.
Спасибо
Чтобы посылало не только факт срабатывания датчика, но и состояние батарейки, надо сделать так:
if (newValue === 'false') {
SendTelegramMsg('Сработал датчик открытия окна zigbee, вход: ' + devName); // send window sensor
SendTelegramMsg('Заряд батарейки: ' + dev["Datchik window/battery"]); // send battery percent
}