Vraag


Acties:
  • 0 Henk 'm!

  • jesses
  • Registratie: September 2003
  • Laatst online: 26-02 20:55
Mijn vraag
Ik gebruik sinds kort Domoticz in combinatie met beweging sensors (Fibaro Zwave) en Philips Hue verlichting.
Van de Domoticz wiki heb ik een (goed werkend) LUA script gebruikt om de verlichting aan te zetten bij beweging.
Bron: https://www.domoticz.com/wiki/Smart_Lua_Scripts

Dit script gaat echter uit van het feit dat je niet kan controleren of je verlichting aan staat. Voor het script om de verlichting uit te schakelen vind ik dat prima, echter zou ik graag bij het aanzetten van de verlichting willen controleren of de betreffende verlichting aan staat en indien dit niet het geval is geen actie ondernemen.

Op basis van de dummy switch kan ik wel al functionaliteit toevoegen maar ik weet niet hoe ik dit voor elkaar krijg.
Ik hoop dan ook dat iemand mij een beetje op weg kan helpen.

Hierbij het script zoals ik het nu gebruik:
function customtest(nowhours, nowmins, starthours, startmins, endhours, endmins)
nowmins = nowmins + (nowhours * 60)
startmins = startmins + (starthours * 60)
endmins = endmins + (endhours * 60)
if (startmins > endmins) then
-- spans midnight
if ((nowmins >= startmins) or (nowmins <= endmins)) then
return true
else
return false
end
else
-- doesn't span midnight
if ((nowmins >= startmins) and (nowmins <= endmins)) then
return true
else
return false
end
end
end

function timetest(opertime)
if opertime == "a" then
return true
end
if opertime == "n" then
if timeofday['Nighttime'] then
return true
else
return false
end
end
if opertime == "d" then
if timeofday['Daytime'] then
return true
else
return false
end
end
if opertime == "s" then
if (otherdevices['IsDonker'] == "On") then
return true
else
return false
end
end
if opertime == "1" then
time = os.date("*t")
return customtest(time.hour, time.min, 6, 40, 23, 45)
end
return false
end

commandArray = {}

tc=next(devicechanged)
v=tostring(tc)
if (v:sub(1,3) == 'PIR') then
if timetest(v:sub(4,4)) then
c=v:sub(7)
if v:sub(5,5) == "g" then
c="Group:"..c
end
commandArray[c] = 'On'
tmess = c..' On - time 0'
print(tmess)
end
end

return commandArray

Relevante software en hardware die ik gebruik
Raspberry PI 2 B
Jessie lite Raspbarian
Domoticz: Version: 3.8153 / Build Hash: 494fff7
Fibaro Motion Sensor V2
AEON labs zwave USB gen5

Wat ik al gevonden of geprobeerd heb
2 dagen forums, wiki's en manuals lezen en proberen.

Alvast bedankt voor jullie tips en tijd!

Groet,
Jesse

jesse

Alle reacties


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Kun je je script even in [code] tags plaatsen?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • jesses
  • Registratie: September 2003
  • Laatst online: 26-02 20:55
Juup schreef op zondag 21 januari 2018 @ 00:01:
Kun je je script even in [code] tags plaatsen?
Hi Jaap,

Excuses, hierbij.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function customtest(nowhours, nowmins, starthours, startmins, endhours, endmins)
   nowmins = nowmins + (nowhours * 60)
   startmins = startmins + (starthours * 60)
   endmins = endmins + (endhours * 60)
   if (startmins > endmins) then
--    spans midnight
      if ((nowmins >= startmins) or (nowmins <= endmins)) then
         return true
      else
         return false
      end
   else
--    doesn't span midnight
      if ((nowmins >= startmins) and (nowmins <= endmins)) then
         return true
      else
         return false
      end
   end
end

function timetest(opertime)
   if opertime == "a" then
      return true
   end
   if opertime == "n" then
      if timeofday['Nighttime'] then
         return true
      else
         return false
      end
   end
   if opertime == "d" then
      if timeofday['Daytime'] then
         return true
      else
         return false
      end
   end
   if opertime == "s" then
      if (otherdevices['IsDonker'] == "On") then
         return true
      else
         return false
      end
   end
   if opertime == "1" then
      time = os.date("*t")
      return customtest(time.hour, time.min, 6, 40, 23, 45)
   end
   return false
end

commandArray = {}

tc=next(devicechanged)
v=tostring(tc)
if (v:sub(1,3) == 'PIR') then
   if timetest(v:sub(4,4)) then
      c=v:sub(7)
      if v:sub(5,5) == "g" then
         c="Group:"..c
      end
      commandArray[c] = 'On'
      tmess = c..' On - time 0'
      print(tmess)
   end
end

return commandArray


Gr,
Jesse

jesse


Acties:
  • 0 Henk 'm!

  • jesses
  • Registratie: September 2003
  • Laatst online: 26-02 20:55
Ik ben inmiddels zelf al verder met een ander script. Daarnaast heb ik op het Domoticz forum wat hulp gevraagd.

Ik heb momenteel dus geen hulp meer nodig :)

[ Voor 17% gewijzigd door jesses op 23-01-2018 13:12 ]

jesse