26.11.2025, 10:11
(20.08.2024, 16:30)AEK Wrote: it took me a few years, but i made this:
this is for Mitsubishy AE-200.Code:--таблица номеров пемещений, названий, id бакнета log('start bac mapping create') rooms = { {'CL.201_Лифтовый холл', 101}, {'CL.204_Мастер спальня', 102}, {'CL.205_Кабинет', 103}, {'CL.206_Игровая', 104}, {'CL.208_Коридор', 105}, {'CL.210_Спальня девочек', 106}, {'CL.213_Спальня мальчиков', 107}, {'CL.216_Спальня ЕГ', 108}, {'CL.111_Спальня мальчиков', 109}, {'CL.110_Гостиная 1', 110}, {'CL.110_Гостиная 2', 111}, {'CL.102_Мастер кухня', 112}, {'CL.108_Массажная', 113}, {'CL.105_Холл', 114}, {'CL.101_Тамбур', 115}, {'CL.0.18_Сигарная', 117}, {'CL.0.19_Кинозал', 118}, {'CL.0.11_Гостевая 1', 119}, {'CL.0.14_Гостевая 2', 120}, {'CL.04_Кухня персонала', 121}, {'CL.05.2_Спальня персонала 2', 122}, {'CL.05.1_Спальня персонала 1', 123}, {'CL.0.17_Постирочная', 124}, {'CL.01_Коридор и комната отдыха', 125} } --таблица KNX переменных для панелей и актуаторов отопления KNX_t = { {'current temp', 'temperature', {'clim'}}, {'setpoint', 'temperature', {'clim'}}, {'setpoint', 'temperature', {'clim'}}, {'room mode', 'switch',{'clim'}}, {'fan speed', dt.uint8}, {'heating value', 'scale'}, {'heating manual', 'switch'} } -- 1: 'id ending'_'datatype number' bacnet_t ={ {'01_4', 'binary output', 'switch', 'OnOffSetup'}, {'02_3', 'binary input', 'switch', 'OnOffState'}, {'03_3', 'binary input', 'switch', 'AlarmSignal'}, {'04_13', 'multi-state input', dt.uint32, 'ErrorCode'}, {'05_14', 'multi-state output', dt.uint32, 'OperationModeSetup'}, {'06_13', 'multi-state input', dt.uint32, 'OperationModeState'}, {'07_14', 'multi-state output', dt.uint32, 'FanSpeedSetup'}, {'08_13', 'multi-state input', dt.uint32, 'FanSpeedState'}, {'09_0', 'analog input', dt.float32, 'RoomTemp'}, {'10_2', 'analog value', dt.float32, 'SetTemp'}, {'24_2', 'analog value', dt.float32, 'SetTempCool'}, {'25_2', 'analog value', dt.float32, 'SetTempHeat'}, {'26_2', 'analog value', dt.float32, 'SetTempAuto'} } -- создаем все адреса и готовим таблицу маппинга start_knx_adr = knxlib.encodega('10/0/1') start_bac_adr = knxlib.encodega('33/0/1') mapping = {} for i = 1, #rooms do base_name = rooms[i][1] bac_id = rooms[i][2] --создаем чистый KNX, кроме Гостиной 2 - это для второго когдиционера if base_name ~= 'CL.110_Гостиная 2' then for j = 1, #KNX_t do grp.create({ datatype = KNX_t[j][2], address = knxlib.decodega(start_knx_adr +(i-1)*256 + j - 1), name = rooms[i][1]..'_'..KNX_t[j][1], tags = KNX_t[j][3] }) end end --создаем виртуальные адреса для бакнета и заполняем таблицу маппинга for k = 1, #bacnet_t do bac_adr = knxlib.decodega(start_bac_adr +(i-1)*256 + k - 1) grp.create({ datatype = bacnet_t[k][3], address = bac_adr, name = rooms[i][1]..'_'..bacnet_t[k][4] }) bac_key = rooms[i][2]..bacnet_t[k][1] mapping[bac_key] = { ['addr'] = bac_adr, ['type'] = bacnet_t[k][2], ['priority'] = 16, ['writeToBus'] = false } end end storage.set('app:se-bnc:DeviceObjects:3', mapping) log('end bac mapping create')
All you need to know is bacnet id of gateway an fill rooms. works few seconds instead of hours in GUI
thanks
-----------
FRANCE SMARTHOME & SMARTBUILDING INTEGRATION
SE ECO EXPERT
FRANCE SMARTHOME & SMARTBUILDING INTEGRATION
SE ECO EXPERT