Wie kan me even helpen met dit Lua scriptje. Ik wil graag overstappen van Blocky naar Lua maar ik krijg deze niet voor elkaar.
Wat er moet gebeuren:
Via een timer gaat de groep buitenverlichting aan 10 minuten voor zonsondergang. Om 23:30 gaat alles weer uit.
Met Lua wil ik graag dat als er iemand achter loopt de verlichting in de bijkeuken aan gaat en de buitenlamp van de bijkeuken welke dan op 15% aan is) iets feller gaat branden (30%). Als er geen beweging meer is moet de bijkeuken verlichting uit en de buitenlamp weer terug naar 15%. Dit moet alleen als de virtuele schakelaar 'Schemersensor (23:30)' aan staat. Als deze uit is moet de verlichting wel aan maar nadat er geen beweging is gedetecteerd alles weer uitschakelen.
Ik heb nu onderstaande scripts, maar:
1 als ik nu buiten loop en 'schemersensor (23:30)' is aan dan gaat nadat er geen beweging meer is toch alles uit terwijl het script eigenlijk niet moet reageren dus ik maak nu al ergens een fout.
2 Hoe kan ik hier beide opties (schemersensor 23:30 aan en uit) in verwerken? Of moet je daar weer een apart script voor aanmaken?
code:
1
2
3
4
5
6
7
8
| -- ~/domoticz/scripts/lua/script_device_achter.lua
commandArray = {}
if (otherdevices['Schemersensor'] == 'On') and (otherdevices['Schemersensor (23:30)'] == 'Off') and (devicechanged['PIR Achter'] == 'On') then
commandArray['Bijkeuken buiten'] = 'Set Level: 30'
commandArray['Bijkeuken'] = 'Set Level: 5'
end
return commandArray |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| -- ~/domoticz/scripts/lua/script_time_achter.lua
function timedifference(s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
commandArray = {}
-- Set length of time light should be on for in seconds
timeon = 120
-- Calculate time since time PIR was last activated
difference = timedifference(otherdevices_lastupdate['PIR Achter'])
-- If the time since last activation was within 1 minute of time for light to stay on
if (difference > timeon and difference < (timeon + 61)) then
tempdiff = tostring(difference)
tempmessage = "Buitenverlichting Off - after at least " .. (timeon+1) .. "secs up - actually - " .. tempdiff .. "seconds"
print(tempmessage)
-- Switch off Buitenverlichting
commandArray['Bijkeuken buiten'] = 'Off'
commandArray['Bijkeuken'] = 'Off'
end
return commandArray |
Schemersensor = Virtuele schakelaar 10 min voor zonsondergang tot 10 min na zonsopgang aan
Schemersensor (23:30) = Virtuele schakelaar 10 min voor zonsondergang tot 23:30 aan
PIR Achter = Fibaro Eye
Bijkeuken buiten = Fibaro dimmer buitenlamp
Bijkeuken = Fibaro dimmer spotjes binnen