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
|
#!/usr/bin/python
import random
import os
import time
def choose_image(imagepath, lastonefile):
lastonefile = os.path.join(imagepath, lastonefile)
dice = random.random()
now = int(time.strftime("%H", time.localtime()))
# Do we remember the last image we sent out?
if os.path.exists(lastonefile):
#first we decide if the previous image will be used again
if dice < 0.8:
with open(lastonefile, "r") as f:
lastone = f.readline()
return lastone
# There is a 10% chance that the light is on
# This state is not saved in the lastonelog, so the chance, that this
# image will be serverd next time again are reduced.
# It also helps saving some energy.
if dice > 0.9:
newone = random.randint(0, len(onimages)-1)
return os.path.join(imagepath, "on", onimages[newone])
# Between 6 a.m. and 6 p.m. theres a good chance that the toilet is
# quite bright even if noone is there
elif now < 18 and now > 5:
newone = random.randint(0, len(dayimages)-1)
newimage = os.path.join(imagepath, "day", dayimages[newone])
f = open(lastonefile, "w")
f.write(newimage)
f.close()
return newimage
# At night, this place is super-dark, or blue :-)
else:
newone = random.randint(0, len(onimages)-1)
newimage = os.path.join(imagepath, "night", nightimages[newone])
f = open(lastonefile, "w")
f.write(newimage)
f.close()
return newimage
def read_images(imagepath):
global dayimages
global nightimages
global onimages
#images for different illumination settings are in on folder each
dayimages = os.listdir(os.path.join(imagepath, "day"))
nightimages = os.listdir(os.path.join(imagepath, "night"))
onimages = os.listdir(os.path.join(imagepath, "on"))
if __name__ == "__main__":
#Configuration stuff
imagepath = "../template/klocam"
lastonefile = "lastone.log"
read_images(imagepath)
newimage = choose_image(imagepath, lastonefile)
print newimage
|