Skip to content

Commit 720f2d8

Browse files
author
tociek
committed
Added addon settings for more setup options
1 parent d34554f commit 720f2d8

6 files changed

Lines changed: 77 additions & 10 deletions

File tree

addon.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
try:
2222

23-
device_versions = [ HyperPyCon.HyperPyCon.ws2801 , HyperPyCon.HyperPyCon.adalight ]
23+
device_versions = [ HyperPyCon.HyperPyCon.ws2801 , HyperPyCon.HyperPyCon.adalight, HyperPyCon.HyperPyCon.apa102]
2424
selected_device = xbmcgui.Dialog().select("Select your led device:",device_versions)
2525
if selected_device == 0:
2626
if "spidev" not in subprocess.check_output(['ls','/dev']):
@@ -34,7 +34,13 @@
3434

3535
hyperion_configuration = HyperPyCon.HyperPyCon(int(nol_horizontal), int(nol_vertical))
3636
hyperion_configuration.set_device_type(device_versions[selected_device])
37-
37+
hyperion_configuration.set_device_rate(int(addon.getSetting("rate")))
38+
hyperion_configuration.set_color_values(float(addon.getSetting("redThreshold")), float(addon.getSetting("redGamma")),float(addon.getSetting("redBlacklevel")),float(addon.getSetting("redWhitelevel")),"RED")
39+
hyperion_configuration.set_color_values(float(addon.getSetting("greenThreshold")), float(addon.getSetting("greenGamma")),float(addon.getSetting("greenBlacklevel")),float(addon.getSetting("greenWhitelevel")),"GREEN")
40+
hyperion_configuration.set_color_values(float(addon.getSetting("blueThreshold")), float(addon.getSetting("blueGamma")),float(addon.getSetting("blueBlacklevel")),float(addon.getSetting("blueWhitelevel")),"BLUE")
41+
hyperion_configuration.set_smoothing(addon.getSetting("smoothingType"),int(addon.getSetting("smoothingTime")),int(addon.getSetting("smoothingFreq")))
42+
hyperion_configuration.set_blackborderdetection((addon.getSetting("bbdEnabled") == "true"), float(addon.getSetting("bbdThreshold")))
43+
3844
options = ["Right/bottom corner and goes up","Left/bottom corner and goes up","Center/bottom and goes right","Center/bottom and goes left"]
3945
selected_index = xbmcgui.Dialog().select("Select where the led chain starts:",options)
4046

@@ -70,7 +76,7 @@
7076
hyperion_configuration.save_config_file(hyperion_configuration.create_config(grabber),"/storage/.config/","hyperion.config.new")
7177
hyperion_configuration.restart_hyperion("hyperion.config.new")
7278
if not xbmcgui.Dialog().yesno(addonname, "Have you seen the rainbow swirl?"):
73-
xbmcgui.Dialog().ok(addonname, "Something went wrong... Please try running hyperion from command line to see the error...")
79+
xbmcgui.Dialog().ok(addonname, "Something went wrong... Please try running hyperion from command line to see the error... (on openelec: /storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.new)")
7480
sys.exit()
7581
else:
7682
xbmcgui.Dialog().ok(addonname, "For the next 10 seconds you will see test image and leds should adjust to that image. Check if the leds are showing the right colors in the right places."+
@@ -92,9 +98,9 @@
9298
elif xbmcgui.Dialog().yesno(addonname, "Hyperion is now running with the newly created config. Would you like to restart hyperion with previous config?"):
9399
hyperion_configuration.restart_hyperion("hyperion.config.json")
94100

95-
xbmcgui.Dialog().ok(addonname, "That\'s all Folks! :) . Enjoy!")
101+
xbmcgui.Dialog().ok(addonname, "That\'s all Folks! :) . Enjoy!", "If you'd like to fine tune advanced parameters, please modify addon settings before running it")
96102

97103
except Exception, e:
98-
xbmcgui.Dialog().ok(addonname, repr(e))
104+
xbmcgui.Dialog().ok(addonname, repr(e),"Please report an error at github issue list")
99105

100106

addon.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<addon id="plugin.program.hyperion.configurator" name="Hyperion Config Creator" version="1.0.0" provider-name="tociek">
2+
<addon id="plugin.program.hyperion.configurator" name="Hyperion Config Creator" version="1.1.0" provider-name="tociek">
33
<requires>
44
<import addon="xbmc.python" version="2.14.0"/>
55
</requires>

changelog.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
1.0.0 Initial Release
2-
3-
1.0.1 Bug fixes + control image added + bottom/center configuration added
2+
1.0.1 Bug fixes + control image added + bottom/center configuration added
3+
1.1.0 Addon settings added to provide more setup options; APA102 added

resources/lib/HyperPyCon.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
class HyperPyCon:
1313
ws2801 = "Lightberry for Raspberry Pi"
1414
adalight = "Lightberry USB"
15+
apa102 = "Lightberry HD APA"
1516
def __init__(self, nol_horizontal, nol_vertical):
1617
self.total_number_of_leds = ((nol_horizontal + nol_vertical) * 2)
1718
self.led_chain = LedChain(self.total_number_of_leds)
@@ -39,6 +40,20 @@ def set_device_type(self,device_type):
3940
if device_type == HyperPyCon.adalight:
4041
self.device.type = "adalight"
4142
self.device.output = "/dev/ttyACM0"
43+
elif device_type == HyperPyCon.apa102:
44+
self.device.type = "apa102"
45+
46+
def set_device_rate(self, rate):
47+
self.device.rate = rate
48+
49+
def set_color_values(self,threshold, gamma, blacklevel,whitelevel, color_name):
50+
self.transform.set_color_transformation(HyperionConfigSections.SingleColor(threshold,gamma,blacklevel,whitelevel), color_name)
51+
52+
def set_smoothing(self, type, time_ms, update_frequency):
53+
self.smoothing = HyperionConfigSections.Smoothing(type,time_ms,update_frequency)
54+
55+
def set_blackborderdetection(self,enabled,bbdthreshold):
56+
self.blackborderdetector = dict(enable = enabled, threshold = bbdthreshold)
4257

4358
def create_config(self, add_grabber):
4459
self.color.add_transformation(self.transform)

resources/lib/HyperionConfigSections.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Device:
1212
name = "MyPi"
1313
type = "ws2801"
1414
output = "/dev/spidev0.0"
15-
rate = 250000
15+
rate = 500000
1616
color_order = "rgb"
1717

1818
def __init__(self):
@@ -61,7 +61,7 @@ class Transform:
6161
hsv = None
6262

6363
def __init__(self,tranformation_id, leds_indexes_range, hsv, red, green, blue):
64-
"""red,green,blue must be isntances of SingleColorParms"""
64+
"""red,green,blue must be instances of SingleColorParms"""
6565
self.tranformation_id = tranformation_id
6666
self.leds_indexes_range = leds_indexes_range
6767
self.red = red
@@ -71,6 +71,15 @@ def __init__(self,tranformation_id, leds_indexes_range, hsv, red, green, blue):
7171

7272
def to_dict(self):
7373
return OrderedDict(id = self.tranformation_id, leds = self.leds_indexes_range, hsv = self.hsv.to_dict(), red = self.red.to_dict(), green = self.green.to_dict(), blue = self.blue.to_dict())
74+
75+
def set_color_transformation(self, single_color_settings, color_name):
76+
if color_name == "GREEN":
77+
self.green = single_color_settings
78+
elif color_name == "RED":
79+
self.red = single_color_settings
80+
else:
81+
self.blue = single_color_settings
82+
7483

7584
class Smoothing:
7685
type = 'linear'

resources/settings.xml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2+
<settings>
3+
<category label="32010">
4+
<setting label="Device" type="lsep"/>
5+
<setting label="Rate" type="number" id="rate" default="500000"/>
6+
7+
<setting label="Smoothing" type="lsep"/>
8+
<setting label="Type" type="select" id="smoothingType" values="linear|none" default="linear"/>
9+
<setting label="Time [ms]" type="number" id="smoothingTime" default="100"/>
10+
<setting label="Update frequency [Hz]" type="number" id="smoothingFreq" default="20"/>
11+
12+
<setting label="Black border detection" type="lsep"/>
13+
<setting label="Enable" type="bool" id="bbdEnabled" default="true"/>
14+
<setting label="Threshold" type="slider" enable="eq(-1,true)" id="bbdThreshold" default="0.10" range="0,0.05,1" />
15+
16+
</category>
17+
18+
<category label="Color">
19+
<setting label="Red" type="lsep"/>
20+
<setting label="Threshold" type="slider" range="0,0.02,1" id="redThreshold" default=0.05/>
21+
<setting label="Gamma" type="slider" range="0,0.2,4" id="redGamma" default=2.0/>
22+
<setting label="Blacklevel" type="slider" id="redBlacklevel" default="0" range="0,0.02,1" />
23+
<setting label="Whitelevel" type="slider" id="redWhitelevel" default="1.0" range="0,0.02,1" />
24+
25+
<setting label="Green" type="lsep"/>
26+
<setting label="Threshold" type="slider" range="0,0.02,1" id="greenThreshold" default=0.05/>
27+
<setting label="Gamma" type="slider" range="0,0.2,4" id="greenGamma" default=2.0/>
28+
<setting label="Blacklevel" type="slider" id="greenBlacklevel" default="0" range="0,0.02,1" />
29+
<setting label="Whitelevel" type="slider" id="greenWhitelevel" default="0.84" range="0,0.02,1" />
30+
31+
<setting label="Blue" type="lsep"/>
32+
<setting label="Threshold" type="slider" range="0,0.02,1" id="blueThreshold" default=0.05/>
33+
<setting label="Gamma" type="slider" range="0,0.2,4" id="blueGamma" default=2.0/>
34+
<setting label="Blacklevel" type="slider" id="blueBlacklevel" default="0" range="0,0.02,1" />
35+
<setting label="Whitelevel" type="slider" id="blueWhitelevel" default="0.84" range="0,0.02,1" />
36+
</category>
37+
</settings>

0 commit comments

Comments
 (0)