This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Bacnet Client app auto mapping
#6
it took me a few years, but i made this:
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') 
this is for Mitsubishy AE-200.
All you need to know is bacnet id of gateway an fill rooms. works few seconds instead of hours in GUI
Reply


Messages In This Thread
Bacnet Client app auto mapping - by AEK - 21.11.2021, 21:07
RE: Bacnet Client app auto mapping - by AEK - 21.11.2021, 21:36
RE: Bacnet Client app auto mapping - by admin - 22.11.2021, 07:07
RE: Bacnet Client app auto mapping - by AEK - 20.08.2024, 16:30

Forum Jump: