25.06.2019, 09:12
(21.02.2018, 16:37)buuuudzik Wrote: Here there is a script for mass generate new GAs via script according to specified template and rules. It can save a lot of time and clicking but before do some BACKUP.Hello,
Code:-- GENERATE all group addresses according to specified template and conditions
firstId, lastId = 1, 10 -- e.g. Blind1 to Blind10
canChangeMiddle = true -- if yes can change e.g. 0/0/255 -> 0/1/0
canChangeMain = false -- if yes can change e.g. 0/7/255 -> 1/0/0
offset = 10 -- address offset between first GA in 2 devices e.g. Blind41_up/down - Blind40_up/down = 0/0/20 - 0/0/10 = 10
curMain, curMiddle, curSub = 0, 0, 0 -- initial GA e.g. 1, 2, 3 means 1/2/3
numberOfAddedGAs, numberOfNotAddedGAs = 0, 0 -- init the counters of new or updated objects and not created objects
for curId = firstId, lastId, 1 do
curSubMax = curSub + 7 -- maximum subaddress in current iteration
if curSubMax > 255 and canChangeMiddle then
if ((curMiddle + 1) <= 7) then curSub, curMiddle = 0, curMiddle + 1
else
if canChangeMain and (curMain + 1) <= 15 then curSub, curMiddle, curMain = 0, curMiddle + 1, curMain + 1
else log('Cannot increment main group.'); break end
end
elseif (curSubMax > 255 and not canChangeMiddle) then log('Cannot increment middle group.'); break end
curMainAndMiddle = curMain .. '/' .. curMiddle .. '/'
template = {
{datatype = dt.bool, address = curMainAndMiddle .. curSub + 1, name = 'Blind' .. curId .. '_up/down'},
{datatype = dt.bool, address = curMainAndMiddle .. curSub + 2, name = 'Blind' .. curId .. '_step/stop'},
{datatype = dt.uint8, address = curMainAndMiddle .. curSub + 3, name = 'Blind' .. curId .. '_scene'},
{datatype = dt.scale, address = curMainAndMiddle .. curSub + 4, name = 'Blind' .. curId .. '_height'},
{datatype = dt.scale, address = curMainAndMiddle .. curSubMax, name = 'Blind' .. curId .. '_height status'} -- Maximum subaddress
};
for k,v in ipairs(template) do
res = grp.create(v)
if res then numberOfAddedGAs = numberOfAddedGAs + 1 else numberOfNotAddedGAs = numberOfNotAddedGAs + 1 end
end
curSub = curSub + offset
end
message = ''
if numberOfAddedGAs > 0 then message = 'Successfully added or updated ' .. numberOfAddedGAs .. ' new GAs. ' end
if numberOfNotAddedGAs > 0 then message = message .. 'There was ' .. numberOfNotAddedGAs .. ' errors(not added or updated objects).' end
if numberOfAddedGAs > 0 or numberOfNotAddedGAs > 0 then log(message) end
script.disable(_SCRIPTNAME)
Is it possible to copy the G.A. of a logic machine and then paste them on another from a backup?
It is not necessary to copy all the parameters of the BACKUP but only the addresses so as not to rewrite all the addresses on the second L.M.
(The addresses were not created from ETS but directly on the logic machine can not import them via ESF)
B. R.