Global arrays  [Solved]

Easy to use, 100% Lua-based event scripting framework.

Moderator: leecollings

Post Reply
User avatar
Varazir
Posts: 487
Joined: Friday 20 February 2015 22:23
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Contact:

Global arrays

Post 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.
Raspberry PI 4 with RaZberry Controller 2016 ZWave+ and CC2531(zigbee)
Several IKEA devices/z-wave devices
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: Global arrays

Post 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]
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
User avatar
Varazir
Posts: 487
Joined: Friday 20 February 2015 22:23
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Contact:

Re: Global arrays

Post 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
}
Raspberry PI 4 with RaZberry Controller 2016 ZWave+ and CC2531(zigbee)
Several IKEA devices/z-wave devices
User avatar
Varazir
Posts: 487
Joined: Friday 20 February 2015 22:23
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Contact:

Re: Global arrays

Post 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.
Raspberry PI 4 with RaZberry Controller 2016 ZWave+ and CC2531(zigbee)
Several IKEA devices/z-wave devices
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: Global arrays  [Solved]

Post 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")
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest