does not equal  [Solved]

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

Moderator: leecollings

Post Reply
markjgabb
Posts: 142
Joined: Tuesday 24 January 2017 23:00
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8153
Location: Australia
Contact:

does not equal

Post by markjgabb »

hi all

Ive been working on a script for when my chromecast is playing videos, but i find the state can update from video to video every now and then when it switches between shows and ad breaks

im trying to combat this with the persistent value of last state, but i cant get the laststate variable to work because i need a does not equal in my dzvents script which throws and error
can anyone advise on the correct format for does not equal?

i thought it would be != or !== as in most other coding languages but im getting i missed something

Code: Select all

return {
    on = { 
        devices = { 'lounge TV Status' }
        },
    
data = {
           LastState = { initial = "Screensaver" }
       },
    
    execute = function(dz, item)
        local fanlights = dz.devices('Fan Lights')
        
        local delay = .20
        local dimLevel = item.level
        

        if item.state == 'Video' and data.LastState !== 'Video'  then
            repeat
                delay = delay
                dimLevel = dimLevel - 1
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel <= 0    
        elseif item.state == 'Screensaver' and data.LastState == 'Video' then
              repeat
                delay = delay
                dimLevel = dimLevel + 1
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel = 100
        elseif item.state == 'Sleeping' and data.LastState == 'Video' then
               repeat
                delay = delay
                dimLevel = dimLevel + 1
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel = 100
                
                
                
            end
        end
    
}
V 2020.2 RPI 3
RFlink 334 mhz
mysensors
broadlink
Mirabella Genio Globes
User avatar
waaren
Posts: 6028
Joined: Tuesday 03 January 2017 14:18
Target OS: Linux
Domoticz version: Beta
Location: Netherlands
Contact:

Re: does not equal  [Solved]

Post by waaren »

markjgabb wrote: Sunday 24 November 2019 6:13 i thought it would be != or !== as in most other coding languages but im getting i missed something
In Lua unequal test is ~=
If you refer to persistent variables you have to use dz.data.<varname>

Code: Select all

return 
{
    on = 
    { 
        devices = { 'lounge TV Status' },
    },
    
    data = 
    {
           LastState = { initial = "Screensaver" },
    },
    
    logging = 
    {
        level = domoticz.LOG_DEBUG,    -- Set to ERROR when OK
    },

    execute = function(dz, item)
        _G.logMarker =  _G.moduleLabel
        
        local fanlights = dz.devices('Fan Lights')
        
        local delay = .20
        local dimLevel = item.level

        if item.state == 'Video' and dz.data.LastState ~= 'Video'  then
            repeat
                dimLevel = math.max(dimLevel - 1, 0) -- ensure dimLevel will not become < 1 (when repeat loop entered with level = 0 )
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel = 0    
        elseif item.state == 'Screensaver' and dz.data.LastState == 'Video' then
            repeat
                dimLevel = dimLevel + 1
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel = 100
        elseif item.state == 'Sleeping' and dz.data.LastState == 'Video' then
           repeat
                dimLevel = dimLevel + 1
                fanlights.dimTo(dimLevel).afterSec(delay)
            until dimLevel = 100
        end
        dz.data.LastState = item.state
    end
}
Debian buster, bullseye on RPI-4, Intel NUC.
dz Beta, Z-Wave, RFLink, RFXtrx433e, P1, Youless, Hue, Yeelight, Xiaomi, MQTT
==>> dzVents wiki
markjgabb
Posts: 142
Joined: Tuesday 24 January 2017 23:00
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8153
Location: Australia
Contact:

Re: does not equal

Post by markjgabb »

champion that works perfectly now!
V 2020.2 RPI 3
RFlink 334 mhz
mysensors
broadlink
Mirabella Genio Globes
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest