add shutdown effect:

system shutdown is disabled by default. enable it in json (set false to true)
the shutdown is abortable. simply select another effect before shutdown time reached
this effect is made for linux and did not workl on windows without modifications


Former-commit-id: 32f92246fbc87de576e4b1059dd319646917ec74
This commit is contained in:
redpanther 2016-01-23 13:09:23 +01:00
parent 3327251ba7
commit 2555c50710
2 changed files with 62 additions and 0 deletions

11
effects/shutdown.json Normal file
View File

@ -0,0 +1,11 @@
{
"name" : "System Shutdown",
"script" : "shutdown.py",
"args" :
{
"speed" : 1.2,
"alarm-color" : [255,0,0],
"post-color" : [255,174,11],
"shutdown-enabled" : false
}
}

51
effects/shutdown.py Normal file
View File

@ -0,0 +1,51 @@
import hyperion, time, colorsys, random, subprocess
def setPixel(x,y,rgb):
global imageData, width
offset = y*width*3 + x*3
if offset+2 < len(imageData):
imageData[offset] = rgb[0]
imageData[offset+1] = rgb[1]
imageData[offset+2] = rgb[2]
# Initialize the led data and args
sleepTime = float(hyperion.args.get('speed', 1.0))*0.5
alarmColor = hyperion.args.get('alarm-color', (255,0,0))
postColor = hyperion.args.get('post-color', (255,174,11))
off = bool(hyperion.args.get('shutdown-enabled', False))
width = 12
height = 10
imageData = bytearray(height * width * (0,0,0))
imageDataBlack = bytearray(height * width * (0,0,0))
imageDataRed = bytearray(height * width * alarmColor)
# Start the write data loop
for i in range(6):
if hyperion.abort():
off = False
break
if i % 2:
hyperion.setImage(width, height, imageDataRed)
else:
hyperion.setImage(width, height, imageDataBlack)
time.sleep(sleepTime)
for y in range(height,0,-1):
if hyperion.abort():
off = False
break
for x in range(width):
setPixel(x, y-1, alarmColor)
hyperion.setImage(width, height, imageData)
time.sleep(sleepTime)
time.sleep(1)
for y in range(height):
for x in range(width):
setPixel(x, y, postColor)
hyperion.setImage(width, height, imageData)
time.sleep(2)
if off and not hyperion.abort():
subprocess.call("halt")