16 809
правок
Ian (обсуждение | вклад) |
|||
(не показано 11 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Демонстрационный стенд KNX }} | |||
==Описание == | |||
{{note|info|Информация в статье устарела}} | |||
Выставочный демо-стенд WB-KNX. Создан, как пример использования контроллера Wiren Board с модулем KNX. Стенд оснащен оборудованием с разными шинами и протоколами, объединяя их в одну систему через контроллер WB6. | Выставочный демо-стенд WB-KNX. Создан, как пример использования контроллера Wiren Board с модулем KNX. Стенд оснащен оборудованием с разными шинами и протоколами, объединяя их в одну систему через контроллер WB6. | ||
<gallery mode="packed" heights="200px"> | |||
Image: Knx_stand_2.png | Демо-cтенд WB-KNX | |||
Image: Knx_stand_1.png | Демо-cтенд WB-KNX | |||
Image: Knx_stand_3.png | Диммер HDL M/D06.1, Релейный модуль GIRA 2152 00/I01 | |||
Image: Knx_stand_4.png | Панельки HDL P03.2-A и MPT14.1 | |||
Image: Knx_stand_5.png | Контроллер WB6, релейный модуль WBIO-DO-R10A-8, модули входов WBIO-DI-DR-8 и WBIO-DI-HVD-8, датчик температуры DS18B20 | |||
Image: Knx_stand_6.png | Modbus устройства WB-MDM2, WB-MR3LV/S, WB-MRGB | |||
Image: Knx_stand_7.png | Блок питания KNX Berker | |||
</gallery> | |||
== Состав == | == Состав == | ||
Строка 63: | Строка 66: | ||
Основная идея стенда - показать взаимодействие между устройствами с разными протоколами. И то, что контроллер [[Wiren Board 6]] может расширить уже существующую автоматизацию на KNX другими более дешевыми устройствами. | Основная идея стенда - показать взаимодействие между устройствами с разными протоколами. И то, что контроллер [[Wiren Board 6]] может расширить уже существующую автоматизацию на KNX другими более дешевыми устройствами. | ||
Либо наоборот, если Вам захотелось добавить в проект красивую KNX панельку, при этом остальное оборудование работает по modbus. | Либо наоборот, если Вам захотелось добавить в проект красивую KNX панельку, при этом остальное оборудование работает по modbus. Далее подробно рассмотрим настройку стенда и написание правил. | ||
[[File:Knx_stand_sch.png|450px|thumb|center|Схема Демо-Стенда WB-KNX]] | [[File:Knx_stand_sch.png|450px|thumb|center|Схема Демо-Стенда WB-KNX]] | ||
== Настройка контроллера == | == Настройка контроллера == | ||
Для начала настроим модули Wirenboard. Для этого в web-интерфейсе переходим в раздел | Для начала настроим модули Wirenboard. Для этого в web-интерфейсе переходим в раздел '''Configs → Hardware Modules Configuration''' И выбираем установленные модули. В нашем случаеː | ||
Internal slot 1 - Вставлен [[KNX Module for WB6 (WBE2-I-KNX)]], выбираем "WBE2-I-KNX: KNX/EIB TP-UART" | Internal slot 1 - Вставлен [[KNX Module for WB6 (WBE2-I-KNX)]], выбираем "WBE2-I-KNX: KNX/EIB TP-UART" | ||
Строка 81: | Строка 84: | ||
[[File:Hwconf-knx1.PNG|250px|thumb|center|Настройка модуля WBE2-I-KNX]] | [[File:Hwconf-knx1.PNG|250px|thumb|center|Настройка модуля WBE2-I-KNX]] | ||
Настраиваем modbus устройства. Для этого в web-интерфейсе переходим в раздел | Настраиваем modbus устройства. Для этого в web-интерфейсе переходим в раздел '''Configs → Serial Device Driver Configuration''' и задаем нужные параметры. Как это сделать можно посмотреть в документации к устройствам, здесь подробно об этом писать не буду. | ||
[[File:Mqtt-serial-knxStand.PNG|250px|thumb|center|Настройка modbus устройств]] | [[File:Mqtt-serial-knxStand.PNG|250px|thumb|center|Настройка modbus устройств]] | ||
Следующим шагом будет установка и настройка программ для работы с KNX. А именноː '''[[Knxd]]''' - Для взаимодействия с шиной KNX, '''[[KnxTool]]''' - для отладки, '''[[WB-KNXD-CONFIG]]''' - для удобной настройки KNXD через веб-интерфейс контроллера, '''[[MQTT_KNX]]''' - для взаимодействия движка правил | Следующим шагом будет установка и настройка программ для работы с KNX. А именноː '''[[Knxd]]''' - Для взаимодействия с шиной KNX, '''[[KnxTool]]''' - для отладки, '''[[WB-KNXD-CONFIG]]''' - для удобной настройки KNXD через веб-интерфейс контроллера, '''[[MQTT_KNX]]''' - для взаимодействия движка правил '''([[Движок правил wb-rules]])''' c '''[[Knxd]]'''. Для установки всех программ разом введите команду в консольː | ||
<pre>$ apt-get update && apt-get install knxd knxd-tools wb-knxd-config wb-mqtt-knx</pre> | <pre>$ apt-get update && apt-get install knxd knxd-tools wb-knxd-config wb-mqtt-knx</pre> | ||
После установки программ в web-интерфейсе переходим в раздел | После установки программ в web-интерфейсе переходим в раздел '''Configs → KNXD Configuration''' для настройки KNXD. | ||
"'''Driver (-b, --layer2)'''" - В этом поле нужно указать драйвер и путь к устройству. В нашем случае указываем '''ncn5120:/dev/ttyKNX1''' | "'''Driver (-b, --layer2)'''" - В этом поле нужно указать драйвер и путь к устройству. В нашем случае указываем '''ncn5120:/dev/ttyKNX1''' | ||
Строка 129: | Строка 132: | ||
После того как проект успешно загружен можно переходить к написанию правил на контроллере WB6. | После того как проект успешно загружен можно переходить к написанию правил на контроллере WB6. | ||
Скачать готовый ETS5 проект стенда можно [https://wirenboard.com/wiki/images/d/d1/Wb-knx.zip по ссылке] | |||
== Правила wb-rules == | == Правила wb-rules == | ||
Строка 144: | Строка 149: | ||
title: "KNX Group Addresses", | title: "KNX Group Addresses", | ||
cells: { | cells: { | ||
"1-1-1": { | |||
type: "value", | type: "value", | ||
value: "0" | value: "0" | ||
}, | }, | ||
"1-1-2": { | |||
type: "switch", | type: "switch", | ||
value: false | value: false | ||
}, | }, | ||
"1-1-3": { | |||
type: "range", | type: "range", | ||
max: 255, | max: 255, | ||
Строка 162: | Строка 167: | ||
value: false | value: false | ||
}, | }, | ||
"1-1-7": { | |||
type: "value", | type: "value", | ||
value: "0" | value: "0" | ||
}, | }, | ||
"1-1-8": { | |||
type: "value", | type: "value", | ||
value: "0" | value: "0" | ||
}, | }, | ||
"1-1-9": { | |||
type: "value", | type: "value", | ||
value: "0" | value: "0" | ||
Строка 182: | Строка 187: | ||
value: false | value: false | ||
}, | }, | ||
"1-1-12": { | |||
type: "value", | type: "value", | ||
value: "0" | value: "0" | ||
Строка 242: | Строка 247: | ||
return; | return; | ||
} | } | ||
dev[vdev_devid][groupAddr[1].split("/").join("-")] = parseInt(value, 16); | dev[vdev_devid][groupAddr[1].split("/").join("-")] = !!parseInt(value, 16); | ||
} | } | ||
}); | }); | ||
})() | })() | ||
Строка 269: | Строка 274: | ||
=== Основное правило === | === Основное правило === | ||
Если предыдущее правило универсальное и может быть использовано почти в каждом проекте, то это правило написано специально для нашего стенда. Здесь уже нет сложных преобразований, мы просто следим за необходимыми нам топиками и реагируем на их изменения. | |||
<syntaxhighlight lang="ecmascript"> | <syntaxhighlight lang="ecmascript"> | ||
Строка 275: | Строка 282: | ||
var channel_pairs = [ | var channel_pairs = [ | ||
["knx_group_addrs/1-1-10", "wb-gpio/EXT1_R3A1"], | ["knx_group_addrs/1-1-10", "wb-gpio/EXT1_R3A1"], // По нажатию на KNX кнопку, к которой привязан групповой адрес 1/1/10 включать или выключать индикатор 2 | ||
["knx_group_addrs/1-1-11", "wb-mr3_139/K1"] | ["knx_group_addrs/1-1-11", "wb-mr3_139/K1"] | ||
]; | ]; | ||
Строка 300: | Строка 307: | ||
whenChanged: "wb-w1/28-041643cee6ff", | whenChanged: "wb-w1/28-041643cee6ff", | ||
then: function(newValue, devName, cellName) { | then: function(newValue, devName, cellName) { | ||
dev["knx_group_addrs/1-1-13"] = knxConvertToFloat16(newValue + 2); | dev["knx_group_addrs/1-1-13"] = knxConvertToFloat16(newValue + 2); // Передаем на KNX панельку температуру с датчика DS18B20 | ||
} | } | ||
}); | }); | ||
Строка 307: | Строка 314: | ||
whenChanged: "knx_group_addrs/1-1-7", | whenChanged: "knx_group_addrs/1-1-7", | ||
then: function(newValue, devName, cellName) { | then: function(newValue, devName, cellName) { | ||
if (newValue == 11) { | |||
dev["wb-mdm2_1/Channel 1"] = Math.min(dev["wb-mdm2_1/Channel 1"] + 10, 100); // Если зажать KNX кнопку - увеличиваем яркость modbus диммера на 10 % единиц. | |||
} else if (newValue == 3) { | |||
dev["wb-mdm2_1/Channel 1"] = Math.max(dev["wb-mdm2_1/Channel 1"] - 10, 0); | |||
} | |||
} | } | ||
}); | }); | ||
Строка 319: | Строка 326: | ||
then: function(newValue, devName, cellName) { | then: function(newValue, devName, cellName) { | ||
if (newValue) { | if (newValue) { | ||
dev["knx_group_addrs/1-1-2"] = !dev["knx_group_addrs/1-1-2"]; | dev["knx_group_addrs/1-1-2"] = !dev["knx_group_addrs/1-1-2"]; // По нажатию на обычный выключатель звонкового типа переключаем KNX диммер | ||
} | } | ||
} | } | ||
Строка 329: | Строка 336: | ||
then: function(newValue, devName, cellName) { | then: function(newValue, devName, cellName) { | ||
if (newValue) { | if (newValue) { | ||
dev["knx_group_addrs/1-1-6"] = !dev["knx_group_addrs/1-1-6"] | |||
} | } | ||
} | } | ||
}); | }); | ||
defineRule("dimmer_chan1_on_off_knx", { | |||
whenChanged: "knx_group_addrs/1-1-6", | whenChanged: "knx_group_addrs/1-1-6", | ||
then: function(newValue, devName, cellName) { | then: function(newValue, devName, cellName) { | ||
if(newValue){ | if (newValue) { | ||
dev["wb-mdm2_1/Channel 1"] = 70; | |||
} else { | } else { | ||
dev["wb-mdm2_1/Channel 1"] = 0; | |||
} | } | ||
} | } |