Page 1 of 1
Global arrays
Posted: Sunday 30 June 2019 21:15
by Varazir
Hello,
I'm trying to setup a array in the global_data.lua file
Code: Select all
data = {
globHallway = { initial = 65 },
globBedRoom = { initial = 13 },
globLivingRoom = { initial = 36 },
globComputerRoom = { initial = 73 },
globTvBench = { initial = 42, 74, 45, 43 },
globGroups = { initial = "globHallway", "globBedRoom", "globLivingRoom", "globTvBench" },
globCurrentGroup = { initial = "globComputerRoom" },
},
then call it like this
domoticz.globalData.globGroups[1]
But I get a nil value, so I'm doing something wrong.
So I need some help please.
Re: Global arrays
Posted: Sunday 30 June 2019 22:48
by waaren
Varazir wrote: Sunday 30 June 2019 21:15
I'm trying to setup a array in the global_data.lua file
Code: Select all
data = {
globGroups = { initial = "globHallway", "globBedRoom", "globLivingRoom", "globTvBench" },
},
then call it like this
domoticz.globalData.globGroups[1]
But I get a nil value, so I'm doing something wrong.
You wil have to initialize it as a table. Try this
Code: Select all
data =
{
myGlobalVar = { initial = 12 },
globHallway = { initial = 65 },
globBedRoom = { initial = 13 },
globLivingRoom = { initial = 36 },
globComputerRoom = { initial = 73 },
globTvBench = { initial = 42, 74, 45, 43 },
globGroups = { initial = { "globHallway", "globBedRoom", "globLivingRoom", "globTvBench" } },
globCurrentGroup = { initial = "globComputerRoom" },
},
[/quote]
Re: Global arrays
Posted: Sunday 30 June 2019 23:50
by Varazir
Still getting Nil
Code: Select all
return {
-- global persistent data
data = {
globHallway = { initial = 65 },
globBedRoom = { initial = 13 },
globLivingRoom = { initial = 36 },
globComputerRoom = { initial = 73 },
globTvBench = { initial = 42, 74, 45, 43 },
globGroups = { initial = { "globHallway", "globBedRoom", "globLivingRoom", "globTvBench" } },
globCurrentGroup = { initial = "globComputerRoom" },
},
Code: Select all
return {
on = {
devices = {
'IKEA Switch Right Arrow'
},
},
data = {
loop = { initial = 0 }
},
logger = {
level = domoticz.LOG_DEBUG,
marker = "ikeaSelect"
},
execute = function(domoticz, device)
if (device.state == "Click" )
then
if domoticz.data.loop <= 4
then
domoticz.data.loop = domoticz.data.loop + 1
else
domoticz.data.loop = 1
end
currentGroup = domoticz.globalData.globGroups[domoticz.data.loop]
domoticz.log(domoticz.data.loop, domoticz.LOG_INFO)
domoticz.log(currentGroup, domoticz.LOG_INFO)
domoticz.log(device.state, domoticz.LOG_INFO)
domoticz.log(device.name, domoticz.LOG_INFO)
domoticz.log(domoticz.globalData.globGroups[2], domoticz.LOG_INFO)
device.switchOff().silent()
end
end
}
Re: Global arrays
Posted: Monday 01 July 2019 0:11
by Varazir
I added the array in the triggerd lua file
Code: Select all
return {
on = {
devices = {
'IKEA Switch Right Arrow'
},
},
data = {
loop = { initial = 0 },
Groups = { initial = { "globHallway", "globBedRoom", "globLivingRoom", "globTvBench" } },
},
logger = {
level = domoticz.LOG_DEBUG,
marker = "ikeaSelect"
},
execute = function(domoticz, device)
if (device.state == "Click" )
then
if domoticz.data.loop <= 4
then
domoticz.data.loop = domoticz.data.loop + 1
else
domoticz.data.loop = 1
end
-- currentGroup = domoticz.globalData.globGroups[domoticz.data.loop]
domoticz.log(domoticz.data.loop, domoticz.LOG_INFO)
-- domoticz.log(currentGroup, domoticz.LOG_INFO)
domoticz.log(device.state, domoticz.LOG_INFO)
domoticz.log(device.name, domoticz.LOG_INFO)
-- domoticz.log(domoticz.globalData.globGroups[2], domoticz.LOG_INFO)
domoticz.log(domoticz.data.Groups[2], domoticz.LOG_INFO)
device.switchOff().silent()
end
end
}
The ones I have commented out failed but domoticz.data.Groups[2] works.
Re: Global arrays [Solved]
Posted: Monday 01 July 2019 0:33
by waaren
Varazir wrote: Sunday 30 June 2019 23:50
Still getting Nil
When you modify something in the
initial area of the data declaration. You need to remove the corresponding data file in <domoticz dir>/scripts/dzVents/data
So if your scriptname is "test.lua" then remove "__data_test.lua ". This persistent data file will be rebuild on the next execution of the script.
Same is true for global_data.lua (remove "__data_global_data.lua")