Как задать датчикам имена?

Код ниже отправляет сообщения в телеграм, если значение с датчика движения больше 30.

defineRule("MotionCheck", { 
  whenChanged: ["wb-msw-v3_136/Current Motion", "wb-msw-v3_59/Current Motion", "wb-msw-v3_112/Current Motion", "wb-msw-v3_127/Current Motion", "wb-msw-v3_62/Current Motion", "wb-msw-v3_133/Current Motion"],
  then: function (newValue, devName, cellName) {
	if (newValue > 30) {
		SendTelegramMsg('Есть движение в ' + devName + '. Уровень ' + newValue); // Call global function
		log ("Message 1 sent");                    // Write to debug console log message
	} 
  }
});

Только сообщение выглядит не очень понятным.
Есть движение в wb-msw-v3_59. Уровень 31

Как сделать, чтобы вместо wb-msw-v3_59 выводилось название датчика?
Типа Есть движение на кухне. Уровень 31

Простейший вариант:

var txtMessage = '';
if (devName == 'wb-msw-v3_59') {
  txtMessage = 'кухне';
}
SendTelegramMsg('Есть движение в ' + txtMessage + '. Уровень ' + newValue);
2 Likes

Если датчиков пара штук, то ок.
Но если их штук 6-10, то уже много раз один и тот же код придется копировать - как минимум читать код неудобно.
Можно как-то сделать массив текстовых полей и его уже подставлять ?

sensor = ["wb-msw-v3_59/Current Motion", "wb-msw-v3_62/Current Motion", "wb-msw-v3_112/Current Motion", "wb-msw-v3_127/Current Motion", "wb-msw-v3_133/Current Motion", "wb-msw-v3_136/Current Motion"]
sensorName = ["комната1", "комната2", "комната3", "комната4", "комната5", "комната6"]

defineRule("MotionCheck", { 
  whenChanged: sensor[],
  then: function (newValue, devName, cellName, sensorName) {
	if (newValue > 30) {
		SendTelegramMsg('Есть движение в ' + sensorName + '. Уровень ' + newValue);
	} 
  }
});


Можно:

sensor = ["wb-msw-v3_59/Current Motion", "wb-msw-v3_62/Current Motion", "wb-msw-v3_112/Current Motion", "wb-msw-v3_127/Current Motion", "wb-msw-v3_133/Current Motion", "wb-msw-v3_136/Current Motion"]
sensorName = ["комната1", "комната2", "комната3", "комната4", "комната5", "комната6"]

defineRule("MotionCheck", {
    whenChanged: sensor,
    then: function (newValue, devName, cellName) {
        if (newValue > 30) {
            var index = sensor.indexOf(devName + '/' + cellName);
            SendTelegramMsg('Есть движение в ' + sensorName[index] + '. Уровень ' + newValue);
        }
    }
});
2 Likes

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.