LUA - globala variabler och funktioner

Moderator: Telldus

Post Reply
AndersGregow
Posts: 18
Joined: Fri Mar 17, 2023 9:45 am

LUA - globala variabler och funktioner

Post by AndersGregow »

Hej!
1. Kan man ha globala funktioner och variabler som kan nås mellan olika skript?
2. Om onDeviceChanged anropas av ett device, kan ett annat device anropa samma metod (i samma skript) om den första devicen tex. ligger i en sleep i metoden.

Mvh. /Anders
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: LUA - globala variabler och funktioner

Post by micke.prag »

1) Nej

2) Kan du ge exempel?
Micke Prag
Software
Telldus Technologies
AndersGregow
Posts: 18
Joined: Fri Mar 17, 2023 9:45 am

Re: LUA - globala variabler och funktioner

Post by AndersGregow »

1. Så synd :-(
Hade varit bra att enkelt synkronisera skript.

2.

Code: Select all

function onDeviceStateChanged(device, state, stateValue)
   if device:name() == SENSOR_ALARM then
        slep(20000) -- wait for alarm away sensor
        if (device:state() == STATUS_ON) and (not status_alarm_armed) then
            status_alarm_armed = true
            print("*** %s Alarm On ***", os.date())
            update_devices()
        elseif (device:state() ~= STATUS_ON) and status_alarm_armed then
            status_alarm_armed = false
            print("*** %s Alarm Off ***", os.date())
            update_devices()
        end
   elseif device:name() == SENSOR_ALARM_AWAY then -- sensor is inverted
        if (device:state() ~= STATUS_ON) and (not status_alarm_armed_away) then
            status_alarm_armed_away = true
            print("*** %s Alarm Away On ***", os.date())
        elseif (device:state() == STATUS_ON) and status_alarm_armed_away then
            status_alarm_armed_away = false
            print("*** %s Alarm Away Off ***", os.date())
  end
end

Om SENSOR_ALARM kommer först så lägger den sig att vänta en stund (överdriven tid här...) på att SENSOR_ALARM_AWAY eventuellt ska hända, detta för att olika enheter ska tändas/släckas beroende på om man larmat på "hemma" eller "borta".
Sensorerna är ljus-sensorer som läser av ljusdioder på larmenheten.
Kommer SENSOR_ALARM_AWAY att hanteras medans onDeviceStateChanged() ligger i 20s-fördröjningen, och rätt status kommer att vara satt i status_alarm_armed_away när väl sleep är klar? Eller kommer den hanteras först efter att SENSOR_ALARM hanterats klart? Eller, kommer det missas helt?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: LUA - globala variabler och funktioner

Post by micke.prag »

AndersGregow wrote:Kommer SENSOR_ALARM_AWAY att hanteras medans onDeviceStateChanged() ligger i 20s-fördröjningen, och rätt status kommer att vara satt i status_alarm_armed_away när väl sleep är klar? Eller kommer den hanteras först efter att SENSOR_ALARM hanterats klart? Eller, kommer det missas helt?
Nästa körning av onDeviceStateChanged() kommer köras om den första är i "sleep". Sleep är utformad för att ge tråden tid att utföra annat.
Skulle du istället haft en evighetsloop som kollat så att tillräckligt lång tid gått (utan att kalla på sleep) så skulle inga nya anrop till onDeviceStateChanged() köras förrän första är klart.
Micke Prag
Software
Telldus Technologies
AndersGregow
Posts: 18
Joined: Fri Mar 17, 2023 9:45 am

Re: LUA - globala variabler och funktioner

Post by AndersGregow »

Perfekt.
erikjoens
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Re: LUA - globala variabler och funktioner

Post by erikjoens »

AndersGregow wrote: 1. Kan man ha globala funktioner och variabler som kan nås mellan olika skript?
Du kan ha enkla binära "globala" variabler i form av en "icke existerande" 433mhz enhet. Du kan t.ex. lägga till en 433mhz brytare utan att koppla denna till en riktig brytare, och sen använder du den som en "global" variabel med läge on eller off.
AndersGregow
Posts: 18
Joined: Fri Mar 17, 2023 9:45 am

Re: LUA - globala variabler och funktioner

Post by AndersGregow »

Jo, det känner jag till, använder det redan.
Inte lika "snyggt" dock. ;-)
erikjoens
Posts: 14
Joined: Fri Mar 17, 2023 9:45 am

Re: LUA - globala variabler och funktioner

Post by erikjoens »

Nej håller med, hade varit trevligare att ha ett bättre sätt att hantera olika "states".

Jag har några stycken fejk enheter som jag använder för att trigga olika händelser och några för att hålla koll på olika states. Har dock prefixat dom med [T] och i deras namn så blir de iaf nån sorts ordning i listan :)
Post Reply