А можно как-нибудь на уровне настройки сериальных устройств разрешить давать всем модулям и каждому входу и выходу (а также 1-wire устройствам) человеческие имена. Пожалуйста! А то у меня назначение каждого реле написано на бумажке, разве это нормально? Я не прошу по-русски, ну хотя бы кодовое обозначение латинскими буквами, как мы делаем с устройствами zigbee. Чтобы в скриптах по этим кодам к устройствам обращаться.
(без создания вручную устройств которые бы дублировали и так далее)
“Опишите ваш юз кейс”? Да старый я стал и уже не помню, в какой комнате какой датчик, когда пишу автоматизацию, и код получается нечитаемый. (но я не знаю, нужно ли мне, чтобы в mqtt очередях были понятные названия.)
Если уж вы пишете скрипты, то самый простой вариант - один раз присвоить переменным с понятными вам именами идентификаторы топиков. Тогда в правилах вы сможете обращаться к этим переменным, и бумажка не понадобится.
var gostinnaya_t = 'wb-w1/28-00000bd0b77b';
whenChanged: gostinnaya_t,
Если скрипты у вас в нескольких файлах, то сделайте так: global.__proto__.gostinnaya_t = 'wb-w1/28-00000bd0b77b';
тогда эти переменные будут доступны во всех файлах whenChanged: gostinnaya_t,
но вы должны позаботится, чтобы имена переменных были уникальны.
Кто-нибудь на деле это пробовал? Боюсь такой воркараунд с proto будет при перезагрузке так же подглючивать, как например скрипт wb-engine, из-за порядка запуска модулей…
Это самый базовый функционал, и он не может подглючивать. Если вам так спокойнее, то скажу, что на системах, в которых я лично принимал участие, это используется.
По порядку загрузки тоже все просто: файлы обрабатываются в алфавитном порядке. Разместите эти переменные в файл с именем “01_xxx.js”, а остальные файлы назовите “02_xxx.js”… и можете не сомневаться в доступности переменной. Присваивание переменной - самая простая и быстрая операция, переменная станет доступной сразу после объявления.