Добрый день. При активации интеграции с Яндекс перестают работать автоматизации, прописанный в node-red. Подскажите, где закралась ошибка?
Контроллер - Wiren Board 7.3.4.
Прошивка - unstable.latest (as testing), 202601161725
Интеграция с Яндекс через - wb-mqtt-alice
Версия node-red - Node-RED v4.1.3, Node.js v22.15.0, Linux 5.10.35-wb180 arm LE
К контроллеру подключены моудли расширения:
- WBIO-DO-R10A-8 - 4 шт
- WBIO-DI-WD-14 - 1 шт
также всистеме есть:
- Пульт Cityrom PU-3 - 3 шт
- wb-mrm2-mini - 4 шт
Управление системой осущетсвляется из интерфейса node-red/ui.
Что хотим получить - Управление системой из приложения Яндекс и из интерфейса node-red. Логика упрвления устройствами вся сосредоточена в node-red. В то время, как в яндекс только - переключение режимов, выставление уставки темпретуры, просмотр фактической температуры, голосовое управление.
Что получаем (на примере одного мастер-выключателя):
- При первой активации интеграции Яндекс пропадает возможность управления устройствами, подключенными к боковым модулям. Управление из node-red не работает. после перезагрузки контроллера система приходит в норму. Управление из Яндекс отрабатывает хорошо.
- Но при попытке включить свет с физического выключателя (звонкового типа) свет начинает моргать быстро и непрерывно, отключть из web-интерфейса контроллера не получалось. помогла перезагрузка и отклчение службы wb-mqtt-alice.
- При изменении чего либо в яндекс - в node-red меняется состояние в тех нодах, которые считывают из mqtt, но записать в mqtt они ничего не могу, и не менют состояние контролов.
Выключатель подключен на - wb-gpio/EXT5_IN14
Исполняющее устройство - wb-gpio/EXT3_R3A8
Виртуальное устройство для выключателя:
var deviceName = 'master-switch';defineVirtualDevice(deviceName, {
title: {‘en’: ‘Master-switch’, ‘ru’: ‘Мастер-свет’},
cells: {switch: { title: 'Вкл/выкл Статус', type: 'switch', value: false, readonly: true }, switch_cmd: { title: 'Вкл/выкл (Cmd)', type: 'switch', value: false, readonly: false } }});
// Синхронизация и лог
defineRule({
whenChanged: [
deviceName + ‘/switch_cmd’
],
then: function (newValue, devName, cellName) {// синхронизация командных контролов → readonly if(cellName === 'switch_cmd'){ dev[deviceName + '/switch'] = newValue; // обновляем readonly switch } // лог состояния var current = { switch_cmd: dev[deviceName + '/switch_cmd'] }; log.info( 'master-switch changed:', cellName, '->', newValue, '| full state:', JSON.stringify(current) ); // запись обратно в изменённую ячейку dev[deviceName + '/' + cellName] = newValue; }});
Устройство в интграции Яндекс:
"devices": {
"e84d5459-260120141038-1d030e9e-df1e-4a8b-a60b-3768a8ed8413": {
"name": "Мастер свет",
"status_info": null,
"description": null,
"room_id": "e84d5459-260120102657-4bca904d-39a2-469e-9006-3a1ff36adb3d",
"type": "devices.types.switch",
"capabilities": [
{
"type": "devices.capabilities.on_off",
"mqtt": "master-switch/switch_cmd",
"parameters": {
"instance": "on"
}
}
],
flow в node-red
