mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
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:
parent
3327251ba7
commit
2555c50710
11
effects/shutdown.json
Normal file
11
effects/shutdown.json
Normal 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
51
effects/shutdown.py
Normal 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")
|
Loading…
Reference in New Issue
Block a user