├── .gitignore
├── Aurora.py
├── README.md
├── VERSION
├── __init__.py
├── apt-requirements.txt
├── aurora.service
├── config.ini.bak
├── extensions
├── Aurora_Ambient_16x9.py
├── Aurora_Ambient_AutoCrop.py
├── Aurora_Ambient_NoCrop.py
├── Aurora_AudioSpectogram.py
├── Aurora_Configure.py
├── Aurora_Meteor.py
├── Aurora_Rainbow.py
├── __init__.py
└── exampleExtension.py
├── github
└── Aurora_Ambient_Light_test_video.gif
├── install.sh
├── lib
├── AuroraExtension.py
└── __init__.py
├── requirements.txt
├── update.sh
└── webserver
├── static
├── css
│ ├── bootstrap-slider.min.css
│ ├── bootstrap.css
│ └── style.css
├── favicon
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ └── favicon.ico
├── fonts
│ ├── css
│ │ └── fontawesome-all.min.css
│ └── webfonts
│ │ ├── fa-brands-400.eot
│ │ ├── fa-brands-400.svg
│ │ ├── fa-brands-400.ttf
│ │ ├── fa-brands-400.woff
│ │ ├── fa-brands-400.woff2
│ │ ├── fa-regular-400.eot
│ │ ├── fa-regular-400.svg
│ │ ├── fa-regular-400.ttf
│ │ ├── fa-regular-400.woff
│ │ ├── fa-regular-400.woff2
│ │ ├── fa-solid-900.eot
│ │ ├── fa-solid-900.svg
│ │ ├── fa-solid-900.ttf
│ │ ├── fa-solid-900.woff
│ │ └── fa-solid-900.woff2
├── images
│ ├── 2.png
│ ├── ad.png
│ ├── ath.png
│ ├── close.png
│ ├── empty.png
│ ├── framework
│ │ ├── AjaxLoader.gif
│ │ ├── AuroraLogo.png
│ │ ├── activity.png
│ │ ├── deco-slash.png
│ │ ├── deco-zig.png
│ │ ├── grabbing.png
│ │ ├── icons.png
│ │ ├── icons.svg
│ │ ├── loader.gif
│ │ ├── page-loader.gif
│ │ ├── pattern_1.png
│ │ ├── pay-1.png
│ │ ├── pay-2.png
│ │ ├── pay-3.png
│ │ ├── pay-4.png
│ │ ├── pay-5.png
│ │ ├── preload.gif
│ │ └── puff.svg
│ ├── header-oldlogo.png
│ ├── header.png
│ ├── icons
│ │ ├── 1.png
│ │ ├── 10.png
│ │ ├── 11.png
│ │ ├── 12.png
│ │ ├── 13.png
│ │ ├── 14.png
│ │ ├── 15.png
│ │ ├── 16.png
│ │ ├── 17.png
│ │ ├── 18.png
│ │ ├── 19.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ ├── 5.png
│ │ ├── 6.png
│ │ ├── 7.png
│ │ ├── 8.png
│ │ ├── 9.png
│ │ └── license.txt
│ ├── loading.gif
│ ├── menu-img.png
│ ├── next.png
│ ├── pictures
│ │ └── faces
│ │ │ ├── 1s.png
│ │ │ ├── 1small.png
│ │ │ ├── 2s.png
│ │ │ ├── 2small.png
│ │ │ ├── 3s.png
│ │ │ ├── 3small.png
│ │ │ ├── 4s.png
│ │ │ └── 4small.png
│ ├── preload-logo.png
│ ├── prev.png
│ ├── splash
│ │ ├── Thumbs.db
│ │ ├── android-chrome-192x192.png
│ │ ├── apple-touch-icon-114x114.png
│ │ ├── apple-touch-icon-120x120.png
│ │ ├── apple-touch-icon-144x144.png
│ │ ├── apple-touch-icon-152x152.png
│ │ ├── apple-touch-icon-180x180.png
│ │ ├── apple-touch-icon-196x196.png
│ │ ├── apple-touch-icon-57x57.png
│ │ ├── apple-touch-icon-60x60.png
│ │ ├── apple-touch-icon-72x72.png
│ │ ├── apple-touch-icon-76x76.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-96x96.png
│ │ └── favicon.ico
│ └── undraw
│ │ ├── 1.svg
│ │ ├── 2.svg
│ │ ├── 3.svg
│ │ ├── 4.svg
│ │ ├── 5.svg
│ │ ├── 6.svg
│ │ ├── 7.svg
│ │ ├── _license_and_link.rtf
│ │ ├── a.svg
│ │ ├── b.svg
│ │ ├── c.svg
│ │ ├── d.svg
│ │ └── e.svg
├── js
│ ├── aurora-configure.js
│ ├── aurora-generic.js
│ ├── aurora-index.js
│ ├── aurora-view.js
│ ├── bootstrap-slider.min.js
│ ├── bootstrap.min.js
│ ├── custom.js
│ └── jquery.js
└── menu
│ └── menu-main.html
└── templates
├── about.html
├── configure.html
├── footer.html
├── header.html
├── index.html
├── menu-colors.html
├── menu-footer.html
├── menu-share.html
├── status.json
└── view.html
/.gitignore:
--------------------------------------------------------------------------------
1 | #Aurora test things
2 | colourtest_from_youtube.mp4
3 | *.jpg
4 | *.jpeg
5 | env/*
6 | .vscode/
7 | audio.py
8 | auroraspec.py
9 | spec.py
10 | nohup.out
11 | config.ini
12 | config.ini.bak
13 | LEDTests/
14 |
15 |
16 | # Byte-compiled / optimized / DLL files
17 | __pycache__/
18 | *.py[cod]
19 | *$py.class
20 |
21 | # C extensions
22 | *.so
23 |
24 | # Distribution / packaging
25 | .Python
26 | build/
27 | develop-eggs/
28 | dist/
29 | downloads/
30 | eggs/
31 | .eggs/
32 | lib/
33 | lib64/
34 | parts/
35 | sdist/
36 | var/
37 | wheels/
38 | share/python-wheels/
39 | *.egg-info/
40 | .installed.cfg
41 | *.egg
42 | MANIFEST
43 |
44 | # PyInstaller
45 | # Usually these files are written by a python script from a template
46 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
47 | *.manifest
48 | *.spec
49 |
50 | # Installer logs
51 | pip-log.txt
52 | pip-delete-this-directory.txt
53 |
54 | # Unit test / coverage reports
55 | htmlcov/
56 | .tox/
57 | .nox/
58 | .coverage
59 | .coverage.*
60 | .cache
61 | nosetests.xml
62 | coverage.xml
63 | *.cover
64 | *.py,cover
65 | .hypothesis/
66 | .pytest_cache/
67 | cover/
68 |
69 | # Translations
70 | *.mo
71 | *.pot
72 |
73 | # Django stuff:
74 | *.log
75 | local_settings.py
76 | db.sqlite3
77 | db.sqlite3-journal
78 |
79 | # Flask stuff:
80 | instance/
81 | .webassets-cache
82 |
83 | # Scrapy stuff:
84 | .scrapy
85 |
86 | # Sphinx documentation
87 | docs/_build/
88 |
89 | # PyBuilder
90 | .pybuilder/
91 | target/
92 |
93 | # Jupyter Notebook
94 | .ipynb_checkpoints
95 |
96 | # IPython
97 | profile_default/
98 | ipython_config.py
99 |
100 | # pyenv
101 | # For a library or package, you might want to ignore these files since the code is
102 | # intended to run in multiple environments; otherwise, check them in:
103 | # .python-version
104 |
105 | # pipenv
106 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
107 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
108 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
109 | # install all needed dependencies.
110 | #Pipfile.lock
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://join.slack.com/t/auroraambientlighting/shared_invite/zt-sib46ode-0rE3GqXFEcHd_H_y_nG~oA)
2 |
3 | 
4 |
5 | # Aurora
6 | Aurora is an ambient light system built with an HDMI switch, and HDMI capture card, a Raspberry Pi and an LED strip. There is a full writeup of how this came to be at https://www.andrewmohawk.com/2021/05/25/aurora-ambient-lighting/ and a build guide at https://www.andrewmohawk.com/2021/05/24/aurora-how-to-build/
7 |
8 | # Help
9 | Feel free to submit PRs for the project to improve the code base or add your own visualisations. Please remember to update the VERSION when you are doing a new PR. If you *need* help with any part of the project feel free to email or you can join the gitter at https://gitter.im/AuroraAmbientLighting/community
10 |
11 | # Extending
12 | While the documentation for extending and building your own hasnt been fully written up, the TL;DR is to copy the example extenion in the `extensions` folder, change the metadata and restart Aurora with `sudo service aurora restart`, once it has picked up the new file you can simply make changes and then click load extension in the main interface.
13 |
14 | Please note when changing your `visualise` function you need to make it non-locking or the interface will not be able to communicate with it. The interface will pause for 0.01s before running visualise() again between each run
15 |
16 | # Install
17 | The install for this requires a hardware and software setup. You can follow the install guide at https://www.andrewmohawk.com/2021/05/24/aurora-how-to-build/
18 |
19 | The flow diagram looks as follows:
20 | 
21 |
22 | For just grabbing the software you can use this one liner:
23 | ```
24 | wget https://raw.githubusercontent.com/AndrewMohawk/Aurora/master/install.sh -O - | sudo /bin/bash
25 | ```
26 |
27 |
28 |
--------------------------------------------------------------------------------
/VERSION:
--------------------------------------------------------------------------------
1 | 0.42-catsdontlikefireworks
2 |
--------------------------------------------------------------------------------
/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/__init__.py
--------------------------------------------------------------------------------
/apt-requirements.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/apt-requirements.txt
--------------------------------------------------------------------------------
/aurora.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Aurora light system
3 | After=multi-user.target
4 | StartLimitInterval=200
5 | StartLimitBurst=5
6 | [Service]
7 | WorkingDirectory=/opt/Aurora/
8 | User=root
9 | Type=idle
10 | ExecStart=/usr/bin/sudo /usr/bin/python3 Aurora.py 2>&1 > /var/log/Aurora.log
11 | Restart=always
12 | RestartSec=30s
13 | [Install]
14 | WantedBy=multi-user.target
15 |
--------------------------------------------------------------------------------
/config.ini.bak:
--------------------------------------------------------------------------------
1 | [GENERAL]
2 | screenshot_path = /tmp/aurora_screenshot.jpg
3 | pixel_image_path = /tmp/aurora_pixels.jpg
4 | configured = False
5 | enabled = True
6 |
7 | [WEBSERVER]
8 | enabled = True
9 | listen_host = 0.0.0.0
10 | server_port = 80
11 |
12 | [EXTENSIONS]
13 | directory = extensions
14 | default_extension = Aurora_Ambient_AutoCrop
15 | current_extension = Aurora_Ambient_AutoCrop
16 |
17 | [HDMI]
18 | HDMI_BRIGHTNESS = -11
19 | HDMI_SATURATION = 255
20 | HDMI_CONTRAST = 130
21 | HDMI_HUE = 0
22 |
23 | [HDMI_INITIAL]
24 | HDMI_BRIGHTNESS = -11
25 | HDMI_SATURATION = 255
26 | HDMI_CONTRAST = 130
27 | HDMI_HUE = 0
28 |
29 | [AURORA]
30 | AURORA_PIXELCOUNT_TOTAL = 200
31 | AURORA_PIXELCOUNT_LEFT = 50
32 | AURORA_PIXELCOUNT_RIGHT = 50
33 | AURORA_PIXELCOUNT_TOP = 50
34 | AURORA_PIXELCOUNT_BOTTOM = 50
35 | AURORA_GAMMA = 1.0
36 | AURORA_DEBUG = false
37 | AURORA_DARKTHRESHOLD = 20
38 |
39 |
40 |
--------------------------------------------------------------------------------
/extensions/Aurora_Ambient_16x9.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 |
4 | import numpy as np
5 | import pandas as pd
6 | import cv2
7 |
8 |
9 | class Aurora_Ambient_16x9(AuroraExtension):
10 | def __init__(self, NeoPixels, HDMI):
11 | super().__init__(NeoPixels, HDMI)
12 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
13 | self.Description = "This extension takes the HDMI input and crops the image to 16:9 (hopefully) removing the black borders"
14 | self.Name = "Aurora Ambient Lighting (16x9)"
15 | self.count = 0
16 | self.current_frame = False
17 | self.aspect_cropped_frame = False
18 | self.percent = 3
19 | self.aspectRatio = 16.0 / 9.0
20 |
21 | def aspectCrop(self, image, ratio):
22 | vid_h, vid_w, channels = image.shape
23 | # work out the size of the 'gaps'
24 | aspectRatioGap = vid_h - (vid_w / self.aspectRatio)
25 | aspectRatioGap = aspectRatioGap / 2 # since we want to put some top and bottom
26 | aspectRatioGap = int(aspectRatioGap)
27 | aspect_frame = image[aspectRatioGap : vid_h - aspectRatioGap, 0:vid_w]
28 | return aspect_frame
29 |
30 | def takeScreenShot(self, filepath):
31 | ret, self.current_frame = self.getFrame()
32 | vid_h, vid_w, channels = self.current_frame.shape
33 | aspectRatioGap = vid_h - (vid_w / self.aspectRatio)
34 | aspectRatioGap = aspectRatioGap / 2 # since we want to put some top and bottom
35 | aspectRatioGap = int(aspectRatioGap)
36 | borderEdges = [0, aspectRatioGap, 0, aspectRatioGap]
37 | return super().takeScreenShot(filepath, borderEdges=borderEdges)
38 |
39 | def visualise(self):
40 | # Capture the video frame
41 | ret, self.current_frame = self.getFrame()
42 | self.aspect_cropped_frame = self.aspectCrop(
43 | self.current_frame, self.aspectRatio
44 | )
45 | self.visualiseFrame(self.aspect_cropped_frame)
46 |
--------------------------------------------------------------------------------
/extensions/Aurora_Ambient_AutoCrop.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | import datetime
4 | import numpy as np
5 | import pandas as pd
6 | import cv2
7 |
8 |
9 | class Aurora_Ambient_AutoCrop(AuroraExtension):
10 | def __init__(self, NeoPixels, HDMI):
11 | super().__init__(NeoPixels, HDMI)
12 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
13 | self.Description = "This extension takes the HDMI input and calculates a border (including cropping for black borders) to work out ambient lighting for behind the display."
14 | self.Name = "Aurora Ambient Lighting ( AutoCrop )"
15 | self.count = 0
16 | self.current_frame = False
17 | self.cropped_frame = False
18 | self.percent = 3
19 | self.edgeDarkness = (
20 | 5 # this defines the darkness that makes the edges for autocrop
21 | )
22 |
23 | def takeScreenShot(self, filepath, autocrop=False):
24 | return super().takeScreenShot(filepath, self.edgeDarkness)
25 |
26 | def autocrop(self, image, threshold=0):
27 | """Crops any edges below or equal to threshold
28 | Crops blank image to 1x1.
29 | Returns cropped image.
30 | """
31 | if len(image.shape) == 3:
32 | flatImage = np.max(image, 2)
33 | else:
34 | flatImage = image
35 | assert len(flatImage.shape) == 2
36 |
37 | rows = np.where(np.max(flatImage, 0) > threshold)[0]
38 | if rows.size:
39 | cols = np.where(np.max(flatImage, 1) > threshold)[0]
40 | image = image[cols[0] : cols[-1] + 1, rows[0] : rows[-1] + 1]
41 | else:
42 | image = image[:1, :1]
43 |
44 | return image
45 |
46 | def visualise(self):
47 | # Capture the video frame
48 | # stopwatchStartTime = datetime.datetime.now()
49 | # totalStartTime = stopwatchStartTime
50 | ret, self.current_frame = self.getFrame()
51 | self.vid_h, self.vid_w, self.channels = self.current_frame.shape
52 | # self.log(f"GetFrame: {datetime.datetime.now()-stopwatchStartTime}")
53 |
54 | # stopwatchStartTime = datetime.datetime.now()
55 | self.autocropped_frame = self.autocrop(self.current_frame, self.edgeDarkness)
56 | # self.log(f"AutoCropTime: {datetime.datetime.now()-stopwatchStartTime}")
57 |
58 | self.visualiseFrame(self.autocropped_frame)
59 |
--------------------------------------------------------------------------------
/extensions/Aurora_Ambient_NoCrop.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | import datetime
4 | import numpy as np
5 | import pandas as pd
6 | import cv2
7 |
8 |
9 | class Aurora_Ambient_NoCrop(AuroraExtension):
10 | def __init__(self, NeoPixels, HDMI):
11 | super().__init__(NeoPixels, HDMI)
12 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
13 | self.Description = "This extension takes the HDMI input and calculates a border (WITHOUT cropping) to work out ambient lighting for behind the display. This one is slightly faster as it doesnt need to do any of the maths to work out the cropping."
14 | self.Name = "Aurora Ambient Lighting ( No crop )"
15 | self.count = 0
16 | self.current_frame = False
17 | self.percent = 3
18 |
19 | def autocrop(self, image, threshold=0):
20 | """Crops any edges below or equal to threshold
21 | Crops blank image to 1x1.
22 | Returns cropped image.
23 | """
24 | if len(image.shape) == 3:
25 | flatImage = np.max(image, 2)
26 | else:
27 | flatImage = image
28 | assert len(flatImage.shape) == 2
29 |
30 | rows = np.where(np.max(flatImage, 0) > threshold)[0]
31 | if rows.size:
32 | cols = np.where(np.max(flatImage, 1) > threshold)[0]
33 | image = image[cols[0] : cols[-1] + 1, rows[0] : rows[-1] + 1]
34 | else:
35 | image = image[:1, :1]
36 |
37 | return image
38 |
39 | def takeScreenShot(self, filepath):
40 | screenshot_frame = self.current_frame
41 | widthPixels = int(self.vid_w * (self.percent / 100)) + 1
42 | heightPixels = int(self.vid_h * (self.percent / 100) * 2) + 1
43 |
44 | colour = (0, 0, 255)
45 | # top
46 | screenshot_frame = cv2.rectangle(
47 | screenshot_frame, (0, 0), (self.vid_w, heightPixels), (0, 0, 255), 1
48 | )
49 | # bottom
50 | screenshot_frame = cv2.rectangle(
51 | screenshot_frame,
52 | (0, self.vid_h - heightPixels),
53 | (self.vid_w, self.vid_h),
54 | (0, 0, 255),
55 | 1,
56 | )
57 | # left
58 | screenshot_frame = cv2.rectangle(
59 | screenshot_frame, (0, 0), (widthPixels, self.vid_h), (0, 0, 255), 1
60 | )
61 | # right
62 | screenshot_frame = cv2.rectangle(
63 | screenshot_frame,
64 | (self.vid_w - widthPixels, 0),
65 | (self.vid_w, self.vid_h),
66 | (0, 0, 255),
67 | 1,
68 | )
69 |
70 | cv2.imwrite(filepath, screenshot_frame)
71 |
72 | return True
73 |
74 | def visualise(self):
75 | # Capture the video frame
76 | ret, self.current_frame = self.getFrame()
77 | self.visualiseFrame(self.current_frame)
78 |
--------------------------------------------------------------------------------
/extensions/Aurora_AudioSpectogram.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | import datetime
4 | import numpy as np
5 | import pandas as pd
6 | import sounddevice as sd
7 | from time import sleep
8 | import sys
9 | from collections import deque
10 | import math
11 |
12 |
13 | class Aurora_AudioSpectogram(AuroraExtension):
14 | def __init__(self, NeoPixels, HDMI):
15 | super().__init__(NeoPixels, HDMI)
16 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
17 | self.Description = "This extension creates a rainbow audio spectogram, based somewhat on the code found at https://python-sounddevice.readthedocs.io/en/0.3.3/examples.html"
18 | self.Name = "Aurora Audio Spectrogram"
19 | self.count = 0
20 | self.current_frame = False
21 | self.columns = 100
22 | self.gain = 10
23 | self.low = 10
24 | self.high = 2500
25 | # Lets find the right device
26 | self.deviceID = sd.default.device["input"]
27 |
28 | self.log("Starting Audio spectogram with Device {}".format(self.deviceID))
29 | self.samplerate = sd.query_devices(self.deviceID, "input")["default_samplerate"]
30 | self.delta_f = (self.high - self.low) / (self.columns - 1)
31 | self.fftsize = math.ceil(self.samplerate / self.delta_f)
32 | self.low_bin = math.floor(self.low / self.delta_f)
33 | self.threshhold = 40
34 |
35 | self.pixelCount_nobottom = self.pixelsLeft + self.pixelsRight + self.pixelsTop
36 |
37 | self.streamstarted = False
38 | self.noHDMI = True
39 |
40 | def takeScreenShot(self, filepath):
41 | # We have no screenshot since... well its just LEDs
42 | return True
43 |
44 | def startAudioStream(self):
45 | if self.streamstarted == True:
46 | while self.streamstarted == True:
47 | with sd.InputStream(
48 | device=self.deviceID,
49 | channels=1,
50 | callback=self.visualiseAudio,
51 | blocksize=int(self.samplerate * 50 / 1000),
52 | samplerate=self.samplerate,
53 | ):
54 | # running stream
55 | sd.wait()
56 |
57 | def teardown(self):
58 | # incase things need to be broken down
59 | self.log("Tearing down {}".format(self.Name))
60 | self.fade_out_pixels()
61 | sd.stop()
62 |
63 | def fadeToBlack(self, pixelPos):
64 | fadeValue = 128
65 | b, g, r = self.pixels[pixelPos]
66 |
67 | r = 0 if r <= 10 else int(r - (r * fadeValue / 255))
68 | g = 0 if g <= 10 else int(g - (g * fadeValue / 255))
69 | b = 0 if b <= 10 else int(b - (b * fadeValue / 255))
70 |
71 | self.pixels[pixelPos] = (b, g, r)
72 |
73 | def wheel(self, pos):
74 | # Input a value 0 to 255 to get a color value.
75 | # The colours are a transition r - g - b - back to r.
76 | if pos < 0 or pos > 255:
77 | return (0, 0, 0)
78 | if pos < 85:
79 | return (255 - pos * 3, pos * 3, 0)
80 | if pos < 170:
81 | pos -= 85
82 | return (0, 255 - pos * 3, pos * 3)
83 | pos -= 170
84 | return (pos * 3, 0, 255 - pos * 3)
85 |
86 | def rainbow_cycle(self, j):
87 | for i in range(self.pixelCount_nobottom):
88 | rc_index = (i * 256 // self.pixelCount_nobottom) + j
89 | self.pixels[i] = self.wheel(rc_index & 255)
90 | self.getFrame(False) # hack to have 'FPS'
91 | self.pixels.show()
92 |
93 | def visualiseAudio(self, indata, frames, time, status):
94 | if any(indata):
95 |
96 | magnitude = np.abs(np.fft.rfft(indata[:, 0], n=self.fftsize))
97 | magnitude *= self.gain / self.fftsize
98 | audio_channels = []
99 |
100 | for x in magnitude[self.low_bin : self.low_bin + self.columns]:
101 | audio_channel_val = int(np.clip(x, 0, 1) * (255))
102 |
103 | if audio_channel_val >= self.threshhold:
104 | audio_channels.append(audio_channel_val)
105 | else:
106 | audio_channels.append(0)
107 |
108 | d = deque(audio_channels)
109 | d.rotate(self.pixelsLeft) # start top left? why not.
110 | audio_channels = list(d)
111 |
112 | chan_led_width = round(self.pixelCount_nobottom / len(audio_channels))
113 |
114 | for key, val in enumerate(audio_channels):
115 |
116 | first_pixel = key * chan_led_width
117 | last_pixel = first_pixel + chan_led_width - 1
118 | if last_pixel > self.pixelCount_nobottom:
119 | last_pixel = self.pixelCount_nobottom - 1
120 |
121 | for pNum in range(first_pixel, last_pixel + 1):
122 | col = self.wheel(pNum)
123 | if val != 0:
124 | self.pixels[pNum] = col
125 | else:
126 | self.fadeToBlack(pNum)
127 |
128 | count = 0
129 | for x in audio_channels:
130 | if x != 0:
131 | count += 1
132 |
133 | testLine = ""
134 | for i in range(len(audio_channels)):
135 | testLine += str(audio_channels[i]).zfill(2) + "|"
136 |
137 | count = 0
138 | for x in self.pixels:
139 | if x != [0, 0, 0]:
140 | count += 1
141 |
142 | self.pixels.show()
143 | else:
144 | self.log("No Audio data in")
145 |
146 | def visualise(self):
147 | with sd.InputStream(
148 | device=self.deviceID,
149 | channels=1,
150 | callback=self.visualiseAudio,
151 | blocksize=int(self.samplerate * 50 / 1000),
152 | samplerate=self.samplerate,
153 | ):
154 | # running stream
155 | sd.wait()
156 |
157 | time.sleep(0.01)
158 |
--------------------------------------------------------------------------------
/extensions/Aurora_Configure.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import neopixel
3 | import time
4 | import datetime
5 | import numpy as np
6 | import pandas as pd
7 | import board
8 | import cv2
9 | import sys
10 |
11 |
12 | class Aurora_Configure(AuroraExtension):
13 | def __init__(self, NeoPixels, HDMI):
14 | super().__init__(NeoPixels, HDMI)
15 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
16 | self.Description = "This extension configures the LEDs"
17 | self.Name = "Aurora Ambient Lighting Configuration"
18 | self.count = 0
19 | self.current_frame = False
20 | self.percent = 3
21 |
22 | def setup(self):
23 | return True
24 |
25 | def visualise(self):
26 | # Capture the video frame
27 | ret, self.current_frame = self.getFrame()
28 | self.vid_h, self.vid_w, self.channels = self.current_frame.shape
29 | pos = 0
30 |
31 | colour = (255, 0, 0) # red
32 |
33 | for i in range(pos, pos + self.pixelsLeft):
34 | self.pixels[i] = colour
35 |
36 | pos = pos + self.pixelsLeft
37 |
38 | colour = (0, 255, 0) # green
39 | for x in range(pos, pos + self.pixelsTop):
40 | self.pixels[x] = colour
41 |
42 | pos = pos + self.pixelsTop
43 | colour = (0, 0, 255) # blue
44 | for y in range(pos, pos + self.pixelsRight):
45 | self.pixels[y] = colour
46 |
47 | pos = pos + self.pixelsRight
48 |
49 | colour = (255, 255, 255) # white
50 | for z in range(pos, pos + self.pixelsBottom):
51 | self.pixels[z] = colour
52 |
53 | self.pixels.show()
54 |
--------------------------------------------------------------------------------
/extensions/Aurora_Meteor.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | import datetime
4 | import numpy as np
5 | import pandas as pd
6 | import cv2
7 | from random import randint
8 |
9 |
10 | class Aurora_Meteor(AuroraExtension):
11 | def __init__(self, NeoPixels, HDMI):
12 | super().__init__(NeoPixels, HDMI)
13 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
14 | self.Description = (
15 | "This has a 'meteor' effect in a random colour that shoots around the strip"
16 | )
17 | self.Name = "Aurora Meteor Display ( LED Only )"
18 | self.count = 0
19 | self.current_frame = False
20 | self.meteorSize = 10
21 | self.currentCol = (255, 0, 0)
22 | self.noHDMI = True
23 | self.startTime = time.time()
24 |
25 | def takeScreenShot(self, filepath):
26 | # We have no screenshot since... well its just LEDs
27 | return True
28 |
29 | def fadeToBlack(self, pixelPos):
30 | fadeValue = 64
31 | b, g, r = self.pixels[pixelPos]
32 |
33 | r = 0 if r <= 10 else int(r - (r * fadeValue / 255))
34 | g = 0 if g <= 10 else int(g - (g * fadeValue / 255))
35 | b = 0 if b <= 10 else int(b - (b * fadeValue / 255))
36 |
37 | self.pixels[pixelPos] = (b, g, r)
38 |
39 | def meteorRain(self, i, col):
40 |
41 | # Fade out
42 | for j in range(self.pixelsCount):
43 | if randint(0, 10) > 5:
44 | self.fadeToBlack(j)
45 |
46 | for j in range(self.meteorSize):
47 | if (i - j < self.pixelsCount) and (i - j >= 0):
48 | self.pixels[i - j] = col
49 |
50 | self.pixels.show()
51 |
52 | def visualise(self):
53 |
54 | # visualise!
55 | self.count += 5
56 | self.meteorRain(self.count, self.currentCol)
57 | if self.count >= self.pixelsCount + self.meteorSize:
58 | end = time.time()
59 | diff = end - self.startTime
60 | self.startTime = time.time()
61 | self.count = 0
62 | self.currentCol = (randint(0, 255), randint(0, 255), randint(0, 255))
63 |
--------------------------------------------------------------------------------
/extensions/Aurora_Rainbow.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | import datetime
4 | import numpy as np
5 | import pandas as pd
6 | import cv2
7 |
8 |
9 | class Aurora_Rainbow(AuroraExtension):
10 | def __init__(self, NeoPixels, HDMI):
11 | super().__init__(NeoPixels, HDMI)
12 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
13 | self.Description = "This extension displays a rainbow pattern on the LEDs, a lot of this code is from https://learn.adafruit.com/circuitpython-essentials/circuitpython-neopixel"
14 | self.Name = "Aurora Rainbow Display ( LED Only )"
15 | self.count = 0
16 | self.current_frame = False
17 | self.noHDMI = True
18 |
19 | def takeScreenShot(self, filepath):
20 | # We have no screenshot since... well its just LEDs
21 | return True
22 |
23 | def wheel(self, pos):
24 | # Input a value 0 to 255 to get a color value.
25 | # The colours are a transition r - g - b - back to r.
26 | if pos < 0 or pos > 255:
27 | return (0, 0, 0)
28 | if pos < 85:
29 | return (255 - pos * 3, pos * 3, 0)
30 | if pos < 170:
31 | pos -= 85
32 | return (0, 255 - pos * 3, pos * 3)
33 | pos -= 170
34 | return (pos * 3, 0, 255 - pos * 3)
35 |
36 | def rainbow_cycle(self, j):
37 | for i in range(self.pixelsCount):
38 | rc_index = (i * 256 // self.pixelsCount) + j
39 | self.pixels[i] = self.wheel(rc_index & 255)
40 | self.getFrame(False) # hack to have 'FPS'
41 | self.pixels.show()
42 |
43 | def visualise(self):
44 |
45 | # visualise!
46 | self.count += 1
47 | self.rainbow_cycle(self.count)
48 | if self.count == 255:
49 | self.count = 0
50 |
51 | time.sleep(0.01)
52 |
--------------------------------------------------------------------------------
/extensions/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/extensions/__init__.py
--------------------------------------------------------------------------------
/extensions/exampleExtension.py:
--------------------------------------------------------------------------------
1 | from lib.AuroraExtension import AuroraExtension
2 | import time
3 | from random import randint, choice
4 | import numpy as np
5 | import cv2
6 |
7 |
8 | class exampleExtension(AuroraExtension):
9 | def __init__(self, NeoPixels, HDMI):
10 | super().__init__(NeoPixels, HDMI)
11 | self.Author = "Andrew MacPherson (@AndrewMohawk)"
12 | self.Description = "Extension Example"
13 | self.Name = "example extension"
14 | self.count = 0
15 | self.randomLED = 0
16 | self.randomSize = 0
17 | self.log("Extension {} Initiated".format(self.Name))
18 |
19 | # This doesnt need to be implemented, but can if you want
20 | # def takeScreenShot(self, filepath):
21 |
22 | # Fade LEDs to Black (so they dont instantly drop off)
23 | def fadeToBlack(self, pixelPos):
24 | fadeValue = 0.2
25 | b, g, r = self.pixels[pixelPos]
26 |
27 | r = 0 if r <= 10 else int(r - (r * fadeValue))
28 | g = 0 if g <= 10 else int(g - (g * fadeValue))
29 | b = 0 if b <= 10 else int(b - (b * fadeValue))
30 | self.pixels[pixelPos] = (b, g, r)
31 |
32 | # Fade LEDs to bright (or first block to 255) so they dont just spotlight
33 | def fadeToBright(self, pixelPos):
34 |
35 | fadeValue = 1.2
36 | b, g, r = self.pixels[pixelPos]
37 |
38 | if r == 255 or g == 255 or b == 255:
39 | return
40 | r = 255 if r >= 200 else int(r + (r * fadeValue))
41 | g = 255 if g >= 200 else int(g + (g * fadeValue))
42 | b = 255 if b >= 200 else int(b + (b * fadeValue))
43 |
44 | self.pixels[pixelPos] = (b, g, r)
45 |
46 | # This will 'visualise' whatever you want and will be called every ~0.01s
47 | def visualise(self):
48 |
49 | # Grab a 'frame' of the screen:
50 | ret, self.current_frame = self.getFrame()
51 |
52 | # Theres something on the screen
53 | if ret:
54 | self.count = self.count + 1
55 |
56 | if self.count <= 1:
57 | if self.count == 1:
58 | self.log("Setting up colours")
59 | # Lets get a random size for our group of pixels between 5 and 50
60 | self.randomSize = randint(5, 50)
61 |
62 | # Lets pick a random LED to turn on
63 | self.randomLED = randint(0, self.pixelsCount - self.randomSize)
64 |
65 | # Lets get a random starting colour that we will scale up
66 | self.colour = (randint(0, 10), randint(0, 10), randint(0, 10))
67 |
68 | # Set the colour
69 | for x in range(self.randomLED, self.randomLED + self.randomSize):
70 | self.pixels[x] = self.colour
71 |
72 | elif self.count < 20:
73 | if self.count == 2:
74 | self.log("Fading up colours")
75 | # Fade it up
76 | for fade_up_pixel in range(
77 | self.randomLED, (self.randomLED + self.randomSize)
78 | ):
79 | self.fadeToBright(fade_up_pixel)
80 |
81 | elif self.count < 40:
82 | if self.count == 21:
83 | self.log("Fading out colours")
84 | for fade_out_pixel in range(
85 | self.randomLED, (self.randomLED + self.randomSize)
86 | ):
87 | self.fadeToBlack(fade_out_pixel)
88 |
89 | else:
90 | if self.count == 40:
91 | self.log("Resetting colours")
92 | self.count = 0
93 |
94 | # And show it
95 | self.pixels.show()
96 |
--------------------------------------------------------------------------------
/github/Aurora_Ambient_Light_test_video.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/github/Aurora_Ambient_Light_test_video.gif
--------------------------------------------------------------------------------
/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo -e "
3 | ▄▄▄ █ ██ ██▀███ ▒█████ ██▀███ ▄▄▄
4 | ▒████▄ ██ ▓██▒▓██ ▒ ██▒▒██▒ ██▒▓██ ▒ ██▒▒████▄
5 | ▒██ ▀█▄ ▓██ ▒██░▓██ ░▄█ ▒▒██░ ██▒▓██ ░▄█ ▒▒██ ▀█▄
6 | ░██▄▄▄▄██ ▓▓█ ░██░▒██▀▀█▄ ▒██ ██░▒██▀▀█▄ ░██▄▄▄▄██
7 | ▓█ ▓██▒▒▒█████▓ ░██▓ ▒██▒░ ████▓▒░░██▓ ▒██▒ ▓█ ▓██▒
8 | ▒▒ ▓▒█░░▒▓▒ ▒ ▒ ░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ▒▒ ▓▒█░
9 | ▒ ▒▒ ░░░▒░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ▒ ▒▒ ░
10 | ░ ▒ ░░░ ░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒
11 | ░ ░ ░ ░ ░ ░ ░ ░ ░
12 | -Install Script-
13 | @AndrewMohawk
14 | "
15 | INSTALLDIR="/opt/Aurora"
16 | if [[ $EUID -ne 0 ]]; then
17 | echo "This script must be run as root, please use sudo"
18 | exit 1
19 | fi
20 |
21 | if [ -d "$INSTALLDIR" ]
22 | then
23 | echo "Directory $INSTALLDIR exists. Please remove before performing a clean install"
24 | exit 1
25 | fi
26 | echo "[+] Creating Install Directory"
27 | echo "------------------------------"
28 | mkdir $INSTALLDIR
29 | cd $INSTALLDIR
30 | echo "[+] Updating APT and installing dependencies"
31 | echo "------------------------------"
32 | apt update
33 | apt-get install -y libatlas-base-dev libportaudio2 python3-pip git python3-opencv
34 | echo "[+] Git Cloning Aurora base"
35 | echo "------------------------------"
36 | git clone https://github.com/AndrewMohawk/Aurora.git .
37 | cp config.ini.bak config.ini
38 | echo "[+] Installing Python Requirements"
39 | echo "------------------------------"
40 | pip3 install -r requirements.txt
41 | echo "[+] Installing Service"
42 | echo "------------------------------"
43 | cp aurora.service /etc/systemd/system
44 | systemctl enable aurora.service
45 | systemctl start aurora.service
46 | echo "[+] Service Status"
47 | echo "------------------------------"
48 | echo "Aurora status: `systemctl is-active aurora.service`"
49 | echo "[+] Last 20 lines of aurora log"
50 | echo "------------------------------"
51 | journalctl -u aurora -n 20 --no-pager
52 | echo -e "
53 | ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
54 | (___|___|___|___|___|___|___|___|___|___|___|___)
55 | "
56 | echo "Complete. You can now browse to the web interface to configure any changes you may need."
57 | localip=$(hostname -I)
58 | echo "This will likely be: http://$localip"
59 |
--------------------------------------------------------------------------------
/lib/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/lib/__init__.py
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy >= 1.16.5
2 | pandas
3 | opencv-python==4.5.1.48
4 | cherrypy
5 | configparser
6 | adafruit-circuitpython-neopixel
7 | blinker
8 | jinja2
9 | sounddevice
10 | pyaudio
11 |
--------------------------------------------------------------------------------
/update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo -e "
3 | ▄▄▄ █ ██ ██▀███ ▒█████ ██▀███ ▄▄▄
4 | ▒████▄ ██ ▓██▒▓██ ▒ ██▒▒██▒ ██▒▓██ ▒ ██▒▒████▄
5 | ▒██ ▀█▄ ▓██ ▒██░▓██ ░▄█ ▒▒██░ ██▒▓██ ░▄█ ▒▒██ ▀█▄
6 | ░██▄▄▄▄██ ▓▓█ ░██░▒██▀▀█▄ ▒██ ██░▒██▀▀█▄ ░██▄▄▄▄██
7 | ▓█ ▓██▒▒▒█████▓ ░██▓ ▒██▒░ ████▓▒░░██▓ ▒██▒ ▓█ ▓██▒
8 | ▒▒ ▓▒█░░▒▓▒ ▒ ▒ ░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ▒▒ ▓▒█░
9 | ▒ ▒▒ ░░░▒░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ▒ ▒▒ ░
10 | ░ ▒ ░░░ ░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒
11 | ░ ░ ░ ░ ░ ░ ░ ░ ░
12 | -Update Script-
13 | @AndrewMohawk
14 | "
15 | INSTALLDIR="/opt/Aurora"
16 | if [[ $EUID -ne 0 ]]; then
17 | echo "This script must be run as root, please use sudo"
18 | exit 1
19 | fi
20 |
21 | if [ ! -d "$INSTALLDIR" ]
22 | then
23 | echo "Directory $INSTALLDIR Does not exist. Please run install first or update the install directory"
24 | exit 1
25 | fi
26 | cd $INSTALLDIR
27 | if [ -d .git ]; then
28 | echo "[+] Git Cloning Aurora base"
29 | echo "------------------------------"
30 | git pull
31 | echo "[+] Stopping Aurora"
32 | echo "------------------------------"
33 | service aurora stop
34 | echo "[+] Service Status"
35 | echo "------------------------------"
36 | echo "Aurora status: `systemctl is-active aurora.service`"
37 | echo "[+] Starting Aurora"
38 | echo "------------------------------"
39 | service aurora start
40 | echo "[+] Service Status"
41 | echo "------------------------------"
42 | echo "Aurora status: `systemctl is-active aurora.service`"
43 | echo "[+] Last 20 lines of aurora log"
44 | echo "------------------------------"
45 | journalctl -u aurora -n 20 --no-pager
46 | echo -e "
47 | ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
48 | (___|___|___|___|___|___|___|___|___|___|___|___)
49 | "
50 | echo "Complete. You can now browse to the web interface to configure any changes you may need."
51 | localip=$(hostname -I)
52 | echo "This will likely be: http://$localip"
53 |
54 | else
55 | echo "This install directory ($INSTALLDIR) is *NOT* a git repo."
56 | fi;
57 |
--------------------------------------------------------------------------------
/webserver/static/css/bootstrap-slider.min.css:
--------------------------------------------------------------------------------
1 | /*! =======================================================
2 | VERSION 11.0.2
3 | ========================================================= */
4 | /*! =========================================================
5 | * bootstrap-slider.js
6 | *
7 | * Maintainers:
8 | * Kyle Kemp
9 | * - Twitter: @seiyria
10 | * - Github: seiyria
11 | * Rohit Kalkur
12 | * - Twitter: @Rovolutionary
13 | * - Github: rovolution
14 | *
15 | * =========================================================
16 | *
17 | * bootstrap-slider is released under the MIT License
18 | * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors
19 | *
20 | * Permission is hereby granted, free of charge, to any person
21 | * obtaining a copy of this software and associated documentation
22 | * files (the "Software"), to deal in the Software without
23 | * restriction, including without limitation the rights to use,
24 | * copy, modify, merge, publish, distribute, sublicense, and/or sell
25 | * copies of the Software, and to permit persons to whom the
26 | * Software is furnished to do so, subject to the following
27 | * conditions:
28 | *
29 | * The above copyright notice and this permission notice shall be
30 | * included in all copies or substantial portions of the Software.
31 | *
32 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
34 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
36 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
38 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
39 | * OTHER DEALINGS IN THE SOFTWARE.
40 | *
41 | * ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-low,.slider.slider-horizontal .slider-track-high{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-tick,.slider.slider-horizontal .slider-handle{margin-left:-10px}.slider.slider-horizontal .slider-tick.triangle,.slider.slider-horizontal .slider-handle.triangle{position:relative;top:50%;transform:translateY(-50%);border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#036fa5;margin-top:0}.slider.slider-horizontal .slider-tick-container{white-space:nowrap;position:absolute;top:0;left:0;width:100%}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{display:inline-block;text-align:center}.slider.slider-horizontal.slider-rtl .slider-track{left:initial;right:0}.slider.slider-horizontal.slider-rtl .slider-tick,.slider.slider-horizontal.slider-rtl .slider-handle{margin-left:initial;margin-right:-10px}.slider.slider-horizontal.slider-rtl .slider-tick-container{left:initial;right:0}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;left:25%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-low,.slider.slider-vertical .slider-track-high{width:100%;left:0;right:0}.slider.slider-vertical .slider-tick,.slider.slider-vertical .slider-handle{margin-top:-10px}.slider.slider-vertical .slider-tick.triangle,.slider.slider-vertical .slider-handle.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#036fa5;margin-left:0}.slider.slider-vertical .slider-tick-label-container{white-space:nowrap}.slider.slider-vertical .slider-tick-label-container .slider-tick-label{padding-left:4px}.slider.slider-vertical.slider-rtl .slider-track{left:initial;right:25%}.slider.slider-vertical.slider-rtl .slider-selection{left:initial;right:0}.slider.slider-vertical.slider-rtl .slider-tick.triangle,.slider.slider-vertical.slider-rtl .slider-handle.triangle{border-width:10px 10px 10px 0}.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label{padding-left:initial;padding-right:4px}.slider.slider-disabled .slider-handle{background-color:#cfcfcf;background-image:-moz-linear-gradient(top, #DFDFDF, #BEBEBE);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#DFDFDF), to(#BEBEBE));background-image:-webkit-linear-gradient(top, #DFDFDF, #BEBEBE);background-image:-o-linear-gradient(top, #DFDFDF, #BEBEBE);background-image:linear-gradient(to bottom, #DFDFDF, #BEBEBE);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#DFDFDF', endColorstr='#BEBEBE',GradientType=0)}.slider.slider-disabled .slider-track{background-color:#e7e7e7;background-image:-moz-linear-gradient(top, #E5E5E5, #E9E9E9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#E5E5E5), to(#E9E9E9));background-image:-webkit-linear-gradient(top, #E5E5E5, #E9E9E9);background-image:-o-linear-gradient(top, #E5E5E5, #E9E9E9);background-image:linear-gradient(to bottom, #E5E5E5, #E9E9E9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E5E5E5', endColorstr='#E9E9E9',GradientType=0);cursor:not-allowed}.slider input{display:none}.slider .tooltip-inner{white-space:nowrap;max-width:none}.slider .bs-tooltip-top .tooltip-inner,.slider .bs-tooltip-bottom .tooltip-inner{position:relative;left:-50%}.slider.bs-tooltip-left .tooltip-inner,.slider.bs-tooltip-right .tooltip-inner{position:relative;top:-100%}.slider .tooltip{pointer-events:none}.slider .tooltip.bs-tooltip-top .arrow,.slider .tooltip.bs-tooltip-bottom .arrow{left:-.4rem}.slider .tooltip.bs-tooltip-top{margin-top:-44px}.slider .tooltip.bs-tooltip-bottom{margin-top:2px}.slider .tooltip.bs-tooltip-left,.slider .tooltip.bs-tooltip-right{margin-top:-14px}.slider .tooltip.bs-tooltip-left .arrow,.slider .tooltip.bs-tooltip-right .arrow{top:8px}.slider .hide{display:none}.slider-track{background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#F9F9F9));background-image:-webkit-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:-o-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:linear-gradient(to bottom, #f5f5f5, #F9F9F9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#F9F9F9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;position:absolute;cursor:pointer}.slider-selection{background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #F9F9F9, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#F9F9F9), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #F9F9F9, #f5f5f5);background-image:-o-linear-gradient(top, #F9F9F9, #f5f5f5);background-image:linear-gradient(to bottom, #F9F9F9, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F9F9F9', endColorstr='#f5f5f5',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;position:absolute}.slider-selection.tick-slider-selection{background-color:#46c1fe;background-image:-moz-linear-gradient(top, #52c5ff, #3abcfd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#52c5ff), to(#3abcfd));background-image:-webkit-linear-gradient(top, #52c5ff, #3abcfd);background-image:-o-linear-gradient(top, #52c5ff, #3abcfd);background-image:linear-gradient(to bottom, #52c5ff, #3abcfd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52c5ff', endColorstr='#3abcfd',GradientType=0)}.slider-track-low,.slider-track-high{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;position:absolute;background:transparent}.slider-handle{background-color:#0478b2;background-image:-moz-linear-gradient(top, #0480BE, #036fa5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0480BE), to(#036fa5));background-image:-webkit-linear-gradient(top, #0480BE, #036fa5);background-image:-o-linear-gradient(top, #0480BE, #036fa5);background-image:linear-gradient(to bottom, #0480BE, #036fa5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0480BE', endColorstr='#036fa5',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);position:absolute;top:0;width:20px;height:20px;background-color:#0480BE;border:0px solid transparent}.slider-handle:hover{cursor:pointer}.slider-handle.round{-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px}.slider-handle.triangle{background:transparent none}.slider-handle.custom{background:transparent none}.slider-handle.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick{background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#F9F9F9));background-image:-webkit-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:-o-linear-gradient(top, #f5f5f5, #F9F9F9);background-image:linear-gradient(to bottom, #f5f5f5, #F9F9F9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#F9F9F9',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;cursor:pointer;width:20px;height:20px;filter:none;opacity:0.8;border:0px solid transparent}.slider-tick.round{border-radius:50%}.slider-tick.triangle{background:transparent none}.slider-tick.custom{background:transparent none}.slider-tick.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick.in-selection{background-color:#46c1fe;background-image:-moz-linear-gradient(top, #52c5ff, #3abcfd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#52c5ff), to(#3abcfd));background-image:-webkit-linear-gradient(top, #52c5ff, #3abcfd);background-image:-o-linear-gradient(top, #52c5ff, #3abcfd);background-image:linear-gradient(to bottom, #52c5ff, #3abcfd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52c5ff', endColorstr='#3abcfd',GradientType=0);opacity:1}
42 |
43 | /*# sourceMappingURL=bootstrap-slider.min.css.map */
44 | Extension Disabled
45 |
--------------------------------------------------------------------------------
/webserver/static/favicon/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/android-chrome-192x192.png
--------------------------------------------------------------------------------
/webserver/static/favicon/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/android-chrome-512x512.png
--------------------------------------------------------------------------------
/webserver/static/favicon/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/apple-touch-icon.png
--------------------------------------------------------------------------------
/webserver/static/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/webserver/static/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/webserver/static/favicon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/favicon/favicon.ico
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-brands-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-brands-400.eot
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-brands-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-brands-400.woff
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-regular-400.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-regular-400.eot
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-regular-400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-regular-400.woff
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-solid-900.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-solid-900.eot
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-solid-900.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-solid-900.woff
--------------------------------------------------------------------------------
/webserver/static/fonts/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/fonts/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/webserver/static/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/2.png
--------------------------------------------------------------------------------
/webserver/static/images/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/ad.png
--------------------------------------------------------------------------------
/webserver/static/images/ath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/ath.png
--------------------------------------------------------------------------------
/webserver/static/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/close.png
--------------------------------------------------------------------------------
/webserver/static/images/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/empty.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/AjaxLoader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/AjaxLoader.gif
--------------------------------------------------------------------------------
/webserver/static/images/framework/AuroraLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/AuroraLogo.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/activity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/activity.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/deco-slash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/deco-slash.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/deco-zig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/deco-zig.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/grabbing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/grabbing.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/icons.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/icons.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/webserver/static/images/framework/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/loader.gif
--------------------------------------------------------------------------------
/webserver/static/images/framework/page-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/page-loader.gif
--------------------------------------------------------------------------------
/webserver/static/images/framework/pattern_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pattern_1.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/pay-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pay-1.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/pay-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pay-2.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/pay-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pay-3.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/pay-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pay-4.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/pay-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/pay-5.png
--------------------------------------------------------------------------------
/webserver/static/images/framework/preload.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/framework/preload.gif
--------------------------------------------------------------------------------
/webserver/static/images/framework/puff.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
19 |
20 |
21 |
28 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/webserver/static/images/header-oldlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/header-oldlogo.png
--------------------------------------------------------------------------------
/webserver/static/images/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/header.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/1.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/10.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/11.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/12.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/13.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/14.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/15.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/16.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/17.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/18.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/19.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/2.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/3.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/4.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/5.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/6.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/7.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/8.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/icons/9.png
--------------------------------------------------------------------------------
/webserver/static/images/icons/license.txt:
--------------------------------------------------------------------------------
1 | https://www.iconfinder.com/iconsets/round-varieties
2 |
3 | 19 PNG icons by Creaticca Ltd - License: Creative Commons (Attribution 3.0 Unported)
--------------------------------------------------------------------------------
/webserver/static/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/loading.gif
--------------------------------------------------------------------------------
/webserver/static/images/menu-img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/menu-img.png
--------------------------------------------------------------------------------
/webserver/static/images/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/next.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/1s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/1s.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/1small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/1small.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/2s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/2s.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/2small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/2small.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/3s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/3s.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/3small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/3small.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/4s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/4s.png
--------------------------------------------------------------------------------
/webserver/static/images/pictures/faces/4small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/pictures/faces/4small.png
--------------------------------------------------------------------------------
/webserver/static/images/preload-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/preload-logo.png
--------------------------------------------------------------------------------
/webserver/static/images/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/prev.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/Thumbs.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/Thumbs.db
--------------------------------------------------------------------------------
/webserver/static/images/splash/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/android-chrome-192x192.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-114x114.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-120x120.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-144x144.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-152x152.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-180x180.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-196x196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-196x196.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-57x57.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-60x60.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-72x72.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/apple-touch-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/apple-touch-icon-76x76.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/favicon-16x16.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/favicon-32x32.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/favicon-96x96.png
--------------------------------------------------------------------------------
/webserver/static/images/splash/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AndrewMohawk/Aurora/039dbea649dbff6a782c770719081b26d542c7f3/webserver/static/images/splash/favicon.ico
--------------------------------------------------------------------------------
/webserver/static/images/undraw/2.svg:
--------------------------------------------------------------------------------
1 | develop_app
--------------------------------------------------------------------------------
/webserver/static/images/undraw/3.svg:
--------------------------------------------------------------------------------
1 | researching
--------------------------------------------------------------------------------
/webserver/static/images/undraw/5.svg:
--------------------------------------------------------------------------------
1 | speed test
--------------------------------------------------------------------------------
/webserver/static/images/undraw/6.svg:
--------------------------------------------------------------------------------
1 | gift1
--------------------------------------------------------------------------------
/webserver/static/images/undraw/7.svg:
--------------------------------------------------------------------------------
1 | sign_in
--------------------------------------------------------------------------------
/webserver/static/images/undraw/_license_and_link.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\ansi\ansicpg1252\cocoartf2512
2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\froman\fcharset0 Times-Roman;\f2\fswiss\fcharset0 Helvetica-Bold;
3 | }
4 | {\colortbl;\red255\green255\blue255;\red0\green0\blue233;\red63\green63\blue63;\red255\green255\blue255;
5 | }
6 | {\*\expandedcolortbl;;\cssrgb\c0\c0\c93333;\cssrgb\c31373\c31373\c31373;\cssrgb\c100000\c100000\c100000;
7 | }
8 | \margl1440\margr1440\vieww25360\viewh18140\viewkind0
9 | \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
10 |
11 | \f0\fs36 \cf0 \
12 | Free Illustrations URL: {\field{\*\fldinst{HYPERLINK "https://undraw.co/illustrations"}}{\fldrslt
13 | \f1\fs24 \cf2 \expnd0\expndtw0\kerning0
14 | \ul \ulc2 \outl0\strokewidth0 \strokec2 https://undraw.co/illustrations}}\
15 | License URL: {\field{\*\fldinst{HYPERLINK "https://undraw.co/license"}}{\fldrslt
16 | \f1\fs24 \cf2 \expnd0\expndtw0\kerning0
17 | \ul \ulc2 \outl0\strokewidth0 \strokec2 https://undraw.co/license}}\
18 | \pard\pardeftab720\sa480\partightenfactor0
19 |
20 | \f2\b\fs32 \cf3 \cb4 \expnd0\expndtw0\kerning0
21 | \outl0\strokewidth0 \strokec3 Copyright\'a02020\'a0Katerina Limpitsouni\
22 | \pard\pardeftab720\sl480\sa320\partightenfactor0
23 |
24 | \f0\b0 \cf3 All images, assets and vectors published on unDraw can be used for free. You can use them for noncommercial and commercial purposes. You do not need to ask permission from or provide credit to the creator or unDraw.\
25 | More precisely, unDraw grants you an nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use the assets provided from unDraw for free, including for commercial purposes, without permission from or attributing the creator or unDraw. This license does not include the right to compile assets, vectors or images from unDraw to replicate a similar or competing service, in any form or distribute the assets in packs. This extends to automated and non-automated ways to link, embed, scrape, search or download the assets included on the website without our consent.\
26 | \pard\pardeftab720\sa480\partightenfactor0
27 |
28 | \f2\b \cf3 Regarding brand logos that are included:\
29 | \pard\pardeftab720\sl480\sa320\partightenfactor0
30 |
31 | \f0\b0 \cf3 Are registered trademarks of their respected owners. Are included on a promotional basis and do not represent an association with unDraw or its users. Do not indicate any kind of endorsement of the trademark holder towards unDraw, nor vice versa. Are provided with the sole purpose to represent the actual brand/service/company that has registered the trademark and must not be used otherwise.\
32 | }
--------------------------------------------------------------------------------
/webserver/static/images/undraw/a.svg:
--------------------------------------------------------------------------------
1 | Hello
--------------------------------------------------------------------------------
/webserver/static/images/undraw/b.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/webserver/static/images/undraw/c.svg:
--------------------------------------------------------------------------------
1 | new_ideas
--------------------------------------------------------------------------------
/webserver/static/images/undraw/d.svg:
--------------------------------------------------------------------------------
1 | code review
--------------------------------------------------------------------------------
/webserver/static/images/undraw/e.svg:
--------------------------------------------------------------------------------
1 | insert
--------------------------------------------------------------------------------
/webserver/static/js/aurora-configure.js:
--------------------------------------------------------------------------------
1 | function fetch_config_data() {
2 | ajax_send_data = {}
3 | ajax_send_data["pixelcount_left"] = $('#aurora_configure_left').val()
4 | ajax_send_data["pixelcount_right"] = $('#aurora_configure_right').val()
5 | ajax_send_data["pixelcount_top"] = $('#aurora_configure_top').val()
6 | ajax_send_data["pixelcount_bottom"] = $('#aurora_configure_bottom').val()
7 | ajax_send_data["darkthreshhold"] = $('#aurora_config_darkthreshhold').val()
8 | ajax_send_data["hdmi_gamma"] = $('#hdmi_gamma').val()
9 | return ajax_send_data
10 | }
11 | $('#aurora_configure_save_button').on("click", function (event) {
12 |
13 | ajax_send_data = fetch_config_data()
14 | ajax_send_data["save"] = true
15 | ajax_save_config = make_AJAX_Call("/update_LED_config", ajax_send_data)
16 | if (ajax_save_config["status"] == "ok") {
17 | reload_pixel_image();
18 | create_snackbar("Pixel Configuration", "Successfully saved system config", "success")
19 | }
20 | });
21 |
22 |
23 | //Stepper Add
24 | $('.stepper-add').on('click',function(){
25 | var num = +$(this).parent().find('input').val() + 1;
26 | $(this).parent().find('input').val(num);
27 | //return false;
28 | });
29 | $('.stepper-sub').on('click',function(){
30 | var num = $(this).parent().find('input').val() - 1;
31 | if(num >= 0){$(this).parent().find('input').val(num);}
32 | //return false;
33 | });
34 |
35 | $('.stepper-add, .stepper-sub').on("click", function (event) {
36 |
37 | ajax_send_data = fetch_config_data()
38 | ajax_response = make_AJAX_Call("/update_LED_config", ajax_send_data);
39 | if (ajax_response["status"] == "ok") {
40 | reload_pixel_image();
41 | }
42 | })
43 |
44 |
45 | $('#hdmi_hue, #hdmi_saturation,#hdmi_brightness,#hdmi_contrast,#hdmi_gamma').on("slideStop", function (event) {
46 | val = $(this).val()
47 | id = $(this).attr("id")
48 | setHDMIValues();
49 | })
50 |
51 | function save_hdmi_image()
52 | {
53 | ajax_send_data = fetch_config_data()
54 | ajax_send_data["save"] = true
55 | ajax_response = make_AJAX_Call("/update_HDMI_config", ajax_send_data);
56 | if (ajax_response["status"] == "ok") {
57 | make_AJAX_Call("/screenshot/", {})
58 | reload_hdmi_image();
59 | }
60 | }
61 |
62 | function reloadImages() {
63 | make_AJAX_Call("/screenshot/", {})
64 | d = new Date();
65 | $("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
66 | $("#image_pixels").attr("src", "/load_pixel_image?" + d.getTime());
67 | secondsBeforeReload = 5;
68 | }
69 |
70 | function setHDMIValues()
71 | {
72 | ajax_send_data = fetch_config_data()
73 | ajax_response = make_AJAX_Call("/update_HDMI_config", ajax_send_data);
74 | if (ajax_response["status"] == "ok") {
75 | make_AJAX_Call("/screenshot/", {})
76 | reload_hdmi_image();
77 | }
78 | }
79 | function reset_gamma(hue_gamma)
80 | {
81 | $('#hdmi_gamma').slider('setValue',hue_gamma)
82 | setHDMIValues()
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/webserver/static/js/aurora-generic.js:
--------------------------------------------------------------------------------
1 | currentAjaxRequest = null; // Stores our current ajax request so we can cancel it if we do another
2 |
3 | function togglePower()
4 | {
5 | make_AJAX_Call("/toggleEnable",[],function() {
6 | $('#powerToggle').toggleClass("color-theme")
7 | })
8 | }
9 |
10 | function make_AJAX_Call(url, data_dict, callback_function = false) {
11 |
12 | return_result = false;
13 | async_state = false
14 | if (callback_function) {
15 | async_state = true
16 | }
17 |
18 | currentAjaxRequest = $.ajax({
19 | type: "POST",
20 | url: url,
21 | data: JSON.stringify(data_dict),
22 | contentType: 'application/json',
23 | dataType: 'json',
24 | async: async_state, //we wait for these!
25 | success: function (data) {
26 | if (data["status"] == "error") {
27 | create_snackbar("Aurora Error", data["error"], "error")
28 | }
29 | if (callback_function) {
30 | callback_function(data)
31 | }
32 |
33 | return_result = data
34 | },
35 | error: function (data) {
36 | console.log("Error with AJAX reqest to " + url + " with ASync set to " + async_state + " returned the following:");
37 | console.log(data);
38 | return_result = data
39 | },
40 | beforeSend: function () {
41 | if (currentAjaxRequest != null) {
42 | currentAjaxRequest.abort();
43 | }
44 | },
45 | });
46 | //console.log("returning " + return_result["status"])
47 | return return_result
48 |
49 | }
50 |
51 | function create_snackbar(heading, message, type) {
52 | col = "bg-highlight"
53 | if (type == "success") {
54 | col = "bg-green-dark"
55 | }
56 | else if (type == "error") {
57 | col = "bg-red-dark"
58 | }
59 |
60 | snackDivUniqueID = "aurora_snackbar"
61 | snackDiv = $('
× ' + heading + ' ' + message + '
')
62 |
63 | $('#' + snackDivUniqueID).remove(); // if the prev one exists lets get rid of it
64 |
65 | $('body').prepend(snackDiv);
66 | $('#' + snackDivUniqueID).toast('show');
67 | return "okay done"
68 | }
69 |
70 |
71 | //These arent that 'generic', but its used on multiple pages so its going here.
72 |
73 | function showExtensionDetails(name) {
74 | if ($('#extension_details').is(':visible') == false) {
75 | $('#extension_details').slideDown();
76 | }
77 | //The 'extensions' dict is loaded onto pages that have it
78 | //TODO: this is hacky and should be properly loaded in
79 | extDetails = extensions[name]
80 |
81 | $('#ext_description').text(extDetails.Description)
82 | $('#ext_author').text(extDetails.Author)
83 |
84 | }
85 |
86 | function loadExtension(extension_name = false) {
87 | if (extension_name == false) {
88 | extension_name = $('#aurora_extension_dropdown').val()
89 | }
90 | data = { 'extension_name': extension_name }
91 | ajax_response = make_AJAX_Call("/update_extension", data)
92 | console.log(ajax_response);
93 | if (ajax_response["status"] == "ok") {
94 | create_snackbar("Extension Load", "Successfully loaded extension", "success")
95 | }
96 |
97 |
98 | }
99 |
100 | function reload_pixel_image() {
101 |
102 | pixel_image_reload = make_AJAX_Call("/screenshot/", {})
103 | //console.log(pixel_image_reload)
104 | if (pixel_image_reload["status"] == "ok") {
105 | d = new Date();
106 | $("#pixel_image").attr("src", "/load_pixel_image?" + d.getTime());
107 | }
108 | else {
109 | console.log(pixel_image_reload)
110 | }
111 | }
112 |
113 | function reload_hdmi_image() {
114 |
115 | pixel_image_reload = make_AJAX_Call("/screenshot/", {})
116 |
117 | d = new Date();
118 | $("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
119 | console.log("/load_screenshot?" + d.getTime())
120 |
121 | }
122 |
123 |
124 |
--------------------------------------------------------------------------------
/webserver/static/js/aurora-index.js:
--------------------------------------------------------------------------------
1 | function change_system_status()
2 | {
3 |
4 | $('#toggle_aurora_enabled').prop("disabled",true)
5 | enabled_stats = $('#toggle_aurora_enabled').prop('checked');
6 |
7 | data = {"enabled":enabled_stats}
8 | system_status_call = make_AJAX_Call("/update_config",data,toast_system_status)
9 |
10 |
11 | $('#toggle_aurora_enabled').prop("disabled",false)
12 |
13 |
14 | }
15 |
16 | function toast_system_status(system_status_call)
17 | {
18 | if(system_status_call["status"] == "ok")
19 | {
20 | if(system_status_call["message"])
21 | {
22 | create_snackbar("System Enabled Status",system_status_call["message"],"success")
23 | }
24 | else
25 | {
26 | create_snackbar("System Enabled Status","Successfully saved system config","success")
27 | }
28 | }
29 |
30 |
31 | }
32 |
33 |
34 |
35 | $('#aurora_extension_dropdown').on("change", function() { showExtensionDetails(this.value)})
36 |
37 | $('#toggle_aurora_enabled').on('click',function(){ change_system_status() })
--------------------------------------------------------------------------------
/webserver/static/js/aurora-view.js:
--------------------------------------------------------------------------------
1 | function change_system_status() {
2 |
3 | $('#toggle_aurora_enabled').prop("disabled", true)
4 | enabled_stats = $('#toggle_aurora_enabled').prop('checked');
5 |
6 | data = { "enabled": enabled_stats }
7 | system_status_call = make_AJAX_Call("/update_config", data, toast_system_status)
8 |
9 |
10 | $('#toggle_aurora_enabled').prop("disabled", false)
11 |
12 |
13 | }
14 |
15 | function toast_system_status(system_status_call) {
16 | if (system_status_call["status"] == "ok") {
17 | create_snackbar("System Enabled Status", "Successfully saved system config", "success")
18 | }
19 |
20 | }
21 |
22 |
23 |
24 | $('#aurora_extension_dropdown').on("change", function () { showExtensionDetails(this.value) })
25 |
26 | $('#toggle_aurora_enabled').on('click', function () { change_system_status() })
27 |
28 | var secondsBeforeReload = 5;
29 |
30 | function reloadImages() {
31 | make_AJAX_Call("/screenshot/", {})
32 | d = new Date();
33 | $("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
34 | $("#image_pixels").attr("src", "/load_pixel_image?" + d.getTime());
35 | secondsBeforeReload = 5;
36 | }
37 | function reloadCounter() {
38 | if ($('#toggle_images_reload').prop("checked")) {
39 | secondsBeforeReload--
40 | $('#reloadTime').text("(reloading in " + secondsBeforeReload + "s)")
41 | if (secondsBeforeReload == 0) {
42 | reloadImages();
43 |
44 | }
45 | }
46 |
47 | }
48 | var reloadTimer = setInterval(reloadCounter, 1000);
49 |
50 |
--------------------------------------------------------------------------------
/webserver/static/menu/menu-main.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Aurora
7 |
Ambient Lighting
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
35 |
36 |
37 |
52 |
53 |
54 |
55 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/webserver/templates/about.html:
--------------------------------------------------------------------------------
1 | {% include 'header.html' %}
2 | {% if configured == False %}
3 |
4 |
5 |
Not configured
6 |
Please configure your LEDs now
7 |
×
8 |
9 | {% endif %}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
Update from GitHub
18 |
Update Aurora
19 |
20 |
21 |
22 |
23 | Current Version: {{current_version}}
24 | GitHub Version: {{github_version}}
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
Current loaded config
37 |
Configuration
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | Key
46 | Value
47 |
48 |
49 |
50 | {% for key, value in config.items() %}
51 | {% for key2, value2 in value.items() %}
52 | {{key2}} {{value2}}
53 | {% endfor %}
54 | {% endfor %}
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
67 | {% include 'footer.html' %}
--------------------------------------------------------------------------------
/webserver/templates/configure.html:
--------------------------------------------------------------------------------
1 | {% include 'header.html' %}
2 |
3 |
4 |
Aurora
5 |
Pixel Configuration
6 |
7 | Your LED strip will be showing the colours depicted in the image below, look at the colours and configure
8 | the amount of LEDs per side accordingly, once you are happy hit save!
9 |
10 |
11 |
Darkness threshold:
12 |
17 |
18 |
19 |
20 |
44 |
69 |
74 |
75 |
76 |
77 |
78 |
79 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 | {% include 'footer.html' %}
--------------------------------------------------------------------------------
/webserver/templates/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {%if page=="home" %}
30 |
31 | {%elif page=="configure" %}
32 |
33 | {%elif page=="view" %}
34 |
35 | {% endif %}
36 |
37 |
20 |
21 |
24 |
25 |
26 |
27 |
36 |
37 |
48 |
49 |
50 |
Aurora
51 |
53 |
55 |
57 |
59 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/webserver/templates/index.html:
--------------------------------------------------------------------------------
1 | {% include 'header.html' %}
2 | {% if configured == False %}
3 |
4 |
5 |
Not configured
6 |
Please configure your LEDs now
7 |
×
8 |
9 | {% endif %}
10 |
11 |
12 |
13 |
System Status
14 |
15 |
16 |
17 |
18 |
19 | ON
20 | OFF
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
Current Loaded extension
32 |
{%if current_extension_meta == False %}
33 | No extension currently running.
34 | {% endif %}{{current_extension_meta['Name']}}
35 |
36 |
37 |
38 |
39 |
40 | {{current_extension_meta['Description']}}
41 |
{{current_extension_meta['Author']}}
42 |
43 |
44 |
45 |
46 |
47 |
48 |
Load Extension
49 |
Select an extension
50 |
51 |
52 |
53 | {% for key,extension_meta in extensions_meta.items() %}
54 | {{extension_meta['Name']}}
55 | {% endfor %}
56 |
57 |
58 |
Extension Details
59 |
60 | Please select an extension
61 |
62 |
Extension Author
63 |
64 |
65 |
69 |
70 |
71 |
72 |
73 |
74 |
90 |
91 |
92 |
95 | {% include 'footer.html' %}
--------------------------------------------------------------------------------
/webserver/templates/menu-colors.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
32 |
33 |
34 |
56 |
57 |
58 |
59 |
60 |
Awesome
61 |
--------------------------------------------------------------------------------
/webserver/templates/menu-footer.html:
--------------------------------------------------------------------------------
1 |
2 |
AppKit
3 |
4 | Built to match the design trends and give your page the awesome facelift it deserves.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
--------------------------------------------------------------------------------
/webserver/templates/menu-share.html:
--------------------------------------------------------------------------------
1 |
6 |
7 |
36 |
--------------------------------------------------------------------------------
/webserver/templates/status.json:
--------------------------------------------------------------------------------
1 | {
2 | "enabled": {{enabled}},
3 | "current_extension": "{{current_extension}}",
4 | "current_extension_class": "{{current_extension_class}}",
5 | "current_version": "{{current_version}}"
6 | }
--------------------------------------------------------------------------------
/webserver/templates/view.html:
--------------------------------------------------------------------------------
1 | {% include 'header.html' %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Pixels (Currently: {{fps}} FPS)
9 |
NeoPixel View
10 |
11 |
12 |
Auto Reload (reloading in 5s)
13 |
14 |
15 |
16 |
17 |
18 | ON
19 | OFF
20 |
21 |
22 |
23 |
HDMI View
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
Image
33 |
Pixel Image View
34 |
35 |
36 |
37 |
38 |
39 |
40 | {% include 'footer.html' %}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
/webserver/templates/header.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |