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
LUA - globala variabler och funktioner
Moderator: Telldus
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Re: LUA - globala variabler och funktioner
1) Nej
2) Kan du ge exempel?
2) Kan du ge exempel?
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies
-
- Posts: 18
- Joined: Fri Mar 17, 2023 9:45 am
Re: LUA - globala variabler och funktioner
1. Så synd
Hade varit bra att enkelt synkronisera skript.
2.
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?
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
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?
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Re: LUA - globala variabler och funktioner
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.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?
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
Software
Telldus Technologies
-
- Posts: 18
- Joined: Fri Mar 17, 2023 9:45 am
Re: LUA - globala variabler och funktioner
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 wrote: 1. Kan man ha globala funktioner och variabler som kan nås mellan olika skript?
-
- Posts: 18
- Joined: Fri Mar 17, 2023 9:45 am
Re: LUA - globala variabler och funktioner
Jo, det känner jag till, använder det redan.
Inte lika "snyggt" dock.
Inte lika "snyggt" dock.
Re: LUA - globala variabler och funktioner
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
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