for i in pairs and groups  [Solved]

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

Moderator: leecollings

Post Reply
Gravityz
Posts: 652
Joined: Wednesday 16 December 2015 19:13
Target OS: NAS (Synology & others)
Domoticz version: 2025.1
Location: Netherlands
Contact:

for i in pairs and groups

Post by Gravityz »

this script runs perfect when devices are used in the lookup table
if i want to use it with groups/scenes it does not work.

so if lookup contains devices and i use domoticz.devices it works
if lookup contains groups and i use domoticz.groups it does not work and the log complains about scenes/groups not existing but they do

Code: Select all

2019-07-01 17:52:30.048 Error: dzVents: Error: (2.4.24) There is no group or scene with that name or id: Woonkamerlampen. If you just created the scene or group you may have to restart Domoticz to make it become visible to dzVents.
2019-07-01 17:52:30.049 Error: dzVents: Error: (2.4.24) There is no group or scene with that name or id: WoonkamerlampenSfeervol. If you just created the scene or group you may have to restart Domoticz to make it become visible to dzVents.
i have read somewhere that the new foreach functionality is needed for this but i can not seem to find examples who use double data entries

@waaren, can you see what is wrong

Code: Select all

local lookup = {
    Woonkamerlampen = "109" ,
    WoonkamerlampenSfeervol = "114" ,
}

return {
    active = true,
    on = {
 -- de devices die dit script triggeren 
        devices = {
    'Vitrinekast' ,
        },
    },

    execute = function(domoticz, trigger)
        for naam, id in pairs(lookup) do
        local device = domoticz.groups(naam)
        local devicestatus = '10'
        domoticz.log(device)
         domoticz.log(devicestatus)
    
    end
end
}
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by waaren »

Gravityz wrote: Monday 01 July 2019 17:56 if i want to use it with groups/scenes it does not work.

so if lookup contains devices and i use domoticz.devices it works
if lookup contains groups and i use domoticz.groups it does not work and the log complains about scenes/groups not existing but they do
what is wrong ?
do not see an immediate problem but hard to check without being able to check your config.
Can you check this and see if you find something in the log ?

Code: Select all

local lookup = {
    Woonkamerlampen = 109 ,
    WoonkamerlampenSfeervol = 114 ,
    Zolder = 120,
}

return {
    active = true,
    on = {
 -- de devices die dit script triggeren 
        devices = {
    'Vitrinekast' , 'XB*'
        },
    },
    
    execute = function( dz )
        for name, id in pairs(lookup) do
            local item = dz.groups(name)
            if item then
                dz.log('status of ' .. item.name .. ' (' .. id ..') is ' .. item.state)
            else
                dz.log('none existing Group')
            end
        end
    end
}
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Gravityz
Posts: 652
Joined: Wednesday 16 December 2015 19:13
Target OS: NAS (Synology & others)
Domoticz version: 2025.1
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by Gravityz »

Weird, that seems to work
error is correct since Zolder is not existing

the only thing different is that you skipped the "" in the lookup table

Code: Select all

2019-07-01 20:18:45.762 Status: dzVents: Info: ------ Start internal script: test2: Device: "Vitrinekast (Aeonlabs Z-wave stick Gen5)", Index: 208
2019-07-01 20:18:45.763 Status: dzVents: Info: status of WoonkamerlampenSfeervol (114) is Off
2019-07-01 20:18:45.763 Status: dzVents: Info: status of Woonkamerlampen (109) is Off
2019-07-01 20:18:45.763 Status: dzVents: Info: none existing Group
2019-07-01 20:18:45.764 Status: dzVents: Info: ------ Finished test2
2019-07-01 20:18:45.763 Error: dzVents: Error: (2.4.24) There is no group or scene with that name or id: Zolder. If you just created the scene or group you may have to restart Domoticz to make it become visible to dzVents.

i made my script a lot smaller and adjusted it to make it look almost like yours.
this is still crashing, i really can not see the problem

Code: Select all

local lookup = {
    Woonkamerlampen = 109 ,
    WoonkamerlampenSfeervol = 114 ,
}

return {
    active = true,
    on = {
 -- de devices die dit script triggeren 
        devices = {
    'Vitrinekast' ,
        },
    },


    execute = function( dz )
        for name, id in pairs(lookup) do
            local item = dz.groups(name)
            dz.log(item)
        end
    end
}

Code: Select all

2019-07-01 20:39:51.534 Error: dzVents: Error: (2.4.24) An error occurred when calling event handler test
2019-07-01 20:39:51.535 Error: dzVents: Error: (2.4.24) ...omoticz/dzVents/runtime/device-adapters/group_device.lua:65: attempt to concatenate a nil value
Gravityz
Posts: 652
Joined: Wednesday 16 December 2015 19:13
Target OS: NAS (Synology & others)
Domoticz version: 2025.1
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by Gravityz »

and these errors

looks like dzvents is acting up

Code: Select all

2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'repeatAfterXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) No value given for 'forXXX' command
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) An error occurred when calling event handler test
2019-07-01 20:44:01.107 Error: dzVents: Error: (2.4.24) /usr/local/domoticz/dzVents/runtime/TimedCommand.lua:190: attempt to perform arithmetic on local 'value' (a nil 
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by waaren »

Gravityz wrote: Monday 01 July 2019 20:42 i made my script a lot smaller and adjusted it to make it look almost like yours.
this is still crashing, i really can not see the problem

Code: Select all

local lookup = {
            local item = dz.groups(name) -- you make item the group object with all its attributes and functions
            dz.log(item) -- What do you want to display ?? if you want the name then dz.log(item.name) is a better choice 
  
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Gravityz
Posts: 652
Joined: Wednesday 16 December 2015 19:13
Target OS: NAS (Synology & others)
Domoticz version: 2025.1
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by Gravityz »

i think that is the problem

item gives errors but item.name only the name

still it is strange that it does not need the .name when i use this on dz.devices(name)

is this done intentionally

group
no .name gives everything about the group(but the name)
.name give the name

device

no .name gives the name of the device
.name probalbly also gives the name


also it is perhaps better to skip name as a variable because it gets confusing name.name ????
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: for i in pairs and groups

Post by waaren »

Gravityz wrote: Monday 01 July 2019 21:03 still it is strange that it does not need the .name when i use this on dz.devices(name)
I don't understand what you mean with this.
I see the similar type of problems if you use something like

Code: Select all

dz.log(dz.devices(name))
or

Code: Select all

dz.log(dz.groups(name))
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
Gravityz
Posts: 652
Joined: Wednesday 16 December 2015 19:13
Target OS: NAS (Synology & others)
Domoticz version: 2025.1
Location: Netherlands
Contact:

Re: for i in pairs and groups  [Solved]

Post by Gravityz »

i meant i thought

for group
local item = dz.groups(name)
dz.log(item.name)

but for item this works (but it is not)
local item = dz.devices(name)
dz.log(item)



anyway it is fixed now and i can read the groups also.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest