Compare commits

...

824 Commits

Author SHA1 Message Date
LordGrey
dd81a23dfc
Update docker-compile.sh 2025-02-13 18:05:50 +01:00
Paulchen-Panther
307fda4dc9
[CI] Switch to ubuntu-22.04 runner
relates to tonistiigi/binfmt#215
2025-02-08 16:27:23 +01:00
dependabot[bot]
d7295c88b8
Bump jakoch/install-vulkan-sdk-action from 1.0.5 to 1.0.6 (#1834) 2025-02-07 22:15:28 +01:00
LordGrey
121abce408
Fix #1824 (#1825) 2025-01-15 18:39:13 +01:00
dependabot[bot]
61bfc2ed5d
Bump jakoch/install-vulkan-sdk-action from 1.0.4 to 1.0.5 (#1822)
Bumps [jakoch/install-vulkan-sdk-action](https://github.com/jakoch/install-vulkan-sdk-action) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/jakoch/install-vulkan-sdk-action/releases)
- [Changelog](https://github.com/jakoch/install-vulkan-sdk-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jakoch/install-vulkan-sdk-action/compare/v1.0.4...v1.0.5)

---
updated-dependencies:
- dependency-name: jakoch/install-vulkan-sdk-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-02 08:25:51 +01:00
LordGrey
0aa7df47d3
Replace WebSocket implementation (#1819) 2024-12-29 16:00:29 +01:00
LordGrey
d16142d28e
Re-add Temperture adjustment (#1710)
* Add Temperature adjustment

* Add Temperature adjustment - add missing cmake updates

* Add missing ENABLE_MDNS guards

* Reapply temperature on JSONAPI

* Integrate color temperature into RGB transformations

* Fix imagestream update

* fix cast

* Cleanups

* Windows Fix

* Fix inner loop

* Simplify

* Reapply default temperature setting

* Fix adjustments calculation

* Updates
2024-12-28 20:45:10 +01:00
LordGrey
bc3ea9de42
Handle Brightness & Black (#1818) 2024-12-28 16:49:11 +01:00
Hyperion-Bot
fd0d6b7266 Update tr.json (POEditor.com) 2024-12-27 10:50:04 +01:00
Hyperion-Bot
b0cc7c6d2c Update sv.json (POEditor.com) 2024-12-27 10:50:03 +01:00
Hyperion-Bot
60ded19c5e Update es.json (POEditor.com) 2024-12-27 10:50:02 +01:00
Hyperion-Bot
4e6dc5e206 Update pl.json (POEditor.com) 2024-12-27 10:50:00 +01:00
Hyperion-Bot
885e376c28 Update de.json (POEditor.com) 2024-12-27 10:49:59 +01:00
Hyperion-Bot
7d70cb1c67 Update fr.json (POEditor.com) 2024-12-27 10:49:58 +01:00
LordGrey
3e7bc78449
Fix LED layout Preview (#1813) (#1814) 2024-12-13 22:42:50 +01:00
LordGrey
179ee316d0
Remove max LED number constraint from Matrix layout (#1805) 2024-12-09 06:21:53 +01:00
LordGrey
e8e102c25d
Provide more details on pinned certificate files (#1812) 2024-12-09 06:21:24 +01:00
Emmanuel Ferdman
d9242085bb
Update CompileHowto.md reference (#1808)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-12-08 20:36:01 +01:00
LordGrey
a0d3a10f25
Update dependencies (#1809) 2024-12-02 14:50:00 +01:00
LordGrey
733aa662bf
Refactor Python for 3.12 integration (#1807)
* Correct JS requestConfig call

* Update requestWriteConfig to new API format

* Add hyperion-light and bare-minimum preset scenarios

* Refactor Python

* Windows add bcrypt until mbedtls  is fixed
(https://github.com/Mbed-TLS/mbedtls/pull/9554)

* Corrections

* Use ScreenCaptureKit under macOS 15 and above

* ReSigning macOS package

* Python 3.11.10 test

* Revert "Python 3.11.10 test"

This reverts commit ee921e4f1284fe3d984d9422b24a1c56c6916c21.

* Handle defined exits from python scripts

* Update change.log

* CodeQL findings

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-12-01 17:08:25 +01:00
LordGrey
6e3357ea2d
Support NV12 format on Flatbuffer (#1806) 2024-12-01 17:08:00 +01:00
LordGrey
bc1bfbc83a
Fix Skydimo - populate outbut buffer (#1802) 2024-11-17 13:22:54 +01:00
LordGrey
27f74af4e3
Skydimo as own device (#1800)
* Skydimo as own device type

* Skydimo updates
2024-11-15 18:37:17 +01:00
LordGrey
5cb3076698
Config refactoring fixes (#1799)
* Correct JS requestConfig call

* Update requestWriteConfig to new API format

* Add hyperion-light and bare-minimum preset scenarios
2024-11-15 15:03:33 +01:00
LordGrey
ecceb4e7ae
Refactor Settings DB and Handling (#1786)
* Refactor config API

* Corrections

* Test Qt 6.8

* Revert "Test Qt 6.8"

This reverts commit eceebec49ecf1a3eda281a0630a9a7577b44ef0a.

* Corrections 2

* Update Changelog

* Add configFilter element for getconfig call

* Do not create errors for DB updates when in read-only mode

* Have configuration migration and validation before Hyperion starts

* Correct Tests

* Corrections

* Add migration items

* Correct windows build

* Ensure that first instance as default one exists

* Remove dependency between AuthManager and SSDPHandler

* Correct typos

* Address CodeQL findings

* Replace CamkeSettings by Presets and provide debug scenarios
2024-09-30 22:03:13 +02:00
dependabot[bot]
aed4abc03b
Bump actions/download-artifact from 4.1.7 to 4.1.8 (#1770)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.7 to 4.1.8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4.1.7...v4.1.8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-25 18:20:44 +02:00
LordGrey
4f1b95ec83
Add Home Assistant Lights support (#1763)
* New HomeAssistant LEDDevice

* Fix typos

* Ping Qt for Windows to 6.7 until aqtinstaller is fixed

* Fix HA default port handling

* HA - Update default latchtime and range

* Add HA Wizard and light selection

* Naming consistency

* Fix "Selected Hyperion instance is not running"

* CodeQL findings

* HA - allow to overwrite brightness by HA yes or no

* HA - Support switch off on black

* HA - Add transition time
2024-08-25 17:34:27 +02:00
LordGrey
df2b2b2372
Update README.md
Fix Effects link
2024-08-17 22:11:12 +02:00
blueicehaller
051d281522
Update README.md (#1780)
* Update README.md

Documentation link has been changed to Getting Started and Installation

* Update README.md

Installation link has been changed to Getting Started
2024-08-16 22:57:15 +02:00
blueicehaller
4721f14a10
Update README.md (#1779)
Update README.md
- Google Play link is no longer available https://play.google.com/store/apps/details?id=nl.hyperion.hyperionpro . 
- link to Hardware LED devices has been changed
- link to Documentation Configuration has been changed
- link to Effect development has been changed
- link to JSON API has been changed
2024-08-14 17:31:07 +02:00
Paulchen-Panther
215ae3b6df
Remove ExternalProject_Add 2024-07-17 18:27:28 +02:00
LordGrey
6c3fc8521a
Skydimo LedDevice support (#1765)
* Support Skydimo devices

* Temporarily downgrade CMake to 3.28.3 (CodeQL)
2024-07-16 19:46:43 +02:00
LordGrey
5d1d84ee9b Temporarily downgrade CMake to 3.28.3 (CodeQL) 2024-07-13 20:47:18 +02:00
LordGrey
01608f2a88 Windows - Pin to Qt 6.7 until apqinstaller supports 6.8 correctly 2024-07-13 19:48:16 +02:00
Paulchen-Panther
3f21913bfe
Temporarily downgrade CMake to 3.28.3 (macOS/Windows) 2024-07-12 22:48:13 +02:00
Paulchen-Panther
c73e3010ef
Temporary GHA Build fix 2024-07-12 22:45:13 +02:00
Hyperion-Bot
df7366a6de Update sv.json (POEditor.com) 2024-06-16 18:18:48 +02:00
Hyperion-Bot
d6853f71e6 Update de.json (POEditor.com) 2024-06-16 18:18:47 +02:00
Thinner77
719c844dda
add some clarifying comments (#1754) 2024-06-16 18:01:33 +02:00
Rastafabisch
6d5dfef3ad
Update CompileHowto.md (#1757) 2024-06-16 10:00:20 +02:00
LordGrey
0a2a929333 Disable Protobuf libupb 2024-06-15 20:34:36 +02:00
Paulchen-Panther
c2bd875bc8
Remove Windows C++ redist hack
This was a hack workaround for the broken azure runner images: https://github.com/actions/runner-images/issues/10004
2024-06-15 13:02:27 +02:00
David Sansome
0bdf865f5c
DDA grabber: Set a 500ms timeout when waiting for a new frame (#1753)
* Add a DXDI DDA grabber

* Change all names to camel case

* Handle cropping and pixel decimation

* Try more persistently to restart capture after an error occurred.

These can happen when changing resolution, or resuming from sleep.

* Set a 500ms timeout when acquiring a frame.

The API won't give us a new frame if nothing on the screen has changed,
so an INFINITE timeout means we'll wait forever in this case, and
eventually the LED connection will timeout.

---------

Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
2024-06-14 20:40:50 +02:00
Thinner77
7f90637a2d
MF-grabber: Add support for bottom-up image handling (#1752)
* prepare bottom-up image handling

* add default stride handling, code cleaning

* fix code

* move whole logic to MF-grabber

* minor fix

---------

Co-authored-by: Thinner77 <none>
2024-06-14 20:40:17 +02:00
LordGrey
943f9e22f3
Update external modules (#1755)
* Update flatbuffers to 24.3.25

* Update protobuf to 27.1

* Update mbedtls to 3.6.0

* Change source of Vulkan SDK

* Readd directx-sdk

* Windows Fix?

* Update qt5_6.yml

* Typo

* Revert "Update qt5_6.yml"

This reverts commit cf8db993ec9b9d18b9054f992c77fe687ba8c412.

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-06-14 20:39:27 +02:00
LordGrey
1fd40571af Windows - use latest Qt version available 2024-06-02 10:09:47 +02:00
dependabot[bot]
22612ee26b
Bump jurplel/install-qt-action from 3 to 4 (#1750)
Bumps [jurplel/install-qt-action](https://github.com/jurplel/install-qt-action) from 3 to 4.
- [Release notes](https://github.com/jurplel/install-qt-action/releases)
- [Commits](https://github.com/jurplel/install-qt-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: jurplel/install-qt-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-01 22:55:25 +02:00
LordGrey
15c305b8f2
RGB24 and BGR24 cleanup (#1749)
* RGB24 and BGR24 cleanup

* Fix MF-Grabber

* Add BGR32 to V42L Grabber

* Add BGR32 to V42L Grabber

* Add BGR16 to V42L

* Revert "Add BGR16 to V42L"

This reverts commit 42975380f47a30a09f06d7dee7440b64b93aa305.
2024-06-01 20:26:20 +02:00
LordGrey
76fff98f5c
Implement ftdi led device - 2 (#1746) 2024-05-31 23:08:13 +02:00
Thinner77
897e4aac8a
Fix V4L2 BGR24 handling (#1748) 2024-05-30 22:30:29 +02:00
David Sansome
8c303c8b9c
Windows: Add a DDA grabber for much better performance (#1745)
* Add a DXDI DDA grabber

* Change all names to camel case

* Handle cropping and pixel decimation

* Try more persistently to restart capture after an error occurred.

These can happen when changing resolution, or resuming from sleep.
2024-05-30 13:39:46 +02:00
LordGrey
c0ddca3c5b
Fix Formula qt5 was renamed to qt@5 2024-05-26 17:59:50 +02:00
LordGrey
b390d16b0c
Disable V42L Benchmark Code 2024-05-24 18:24:26 +02:00
Thinner77
5bcbe599d3
Fix flipmode for BGR24 special handling (#1739) 2024-05-24 17:57:10 +02:00
Thinner77
bde5d156a9
faster imageresampler (#1744) 2024-05-24 09:13:33 +02:00
LordGrey
e6714b21f9
Fix Philip Hue APIv2 support without Entertainment group defined (#1743) 2024-05-21 19:37:43 +02:00
LordGrey
4a5b0b6bf2
Fix #1688 - Fragmented http-Headers (#1741) 2024-05-18 09:14:30 +02:00
Hyperion-Bot
051072ee46 Update bg.json (POEditor.com) 2024-05-13 20:17:03 +02:00
Hyperion-Bot
38b0002916 Update sv.json (POEditor.com) 2024-05-13 20:17:02 +02:00
Hyperion-Bot
4645b671c7 Update es.json (POEditor.com) 2024-05-13 20:17:01 +02:00
Hyperion-Bot
be0eb23b6f Update de.json (POEditor.com) 2024-05-13 20:16:59 +02:00
LordGrey
2eb5c87e0e
New Language + Fixes (#1738)
* Fix typos in texts

* New language Bulgarian
2024-05-13 20:14:26 +02:00
Thinner77
f6cc92606c
Change confusing logic (#1731)
* Change confusing logic

* Change confusing logic #2

* revert indent

---------

Co-authored-by: Thinner77 <none>
2024-05-13 19:31:51 +02:00
LordGrey
0a93af95c7
Disable Identify for same serial device (#1737) 2024-05-09 11:51:00 +02:00
LordGrey
cf287f5adb
Refactor Hyperion JSON-API (#1727) 2024-05-08 22:06:32 +02:00
dependabot[bot]
94850d890a
Bump actions/download-artifact from 4.1.4 to 4.1.7 (#1730) 2024-05-02 16:37:45 +02:00
Portisch
accf27a09c
Remove unused libs for Amlogic platform (#1725) 2024-04-30 07:28:19 +02:00
dependabot[bot]
7645ebb526
Bump softprops/action-gh-release from 1 to 2 (#1719)
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-16 21:58:33 +02:00
LordGrey
aca757138e
Nanoleaf Updates (#1724)
* Add new devices

* Do not restore ExtControl state
2024-04-16 21:57:51 +02:00
LordGrey
c2fe42a731
Fix #1722 (#1723) 2024-04-13 22:54:17 +02:00
LordGrey
d5438acbf4
Fix Cross Site Scripting Vulnerability 1 (#1720) 2024-04-02 21:44:46 +02:00
LordGrey
86d08823a8
Add workaround for issue #1692 (#1695) 2024-03-30 15:44:18 +01:00
LordGrey
ac57fea09a
Fix Kodi Color Calibration, Refactor Wizards (#1718)
* Fix #1674 and refactor wizards

* Have own code file per LED-Device Wizard

* Include SonarLint feedback

* Cleanups

* Apply module pattern

* Address CodeQL findings

* Address CodeQL findings
2024-03-30 15:43:50 +01:00
Hyperion-Bot
35d8992bcc Update sv.json (POEditor.com) 2024-03-23 14:08:54 +01:00
Hyperion-Bot
efda0714b3 Update de.json (POEditor.com) 2024-03-23 14:08:53 +01:00
Hyperion-Bot
8123a11287 Update fr.json (POEditor.com) 2024-03-23 14:08:52 +01:00
LordGrey
806206ec01
Fix #1714 (#1717) 2024-03-15 20:23:53 +01:00
LordGrey
fedb409157
Matrix Layout enhancements (#1701)
* Support gaps on Matrix Layout

* Ensure BlackBorder objects are initialised

* Update Changelog

* Fix automated semicolon insertion

* Fix automated semicolon insertion

* Remove SPI activation from post install script (#1708)
2024-03-14 21:29:15 +01:00
Markus
fd5a94a32a
add missing ENABLE_MDNS in hyperiond.cpp (#1711)
build with out MDNS does not work:

```
hyperion.ng-git/src/hyperion.ng/src/hyperiond/hyperiond.cpp:298:9: error: ‘_mDNSProvider’ was not declared in this scope; did you mean ‘RRProvider’?
  298 |         _mDNSProvider->thread()->start();
```
2024-03-03 21:33:52 +01:00
dependabot[bot]
4d3df0a3c0
Bump actions/download-artifact from 4.1.1 to 4.1.4 (#1707)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.1 to 4.1.4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4.1.1...v4.1.4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-01 22:07:43 +01:00
LordGrey
dbcafd3081
Disable current service, even if not active 2024-02-28 15:21:18 +01:00
LordGrey
31df065c0f
Start SmartPointers (#1679)
* Refactor to fix #1671

* Add GUI/NonGUI mode to info page

* Do not show lock config, if in non-UI mode

* Updae Changelog

* Correct includes

* Ensure key member initialization - RGB Channels

* Ensure key member initialization - WebServer

* Update RGBChannels

* Fix initialization order

* Fix key when inserting new logger in LoggerMap,
Prepare logBuffer-JSON snapshot view in LoggerManager,
Increase buffered loglines to 500

* Fix Memory leak in GrabberWrapper

* Fix Memory leak in BlackBorderProcessor

* Fix Memory leak in BlackBorderProcessor

* use ninja generator under macos

* Fix BGEffectHandler destruction

* Fix Mdns code

* Clear list after applying qDeleteAll

* Fix deletion of CecHandler

* Fix memory leak caused by wrong buffer allocation

* Remove extra pixel consistently

* Change mDNS to Qt SmartPointers

* Correct removal

* Fix usage of _width/_height (they are the output resolution, not the screen resolution)
That avoids unnecessary resizing of the output image with every transferFrame call

* Move main non Thread Objects to Smart Pointers

* Refactor Hyperion Daemon unsing smartpointers

* Correction

* Correct typos/ align text

* Fix startGrabberDispmanx

* Fix startGrabberDispmanx

* Address CodeQL finding

* Create Screen grabbers via Template

* Fix typo

* Change way of logging

* Revert change

* Address deprecation warning

* Correct auto screen grabber evaluation

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-02-25 17:35:39 +01:00
Paulchen-Panther
bb40778a3d fix workflow run 2024-02-16 15:03:51 +00:00
LordGrey
716d87d4e6
Corrections after release 2.0.16 (#1694)
* Updates on building a release

* Fixes

* Correct non arm64 identification

* Show download bar

* reset all units with failed status

* Reload systemd daemon after updates

* Force Qt5 for armv6 packages

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-02-04 15:42:57 +01:00
Paulchen-Panther
3ae17bb425
Workflow adapted to armv6 2024-02-02 08:54:41 +01:00
dependabot[bot]
cebb7d08cc
Bump peter-evans/repository-dispatch from 2.1.2 to 3.0.0 (#1691)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 2.1.2 to 3.0.0.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v2.1.2...v3.0.0)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 08:51:51 +01:00
dependabot[bot]
1bf2041f2e
Bump actions/cache from 3 to 4 (#1690)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 08:51:23 +01:00
dependabot[bot]
75ff267a62
Bump actions/download-artifact from 4.1.0 to 4.1.1 (#1689)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-02 08:51:13 +01:00
LordGrey
612d178885
Rollover to 2.0.17-beta.1 2024-01-20 14:55:30 +01:00
LordGrey
62bfc291b1 Release 2.0.16 2024-01-17 20:28:33 +01:00
LordGrey
5cd21f50be
Update Instructions (Docker Compile, Supported platforms, License year) (#1682)
Correct docker compile to load repository
2024-01-15 15:02:01 +01:00
Hyperion-Bot
eb0964078f Update ru.json (POEditor.com) 2024-01-14 18:40:41 +01:00
Hyperion-Bot
175396dd85 Update uk.json (POEditor.com) 2024-01-14 18:36:05 +01:00
Hyperion-Bot
8f76be41fb Update ru.json (POEditor.com) 2024-01-14 18:36:04 +01:00
Hyperion-Bot
9d08568c1e Update el.json (POEditor.com) 2024-01-14 18:36:03 +01:00
LordGrey
05d24b99c4
Fix Memory leaks (#1678)
* Refactor to fix #1671

* Add GUI/NonGUI mode to info page

* Do not show lock config, if in non-UI mode

* Updae Changelog

* Correct includes

* Ensure key member initialization - RGB Channels

* Ensure key member initialization - WebServer

* Update RGBChannels

* Fix initialization order

* Fix key when inserting new logger in LoggerMap,
Prepare logBuffer-JSON snapshot view in LoggerManager,
Increase buffered loglines to 500

* Fix Memory leak in GrabberWrapper

* Fix Memory leak in BlackBorderProcessor

* Fix Memory leak in BlackBorderProcessor

* use ninja generator under macos

* Fix BGEffectHandler destruction

* Fix Mdns code

* Clear list after applying qDeleteAll

* Fix deletion of CecHandler

* Fix memory leak caused by wrong buffer allocation

* Remove extra pixel consistently

* Change mDNS to Qt SmartPointers

* Correct removal

* Fix usage of _width/_height (they are the output resolution, not the screen resolution)
That avoids unnecessary resizing of the output image with every transferFrame call

* Move main non Thread Objects to Smart Pointers

* Revert "Move main non Thread Objects to Smart Pointers"

This reverts commit 26102ca963982e2fbc4ffb8d4db6139f0128a3cc.

* Add missing deletes

* Revert MdnsBrowser chnage

* Revert MdnsBrowser change

* Fix memory leaks related standalone grabber

* Address CodeQL finding

* delete pointer OsxFrameGrabber

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-01-13 17:04:45 +01:00
LordGrey
8907d7370e
Update codeql.yml
Address breaking change introduced by upload-artifact@v4 on multiple file upload
2024-01-03 19:47:20 +01:00
LordGrey
cdd59ffc87
Fix #1671 (#1672)
* Refactor to fix #1671

* Add GUI/NonGUI mode to info page

* Do not show lock config, if in non-UI mode

* Updae Changelog

* Correct includes

* Remove unused variable

* use ninja generator under macos

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2024-01-03 19:43:46 +01:00
dependabot[bot]
3f2375deaf
Bump actions/download-artifact from 3.0.2 to 4.1.0 (#1675) 2024-01-01 22:30:30 +01:00
dependabot[bot]
241fc76415
Bump actions/upload-artifact from 3 to 4 (#1676) 2024-01-01 22:30:18 +01:00
dependabot[bot]
eaaa4a619a
Bump github/codeql-action from 2 to 3 (#1677) 2024-01-01 22:29:53 +01:00
LordGrey
bb96e1003d
New languages: Indonesian, Ukrainian (#1673)
* New languages: Indonesian, Ukrainian

* use ninja generator under macos

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-12-29 11:54:13 +01:00
Hyperion-Bot
2aa0d01dde Update sv.json (POEditor.com) 2023-12-09 21:09:58 +01:00
LordGrey
05befbb49c
Updates (#1664)
* Deploy Wayland shells

* Correct typos

* Update qmdnsengine
2023-12-06 20:14:41 +01:00
Hyperion-Bot
a2ded6acc9 Update de.json (POEditor.com) 2023-12-05 19:27:13 +01:00
Hyperion-Bot
2f8e62a14f Update sv.json (POEditor.com) 2023-12-05 18:59:19 +01:00
LordGrey
0fce43840c
Corrections (#1662)
* Address "SyntaxWarning: invalid escape sequence"

* Correcttypo for CEC Blue button

* Fix enablement when already open

* Icons path corrected

* Correct path and simplify command

* Have enum class generalised

* Address compile warnings

* Update tinkerforce led_strip

* Address compiler waring

* Fix Install/Uninstall desktop- and icon file handling

* Address "fatal: detected dubious ownership in repository"

* platform fix

* Test  "fatal: detected dubious ownership in repository"

* Update "fatal: detected dubious ownership in repository"

* Update to Protobuf 25.1

* Update cmds with sudo

* Update SEDU default baud rates

* Replace deprecated Py_NoSiteFlag

* Correct default config

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-12-03 21:23:31 +01:00
Paulchen-Panther
6b8c0dbcce
macOS dependency fix 2023-11-27 16:24:59 +01:00
LordGrey
a1f0821f33
Introduce Event Services (#1653)
* Allow to enable/disable suspend & lock event handling

* Fix Windows

* Refactor event handling incl.CEC

* Revert "Auxiliary commit to revert individual files from 0d9a8b8a3a4a09609a339f54c7d8a9384c561282"

This reverts commit 80737d926ad151a07b2493dd1685ed502975cb2e.

* Support Events for Grabbers generically

* Have CECEvent to actions configurable, further clean-ups

* Remove handleEvent from V4L2grabber, as grabber will be stopped on suspend

* Validate that one CEC Event can only trigger one action

* MacOS lock/unlock added

* fast windows fix

* Corrections

* Fix CodeQL findings

* add macos lock/unlock handler

* Migration of CEC-config and have default actions

* Correct target_link_libraries

* Include Foundation

* macOS include AppKit

* Support Scheduled Events, cleanups.

* Fix destructing

* Fix coredump during free

* Consider additional error sceanrio

* Fix missing code

* install desktop icons

* correct bash logic

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-11-27 09:06:43 +01:00
LordGrey
2e0cc9cfa8
Improvements (#1658)
* Restart Servial Device, if write error occurred.

* Fix typos

* Fix FOUND_USER command

* Use SUDO_USER in postinst

* Align install_pr with new package names

* Package named arm64 instead of aarch64

* Update Change log

* Fix to have the architecture resolved

* All tls plugin directory for Qt6

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-11-23 20:51:49 +01:00
Paulchen-Panther
cd1046ac1f Cleanup & README correction 2023-11-18 06:36:04 +00:00
Paulchen-Panther
91270966f9
Refactor/Create APT/DNF Repository (#1648) 2023-11-16 21:05:56 +01:00
LordGrey
c9518db597 Revert "Bump jurplel/install-qt-action from 3 to 4 (#1652)"
This reverts commit f57c4f84acd92dede4a2e5e1c8eef6786eaff99c.
2023-11-03 19:54:59 +01:00
dependabot[bot]
f57c4f84ac
Bump jurplel/install-qt-action from 3 to 4 (#1652)
Bumps [jurplel/install-qt-action](https://github.com/jurplel/install-qt-action) from 3 to 4.
2023-11-02 14:38:23 +01:00
Hyperion-Bot
8a54eff656 Update submodule rpi_ws281x 2023-10-30 00:21:59 +00:00
LordGrey
27027b224c
Fix self-signed certificate handling (#1649) 2023-10-29 21:13:34 +01:00
LordGrey
b73e9f4996
Qt 6.7 (#1650)
* Do not validate values for options without value

* Clean-up

* ws281x include files workaround

* Revert "ws281x include files workaround"

This reverts commit 1b983087183e3c563a191edd34a318cfd0cdace1.

* Use https://github.com/hyperion-project/rpi_ws281x while fix is applied in original repository
2023-10-29 21:12:59 +01:00
LordGrey
a5625cf984
Upward version compatability (#1639)
* Fix macOS build

* Update minimum cmake version

* Correct compile errorswith Qt6.7

* Update minimum cmake version (2)

* Use C++17

* Correct compile errors with Qt6.7

* Replace unsupported Lambda UniqueConnection

* Support UTF-8 Output on console

* Update general page

* Fix Matrix Effect

* Install PR relative to current path

* Additional update

* Correct compile errors with Qt6.7 after master merge

* Add language - Hebrew

* Consolidate Changelog
2023-10-15 21:27:21 +02:00
Hyperion-Bot
88c6bef9be Update vi.json (POEditor.com) 2023-10-15 19:38:51 +02:00
Hyperion-Bot
ecd3018cc5 Update tr.json (POEditor.com) 2023-10-15 19:38:50 +02:00
Hyperion-Bot
496f31624d Update sv.json (POEditor.com) 2023-10-15 19:38:49 +02:00
Hyperion-Bot
c2a895a8c3 Update es.json (POEditor.com) 2023-10-15 19:38:48 +02:00
Hyperion-Bot
dd22755fd2 Update ru.json (POEditor.com) 2023-10-15 19:38:47 +02:00
Hyperion-Bot
4205ae08a5 Update pt-br.json (POEditor.com) 2023-10-15 19:38:45 +02:00
Hyperion-Bot
8296d8c26a Update pl.json (POEditor.com) 2023-10-15 19:38:44 +02:00
Hyperion-Bot
ea0d69bc44 Update ja.json (POEditor.com) 2023-10-15 19:38:43 +02:00
Hyperion-Bot
2e6457919f Update it.json (POEditor.com) 2023-10-15 19:38:42 +02:00
Hyperion-Bot
80f4c246cf Update hu.json (POEditor.com) 2023-10-15 19:38:41 +02:00
Hyperion-Bot
c9082c2ea3 Update de.json (POEditor.com) 2023-10-15 19:38:39 +02:00
Hyperion-Bot
f4246fbd87 Update fr.json (POEditor.com) 2023-10-15 19:38:38 +02:00
Hyperion-Bot
6274b01b1c Update nl.json (POEditor.com) 2023-10-15 19:38:37 +02:00
Hyperion-Bot
9a257df6ee Update cs.json (POEditor.com) 2023-10-15 19:38:36 +02:00
Hyperion-Bot
06bc18a063 Update zh-CN.json (POEditor.com) 2023-10-15 19:38:35 +02:00
Hyperion-Bot
f48de40f9e Update sv.json (POEditor.com) 2023-10-15 19:09:25 +02:00
Hyperion-Bot
ddbf2e0fe6 Update es.json (POEditor.com) 2023-10-15 19:09:24 +02:00
Hyperion-Bot
d508cb0d91 Update ru.json (POEditor.com) 2023-10-15 19:09:23 +02:00
Hyperion-Bot
ac14547182 Update pt-br.json (POEditor.com) 2023-10-15 19:09:22 +02:00
Hyperion-Bot
fceda2eb72 Update pl.json (POEditor.com) 2023-10-15 19:09:20 +02:00
Hyperion-Bot
9cbd821cc0 Update hu.json (POEditor.com) 2023-10-15 19:09:19 +02:00
Hyperion-Bot
11c5bf3d5e Update de.json (POEditor.com) 2023-10-15 19:09:18 +02:00
Hyperion-Bot
9eb03489f1 Update fr.json (POEditor.com) 2023-10-15 19:09:17 +02:00
Hyperion-Bot
0506dc8dc1 Update cs.json (POEditor.com) 2023-10-15 19:09:16 +02:00
Hyperion-Bot
70b9107a42 Update zh-CN.json (POEditor.com) 2023-10-15 19:09:15 +02:00
LordGrey
b1e68a3572
Nanoleaf (#1647)
* Support Philips Hue APIv2 and refactoring

* Fix MDNSBrower - if timeout during host resolvment occurs

* Hue API v2 - Migrate database

* Fix macOS build

* Handle network timeout before any other error

* Address CodeQL findings

* Clean-up and Fixes

* Only getProperties, if username is available

* Option to layout by entertainment area center

* Fix Wizard

* Fix Nanoleaf, add user auth token wizard

* Nanoleaf fixes and enhancements

* Consider rotated panel layouts

* Corrections

* Layout corrections and filter for non LED panels

* Add LED test effect lightening up LEDs in sequence

* Align rotation value to 15 degree steps

* Align rotation value to 15 degree steps

* Skip non LED panels

* Fix Rotation and refactoring

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-10-15 17:04:51 +02:00
LordGrey
cd22d4454d
Philips Hue APIv2 support (#1637)
* Support Philips Hue APIv2 and refactoring

* Fix MDNSBrower - if timeout during host resolvment occurs

* Hue API v2 - Migrate database

* Fix macOS build

* Handle network timeout before any other error

* Address CodeQL findings

* Clean-up and Fixes

* Only getProperties, if username is available

* Option to layout by entertainment area center

* Fix Wizard

---------

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2023-10-03 20:33:11 +02:00
dependabot[bot]
33722c9a09
Bump crazy-max/ghaction-import-gpg from 5.3.0 to 6.0.0 (#1644)
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 5.3.0 to 6.0.0.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v5.3.0...v6.0.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 18:06:39 +02:00
dependabot[bot]
41bffecc0b
Bump peter-evans/repository-dispatch from 2.1.1 to 2.1.2 (#1645)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 18:04:26 +02:00
dependabot[bot]
f49e1a2c0b
Bump actions/checkout from 3 to 4 (#1646)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 18:03:57 +02:00
LordGrey
08dc59c885
Fix #1630 - Audio Capture settings are ignored (#1640)
* Fix macOS build

* Update minimum cmake version

* Correct compile errorswith Qt6.7

* Update minimum cmake version (2)

* Use C++17

* Correct compile errors with Qt6.7

* Replace unsupported Lambda UniqueConnection

* Support UTF-8 Output on console

* Fix #1630
2023-10-01 21:56:53 +02:00
LordGrey
48cea4ad9b
Focus on relevant PRs 2023-09-30 18:00:38 +02:00
LordGrey
7909997398
Update install_pr.sh
Only run named  'Hyperion PR Build' have artifacts
2023-09-06 20:08:20 +02:00
LordGrey
a5bb7e905b
Fix non image updates ignore blacklisted leds (#1635)
* Fix #1634

* Refactor to process blacklisted LEDs with less resources
2023-08-26 11:12:43 +02:00
LordGrey
d1879c2e39
ws281x - Update logic to identify is user is admin (#1623) 2023-08-03 22:40:25 +02:00
LordGrey
c0dc08b0c0
Update to Protobuf 23.4.0 (#1626)
* Update to protobuf v23.4.0

* Add defines for 3rd party sub-modules used by protobuf

* Check out sub-modules recursively
2023-07-29 19:28:51 +02:00
LordGrey
5bf25c98ad
Update mbedTLS to v3.4.0 (#1625) 2023-07-29 19:28:39 +02:00
LordGrey
da275dd448
Update flatbuffers to v23.5.26 (#1624) 2023-07-29 19:28:28 +02:00
Paulchen-Panther
1257cfff70 Set OpenSSL to 1.1.1 (Windows) 2023-07-21 18:59:23 +00:00
LordGrey
42c98da470
Update platforms (#1617)
* Remove stretch, bionic, add lunar

* Fix CEC CMakeList for Ubuntu 23.04

* Fix git version identification when run in docker and local code

* Update SYSTEM_LIBS_SKIP list

* Updates after Ubuntu Server 20.04, latest PI OS Light and CoreElec 20

* Update year

* Skip List working with Fedora38 Server (x86) and libreElec 11 (x86)

* Update platform tag handling

* Show error, if ssl lib cannot be found

* Update supported platforms

* Script to install selected Pull Requests

* Fix misspelled explanation + improve description

* Correct run-id evaluation

* Support python3 and python2

* Support to copy existing config for PR testing
2023-07-21 16:45:37 +02:00
LordGrey
64642a4457
Fix WLED UI handling non supported segment streaming (#1610) 2023-07-10 20:39:35 +02:00
Christoph Pohl
af1a31b842
Update dependencies for Debian Bookworm (#1613) 2023-06-25 10:34:47 +02:00
dependabot[bot]
a7ce0f8a4c
Bump crazy-max/ghaction-import-gpg from 5.2.0 to 5.3.0 (#1608)
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-11 20:42:35 +02:00
Paulchen-Panther
00ce3ff089
Update Discord Invite 2023-05-29 21:43:28 +02:00
Paulchen-Panther
54d03b8065 added workflow_dispatch
to allow the bot to create the APT repository itself
2023-05-14 16:29:57 +02:00
lsellens
2a17de37f1
fix for matrix effect (#1602) 2023-05-11 21:11:33 +02:00
LordGrey
5535b884bf
Fixes (#1605)
* Correct misleading Error messages

* Fix that Audio Capture is not shown when there is no screen nor video grabber

* Fix - Audio Capture enabled after reboot automatically (#1581)
2023-05-07 14:04:45 +02:00
Hyperion-Bot
79b31e16e0 Update submodule rpi_ws281x 2023-04-26 00:22:19 +00:00
dependabot[bot]
e3496eb4dc
Bump SamKirkland/FTP-Deploy-Action from 4.3.3 to 4.3.4 (#1598)
Bumps [SamKirkland/FTP-Deploy-Action](https://github.com/SamKirkland/FTP-Deploy-Action) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/SamKirkland/FTP-Deploy-Action/releases)
- [Commits](https://github.com/SamKirkland/FTP-Deploy-Action/compare/4.3.3...v4.3.4)

---
updated-dependencies:
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-05 17:25:49 +02:00
Paulchen-Panther
08e7c7d8c2 [HotFix] Supplement to the PR #1570 - Fix Issue #1596 2023-03-27 20:54:34 +02:00
Paulchen-Panther
e0060eb406 cleanup 2023-03-26 15:22:06 +02:00
dependabot[bot]
2f09f9a0b8
Bump actions/upload-artifact from 2.2.0 to 3.1.2 (#1583)
GitHub Actions Update
2023-03-16 21:38:08 +01:00
Portisch
85eb62f314
Fix missing Include (#1585)
'std::numeric_limits' do need '#include <limits>'
2023-03-09 08:38:05 +01:00
Hyperion-Bot
c73f8623b8 Update submodule rpi_ws281x 2023-03-07 00:26:14 +00:00
Harald
e59e456b00
fix python version on Debian bookworm (fix #1579) (#1580)
the package wanted the dependency libpython3.9
but the executable expects libpython3.10
2023-02-27 17:04:34 +01:00
Rastafabisch
a393f6211c
Update Info.plist.in (#1575)
Hide Hyperion from the Dock.
2023-02-21 17:39:18 +01:00
LordGrey
b2fcea3bbd Rollover to 2.0.16-beta.1 2023-02-20 07:38:01 +01:00
LordGrey
24a00e3b0b
Prep Release 2.0.15 (#1571)
* Readd import Collections to show JSON validation failures details

* Editorial update

* Audiograbber - Remove config for not implemented feature

* Smoothing - Update defaults and range

* Version 2.0.15
2023-02-19 13:24:43 +01:00
Hyperion-Bot
bfba0d6137 Update de.json (POEditor.com) 2023-02-19 11:41:47 +01:00
Hyperion-Bot
fd82f58269 Update de.json (POEditor.com) 2023-02-19 11:05:25 +01:00
Michael Rochelle
acdf733936
Audio Grabber Feature (#1570)
* Creating Audio Grabber

Creating Audio Grabber

Creating Audio Grabber.

Successfully began capturing audio in windows. Starting to implement a hard-coded UV Visualizer.

Got Windows DirectSound Implementation working.
Hardcoded basic VU Meter.

Begin working on linux audio grabber implementation.

Finished Linux Draft Implementation.
Minor Mods to windows implementation.

Windows:
 - Free memory used by device id.
 - Prevent starting audio if the grabber is disabled
 - More debug logging

Linux:
 - Prevent starting audio if the grabber is disabled

Added strings to english
Removed "custom" from device selection
Made hard-coded visualizer values configurable.
wrote values to imageData with BGR priority to enable configurable values to be set in RGB format.
created logic to support "Automatic" to enable the API to select the default device.

Add language key for audio in "Remote Control" section.
Removed audio configuration for number of channels. This was causing an error with some devices.

Fixed logic to update capture while its active.
Optimizing code .

UI Tweaks
Destructuring.

Fixed build error on linux.

Custom Effects - Clean-ups and Enhancements (#1163)

* Cleanup EffectFileHandler

* Support Custom Effect Schemas and align EffectFileHandler

* Change back to colon prefix for system effects

* WebSockets - Fix error in handling fragmented frames

* Correct missing colon updates

* Update json with image file location for custom gif effects

* Image effect deletion - considere full filename is stored in JSON

* Correct selection lists indentions

Creating Audio Grabber

Creating Audio Grabber

Creating Audio Grabber.

Successfully began capturing audio in windows. Starting to implement a hard-coded UV Visualizer.

Got Windows DirectSound Implementation working.
Hardcoded basic VU Meter.

Begin working on linux audio grabber implementation.

Finished Linux Draft Implementation.
Minor Mods to windows implementation.

Windows:
 - Free memory used by device id.
 - Prevent starting audio if the grabber is disabled
 - More debug logging

Linux:
 - Prevent starting audio if the grabber is disabled

Added strings to english
Removed "custom" from device selection
Made hard-coded visualizer values configurable.
wrote values to imageData with BGR priority to enable configurable values to be set in RGB format.
created logic to support "Automatic" to enable the API to select the default device.

Add language key for audio in "Remote Control" section.
Removed audio configuration for number of channels. This was causing an error with some devices.

Fixed logic to update capture while its active.
Optimizing code .

UI Tweaks
Destructuring.

Fixed build error on linux.

Commented setVideoMode from AudioGrabber.

Linux Threading changes.

Implementing new API

Continuing to implement audio into new APIs

Fixed Audio Grabber for DirectSound on Windows
Fixed UI for Audio Grabber Configuration
Default AUDIO to off unless specified.

fixed missing #ifdef for audio grabber.

Added logic to calculate a dynamic multiplier from the signal input.

Updating linux api for discovering devices.

Fixed HTML/JS issues with view.
Fixed NPE in Windows.
Disabled setting thread priority in linux.

updated the schema options check to pass through hidden states and commented the change.

Updated grabber start conditions
Updated Audio grabber to instantiate similar to video grabber

Updated windows grabber to set "started" flag to false when shutting down.
Removed "tryStart" to prevent enabling audio capture unnecessarily.

Fixing instance audio grabber device configuration

Added configurable resolution
Reduced tolerance to 5%
Fixed issue where grabber failed for additional instances when "start" was called multiple times.

Fixed resolution calculation

Change averaging algorithm to prevent overflowing the sum.

Updated logic to stop audio grabber when disabled.

Fix integer casting and rounding.

Restart grabber on configuration change.
Fix missing include/grabber/AudioGrabber.
Disable tolerance.

Added configurable tolerance.
Fixed tolerance algorithm.
reset multiplier on configuration change.

Line Endings

Proposed change and questions/request to fix

implementing more of LordGrey's suggestions.

Fix mode for snd_pcm_open. Latest ALSA uses SND_PCM_NONBLOCK instead of SND_PCM_OPEN_NONBLOCK
defaulted multiplier to 0 "auto"
defaulted tolerance to 20%

changed 100 to 100.0 for pixel value percentage calculation to fix value from being 0.

missed a 100 as a double so precision isn't lost during math operation.

Fix Windows grabber and further cleanups

Enable Audio grabbing in standard build

Remove empty methods

Fix audio capture priority setting

Remove unused code

Clean-up default config

Allow additional json-editor attributes

Allow multiple effects and resetting to defaults

Correct default values

Allow to build for Qt < 5.14

Update CodeQL build dependency

Update build dependencies

Remove effect1 placeholder

* Renamed uvMeter to VU Meter (Volume Unit)
- Fixed issues flagged by code scanning bot.

* Moved stop call into destructor of implementing class.

* Removed commented linux audio channel configuration logic.

---------

Co-authored-by: Michael Rochelle <michael@j2inn.com>
2023-02-19 09:36:39 +01:00
LordGrey
a1bfa63343
Update schema-webConfig.json 2023-02-17 17:09:12 +01:00
Hyperion-Bot
21c5c6a122 Update de.json (POEditor.com) 2023-02-17 16:12:11 +01:00
LordGrey
1ae37d151e
Dominant Color support (#1569)
* Dominant Color and Mean Color Squared

* Workaround - Suppress empty LED updates

* Add missing text

* Dominant Colors advanced

* Test with fixed initial colors

* Test with fixed initial colors

* Support new processing values via API

* ImageToLED - Add reduced pixel processing, make dominant color advanced configurable

* Updates on Grabber fps setting

* ImageToLedMap - Remove maptype and update test

* Update dynamic cluster array allocation
2023-02-17 16:02:51 +01:00
Hyperion-Bot
093361d3e4 Update sv.json (POEditor.com) 2023-02-17 15:19:10 +01:00
Hyperion-Bot
f4391a512b Update es.json (POEditor.com) 2023-02-17 15:19:09 +01:00
Hyperion-Bot
f062aa71c5 Update ru.json (POEditor.com) 2023-02-17 15:19:07 +01:00
Hyperion-Bot
6251b58ff9 Update pl.json (POEditor.com) 2023-02-17 15:19:06 +01:00
Hyperion-Bot
dea0a17df4 Update it.json (POEditor.com) 2023-02-17 15:19:04 +01:00
Hyperion-Bot
22fa008c4b Update fr.json (POEditor.com) 2023-02-17 15:19:03 +01:00
LordGrey
bf418686e3
Fix WLED & Smoothing (#1567)
* WLED - Fix empty segment element in DB

* WLED - Fix to not overwrite on state when not isStayOnAfterStreaming

* Refactor ProviderRestApi, increase default timeout

* Fix Smoothing - Fix empty updates, consider smoothing configs for effects

* UI - Fix not removed priority

* Add missing header and code updates

* setRedirectPolicy was only introduced in Qt 5.9

* Adalight - Align to HyperSerial v9.0.0

* HyperSerial Hyperion with awa protocol v8.0.0

* Correct line-endings
2023-02-12 21:20:50 +01:00
LordGrey
a57bcbc2b8
WLED segment streaming support (#1556)
* WLED segment streaming support

* Address CodeQL findings

* WLED - Remove that interim color is shown when WLED is powered off

* Allow LEDDevice to stay on after streaming

* Apply stayOn on segment streamed to

* Fix LED-Matrix Layout: Add Cabling direction selection element again
2023-02-07 08:15:22 +01:00
LordGrey
ef7ceb0bbf
Update to Mbed TLS 3.3.0 (#1558)
* Convert mbedtls to subproject

* Align cmake to subproject and mbedtls 3.3.0

* mdebtls 3.3.0

* Add cxx_std_20 for Windows build
2023-02-05 15:19:25 +01:00
dependabot[bot]
f327b5063e
Bump actions/download-artifact from 3.0.1 to 3.0.2 (#1562)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3.0.1...v3.0.2)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-02 19:15:29 +01:00
LordGrey
fa7a5b6b56
Various Fixes/Updates (#1549)
* Update FindWindowsSDK.cmake

* cmake support libcec without version

* Ensure Light-Ids are strings

* Fix type - do not have dbus as requried

* Fixing #1544

* Cleanup

* CleanupFix #1551

* Consistently return instance number with JSON replies (#1504)

* hyperion-remote- Fix extracting reply for configGet request

* Qt 6.6 - Fix iterator finds

* Fix test_image2ledsmap

* Ensure window.currentHyperionInstanceName is set, cleanup system/log clipboard report

* Address protobuf cmake warning

* Update License

* Update ChangeLog

* Address CodeQL and clang findings
2023-01-16 12:01:28 +01:00
LordGrey
f665f1e1b6
Update to Protocol Buffers 3.21.12 (#1557) 2023-01-15 22:25:39 +01:00
dependabot[bot]
e3a82b2890
Bump peter-evans/repository-dispatch from 2.1.0 to 2.1.1 (#1553)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 11:26:58 +01:00
dependabot[bot]
09d1ef4883
Bump SamKirkland/FTP-Deploy-Action from 4.3.2 to 4.3.3 (#1552)
Bumps [SamKirkland/FTP-Deploy-Action](https://github.com/SamKirkland/FTP-Deploy-Action) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/SamKirkland/FTP-Deploy-Action/releases)
- [Commits](https://github.com/SamKirkland/FTP-Deploy-Action/compare/4.3.2...4.3.3)

---
updated-dependencies:
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-06 11:26:47 +01:00
LordGrey
6fa7bab6f7
Add CodeQL for GitHub code scanning (#1548)
* Create codeql.yml

* Addressing codeql findings
2022-12-27 08:36:10 +01:00
LordGrey
1189f86c1a
Add Suspend/Resume support (#1535)
* Add Suspend/Resume support

* Support Suspend/Resume/Restart via API, UI and Systray

* Support screen lock/unlock scenario

* Handle idle scenario

* Align with fix for #1368

* Update Windows build

* Refactor SuspendHandler to maintain state

* Do not start BG-Effect, if system goes into suspend mode

* Correct Idle and Resume interaction
2022-12-22 12:40:39 +01:00
LordGrey
2217135336
Fixing outstanding issues (#1537)
* Correct stopEnableAttemptsTimer thread affinity

* Restart correctly, if running as service

* Add instance# in API response

* Qt6 updates

* Update fallthrough guide

* Update Compile warning
2022-12-19 14:04:35 +01:00
LordGrey
10b755b2ec
Refactor for Python 3.11 deprecated functions (#1538) 2022-12-19 13:14:35 +01:00
LordGrey
c4e681f6b3
Rollover version 2022-12-03 22:22:24 +01:00
LordGrey
b109703189 Version 2.0.14 2022-11-27 17:26:54 +01:00
LordGrey
a2db590d2a
Fixes - Smoothing, Color-Calibration (#1532)
* Smoothing Remove ouputrate as duplicate to update frequency

* Serial LDEDDevices -Increase writeBlack to overcome issues on high baud rates

* Serial LED-Devices - Support device feedback, show statistics provided by HyperSerial

* Fix - Update Color Calibration on Remote Control when settings saved

* Serial LED-Devices - Support device feedback, show statistics provided by HyperSerial
2022-11-27 15:47:54 +01:00
Hyperion-Bot
46f996310d Update el.json (POEditor.com) 2022-11-26 17:30:36 +01:00
Hyperion-Bot
dc8dc566e0 Update tr.json (POEditor.com) 2022-11-26 17:30:35 +01:00
Hyperion-Bot
4d0c3723de Update tr.json (POEditor.com) 2022-11-26 17:23:05 +01:00
Hyperion-Bot
29db3ba593 Update ca.json (POEditor.com) 2022-11-26 17:23:04 +01:00
Hyperion-Bot
6b17123259 Update tr.json (POEditor.com) 2022-11-26 17:23:03 +01:00
Hyperion-Bot
5098a7a11e Update sv.json (POEditor.com) 2022-11-26 17:23:01 +01:00
Hyperion-Bot
905515c46f Update es.json (POEditor.com) 2022-11-26 17:23:00 +01:00
Hyperion-Bot
1d12fe45ca Update de.json (POEditor.com) 2022-11-26 17:22:59 +01:00
Hyperion-Bot
1127087b52 Update fr.json (POEditor.com) 2022-11-26 17:22:58 +01:00
LordGrey
547a976000
New languages -Catalan & Greek (#1533) 2022-11-26 16:44:59 +01:00
xkns
7a31e2bb6d
Oklab: Fix rollover error (#1529)
* oklab: Removed unnecessary type conversions

* oklab: Fixed rollover error in color conversion
2022-11-24 18:15:10 +01:00
LordGrey
80aafa22ec Update for install-qt-action@v3 2022-11-07 22:00:58 +01:00
dependabot[bot]
1848744e6e
Bump peter-evans/repository-dispatch from 2.0.0 to 2.1.0 (#1523)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-07 20:12:08 +01:00
dependabot[bot]
97e5e01a27
Bump actions/download-artifact from 3.0.0 to 3.0.1 (#1524)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-07 20:11:54 +01:00
dependabot[bot]
b1fe042a9f
Bump geekyeggo/delete-artifact from 1 to 2 (#1525)
Bumps [geekyeggo/delete-artifact](https://github.com/geekyeggo/delete-artifact) from 1 to 2.
- [Release notes](https://github.com/geekyeggo/delete-artifact/releases)
- [Commits](https://github.com/geekyeggo/delete-artifact/compare/v1...v2)

---
updated-dependencies:
- dependency-name: geekyeggo/delete-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-07 20:11:39 +01:00
dependabot[bot]
0ea1522000
Bump crazy-max/ghaction-import-gpg from 5.1.0 to 5.2.0 (#1526)
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Changelog](https://github.com/crazy-max/ghaction-import-gpg/blob/v5.2.0/CHANGELOG.md)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-07 20:11:13 +01:00
LordGrey
06091b0786 Cleanup APT-builds 2022-11-07 16:57:08 +01:00
dependabot[bot]
49b83abcdf
Bump SamKirkland/FTP-Deploy-Action from 4.3.1 to 4.3.2 (#1517)
Bumps [SamKirkland/FTP-Deploy-Action](https://github.com/SamKirkland/FTP-Deploy-Action) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/SamKirkland/FTP-Deploy-Action/releases)
- [Commits](https://github.com/SamKirkland/FTP-Deploy-Action/compare/4.3.1...4.3.2)

---
updated-dependencies:
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-05 23:01:21 +01:00
LordGrey
9df21b9ddd
Adalight - HyperSerial Support (#1515)
* HyperSerial support

* Migrate Adalight records to new structure

* Serial Devices - Select baud rate and allow providing a custom one
2022-09-30 17:02:40 +02:00
LordGrey
e8fc8a9855
Add libjpeg-dev to test LIBJPEG_TURBO_VERSION_NUMBER (#1516) 2022-09-29 20:38:32 +02:00
LordGrey
cb76afa4d9
Fix v4l2 MJPEG Processing (#1512)
* Fix MJPEG 3D and transform memory leak

* In 3D Crop only half to maintain ratio

* Support turbojpeg v1 and v2
2022-09-27 08:57:19 +02:00
LordGrey
9d23d9e2d6 Fix APT builds - Readd tarball 2022-09-07 08:12:13 +02:00
dependabot[bot]
d219dac36c
Bump SamKirkland/FTP-Deploy-Action from 4.3.0 to 4.3.1 (#1508)
Bumps [SamKirkland/FTP-Deploy-Action](https://github.com/SamKirkland/FTP-Deploy-Action) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/SamKirkland/FTP-Deploy-Action/releases)
- [Commits](https://github.com/SamKirkland/FTP-Deploy-Action/compare/4.3.0...4.3.1)

---
updated-dependencies:
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-06 14:03:20 +02:00
LordGrey
95e53b4720 Fix APT builds 2022-09-06 12:58:29 +02:00
LordGrey
9f6704118e
Fix - Logo should say "Lighting" not "Lightning" (#1510)
* Fix #1505 - Logo should say "Lighting" not "Lightning"

* Address LGTM findings

* Specify an image theme using html, as fragmented approach
2022-09-05 23:53:41 +02:00
Drzony
2008e2c3d7
Fix SEGFAULT in V4L2Grabber (#1503) 2022-08-19 10:22:10 +02:00
xkns
2fb2fc9dd7
Saturation & Brightness/Value Gain using Oklab color space (#1477)
* Imported Oklab reference implementation

* Add Okhsv conversions

* Fixed formatting error

* Add saturation and value gain to schemas

* Add english translation for saturation, value gain

* Created OkhsvTransform

* Make OkhsvTransform configurable

* Apply OkhvsTransform

* Clamped values during transform

* Precalculate isIdentity in OkhsvTransform

* Skip OkhsvTransform if it is the identity function

* Added changelog message

* Allow for full desaturation

* Imported recommended changes by LordGrey

* Fixed typo in constant

* Fixed anti-pattern in ok_color.h

* Correct indentions

* Correct remote-control

* Limited maximum gain settings to practical range

* Renane valueGain to brightnessGain for clarity and understanding

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
2022-08-17 23:26:19 +02:00
LordGrey
a2266b177f
Improve Led Device on/off and background effect (#1502)
* Queue On-Off calls

* Do not switch-off LED-device when Background effect is enabled

* Fix LGTM Warnings

* Address LGTM findings
2022-08-14 23:02:30 +02:00
dependabot[bot]
e17ce6cd4e
Bump crazy-max/ghaction-import-gpg from 5.0.0 to 5.1.0 (#1501)
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Changelog](https://github.com/crazy-max/ghaction-import-gpg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 16:21:34 +02:00
dependabot[bot]
cef70af78d
Bump actions/upload-artifact from 2 to 3 (#1500)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 16:21:24 +02:00
dependabot[bot]
ec553985b9
Bump actions/checkout from 2 to 3 (#1499)
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-01 16:21:13 +02:00
LordGrey
c7a1fc6b32
Fix Smoothing configuration (#1476)
* Fix Smoothing out of sync when saving

* Only force Smoothing for new devices

* Re-Add Max/Min Brightness titles

* UI - Fix: Correctly lookup current Instance Name in case instance IDs are not in order

* Fix/Update AtmoOrb Firmware images
2022-07-30 17:32:12 +02:00
LordGrey
8000c3e8b7 Align inputs names to crazy-max/ghaction-import-gpg v5 2022-07-25 07:44:10 +02:00
tuxuser
abde114dc4
dependencies: Pin mbedtls to tagged version v3.1.0 (#1494)
* dependencies: Pin mbedtls to tagged version v3.1.0

* Update CMakeLists.txt

Remove extra space

Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
2022-07-24 21:54:58 +02:00
dependabot[bot]
c47a3054d2
Bump SamKirkland/FTP-Deploy-Action from 4.1.0 to 4.3.0 (#1492)
Bumps [SamKirkland/FTP-Deploy-Action](https://github.com/SamKirkland/FTP-Deploy-Action) from 4.1.0 to 4.3.0.
- [Release notes](https://github.com/SamKirkland/FTP-Deploy-Action/releases)
- [Commits](https://github.com/SamKirkland/FTP-Deploy-Action/compare/4.1.0...4.3.0)

---
updated-dependencies:
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 10:23:44 +02:00
dependabot[bot]
19711f71fa
Bump crazy-max/ghaction-import-gpg from 3.1.0 to 5.0.0 (#1491)
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 3.1.0 to 5.0.0.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Changelog](https://github.com/crazy-max/ghaction-import-gpg/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v3.1.0...v5.0.0)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 10:23:38 +02:00
dependabot[bot]
6946794680
Bump actions/download-artifact from 2.0.10 to 3.0.0 (#1490)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2.0.10 to 3.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v2.0.10...v3.0.0)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 10:23:29 +02:00
dependabot[bot]
975f5cc309
Bump actions/cache from 2 to 3 (#1489)
Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 10:23:22 +02:00
dependabot[bot]
e25d0a61a6
Bump peter-evans/repository-dispatch from 1.1.3 to 2.0.0 (#1488)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 1.1.3 to 2.0.0.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](https://github.com/peter-evans/repository-dispatch/compare/v1.1.3...v2.0.0)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-19 10:23:12 +02:00
James
de41f014ec
Autoupdate github action (#1486)
This will keep stuff like `- uses: actions/checkout@v2` updated (v3 is latest) in Github Actions
2022-07-18 21:43:14 +02:00
Hyperion-Bot
a608c336dc Update submodule rpi_ws281x 2022-06-28 02:05:32 +00:00
LordGrey
359618a4ee
Update Ubuntu Builds -2 2022-06-01 08:10:05 +02:00
LordGrey
400fa78679
Update Ubuntu Builds (#1474)
* Update builds for Ubuntu
* Update Compile HowTo
2022-05-31 12:29:49 +02:00
LordGrey
ec496ed457
Allow forwarding of flat-/proto buffer input (#1471)
* Typo

* Address compiler Warnings

* Allow forwarding of flat-/proto buffer input
2022-05-29 17:47:08 +02:00
tuxuser
7c76322215 CMake: build-time test - backwards compatibility with older glibc (#1467) 2022-05-25 12:46:46 +02:00
LordGrey
fdab2586a5 Rollover version and change-log after release 2022-05-23 11:21:16 +02:00
LordGrey
5dc696b8dc
Update version to 2.0.13 2022-05-22 13:18:53 +02:00
Hyperion-Bot
858e2bbff0 Update sv.json (POEditor.com) 2022-05-22 13:18:02 +02:00
Hyperion-Bot
f0c0262dec Update ru.json (POEditor.com) 2022-05-22 13:18:01 +02:00
LordGrey
ec71772f98
Fix OSX Bundling (#1465)
* Fix OSX Bundling

* Fix OSX Bundling - Refined

* editorial updates

* Update change log

* Update version references

* Update Link

* Test

* Pass ENABLE_EFFECTENGINE to install code, correct output messages
2022-05-22 08:01:49 +02:00
Hyperion-Bot
2ac8f30bb1 Update sv.json (POEditor.com) 2022-05-19 22:26:57 +02:00
Hyperion-Bot
62990974f5 Update hu.json (POEditor.com) 2022-05-19 22:26:56 +02:00
LordGrey
8f65f34247
Fix #1430 (#1464)
* Fix #1430 - ensure all config and sysinfo response are there before reloading the page

* Fix printout

* fix typo

* PriorityMuxer: Remove emit out of QMutableMapIteratorion

* Test - Build aarch64
2022-05-10 22:29:22 +02:00
imgbot[bot]
988ea97346
[ImgBot] Optimize images (#1463)
*Total -- 476.82kb -> 271.59kb (43.04%)

/doc/development/LedDevice_Flows.png -- 411.85kb -> 213.78kb (48.09%)
/resources/icons/restart.svg -- 0.60kb -> 0.47kb (22.17%)
/cmake/osxbundle/Background.png -- 64.36kb -> 57.34kb (10.92%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-05-10 22:28:44 +02:00
Hyperion-Bot
a4b7490ed1 Update sv.json (POEditor.com) 2022-05-09 15:32:16 +02:00
Hyperion-Bot
3dc81e1a0c Update es.json (POEditor.com) 2022-05-09 15:32:15 +02:00
Hyperion-Bot
1311dc9d87 Update pt-br.json (POEditor.com) 2022-05-09 15:32:13 +02:00
Hyperion-Bot
3a15f35740 Update pl.json (POEditor.com) 2022-05-09 15:32:12 +02:00
Hyperion-Bot
c7afa35127 Update hu.json (POEditor.com) 2022-05-09 15:32:10 +02:00
Hyperion-Bot
83c5b7fb4a Update da.json (POEditor.com) 2022-05-09 15:32:09 +02:00
Hyperion-Bot
d5e796208b Update zh-CN.json (POEditor.com) 2022-05-09 15:32:08 +02:00
Hyperion-Bot
e055fb9e15 Update de.json (POEditor.com) 2022-05-01 21:13:37 +02:00
LordGrey
e9936e131b
mDNS Support (#1452)
* Allow build, if no grabbers are enabled

* Align available functions to right Qt version

* Update to next development version

* Align available functions to right Qt version

* fix workflows (apt/nightly)

* Disable QNetworkConfigurationManager deprecation warnings

* Initial go on Smart Pointers

* Add Deallocation

* Correct QT_WARNING_DISABLE_DEPRECATED (available since 5.9)

* Cluster Build Variables

* Hyperion Light

* Address build warnings

* Hyperion Light - UI

* Update Protobuf to latest master

* Removed compiler warnings

* Added restart ability to systray

* Correct Protobuf

* Ignore 'no-return' warning on protobuf build

* hyperion-remote: Fix auto discovery of hyperion server

* Fix Qt version override

* Update changelog

* Remove Grabber Components, if no Grabber exists

* Standalone Grabber - Fix fps default

* Remote Control - Have Source Selction accrosswhole screen

* Enable Blackborder detection only, if relevant input sources available

* Enable Blackborder detection only, if relevant input sources available

* Remote UI - rearrange containers

* Checkout

* Fix compilation on windows

* Re-added qmdnsengine template cmake

* chrono added for linux

* Removed existing AVAHI/Bonjour, allow to enable/disable mDNS

* hyperiond macos typo fix

* Fix macOS Bundle build

* Fix macOS bundle info details

* Correct CMake files

* Removed existing AVAHI/Bonjour (2)

* Share hyperion's services via mDNS

* Add mDNS Browser and mDNS for LED-Devices

* Support mDNS discovery for standalone grabbers

* Remove ZLib Dependency & Cleanup

* mDNS - hanle 2.local2 an ".local." domains equally

* Hue - Link discovery to bridge class, workaround port 443 for mDNS discovery

* Fix save button state when switching between devices

* Removed sessions (of other hyperions)

* mDNS Publisher - Simplify service naming

* mDNS refactoring & Forwarder discovery

* mDNS Updates to use device service name

* Consistency of standalone grabbers with mDNS Service Registry

* Merge branch 'hyperion-project:master' into mDNS

* Start JSON and WebServers only after Instance 0 is available

* Remove bespoke qDebug Output again

* MDNS updates and refactor Forwarder

* Minor updates

* Upgrade to CMake 3.1

* typo

* macOS fix

* Correct merge

* - Remove dynamic linker flag from standalone dispmanX Grabber
- Added ability to use system qmdns libs

* Cec handler library will load at runtime

* typo fix

* protobuf changes

* mDNS changes for Windows/macOS

* test window build qmdnsengine

* absolute path to protobuf cmake dir

* Rework Hue Wizard supporting mDNS

* LED-Devices - Retry support + Refactoring (excl. Hue)

* LED-Devices - Refactoring/Retry support Hue + additional alignments

* Address LGTM findings

* Fix CI-Build, revert test changes

* Build Windows in Release mode to avoid python problem

* Correct that WebServerObject is available earlier

* Ensure that instance name in logs for one instance are presented

* Update content LEDs

* Rework mDNS Address lookup

* Fix LED UI

* Fix for non mDNS Services (ignore default port)

* Disbale device when now input is available

* Revert back some updates, ensure last color is updated when switched on

* Handle reopening case and changed IP, port for API-calls

* Add UPD-DDP Device

* WLED support for DDP

* Fix printout

* LEDDevice - Allow more retries, udapte defaults

* LED-Net Devices - Select Custom device, if configured

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2022-05-01 19:42:47 +02:00
LordGrey
3ef4ebc1a4
New language: Japanese (#1462)
* New language: Japanese

* About - Add new libaries used
2022-05-01 19:17:53 +02:00
Paulchen-Panther
f27010088d
WebUI fixes & Draggable LEDs (#1444)
* WebUI fixes & Draggable LEDs

* Correct some keystone issues

* Fix lgtm warnings (thx @Lord-Grey)

* Change of LGTM badge (code quality)

* Log output and LED preview window can be maximized

* Rework

* z-index of the corners corrected

* migrated to animate.css v4.1.1

* Fix collapsing & add gap constraints

* Address LGTM findings

* design refactor

* Typo fix (thx @Lord-Grey)

* Avoid overlap during keystone correction

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
2022-04-30 22:20:58 +02:00
Aaron Godfrey
f721240e58
Fixed documentation link (#1461) 2022-04-30 20:30:04 +02:00
ShalokShalom
613ae7c922
add hardware support (#1457) 2022-04-27 17:46:36 +02:00
Hyperion-Bot
7f174b2872 Update submodule rpi_ws281x 2022-04-12 01:45:33 +00:00
LordGrey
2388044a93
Fix Iterator issue on Windows (#1450) 2022-04-11 08:54:09 +02:00
Markus
addff6f7ef
Dynamic loading of the Dispmanx Grabber (#1440)
* BCM dynamic loading

* cleanup

* better handle start of dispmanx

* set GrabberWrapper pointer to null on exit

* Update DispmanxFrameGrabber.cpp
2022-03-20 14:42:21 +01:00
LordGrey
f32db90c12
Fix Effects and refactor Smoothing (#1442) 2022-03-16 09:28:00 +01:00
LordGrey
62829d9bf8
Allow to disable switching LEDs on during startup (#1443) 2022-03-16 09:27:37 +01:00
Paulchen Panther
c75c98e252 Update flatbuffers submodule 2022-03-15 20:41:28 +01:00
LordGrey
3e8c6f3b25
Update UI JS Libraries (#1441)
* Update Gijgo to 1.9.13

* Update DOMPurify 2.3.6

* Update Marked 4.0.12

* Update metismenu 3.0.7

* Issue Update Priority, if first LED changes for COLOR update (to reflect color correctly in UI)

* Add Yeelight W3 MultiColor

* Update to jquery 3.6.0
2022-03-13 16:38:28 +01:00
Paulchen Panther
f9a5772aa5 Correction of the flatbuffer submodule
Automatic update only of submodule rpi_ws281x
2022-03-09 17:43:45 +01:00
Hyperion-Bot
4c472d50ca Update submodules 2022-03-09 01:23:58 +00:00
Paulchen Panther
15015a4257 Update submodules automatically at midnight 2022-03-08 20:19:01 +01:00
LordGrey
320ec00108
Quick Fix - SPI Device is excluded from build 2022-03-06 08:14:13 +01:00
LordGrey
5cd3881067
Hyperion Light updates (#1434)
* Hyperion Light - Allow hyperion remote as component

* Fix missing guard

* NSIS installation via Choco removed because already installed on windows server 2022

* Correct CMAKEList defaults

* Align package creation with build rules for components

* Fix Copy/Paste issue

Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2022-03-05 15:18:01 +01:00
tuxuser
14b6a114bb
libsrc/utils: Do not catch SIGILL signal (#1435)
libcrypto performs cpu feature checks on ARM platforms, by calling `OPENSSL_cpuid_setup`.
In there, it tries to call various instructions and traps `illegal instructions` aka. non-existing instructions itself.

However, as hyperion.ng also tries to trap all signals, the call inside libcrypto is propagated and hyperiond gets killed by itself.

This patch lets execution proceed, even when `SIGILL` occurs.

References:
- libcrypto OPENSSL_cpuid_setup: 954f45ba4c/crypto/armcap.c (L183)
2022-03-02 19:56:12 +01:00
LordGrey
160c5d0b3a
UI and Web updates (#1421)
* Stop Web-Capture when priority changes

* Remote control UI: Treat duration=0 as endless

* Stop Web-Capture on non-Image events changes

* LED Matrix Layout - Support vertical cabling direction

* Additional Yeelight models

* Treat http headers case insensitive

* Update change log

* Treat http headers case insensitive (consider Qt version)

* API - Consider provided format when setImage

* UI - Support Boblight configuration per LED instance

* Support multiple Boblight clients with different priorities

* Update changelog

* Simplify isGUI rules allowing for QT only builds

* Sysinfo: Fix indents

* LED-Devices: Show warning, if get properties failed

* Qt-Grabber: Fixed position handling of multiple monitors

* LED layout: Remove indention limitations

* Yeelight: Test YLTD003

* hyperion-remote: Provide image filename to muxer/UI

* Refactor PriorityMuxer and related

* Temp: Build under Windows 2019

* Yeelight: Remove YLTD003 as it is not working without additional changes

* Test Windows-latest with out removing redistributables/new MSVC

* correct workflows

* correct CI script

* Build Windows with Qt 5.15.2

* Priority Muxer: Updates after testing

* Fix Typo

* Update BGHandler

* QTGrabber - Reactivate windows code to avoid cursor issues

* Emit prioritiesChanged when autoselect was changed by user

Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2022-02-22 20:58:59 +01:00
Hyperion-Bot
0a3df596cf Update hu.json (POEditor.com) 2022-02-20 10:49:04 +01:00
Hyperion-Bot
51a1044787 Update sv.json (POEditor.com) 2022-02-15 20:58:16 +01:00
Hyperion-Bot
f2d0857798 Update es.json (POEditor.com) 2022-02-15 20:58:15 +01:00
Hyperion-Bot
518e15a129 Update ru.json (POEditor.com) 2022-02-15 20:58:14 +01:00
Hyperion-Bot
a14d9d1af5 Update pt-br.json (POEditor.com) 2022-02-15 20:58:12 +01:00
Hyperion-Bot
7651c71b63 Update pl.json (POEditor.com) 2022-02-15 20:58:10 +01:00
LordGrey
5078688dc8
Hyperion Light 2 (#1428)
* Hyperion Light - Have EffectEngine as component

* Hyperion light - Build switches for LED Devices (Serial, Network)

* Fix file uri generation

* Fix missing guard for Windows

* Fix file uri generation

* Update jsonschema and checkschema

* Allow to provide cmake build args to docker build
2022-02-11 20:36:15 +01:00
Paulchen Panther
9e4b58d5c6 Update submodule rpi_ws281x 2022-02-09 19:45:36 +01:00
Paulchen Panther
da64ab58d5 update license and add privacy police 2022-02-08 17:23:54 +01:00
Markus
a8342b4a6a
Reference reusable workflow locally 2022-01-27 21:14:04 +01:00
LordGrey
2efc03b612
Logging enhancement / fixes (#1419)
* Instance in logging output

* Fix: Trigger that previous log lines are shown in the Log UI
2022-01-22 17:48:03 +01:00
Markus
98654e48f6
Flatbuffer/Protobuf now able to receive rgba data (#1399)
* Flatbuffer/Protobuf now able to receive rgba data

* Proto/Flat schema comment added

* Prevent diveded by zero

* Address LGTM findings

* Fix EncoderThread & cleanup

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
2022-01-09 17:23:50 +01:00
LordGrey
2f573a117f
Hyperion "Light", Build improvements and minor fixes (#1400)
* Allow build, if no grabbers are enabled

* Align available functions to right Qt version

* Update to next development version

* Align available functions to right Qt version

* fix workflows (apt/nightly)

* Disable QNetworkConfigurationManager deprecation warnings

* Initial go on Smart Pointers

* Add Deallocation

* Correct QT_WARNING_DISABLE_DEPRECATED (available since 5.9)

* Cluster Build Variables

* Hyperion Light

* Address build warnings

* Hyperion Light - UI

* Update Protobuf to latest master

* Removed compiler warnings

* Added restart ability to systray

* Correct Protobuf

* Ignore 'no-return' warning on protobuf build

* hyperion-remote: Fix auto discovery of hyperion server

* Fix Qt version override

* Update changelog

* Remove Grabber Components, if no Grabber exists

* Standalone Grabber - Fix fps default

* Remote Control - Have Source Selction accrosswhole screen

* Enable Blackborder detection only, if relevant input sources available

* Enable Blackborder detection only, if relevant input sources available

* Remote UI - rearrange containers

* - QT5/6 path for arm64 added
- Remove ZLib Dependency
- Fix macOS bundle info details
- Cleanup

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2022-01-07 14:47:51 +01:00
Jamie Burchell
c38ec60208
Use direct URL of GIF file rather than HTML page (#1392) 2021-12-14 07:57:11 +01:00
LordGrey
fcd0fb0c52
Fix #967 (#1378)
* Fix #967

* Start Smoothing in pause mode to avoid resource usage, if hyperion is started without active priority

* Update Changelog
2021-12-14 07:55:34 +01:00
LordGrey
442fab9c59
Fix/Workaround set-music error when music is already off (#1379)
* Fix/Workaround set-music error when music is already off

* Do not ignore error when setting music mode
2021-12-14 07:54:53 +01:00
Paulchen Panther
a0d4efc10d fix workflows (apt/nightly) 2021-12-13 20:07:45 +01:00
LordGrey
17582ac38a
Correct isGUIApp tests 2021-12-04 18:00:20 +01:00
Markus
7840317cc0 Readme slightly improved 2021-12-03 12:17:43 +00:00
LordGrey
e3b494428a
Fix standalone grabbers (#1384)
* Fix too much copy/paste
* Fix typo
* Commandlineoptions: Additional error details for Int and Double ranges
* Standalone grabbers: Show fps range on error, fix default host address
2021-11-29 18:51:03 +01:00
Markus
926a58de9c README dark/light mode 2021-11-24 18:32:02 +00:00
Markus
df149583d3 Release 2.0.12 2021-11-21 13:26:17 +00:00
LordGrey
72d99a1121
Prep 2.0.12 Release (#1377)
* APA102 - Migrate ColorOrder to align with fix
* Address LGTM findings
* Updated Changelog with updates since last release
2021-11-20 16:20:01 +01:00
LordGrey
7311c3e424
Support MBEDTLS 3 (#1374)
* Support MBEDTLS 3

* mbedTLS 2 & 3 support (incl. System libs)

Co-authored-by: Markus <16664240+Paulchen-Panther@users.noreply.github.com>
2021-11-18 21:58:56 +01:00
Hyperion-Bot
f156f52123 Update de.json (POEditor.com) 2021-11-18 21:53:51 +01:00
Hyperion-Bot
c7e91c8c6d Update hu.json (POEditor.com) 2021-11-18 21:51:25 +01:00
Hyperion-Bot
a5f970b975 Update da.json (POEditor.com) 2021-11-18 21:51:24 +01:00
LordGrey
d395e0a3b1
New languages - Danish & Hungarian (#1376)
* New languages, Danish and Hungarian

* Yeelight Wizard - Ensure correct hostname
2021-11-18 21:48:11 +01:00
Hyperion-Bot
ac941aebe1 Update de.json (POEditor.com) 2021-11-18 20:54:00 +01:00
Hyperion-Bot
06d72adbca Update sv.json (POEditor.com) 2021-11-18 20:42:03 +01:00
Hyperion-Bot
6181360785 Update es.json (POEditor.com) 2021-11-18 20:42:02 +01:00
Hyperion-Bot
d8cb6b5479 Update ru.json (POEditor.com) 2021-11-18 20:42:00 +01:00
Hyperion-Bot
fbf6886dfe Update pl.json (POEditor.com) 2021-11-18 20:41:59 +01:00
Hyperion-Bot
4c7ce6e509 Update nb.json (POEditor.com) 2021-11-18 20:41:58 +01:00
Hyperion-Bot
7d33d93b32 Update de.json (POEditor.com) 2021-11-18 20:41:57 +01:00
Hyperion-Bot
3c361cb2a2 Update fr.json (POEditor.com) 2021-11-18 20:41:55 +01:00
Markus
dd3229d582
Nightly build fix 2021-11-18 17:18:34 +01:00
LordGrey
80ec037832
SettingsManager - Fix Migration Scenario 2021-11-17 22:38:15 +01:00
LordGrey
ad293b2fb6
IPv6 support (#1369)
* hyperion-remote - Support IPv6

* LEDDevices - Remove IPv6 limitations

* Separate JsonEditorHostValidation

* Standalone grabbers & JSON/Flatbuffer forwarder: IPv6 support

* remote: Fix setting multiple colors via Hex, add standard logging

* IPv6 Updates -Add db migration activities

* Addressing non-Windows compile issues

* Code cleanup, address clang feedback

* Update address (hostname, IPv4/IPv6) help text

* Apply migration steps to "old" configurations imported

* Show user the UI-Url, if hyperion is already running, address clang findings

* Windows Cmake OpenSLL output

* Minor Text update
2021-11-17 21:30:43 +01:00
Markus
b33466d392
APT update / Submodule updates / added updateHyperionUser script again (#1366)
* Test new APT builds

* test build

* final changes for bookworm and jammy

* - Include updateHyperionUser script again
- Update package dependencies for APT builds

* Installation guide updated

* Removed alpha notes and added arm64 APT builds

* update docker-compile script

* Overwrite CMAKE_SYSTEM_PROCESSOR on Windows builds
2021-11-17 20:35:28 +01:00
LordGrey
67280b8566
Razor Chroma Support - Initial version (#1054)
* Razor Chroma Support - Initial version

* Address clang and lgtm findings

* Razer Fixes

* Merge branch 'master' into Razer_Chroma_Support

# Conflicts:
#	assets/webconfig/i18n/en.json
#	assets/webconfig/js/content_leds.js
#	libsrc/leddevice/dev_net/ProviderRestApi.cpp
#	libsrc/leddevice/dev_net/ProviderRestApi.h

* Corrections

* Set default config for Razer

* Simplify

* Razer - Support individual LEDs and have default layout per device type

* Differentiate between HWLEDCount and LayoutLEDCount

* Revert "Differentiate between HWLEDCount and LayoutLEDCount"

This reverts commit b147b215a5773a423184618ecb8dc9653d4870cc.

* Correct LGTM finding

* Disable verbose mode
2021-11-17 20:34:49 +01:00
LordGrey
25d79a9f3f
Qt6 support (#1363)
* Initial Qt6 config

* Change Package order to reingfence missing packages

* Update to QT 6.2.0

* Qt 6.2.0 updates

* macOS fix

* Simplify handling QT5 & Qt6 in parallel

* Updates for Windows

* Fix macos build

* macOS linker fix

* General support of QTDIR, update docu

* MaxOS add default qt directories

* Fix merge typo

* Update default CMakeSettings.json with installation path options

* Add additional libs required by Qt6 to CompileHowTo

* Fix Qt5 items

Co-authored-by: Paulchen-Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2021-11-16 18:12:56 +01:00
LordGrey
3b1ca20b10
Update restart.html 2021-11-07 18:11:17 +01:00
LordGrey
b8bb1adbba
Update docker-compile.sh 2021-11-07 17:47:01 +01:00
LordGrey
b0c529c05d
EffectModule - Fix 2021-11-04 09:40:12 +01:00
LordGrey
954112a88e
APA102 protocol fix (#1352) (#1361)
* Fix APA102 protocoll

* Minor clean-ups

* Revert updates
2021-10-28 19:54:54 +02:00
Markus
ba32b875ab nightly build fix 2021-10-26 17:55:33 +00:00
LordGrey
e51a42dc14
Update content_index.js (#1360) 2021-10-20 21:21:25 +02:00
Markus
8b1267d059
Fixed 3rd Party License on About Page 2021-10-17 21:44:05 +02:00
Markus
3761ff47d2 Alpha phase is completed. New version 2.0.12 2021-10-17 11:29:20 +00:00
Markus
a1dee08195
Drag'n Drop for macOS / Fix #1109 / ... (#1353) 2021-10-16 14:07:36 +02:00
LordGrey
c9a7258160
Fix API Subscription initialisation (#1354)
* Fix #1352,#1351

* Fix/Add details on client address
2021-10-16 13:55:23 +02:00
LordGrey
532ac7e330
Fix Database migration version handling (#1356) 2021-10-16 13:54:18 +02:00
Markus
ac1dad77e3
Run nightly build not on forks 2021-10-10 12:24:03 +02:00
Markus
23470ac90a Commit check for nightly build workflow 2021-10-09 11:31:07 +00:00
Markus
084e28f0ca Commit check for nightly builds 2021-10-09 11:10:55 +00:00
Markus
788e843846 Changed workflow process
Added nightly build workflow for APT
Debian prerm script corrected
2021-10-08 20:29:58 +00:00
LordGrey
4db8afda87
Update CHANGELOG.md 2021-10-06 09:38:57 +02:00
Markus
2c79656b4a [HotFix] Release 2.0.0-alpha.11 2021-10-05 21:22:19 +00:00
Markus
672354fb5c
Added sponsor button to Repository 2021-10-03 14:46:26 +02:00
LordGrey
a6b63d8e91
Update CHANGELOG.md 2021-10-03 11:57:32 +02:00
Paulchen-Panther
17e8c6bca0 Release 2.0.0-alpha.10.1 2021-10-03 11:30:02 +02:00
LordGrey
d5a71f21fe
Update CHANGELOG.md 2021-10-03 10:39:48 +02:00
Hyperion-Bot
ef375886e1 Update de.json (POEditor.com) 2021-10-03 09:07:24 +02:00
hissingshark
9e8740b6df
Fix libqt5sql5-sqlite packaging dependency. (#1307) 2021-10-02 23:06:36 +02:00
Markus
eb96553975
Systemd changes | root script | URL support for gif effects (#1319)
* Systemd changes and URL option for Gif Effects
* Add grayscale to gif effect
* WebUI adjustments
* Rename version to .version
* Copy runHyperionAsRoot.sh to rpi packages
* Pack script into all unix packages
* Start hyperion only after network is available
* Snap builds removed due to poor server connection
* Flexible updateHyperionUser.sh
* updateHyperionUser script entered in the package
* Print help on none sudo execute
* Corrected embedded Python location
* Replacement for the QWindowsScreen grabWindow function
* Updated to latest 2.x mbedtls version 2.27

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
2021-10-02 18:02:52 +02:00
LordGrey
f269268def
Fix LED Devices (Lightpack, Atmo/Karate, Hue) (#1337)
* Fix that lighpack cores when lack of permissions

* Atmo/Karate - Fix LedCount constraint handling

* Hue updates - Have EntertainmentAPI as default, disable hardwareledcount as cacultated

* Have Gamma per default 2.2
2021-09-30 18:06:23 +02:00
Hyperion-Bot
af24e6d623 Update pl.json (POEditor.com) 2021-09-30 13:13:23 +02:00
Hyperion-Bot
785ad10c01 Update pl.json (POEditor.com) 2021-09-30 13:12:46 +02:00
Hyperion-Bot
90e8765910 Update ru.json (POEditor.com) 2021-09-30 11:21:38 +02:00
Hyperion-Bot
e6a3396085 Update zh-CN.json (POEditor.com) 2021-09-30 11:21:37 +02:00
Hyperion-Bot
d0b40b629a Update es.json (POEditor.com) 2021-09-29 23:20:27 +02:00
LordGrey
2a10ef955d
Limit maximum LEDs number for WLED and UDP-Raw (#1334)
* Have maximum 490 LEDs configured for WLED and UDP-Raw

* Add additional Warning
2021-09-20 09:36:59 +02:00
LordGrey
8134917c51
Correct PR1312 and LEDSim fixes (#1336)
* Revert Refactor/Optimization of PR1312

* LED Layout - Only update preview image when visible

* Revert Debug updates

* Correct Refactor/Optimization of PR1312

* LedSim: Do not stream LED data when not required, LedS-im/Layout: Sync on video streaming

* Remove initial switch to instance 0 during API init
2021-09-20 08:44:09 +02:00
LordGrey
da49f25b4e
Do not limit priorities for Boblight (#1269) (#1298)
* Do not limit priorities for Boblight (#1269)

* Boblight - Allow to exclude component from build

* Fix merge

* Amlogic - Correct Pixelformat reference

* Remove "wrong" Amlogic ifdef, which was not working before
2021-09-15 10:32:19 +02:00
LordGrey
8a785e70c8
LED-Device updates (#1315)
* SPI Fix - Free allocated memory in case of invert

* Remove development statement

* UI updates

* Minor corrections

* Tpm2net Fix - Free allocated memory

* LGTM Finding

* Add config directory and user type to SysInfo

* WS281x - Ensure that device runs with root priviliges

* WS281x - Update DMA defauls as per rpi_ws281x recommendation

* Support Sysinfo for Qt < 5.10

* Address LGTM finding
2021-09-15 10:31:56 +02:00
Markus
8fb3d76b9c
[Hotfix] reuse local SSDP address (Issue #1324) 2021-09-07 17:50:51 +02:00
LordGrey
b9d5178e55
Update content_leds.js
Add missing set value for given host
2021-09-02 16:41:52 +02:00
LordGrey
1dfcd4d8ec
Delete 20210820_LoadInstanceConfig.zip 2021-08-31 22:58:09 +02:00
Hyperion-Bot
5fe1dbb67c Update es.json (POEditor.com) 2021-08-31 11:57:29 +02:00
Hyperion-Bot
9c830b22a6 Update pl.json (POEditor.com) 2021-08-31 11:57:28 +02:00
Hyperion-Bot
87d73bd040 Update cs.json (POEditor.com) 2021-08-31 11:57:27 +02:00
LordGrey
22a39f1b47
Update Bootstrap libraries (#1313)
* Fix - Priorities do not clear with Colorpicker open

* Update bootstrap-select
2021-08-31 10:56:50 +02:00
LordGrey
1ef3a106f1
Smoothing Fixes, Optimizations (#1295)
* Fix #1098, Removed Continuous Output as being obsolete

* Pause output processing when no input source is available

* Only show configurable options for Linear smoothing
2021-08-31 10:56:06 +02:00
LordGrey
f0bd38d473
Nanoleaf Updates (#1299)
* Discover additional Nanoleaf devices

* Fix Nanoleaf not turning on

* Added LGTM configuration file

* Allow to pass QJsonObject as payload for put

* Nanoleaf - Support Restore State & Overwrite Brightness

* Removed because this is already included

Co-authored-by: Markus <16664240+Paulchen-Panther@users.noreply.github.com>
2021-08-31 10:55:49 +02:00
LordGrey
12cdd1d58a
Streamline API calls from UI (incl. Fix #1311, #1314) (#1312)
* JSONeditor: Disable watchers when updating selections dynamically

* Refactor - Load last instance config when loading UI page

* LED Devices - Notify getproperties watchers for configured hostname

* Remove unused variable

* Fix #1314 - Additional classic & matrix configuration items were not saved
2021-08-31 10:55:32 +02:00
Hyperion-Bot
42e7f85864
LGTM configuration for c++ added 2021-08-30 18:13:00 +02:00
Serhan S
5c233bc8ec
Update Installation.md
another typo, thx to @Paulchen-Panther
2021-08-25 18:17:19 +02:00
Markus
dfb4766f95
Hi-Res Mockup uploaded 2021-08-22 15:17:23 +02:00
Serhan S
a30e3237cc
Update Installation.md
Typo fix
2021-08-20 18:04:04 +02:00
Serhan S
ce368aa84c
Update Installation.md
Updated apt instructions
2021-08-20 13:13:12 +02:00
LordGrey
bd3e12d3ac
Fix 1292 - Avoid XSS (#1297)
* Fix 1292 - Avoid XSS

* Fix XSS on EffectConfiguration
2021-08-19 08:52:17 +02:00
Markus
0227694d20
Mockup update (thanks again to @mkcologne) 2021-08-09 16:41:51 +02:00
Markus
fa957aeeda
Mockup updated (thanks to @mkcologne) 2021-08-07 18:55:46 +02:00
LordGrey
d3a912f014
Fix #1276 (#1279) 2021-07-31 20:57:08 +02:00
LordGrey
d3c8e6da4e
Amlogic updates (#1285)
* Limit Amlogic grabber to 30fps

* Exclude FB Grabber on Amlogic platform, as FB is included in Amlogic Grabber

* Amlogic Grabber - Have continuous feed even when paused. Have no delay when pausing/unpausing

* Revert back to CAP_FLAG_AT_END capture method

* Clarification on Capture Frequency
2021-07-31 20:56:45 +02:00
Markus
5ef8c23ba0
typo in installation.md 2021-07-18 19:23:22 +02:00
LordGrey
76cdfd3638
Update CHANGELOG.md 2021-07-18 13:13:21 +02:00
Markus
9cb01dc49b
Update CHANGELOG.md 2021-07-18 01:02:44 +02:00
Paulchen-Panther
4f3c853263 Release 2.0.0-alpha.10 2021-07-17 22:39:22 +02:00
Hyperion-Bot
3476409ed4 Update es.json (POEditor.com) 2021-07-17 20:57:44 +02:00
Hyperion-Bot
e523b6ef8d Update de.json (POEditor.com) 2021-07-17 20:57:43 +02:00
LordGrey
10b6317777
Prepare for Alpha.10 (#1272)
* Update Changelog for Alpha.10

* Address lgtm findings

* Correct some texts

* Improve Password handling

* search for turbojpeg only if MF is enabled

* Chnagelog updates

* Fix LED layout overwrite for previously save LEDs

* LED Device- Fix default selection for selected network devices

* Sreengrabber - Select default fps

* Update database migration steps

Co-authored-by: Markus <16664240+Paulchen-Panther@users.noreply.github.com>
2021-07-17 20:55:16 +02:00
LordGrey
a25f0698d7
Update LICENSE 2021-07-17 09:26:14 +02:00
Markus
22a3e3fb20 Updated rpi_ws281x submodule to latest upstream 2021-07-16 19:16:01 +00:00
Hyperion-Bot
9968c0f3e3 Update vi.json (POEditor.com) 2021-07-15 13:19:37 +02:00
Hyperion-Bot
4bc16c2348 Update tr.json (POEditor.com) 2021-07-15 13:19:35 +02:00
Hyperion-Bot
30a1dc7ed5 Update sv.json (POEditor.com) 2021-07-15 13:19:34 +02:00
Hyperion-Bot
5a334d9c56 Update es.json (POEditor.com) 2021-07-15 13:19:33 +02:00
Hyperion-Bot
f08170c074 Update ro.json (POEditor.com) 2021-07-15 13:19:32 +02:00
Hyperion-Bot
0beca22cb8 Update pt-br.json (POEditor.com) 2021-07-15 13:19:31 +02:00
Hyperion-Bot
5005c2b998 Update pt.json (POEditor.com) 2021-07-15 13:19:29 +02:00
Hyperion-Bot
a7846396fd Update pl.json (POEditor.com) 2021-07-15 13:19:28 +02:00
Hyperion-Bot
9ce989cea8 Update nb.json (POEditor.com) 2021-07-15 13:19:27 +02:00
Hyperion-Bot
c4cd5d8f08 Update it.json (POEditor.com) 2021-07-15 13:19:26 +02:00
Hyperion-Bot
a488a68f51 Update de.json (POEditor.com) 2021-07-15 13:19:24 +02:00
Hyperion-Bot
790999e349 Update fr.json (POEditor.com) 2021-07-15 13:19:23 +02:00
Hyperion-Bot
56194f6fb4 Update nl.json (POEditor.com) 2021-07-15 13:19:21 +02:00
Hyperion-Bot
2e60657479 Update cs.json (POEditor.com) 2021-07-15 13:19:20 +02:00
imgbot[bot]
888848a1e7
[ImgBot] Optimize images (#1271) 2021-07-14 21:01:00 +02:00
Markus
c135d91986
Media Foundation/V4L2 grabber ... (#1119)
* - New Media Foundation grabber
- JsonAPI available grabber fix
- commented json config removed

* Added libjpeg-turbo to dependencies

* Fix OSX build
Removed Azure Pipelines from build scripts

* Remove Platform from Dashboard

* Correct Grabber Namings

* Grabber UI improvements, generic JSONEditor Selection Update

* Active grabber fix

* Stop Framebuffer grabber on failure

* - Image format NV12 and I420 added
- Flip mode
- Scaling factor for MJPEG
- VSCode (compile before run)
- CI (push) dependency libjpeg-turbo added

* Refactor MediaFoundation (Part 1)

* Remove QDebug output

* Added image flipping ability to MF Grabber

* fix issue 1160

* -Reload MF Grabber only once per WebUI update
- Cleanup

* Improvements

* - Set 'Software Frame Decimation' begin to 0
- Removed grabber specific device name from Log
- Keep pixel format when switching resolution
- Display 'Flip mode' correct in Log
- BGR24 images always flipped

* Refactor MediaFoundation (Part 2)

* Refactor V4L2 grabber (part 1) (#62)

* Media Foundation grabber adapted to V4L2 change

* Enable Media Foundation grabber on windows

* Have fps as int, fix height typo

* Added video standards to JsonAPI output

* Error handling in source reader improved

* Fix "Frame to small" error

* Discovery VideoSources and Dynamically Update Editor

* Hide all element when no video grabber discovered, upate naming

* Do not show unsupported grabbers

* Copy Log to Clipboard

* Update Grabber schema and Defaults

* Update access levels and validate crop ranges

* Height and width in Qt grabber corrected

* Correct formatting

* Untabify

* Global component states across instances

* Components divided on the dashboard

* refactor

* Fix Merge-issues

* Database migration aligning with updated grabber model

* Align Grabber.js with new utility functions

* Allow editor-validation for enum-lists

* Handle "Show Explainations scenario" correctly

* Grabber - Ensure save is only possible on valid content

* Dashboard update + fix GlobalSignal connection

* Ensure default database is populated with current release

* Correct grabber4L2 access level

* Display Signal detection area in preview

* Write Hyperion version into default config on compiling.

* Create defaultconfig.json dynamically

* WebUI changes

* Correct grabber config look-ups

* Refactor i18n language loading

* Fix en.json

* Split global capture from instance capture config

* Update grabber default values

* Standalone grabber: Add --debug switch

* Enhance showInputOptionsForKey for multiple keys

* Add grabber instance link to system grabber config

* Only show signal detection area, if grabber is enabled

* Always show Active element on grabber page

* Remote control - Only display gabber status, if global grabber is enabled

* WebUI optimization (thx to @mkcologne)
Start Grabber only when global settings are enabled
Fixed an issue in the WebUI preview

* V4L2/MF changes

* Jsoneditor, Correct translation for default values

* Refactor LED-Device handling in UI and make element naming consistent

* MF Discovery extended

* Fix LGTM finding

* Support Grabber Bri, Hue, Sat and Con in UI, plus their defaults

* Concider Access level for item filtering

* Concider Access level for item filtering

* Revert "Concider Access level for item filtering"

This reverts commit 5b0ce3c0f2de67e0c43788190cfff45614706129.

* Disable fpsSoftwareDecimation for framegrabber, as not supported yet

* JSON-Editor- Add updated schema for validation on dynamic elements

* added V4L2 color IDs

* LGTM findings fix

* destroy SR callback only on exit

* Grabber.js - Hide elements not supported by platform

* Fixed freezing start effect

* Grabber UI - Hardware controls - Show current values and allow to reset to defaults

* Grabber - Discovery - Add current values to properties

* Small things

* Clean-up Effects and have ENDLESS consistently defined

* Fix on/off/on priority during startup, by initializing _prevVisComp in line with background priority

* Add missing translation mappings

* DirectX Grabber reactivated/ QT Grabber size decimation fixed

* typo in push-master workflow

* Use PreciseTimer for Grabber to ensure stable FPS timing

* Set default Screencapture rate consistently

* Fix libjpeg-turbo download

* Remove Zero character from file

* docker-compile Add PLATFORM parameter, only copy output file after successful compile

* Framebuffer, Dispmanx, OSX, AML Grabber discovery, various clean-up and consistencies across grabbers

* Fix merge problem - on docker-compile Add PLATFORM parameter, only copy output file after successful compile

* Fix definition

* OSXFRameGrabber - Revert cast

* Clean-ups nach Feedback

* Disable certain libraries when building armlogic via standard stretch image as developer

* Add CEC availability to ServerInfo to have it platform independent

* Grabber UI - Fix problem that crop values are not populated when refining editor rage

* Preserve value when updating json-editor range

* LEDVisualisation - Clear image when source changes

* Fix - Preserve value when updating json-editor range

* LEDVisualisation - Clear image when no component is active

* Allow to have password handled by Password-Manager (#1263)

* Update default signal detection area to green assuming rainbow grabber

* LED Visualisation - Handle empty priority update

* Fix yuv420 in v4l2 grabber

* V4L2-Grabber discovery - Only report grabbers with valid video input information

* Grabber - Update static variables to have them working in release build

* LED Visualisation - ClearImage when no priorities

* LED Visualisation - Fix Logo resizing issue

* LED Visualisation - Have nearly black background and negative logo

Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
2021-07-14 20:48:33 +02:00
Markus
b0e1510a78
websocket crashes fixed (#1258) 2021-07-14 20:22:13 +02:00
Markus
8dc4ff9a34
Debian/Ubuntu APT (#1265)
* APT repository

* Run workflows on any branch

* Switched to Hyperion GHCR

* Fix typo

* Rewrite installation steps

* Spelling fixed

* Typo fix

* OSX Icon changed
2021-07-14 20:21:29 +02:00
LordGrey
f98938020a
Add Supported Platforms documention (#1257)
* Add Supported Platforms docu

* Update SupportedPlatforms.md

* Update SupportedPlatforms.md

* Rearrange development related documentation
2021-07-13 21:07:48 +02:00
Jumper78
a777620d2f
Add British flags to the Flag effect (#1264)
* add britisch flags to flag.py

adding the flags of England, Scotland and the United Kingdom to flag.py

* adding British flags to flag.schema.json

adding the flag of Great Britain (gb), England (gb-eng) and Scotland (gb-sct) to the GUI

* added flag updates to CHANGELOG.md

mentioning the Britisch flags as well as Cameroon and Russia
2021-07-13 21:07:30 +02:00
LordGrey
6d004240de
Only copy packages, if packages are build 2021-06-14 20:48:48 +02:00
LordGrey
a9fb5fa359
Fix Build & Deploy Path
Have build and deploy paths consistently under the source directory, regardless of remote or local build
2021-06-14 20:22:13 +02:00
LordGrey
4c2806f966
Serial-Devices - Add udev support (#1246) 2021-05-23 19:11:05 +02:00
LordGrey
9199aa8216
Fix #1216 (#1250) 2021-05-20 19:40:05 +02:00
Paulchen Panther
0d826570bd Update external dependency rpi_ws281x to master 2021-05-19 20:07:34 +02:00
Hyperion-Bot
599d70243c Update en.json (POEditor.com) 2021-05-16 18:36:19 +02:00
LordGrey
feec395756
Minor Updates (#1241) 2021-05-16 18:33:24 +02:00
imaprogrammer
016855898a
WebUI English grammar improvement (#1244)
Made the capitalization of "LED" more consistent
2021-05-16 18:33:07 +02:00
Hyperion-Bot
03afc0db8f Update vi.json (POEditor.com) 2021-05-02 15:23:11 +02:00
Hyperion-Bot
43159a9373 Update tr.json (POEditor.com) 2021-05-02 15:23:10 +02:00
Hyperion-Bot
cbe309f5b8 Update sv.json (POEditor.com) 2021-05-02 15:23:08 +02:00
Hyperion-Bot
0b27e8c963 Update es.json (POEditor.com) 2021-05-02 15:23:07 +02:00
Hyperion-Bot
a60e18d12b Update ro.json (POEditor.com) 2021-05-02 15:23:06 +02:00
Hyperion-Bot
4c5b506ace Update pt-br.json (POEditor.com) 2021-05-02 15:23:05 +02:00
Hyperion-Bot
eb09d680b6 Update pt.json (POEditor.com) 2021-05-02 15:23:04 +02:00
Hyperion-Bot
a34d5d609f Update pl.json (POEditor.com) 2021-05-02 15:23:03 +02:00
Hyperion-Bot
bf4b951f55 Update nb.json (POEditor.com) 2021-05-02 15:23:02 +02:00
Hyperion-Bot
dafd168b6a Update it.json (POEditor.com) 2021-05-02 15:23:00 +02:00
Hyperion-Bot
53fa0a6d63 Update de.json (POEditor.com) 2021-05-02 15:22:59 +02:00
Hyperion-Bot
91d52ca8ba Update fr.json (POEditor.com) 2021-05-02 15:22:58 +02:00
Hyperion-Bot
a3b3e50eb9 Update en.json (POEditor.com) 2021-05-02 15:22:57 +02:00
Hyperion-Bot
802dc56382 Update nl.json (POEditor.com) 2021-05-02 15:22:56 +02:00
Hyperion-Bot
f662da589e Update cs.json (POEditor.com) 2021-05-02 15:22:55 +02:00
Hyperion-Bot
6e3179ae90 Update vi.json (POEditor.com) 2021-05-02 13:34:35 +02:00
Hyperion-Bot
adb11437e1 Update tr.json (POEditor.com) 2021-05-02 13:34:34 +02:00
Hyperion-Bot
247f1c4505 Update sv.json (POEditor.com) 2021-05-02 13:34:33 +02:00
Hyperion-Bot
dc8629251a Update es.json (POEditor.com) 2021-05-02 13:34:32 +02:00
Hyperion-Bot
07cc9bc74f Update ro.json (POEditor.com) 2021-05-02 13:34:30 +02:00
Hyperion-Bot
9ed12929d2 Update pt-br.json (POEditor.com) 2021-05-02 13:34:29 +02:00
Hyperion-Bot
7e71dc93b0 Update pt.json (POEditor.com) 2021-05-02 13:34:28 +02:00
Hyperion-Bot
dc7bef79b0 Update pl.json (POEditor.com) 2021-05-02 13:34:27 +02:00
Hyperion-Bot
ffa072ae3a Update nb.json (POEditor.com) 2021-05-02 13:34:26 +02:00
Hyperion-Bot
cc98def67e Update it.json (POEditor.com) 2021-05-02 13:34:25 +02:00
Hyperion-Bot
8705936707 Update de.json (POEditor.com) 2021-05-02 13:34:24 +02:00
Hyperion-Bot
2c5c3db42b Update fr.json (POEditor.com) 2021-05-02 13:34:22 +02:00
Hyperion-Bot
05ebac1d47 Update en.json (POEditor.com) 2021-05-02 13:34:21 +02:00
Hyperion-Bot
2286c009da Update nl.json (POEditor.com) 2021-05-02 13:34:20 +02:00
Hyperion-Bot
c8eb44f28e Update cs.json (POEditor.com) 2021-05-02 13:34:19 +02:00
Hyperion-Bot
5b9ec04d32 Update pt-br.json (POEditor.com) 2021-05-01 20:05:01 +02:00
Hyperion-Bot
fc4ac645f0 Update pt.json (POEditor.com) 2021-05-01 20:05:00 +02:00
Hyperion-Bot
eb451cd0c2 Update nb.json (POEditor.com) 2021-05-01 20:04:59 +02:00
Hyperion-Bot
831cc39bbc Update de.json (POEditor.com) 2021-05-01 18:58:05 +02:00
Hyperion-Bot
99bab35e34 Update vi.json (POEditor.com) 2021-05-01 18:47:13 +02:00
Hyperion-Bot
739052f03d Update tr.json (POEditor.com) 2021-05-01 18:47:11 +02:00
Hyperion-Bot
0ad77f2d5b Update sv.json (POEditor.com) 2021-05-01 18:47:10 +02:00
Hyperion-Bot
cd2b8a596f Update es.json (POEditor.com) 2021-05-01 18:47:09 +02:00
Hyperion-Bot
6ec0208fb7 Update ro.json (POEditor.com) 2021-05-01 18:47:08 +02:00
Hyperion-Bot
21931cbf13 Update pl.json (POEditor.com) 2021-05-01 18:47:07 +02:00
Hyperion-Bot
1d54811e85 Update it.json (POEditor.com) 2021-05-01 18:47:06 +02:00
Hyperion-Bot
14e8357c53 Update de.json (POEditor.com) 2021-05-01 18:47:04 +02:00
Hyperion-Bot
c58bf9c680 Update fr.json (POEditor.com) 2021-05-01 18:47:03 +02:00
Hyperion-Bot
4409bcef8b Update nl.json (POEditor.com) 2021-05-01 18:47:02 +02:00
Hyperion-Bot
f990562514 Update cs.json (POEditor.com) 2021-05-01 18:47:00 +02:00
LordGrey
a8def65764
Fix pt-br.json 2021-05-01 18:43:49 +02:00
LordGrey
9b427b9397
Fix en.json 2021-05-01 18:42:46 +02:00
LordGrey
cf084265fc
New languages - Portuguese (Std/Brazil) & Norwegian (Bokmål) (#1236)
* Update jquery.i18n to 1.07, add extended plurals support

* Add additional languages - Portuguese, Portuguese (Brazil), Norwegian (Bokmål)
2021-05-01 18:05:45 +02:00
Paulchen Panther
17d4406deb
Refactor PR #957 (#1234) 2021-05-01 17:00:44 +02:00
Paulchen Panther
aec24e9246
Snap (Linux x86_64) (#1232) 2021-05-01 17:00:15 +02:00
LordGrey
71e34a6a55
UI System Log - Fixes and enhancements (#1223) 2021-04-25 17:22:59 +02:00
Daniel Schwierzeck
724d90bfdb
Initial support for Hue Play Gradient Lightstrip (#1187)
Model ID is LCX001. Add as Gamut C device.
2021-04-25 17:22:16 +02:00
LordGrey
35ffeb740f
Stop background effect, when it gets out of scope (#1226) 2021-04-25 16:50:27 +02:00
Portisch
aede77b7ca
AmlogicGrabber: set and decrease frame grab timeout to 500ms (#1225)
This prevent an internal timeout when no frame is delivered like on playback pause.
2021-04-25 16:49:42 +02:00
LordGrey
7eeb740177
Dynamic Device Selection/Configuration (#1164) 2021-04-24 19:37:29 +02:00
TheGroundZero
a4d98fd916
Fixes: #1229 (#1230)
* Fix "LED Test" effect colour order (#1229)
2021-04-14 16:25:51 +02:00
LordGrey
6f0ccdbe25 "temporarily reset mbedtls to version 2.25 #1214" 2021-04-10 17:19:47 +02:00
LordGrey
a3c8fba7a3 Revert "temporarily reset mbedtls to version 2.25 #1214"
This reverts commit dc0e953c40fd46ebc20f90a1c69d35a01225e5ec.
2021-04-08 09:26:10 +02:00
Paulchen-Panther
dc0e953c40 temporarily reset mbedtls to version 2.25 #1214 2021-03-27 13:46:44 +00:00
LordGrey
f870096a66
Docker Compile for local code (#1211)
* Docker Compile for local code

* Fine Tuning

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2021-03-19 22:53:14 +01:00
LordGrey
94d9b02734
Fix 1181 - Effects were not started from tray (#1199)
* Fix 1181, add constants and defaults

* Include #1195 changes
2021-03-19 22:52:41 +01:00
LordGrey
41af5c1b9e
LEDDevices - WLED enhancements and minor fixes (#1204)
* Yeelight minor updates

* Add Timeout to REST API

* LEDDevice - Correct storeState

* Add WaitTime function

* Always show HW-LEDCount for configuration

* WLED - New features ("live" support, storing state and identification)

* Yeelight - Refactoring

* Cololight - Refactoring

* Karate - getProperties Support

* Atmo - getProperties Support

* AtmoOrb - refactoring

* Nanoleaf - Refactoring, New "Shapes" considerations

* PhilipHue - Minor corrections

* Update Changelog
2021-03-19 22:52:04 +01:00
Serhan S
956edf9e78
Update en.json
Changed wiki to Documentation
2021-03-16 17:17:22 +01:00
Serhan S
675e9b9e21
Update support.html
Updated URLs
2021-03-16 17:15:47 +01:00
Paulchen-Panther
709728aa81 docs moved to https://github.com/hyperion-project/hyperion.docs 2021-03-15 20:04:47 +01:00
dependabot[bot]
48240bbd21
build(deps): bump elliptic from 6.5.3 to 6.5.4 in /docs (#1210)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-10 21:45:29 +01:00
dependabot[bot]
1b09504b26
build(deps): bump prismjs from 1.21.0 to 1.23.0 in /docs (#1194)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.21.0 to 1.23.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.21.0...v1.23.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-10 21:45:18 +01:00
Paulchen Panther
36385acc9a
removed donation links 2021-03-05 20:13:45 +01:00
Dermot Duffy
28164c7b80
Add link to Hyperion-py (#1122)
* Add link to Hyperion-py

* Update changelog.

Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
2021-02-23 20:44:27 +01:00
mlaurijsse
68d06f14fe
Correct total packet count in tpm2net implementation (fix #1127) (#1128)
* Fixed calculation for _tpm2TotalPackets
2021-02-23 20:42:54 +01:00
LordGrey
3ae9bc998b
Fix LED Num for non analogue output (#1139) 2021-02-23 20:41:46 +01:00
Gerion Entrup
6a4aabd5e9
webserver/Cmake: fix out-of-tree build (#1147)
Related: #834
2021-02-23 20:41:14 +01:00
Gerion Entrup
74a6795991
Extend logging and error reporting (#1149)
- ProviderRs232: Be more verbose about correct device in error case
Rearrange Debug Information and additionalclean-ups

- Webconfig: better error description, if Kodi is not found
2021-02-23 20:40:20 +01:00
Calvin
2b66754997
Update Documentation (#1162)
* Add information on WLED to documentation

Add information how to force max brightness in WLED. See Issue #1101

* Translated Installation.md to german

Translation and added short instructions to WIN 10 installation.

* Removed Typo

* Added Windows 10 instructions

* Update Installation.md
2021-02-23 20:39:18 +01:00
LordGrey
90d05e6c54
Custom Effects - Clean-ups and Enhancements (#1163)
* Cleanup EffectFileHandler

* Support Custom Effect Schemas and align EffectFileHandler

* Change back to colon prefix for system effects

* WebSockets - Fix error in handling fragmented frames

* Correct missing colon updates

* Update json with image file location for custom gif effects

* Image effect deletion - considere full filename is stored in JSON

* Correct selection lists indentions
2021-02-23 20:38:54 +01:00
Vincent Tavernier
9475b93d9f
Interrupt effect on timeout (#1181)
Fixes #1013
2021-02-23 20:38:26 +01:00
Paulchen Panther
45bd23ca5c
DirectX9 display change (#1191)
* Fix issue #1190

* Correct output image with size decimation used

* Correct image format (BGR -> RGB)

* Another approach
2021-02-23 20:37:59 +01:00
Gerion Entrup
6ed9553ca3
Proto*: fix Error macro conflict (#1146)
Fixes: #882
2021-02-23 14:25:32 +01:00
Chris Browet
f843b5a046
FIX: [hue] XY == 0 => bri = 0 (#1124) 2021-02-23 13:59:40 +01:00
LordGrey
9e281b2347
Fix #1186 & UI last instance error (#1188)
* Handle Arrays & Objects differently

* Fix UI error, if "last instance used" does not longer exist
2021-02-17 12:29:53 +01:00
LordGrey
77262adf3b
Fix #1131 - Global (Grabber) setting are not correctly read by non-default instances (#1186) 2021-02-11 19:45:22 +01:00
Paulchen Panther
ac88fdd80f [HotFix] DirectX 9 grabber is now optional
The DirectX SDK from Microsoft is officially no longer offered.
2021-01-30 12:39:53 +01:00
Paulchen Panther
4ff9e52ba7
[HotFix] https://git.io/Jt8S6 2021-01-29 20:17:01 +01:00
LordGrey
86ab15d18c
Cololight Improvements (#1120)
* Avoid issue with long running identify calls
* Strip provides number of LEDs now
* Consider that Strip was cut by user
2021-01-23 17:26:59 +01:00
Cosmicbase
4f85ac1c4b
Update Flag Effect (#1154)
* Update Flags Effect (add RU)
2021-01-20 18:42:58 +01:00
LordGrey
be894c821d
Update CompileHowto.md 2021-01-14 21:05:47 +01:00
ChR-iSz
8a028328ce
Add spidev1.0 and spidev1.1 device for Raspberry Pi WS2801 schema (#1112) 2020-12-23 23:47:06 +01:00
Panagiotis Koutsias
c17727beb0
Updated rpi_ws281x submodule to latest upstream (#1111) 2020-12-23 23:46:11 +01:00
thosoo
c253b820b3
Change libcec dependency for rpm (#1108) 2020-12-23 23:44:46 +01:00
Paulchen Panther
0f2563235d
Reduced package size (#1114) 2020-12-23 23:42:51 +01:00
Paulchen Panther
2bc8bf7ecb
Deploy Qt DLLs (#1115) 2020-12-23 23:42:22 +01:00
FlouHappy
a31f995959
Update flag.py (#1121)
Added Cameroon’s flag
2020-12-23 23:39:16 +01:00
Paulchen Panther
fbd10e8865
[Hotfix] MacOS CI build 2020-12-20 13:59:49 +01:00
dependabot[bot]
b345b9e657
build(deps): bump ini from 1.3.5 to 1.3.8 in /docs (#1118) 2020-12-13 10:25:02 +01:00
Paulchen Panther
a42aae44d1 Codespace updated
Debian pre/post scripts modified for HyperBian
2020-11-24 21:28:02 +00:00
Paulchen Panther
0cbb276631 added libcec6 to deb dependency list 2020-11-22 13:43:45 +01:00
Paulchen Panther
ef6526212a CHANGELOG update 2020-11-21 18:57:02 +00:00
Paulchen Panther
83338dc394 Release 2.0.0-alpha.9
Signed-off-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2020-11-18 21:57:21 +01:00
Florent Benoist
c4e15dba00
Fix/no signal detection (#1087) 2020-11-18 19:25:43 +01:00
LordGrey
a0311bd8b5
Update schema-philipshue.json
Allow to switchOffOnBlack for Classic and Entertainment-API
2020-11-17 17:51:13 +01:00
Hyperion-Bot
83543f10b2 Update vi.json (POEditor.com) 2020-11-17 15:16:28 +01:00
Hyperion-Bot
0367257a41 Update tr.json (POEditor.com) 2020-11-17 15:16:25 +01:00
Hyperion-Bot
cbcbf72d1a Update sv.json (POEditor.com) 2020-11-17 15:16:24 +01:00
Hyperion-Bot
ec16ed1932 Update es.json (POEditor.com) 2020-11-17 15:16:22 +01:00
Hyperion-Bot
05bb622702 Update ro.json (POEditor.com) 2020-11-17 15:16:20 +01:00
Hyperion-Bot
41a8399767 Update pl.json (POEditor.com) 2020-11-17 15:16:18 +01:00
Hyperion-Bot
93cd8f6560 Update it.json (POEditor.com) 2020-11-17 15:16:16 +01:00
Hyperion-Bot
2c598db887 Update de.json (POEditor.com) 2020-11-17 15:16:14 +01:00
Hyperion-Bot
ab444e5987 Update fr.json (POEditor.com) 2020-11-17 15:16:12 +01:00
Hyperion-Bot
af6ea4d77a Update en.json (POEditor.com) 2020-11-17 15:16:10 +01:00
Hyperion-Bot
38b7965190 Update nl.json (POEditor.com) 2020-11-17 15:16:08 +01:00
Hyperion-Bot
b5b21b58c7 Update cs.json (POEditor.com) 2020-11-17 15:16:06 +01:00
Paulchen Panther
38e9d8aef0 Issue template Completeness Check 2020-11-15 16:18:55 +00:00
Paulchen Panther
9ae0f4cfc4 - Added custom codespace configuration
- Removed unnecessary extensions
- Start Hyperion in VS Code (Codespace) by default in debug mode
2020-11-15 13:09:31 +00:00
LordGrey
efc2046ab5
Various Cleanups (#1075)
* LedDevice - Address clang findings

* Fix Windows Warnings

* Ensure newInput is initialised

* Clean-up unused elements for Plaform Capture

* Fix initialization problem and spellings

* Address clang findings and spelling corrections

* LedDevice clean-ups

* Cleanups

* Align that getLedCount is int

* Have "display" as default for Grabbers

* Fix config during start-up for missing elements

* Framegrabber Clean-up - Remove non supported grabbers from selection, filter valid options

* Typo

* Framegrabber.json - Fix property numbering

* Preselect active Grabbertype

* Sort Grabbernames

* Align options with selected element

* Fix deletion of pointer to incomplete type 'BonjourBrowserWrapper'

* Address macOS compile warnings

* Have default layout = 1 LED only to avoid errors as in #673

* Address lgtm findings

* Address finding that params passed to LedDevice discovery were not considered

* Cleanups after merging with latest master

* Update Changelog

* Address lgtm findings

* Fix comment

* Test Fix

* Fix Python Warning

* Handle Dummy Device assignment correctly

* Address delete called on non-final 'commandline::Option' that has virtual functions but non-virtual destructor

* Correct that QTimer.start accepts only int

* Have Release Python GIL & reset threat state chnage downward compatible

* Correct format specifier

* LedDevice - add assertions

* Readonly DB - Fix merge issue

* Smoothing - Fix wrong defaults

* LedDevice - correct assertion

* Show smoothing config set# in debug and related values.

* Suppress error on windows, if default file is "/dev/null"

* CMAKE - Allow to define QT_BASE_DIR dynamically via environment-variable

* Ignore Visual Studio specific files

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-11-14 17:58:56 +01:00
LordGrey
d28540a7fe
Fix, if db-file is readonly (#1082) 2020-11-14 17:40:15 +01:00
LordGrey
56f45a4930
Fix hostname/domain split (#1079) 2020-11-14 16:35:55 +01:00
LordGrey
d5a1e7d19d
Add additional system info (#1078) 2020-11-14 16:34:31 +01:00
LordGrey
758d9a70c5
Improve Platform Grabber UI (#1073) 2020-11-14 16:22:21 +01:00
Dermot Duffy
e2c8735fde
Localize/stylize/freshen the en JSON API docs (#1074) 2020-11-09 18:41:27 +01:00
LordGrey
36c05142a3
Update wizard.js
Fix issue after master merge
2020-11-04 21:04:00 +01:00
The-Master777
0dd8e45364
Feature: Temporal Color Smoothing with variable decay-rate for long period average windows (#1043)
* Feature: Weighted Moving Average Smoothing with Decay

* fix assign

* try fix MSVC error related to always inline on static

* use proper imports for windows

* crossplatform inline declaration
2020-11-02 07:52:33 +01:00
LordGrey
83455441fa
New LED Device - Cololight (#1070) 2020-11-01 21:56:19 +01:00
LordGrey
bb652ade36
Read-Only Configuration-Database support (#1046) 2020-11-01 19:47:30 +01:00
Peter Eskdale
85a55de28c
Implement letterbox-only blackbar detection mode (#1063) 2020-11-01 19:20:27 +01:00
Paulchen Panther
958975975c
Fix reopened issue 993 (#1062) 2020-11-01 19:15:22 +01:00
Chris Browet
f7ccf9d0da
FIX: [hue] proper save state (#1014) 2020-11-01 19:14:09 +01:00
Awawa
9e4c7af5e9
Fix for sk9822 frame sufix (#1042) 2020-11-01 19:12:25 +01:00
Serhan S
0cddc06844
Update CHANGELOG.md 2020-11-01 18:28:51 +01:00
Serhan S
d1d1789a5f
Update CHANGELOG.md 2020-11-01 18:25:31 +01:00
Paulchen Panther
4928117e8e
[HOTFIX] Release Python GIL & reset threat state 2020-11-01 09:38:55 +01:00
Serhan S
1d6664d4f0
Update CHANGELOG.md 2020-10-29 13:48:19 +01:00
Serhan S
0647faadb8
Merge pull request #1067 from pattyland/master
Change links from http to https
2020-10-28 12:41:54 -07:00
Paulchen Panther
69eec61de8 Hide Systray on exit & Install DirectX Redistributable 2020-10-28 18:48:46 +01:00
Paulchen Panther
f3dc25891d
Added DirectX SDK to CompileHowto 2020-10-27 17:18:03 +01:00
Paulchen Panther
1d35338b83
DirectX9 Grabber (#1039) 2020-10-26 21:13:13 +01:00
Sören
1ae522237c Change links from http to https 2020-10-26 01:21:09 +01:00
LordGrey
65a036dfc0
Update LICENSE 2020-10-25 10:06:59 +01:00
Paulchen Panther
1910d359bc cleanup packages.cmake & extend NSIS plugin directory 2020-10-24 18:58:02 +02:00
Paulchen Panther
4d37409d62
Updated Windows Dependencies 2020-10-23 21:44:36 +02:00
imgbot[bot]
669b108aaa
[ImgBot] Optimize images (#1058) 2020-10-22 17:32:18 +02:00
LordGrey
a8492d6586
Additional information on system used (#1045)
* Allow --version, even if hyperion is already running

* Add CPU-Model to SysInfo

* Add additional CPUInfos

* Use fileUtils & RegEx on CPU-Info

* Add CPU - Hardware info

* Update changelog

* Suppress empty CPU info elements
2020-10-20 20:18:51 +02:00
Paulchen Panther
da8a216587
Systray icons added - Issue #925 (#1040) 2020-10-20 17:41:20 +02:00
LordGrey
7e370b3d8b
Fix typos (#1051)
* Fix typo in handlePriorityChangedLedDevice

* Typo

* Correct description

* Correct LedDeviceTemplate
2020-10-19 10:54:41 +02:00
LordGrey
3bf1089763
Fix color calibration for Kodi 18 (Fixes #771) (#1044) 2020-10-18 19:09:20 +02:00
LordGrey
db1dae45d2
Fix #1015 - Fix Lightpack / Remove Multi-Lightpack (#1049) 2020-10-18 19:08:54 +02:00
LordGrey
83b8a800d8
Fix issue #909, Have ratio correction first and then scale (#1047) 2020-10-18 19:08:27 +02:00
Demian Kellermann
8f991001c1
Allow 8-LED configuration for KarateLight (#1037) 2020-10-18 18:04:57 +02:00
Paulchen Panther
84607b4063
[Windows] Installer/Uninstaller notification when Hyperion is running. (#1033) 2020-10-18 17:19:35 +02:00
Denrage
02d0ab68f6
FIX: display argument in hyperion-qt (#1027) 2020-10-18 17:18:30 +02:00
The-Master777
c09061e5d8
boblight: reduce cpu time spent on memcopy and parsing rgb values (#1016) 2020-10-18 17:16:27 +02:00
Paulchen Panther
aa465c018c
Fix issues #1022, #1019, #997, #993, #992, #976, #969, #964, #980 (#1036) 2020-10-18 17:05:07 +02:00
Paulchen-Panther
9d2e442d42 New language support: Russian and Chinese (simplified) 2020-09-29 18:13:02 +02:00
LordGrey
5d5b24979d
Fix #1007 - LED's retain last state after clearing a source (#1008)
* Save BLACK as lastLedColor during writeBlack

* Remove debug statement overhead

* Re-Add typecasting to ensure readable output

* Revert "New language support: Russian and Chinese (simplified)"

This reverts commit 5c95fab894a4e1122f9a1bd26d3567f166a26e7b.

* Ignore TemporaryError
2020-09-25 20:33:11 +02:00
LordGrey
730b5d5681
Merge pull request #1005 from Lord-Grey/master
New language support: Russian and Chinese (simplified)
2020-09-25 20:08:26 +02:00
LordGrey
28cbec1009
Merge branch 'master' into master 2020-09-25 19:46:22 +02:00
LordGrey
f72a1d7737 Merge new elements with latest master version 2020-09-25 19:42:34 +02:00
The-Master777
6c68454bea
Support SK9822 type LEDs with adaptive brightness control via SPI (#1017)
* Support SK9822 type LEDs with adaptive brightness control via SPI

* SK9822 - minor refactorings
2020-09-25 19:34:00 +02:00
TPmodding
f11885fd8b
lgtm fixes (#1020) 2020-09-25 17:43:46 +02:00
Hyperion-Bot
28c12a86a8 Update de.json (POEditor.com) 2020-09-17 18:08:02 +02:00
Murat Seker
c711d62354
Merge pull request #996 from m-seker/bugfix/995
ENABLE_AVAHI is not included in WebServer
2020-09-16 17:05:20 +02:00
Hyperion-Bot
e53760bcad Update en.json (POEditor.com) 2020-09-15 23:02:28 +02:00
Hyperion-Bot
90a29145cf Update en.json (POEditor.com) 2020-09-15 22:16:24 +02:00
Paulchen Panther
510af27e76
added libcec to deb/rpm dependency list 2020-09-15 20:49:54 +02:00
LordGrey
5c95fab894 New language support: Russian and Chinese (simplified) 2020-09-14 22:48:59 +02:00
Paulchen-Panther
08909b8a25 Release 2.0.0-alpha.8 2020-09-14 22:27:17 +02:00
TPmodding
70b7e11e67
Update CHANGELOG.md 2020-09-14 22:17:33 +02:00
TPmodding
ee4238a108
Update CHANGELOG.md 2020-09-14 22:04:10 +02:00
Hyperion-Bot
a0722df741 Update vi.json (POEditor.com) 2020-09-14 21:20:49 +02:00
Hyperion-Bot
8181575198 Update tr.json (POEditor.com) 2020-09-14 21:20:47 +02:00
Hyperion-Bot
c03c7c3698 Update sv.json (POEditor.com) 2020-09-14 21:20:46 +02:00
Hyperion-Bot
828d4b5a9a Update es.json (POEditor.com) 2020-09-14 21:20:44 +02:00
Hyperion-Bot
fb177c1526 Update ro.json (POEditor.com) 2020-09-14 21:20:42 +02:00
Hyperion-Bot
e29de52f76 Update pl.json (POEditor.com) 2020-09-14 21:20:40 +02:00
Hyperion-Bot
a0b293f9ec Update it.json (POEditor.com) 2020-09-14 21:20:39 +02:00
Hyperion-Bot
ce979dd66b Update de.json (POEditor.com) 2020-09-14 21:20:37 +02:00
Hyperion-Bot
d9be4094f2 Update fr.json (POEditor.com) 2020-09-14 21:20:35 +02:00
Hyperion-Bot
bdc5e226a1 Update nl.json (POEditor.com) 2020-09-14 21:20:33 +02:00
Hyperion-Bot
bae64abc66 Update cs.json (POEditor.com) 2020-09-14 21:20:31 +02:00
Hyperion-Bot
c4b1d12ec1 Update de.json (POEditor.com) 2020-09-14 21:17:10 +02:00
Paulchen Panther
b804f28132
Update CHANGELOG.md 2020-09-14 20:45:30 +02:00
Murat Seker
5e922be4d3
Fix OSX build (#952) 2020-09-14 20:37:48 +02:00
Paulchen Panther
9b729f8913
Update CHANGELOG.md 2020-09-14 20:12:11 +02:00
Murat Seker
be0bccea59
Return tan to API requests whenever possible (#1002)
* Return tan to API requests whenever possible

* Set default tan to value 0

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-09-14 20:09:21 +02:00
dependabot[bot]
11d98fddb9
build(deps): bump http-proxy from 1.18.0 to 1.18.1 in /docs (#1004)
Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1.
- [Release notes](https://github.com/http-party/node-http-proxy/releases)
- [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-14 17:22:32 +02:00
dependabot[bot]
feecd67397
build(deps): bump prismjs from 1.17.1 to 1.21.0 in /docs (#1003)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.17.1 to 1.21.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.17.1...v1.21.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-14 17:22:10 +02:00
LordGrey
7a685185f4
AtmoOrb Fix (#988)
* AtmoOrb UdpSocket-Bind Fix

* Cleanup and update defaults (to work via PowerLan)

* Cleanup and update defaults (to work via PowerLan)

* AtmoOrb identification support, small updates

* AtmoOrb discovery & identification support, fixes and stability updates

* Small clean-ups

* Type fix

* Add missing include

* Adalight - Update default config and levels

* Update Atmoorb sketch

* Yeelight - Update default value
2020-09-14 17:20:00 +02:00
LordGrey
4aabe175cd
Differentiate between LED-Device Enable/Disable and Switch On/Off (#960)
* Switch Off devices, when no input source

* Realign Enable/SwitchOn, Disable/SwitchOff

* Align to updated LedDevice-Flow

* Remove debug statements slipped in

* Send last color update after enabling again

* Fix WLED getProperties API call

* Remove unused signals

* LedDevice process flow documentation

* LedDevice process flow documentation

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-09-14 17:19:14 +02:00
TPmodding
fbd8167458
Update CHANGELOG.md
update changelog for alpha release 8
2020-09-13 21:28:12 +02:00
Murat
9204f8a313 ENABLE_AVAHI is not included in WebServer 2020-09-08 20:39:28 +02:00
Jeff Rescignano
8bb5833250
Update URLs in CrossCompilingHowTo (#989) 2020-09-07 17:01:36 +02:00
Murat Seker
120a563ca0
Merge pull request #987 from m-seker/refactor/cleanup
Cleanup
2020-09-07 14:38:47 +02:00
Paulchen-Panther
6cd7fc60b3 Azure CI is being removed because it was a temporary solution 2020-09-06 20:20:20 +02:00
Paulchen-Panther
50e9084d2f Moved from Docker Hub to GitHub Container Registry for Docker compilations 2020-09-06 19:39:46 +02:00
LordGrey
8b2ebf355d
Update CHANGELOG.md 2020-09-05 15:15:36 +02:00
LordGrey
31b5be39b5
Merge pull request #961 from Lord-Grey/Improve_errohandling
Improve UDP-Device Error handling
2020-09-05 15:14:22 +02:00
LordGrey
ca02649330
Update CHANGELOG.md 2020-09-05 15:13:27 +02:00
LordGrey
24b861d3b5
Merge pull request #991 from Lord-Grey/Fix_#903
Fix #903 - Adalight
2020-09-05 15:11:23 +02:00
Murat Seker
35ea94e639
Merge pull request #990 from JeffResc/cc2
Install libqt5x11extras5-dev while cross compiling
2020-09-03 22:39:32 +02:00
LordGrey
7f676a8a4a Fix #903 - Adalight 2020-09-03 19:24:05 +02:00
Jeff Rescignano
ba13eec863 Install libqt5x11extras5-dev while cross compiling 2020-09-03 01:06:54 -04:00
Murat Seker
6e039a0d83
Merge pull request #945 from m-seker/improvement/xcb
Use query interface for void returning X requests
2020-09-02 15:44:44 +02:00
Murat
0a2961a3b4 Cleanup 2020-08-31 22:07:12 +02:00
Murat Seker
fda061bc87
Merge pull request #972 from m-seker/bugfix/971
Fix #971 Build without any grabber
2020-08-31 21:11:17 +02:00
Murat Seker
71dbd77708
Merge pull request #946 from m-seker/refactor/python
Move Python related code to Python module
2020-08-31 21:10:07 +02:00
Paulchen-Panther
3e4d106580 SSH docu picture for HyperBian replaced 2020-08-31 18:29:58 +02:00
Mirko Vogt
5a684e2056
Fix buid against flat-+/protobuf system libs (#934) 2020-08-30 14:47:12 +02:00
Paulchen Panther
4971a07f26
Removed libraries.io badges 2020-08-29 20:16:20 +02:00
Murat Seker
ff47f9ce7b
Merge pull request #958 from m-seker/refactor/led_device
General tidy up
2020-08-26 14:38:48 +02:00
Murat Seker
bc57a45089
Merge branch 'master' into refactor/led_device 2020-08-23 21:02:25 +02:00
Murat Seker
bae39f667d
Merge pull request #959 from m-seker/refactor/const_correctness
Const correctness, override keyword, a bunch of stuff..
2020-08-23 21:00:45 +02:00
Murat
0383dec836 Fix build without any grabber 2020-08-17 17:50:30 +02:00
Raymond Mouthaan
838092e2e6
Added docker pull to docker-compile.sh - solves #937 (#938)
* Added docker pull to make sure always the latest image gets pulled from Docker Hub before starting the compile process
* new cross compile option for armv6/7 buster

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-08-12 20:42:57 +02:00
Paulchen Panther
b00b38791d
Update CompileHowto.md 2020-08-11 17:53:09 +02:00
LordGrey
16353a5906 Improve UDP-Error handling 2020-08-09 17:43:23 +02:00
Murat
4a688b932a Const correctness, override keyword, a bunch of stuff.. 2020-08-08 23:12:43 +02:00
Murat Seker
4099d12d9a
Force remove build/deploy folder in create_all_releases script (#956) 2020-08-08 16:51:23 +02:00
Murat Seker
a18ccb8b48
Refactor color utils (#955)
Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-08-08 13:22:37 +02:00
Murat Seker
63d95a5a2a
Add libcec license (#950) 2020-08-08 13:18:43 +02:00
Murat Seker
c00d8e62fb
Pass primitive types by value (#935) 2020-08-08 13:09:15 +02:00
Murat Seker
5758b19cbc
Fix some LGTM warnings (#949) 2020-08-08 12:59:40 +02:00
Murat Seker
1df0e9ce17
Fix typos in documentation (#948) 2020-08-08 12:58:44 +02:00
Murat Seker
f3f07e0c82
Get rid of unnecessary computation in ImageResampler (#947) 2020-08-08 12:57:15 +02:00
Murat Seker
be329fb7bb
Fix compiler warnings (#942) 2020-08-08 12:54:30 +02:00
Murat Seker
29ee5e2c41
Fix auto generated file path (#940) 2020-08-08 12:52:49 +02:00
Murat
dd2d5e4b40 General tidy up 2020-08-08 00:21:19 +02:00
Murat
6ad511881e Move Python related code to Python module 2020-08-04 19:30:16 +02:00
Murat
54ee71a46a Use query interface for void returning X requests 2020-08-04 18:29:12 +02:00
Murat Seker
13205a9d11
Feature/xcb grabber (#912)
* Add Xcb grabber

* update compile instruction

Signed-off-by: Paulchen Panther <Paulchen-Panter@protonmail.com>

* Fix problem on resolution change + Make XCB default if X11 is not avaialable

* Fix decimation problem

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2020-08-03 12:31:39 +02:00
LordGrey
11d7614591
feat: Updates on language elements (#916)
* Fix "Timers cannot be stopped from another thread" during shutdown

* Fix Language settings typo and add sorting

* Additional DE Translations

* Sort DE language file to compare with POEditor version

* Merge DE translation from git with POEditor one
2020-08-03 09:52:26 +02:00
Murat Seker
b7a9a10223
refactor: Several random fixes + Experimental playground (#917) 2020-08-02 22:37:52 +02:00
Murat Seker
d183c630c8
refactor: Resolve some clang warnings (#915) 2020-08-02 22:35:09 +02:00
Murat Seker
031b9a6b7c
refactor: Modernize Qt connections (#914) 2020-08-02 22:32:00 +02:00
m33ts4k0z
d1a2b77ce3
fix(webui): works now with https port 443 (#924)
* Websocket fix for SSL reverse proxies

* docs: add changelog

Co-authored-by: Sersch <edeltraud70@gmx.de>
2020-08-02 22:18:42 +02:00
brindosch
94c23653de
feat(win): Add binary meta (#932) 2020-08-02 22:05:53 +02:00
Murat Seker
8824e69986
Fix some more threading errors (#911) 2020-08-02 10:44:42 +02:00
dependabot[bot]
d9e33885a0
build(deps): bump elliptic from 6.5.1 to 6.5.3 in /docs (#929)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.1 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.1...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-02 07:51:30 +02:00
LordGrey
85cbf630f6
Update create_all_releases.sh 2020-08-01 22:10:40 +02:00
Mathijs Groothuis
fcac80d3d5
Update en.json (#926)
Fix typo
2020-08-01 19:48:54 +02:00
Paulchen Panther
7550a93e59
NSIS/Systray option to launch Hyperion on Windows start [HKCU] (#887)
* NSIS/Systray option to launch Hyperion on Windows start
* corrected file path in registry
2020-08-01 17:50:20 +02:00
Murat Seker
d4b4158cb7
Fix logger and led colors (#906) 2020-07-27 20:00:36 +02:00
Paulchen Panther
773b47bf53
set zlib back to system ignore list/revert pr #871 (#904)
* set zlib to system ignore list
* undo pr #871
* exclude libcec if Dispmanx available
2020-07-27 19:10:32 +02:00
SJunkies
374945346a
Fix: -DUSE_SYSTEM_MBEDTLS_LIBS=ON - undefined reference (#898) 2020-07-27 17:53:19 +02:00
Mathijs Groothuis
cedd1e81c9
Update nl.json (#900)
Replaced Google Translated entries to more proper Dutch
2020-07-27 17:45:40 +02:00
Sersch
67e0371cf5 fix(ci): Trigger HyperBian build after release 2020-07-26 16:21:51 +02:00
LordGrey
a9ad9d920f
Update bug_report.md 2020-07-26 11:32:10 +02:00
Serhan
a2809046b5
Update CHANGELOG.md 2020-07-24 01:53:29 +02:00
Paulchen Panther
cce6980982
Update CHANGELOG.md 2020-07-23 18:17:30 +02:00
Paulchen-Panther
ffa2fd45ac chore: Release 2.0.0-alpha.7 2020-07-23 17:12:06 +02:00
Murat Seker
e52fd7b557
Fix crash on startup X server is not available (#895) 2020-07-23 16:50:37 +02:00
Serhan
6f5f28cd56
Hyperion logo align in WebUI (#896)
- DispmanX Grabber also used in PR builds
- Removed unused build variable
2020-07-23 16:47:35 +02:00
Murat Seker
df0d411ba1
Fix 'Restart' RPC command (#894) 2020-07-22 18:15:39 +02:00
Paulchen Panther
30f04a326b Updating submodules to latest master
as explained in PR # 873
2020-07-22 17:38:38 +02:00
Paulchen Panther
bc0bd2bb0d
Update CHANGELOG.md 2020-07-22 16:49:24 +02:00
Murat Seker
21b0b3f2ea
Fix Qt screenhot crash (#889) 2020-07-22 16:46:43 +02:00
Murat Seker
126c18e003
Fix some data races (#890) 2020-07-22 16:43:24 +02:00
Murat Seker
6362cfcc1b
Decrease compile time (#886) 2020-07-21 19:35:25 +02:00
Serhan
d6573048e7
Update PULL_REQUEST_TEMPLATE.md 2020-07-21 03:10:56 +02:00
Serhan
37fbc1a23e
Update CHANGELOG.md 2020-07-20 21:33:33 +02:00
Murat Seker
c124e2136a
Feature/CEC detection (#877)
* Add CEC functionality

* Initial commit

* removed libCEC from the system skip list

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-07-20 20:06:41 +02:00
dependabot[bot]
a3ce4fa706
[dependabot] bump lodash from 4.17.15 to 4.17.19 in /docs (#888)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)
2020-07-20 19:10:51 +02:00
Murat Seker
95688c0f1e
Some optimizations (#880) 2020-07-19 16:14:54 +02:00
Murat Seker
4880e31562
Make logger thread safe (#885) 2020-07-19 15:37:47 +02:00
LordGrey
45303e1b64
Fix "Timers cannot be stopped from another thread" during shutdown (#876) 2020-07-19 15:13:41 +02:00
Murat Seker
c85b4c530c
Don't use exceptions as part of normal flow (#872) 2020-07-19 14:44:59 +02:00
Paulchen Panther
a8954f2cc0
Rename Raspbian Lite to Raspberry Pi OS Lite 2020-07-19 14:39:22 +02:00
Serhan
02560ca67c
Update CHANGELOG.md 2020-07-19 12:14:16 +02:00
Serhan
76cebd450b
Update CHANGELOG.md 2020-07-19 12:12:05 +02:00
Sersch
8a9b44fd3c Merge remote-tracking branch 'hyperion.ng/master' into nsis 2020-07-14 09:11:12 +02:00
Sersch
13075f80d1 feat(win): Add run after install 2020-07-14 09:10:57 +02:00
Sersch
ac535b5810 fix(win): Installer icon deletion 2020-07-14 09:09:58 +02:00
Sersch
3d165ceb07 Hotfix NSIS 2020-07-13 20:59:13 +02:00
Serhan
52ed2d88fe
Update CHANGELOG.md 2020-07-13 10:30:59 +02:00
Serhan
ebba77f330
Update CHANGELOG.md 2020-07-13 00:59:42 +02:00
LordGrey
7389068a66
LED Device Features, Fixes and Refactoring (Resubmit PR855) (#875)
* Refactor LedDevices - Initial version
* Small renamings
* Add WLED as own device
* Lpd8806 Remove open() method
* remove dependency on Qt 5.10
* Lpd8806 Remove open() method
* Update WS281x
* Update WS2812SPI
* Add writeBlack for WLED powerOff
* WLED remove extra bracket
* Allow different Nanoleaf panel numbering sequence (Feature req.#827)
* build(deps): bump websocket-extensions from 0.1.3 to 0.1.4 in /docs (#826)
* Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
  - [Release notes](https://github.com/faye/websocket-extensions-node/releases)
  - [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
  - [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)
* Fix typos
* Nanoleaf clean-up
* Yeelight support, generalize wizard elements
* Update Yeelight to handle quota in music mode
* Yeelight extend rage for extraTimeDarkness for testing
* Clean-up - Add commentary, Remove development debug statements
* Fix brightnessSwitchOffOnMinimum typo and default value
* Yeelight support restoreOriginalState, additional Fixes
* WLED - Remove UDP-Port, as it is not configurable
* Fix merging issue
* Remove QHostAddress::operator=(const QString&)' is deprecated
* Windows compile errors and (Qt 5.15 deprecation) warnings
* Fix order includes
* LedDeviceFile Support Qt5.7 and greater
* Windows compatibility and other Fixes
* Fix Qt Version compatability
* Rs232 - Resolve portname from unix /dev/ style, fix DMX sub-type support
* Disable WLED Wizard Button (until Wizard is available)
* Yeelight updates
* Add wrong log-type as per #505
* Fixes and Clean-up after clang-tidy report
* Fix udpe131 not enabled for generated CID
* Change timer into dynamic for Qt Thread-Affinity
* Hue clean-up and diyHue workaround
* Updates after review feedback by m-seker
* Add "chrono" includes
2020-07-12 20:27:56 +02:00
Murat Seker
3b48d8c9d6
Dump stack trace on crash (Implement #849) (#870)
* Print stack trace on crash

* Printing stack trace is fully functional except for WIN32

* Minor fixes

* Minor fixes
2020-07-12 18:27:24 +02:00
Paulchen-Panther
9c5e5cac24 Fix GitHub Actions/Azure Windows Workflow/Pipeline
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-07-12 15:50:30 +02:00
Paulchen Panther
4d56a8974c
Fix typo 2020-07-12 11:30:06 +02:00
Paulchen Panther
0027e682e3
Correct GitHub Actions badge 2020-07-12 11:24:33 +02:00
SJunkies
9110b3e690
DBManager: ORDER BY parameter added to getRecord(s) (#770)
-> All instances are now sorted in ascending order using the instance ID
-> The web interface gets an incorrect instance order, which causes further problems
2020-07-12 11:04:16 +02:00
Paulchen Panther
8c188d71d9
Embedded python package (zip) for Linux (#871)
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-07-12 09:26:28 +02:00
Murat Seker
c32a4df587
Bugfix/resolution change event Fixes part of #620 (#867)
* Detect resolution changes

* include Qt5Widgets

* find Qt5Widgets

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-07-12 09:23:13 +02:00
Paulchen Panther
22ace55447
Fix OpenSSL dependencies for Windows (#864)
* Fixed OpenSSL dependencies on Windows

* CompileHowto updated
2020-07-12 09:22:26 +02:00
Murat Seker
69561aea9d
Fix some leaks (#863) 2020-07-12 09:22:05 +02:00
Murat Seker
dd98e245fe
Fix heap corruption (#862) 2020-07-12 09:20:58 +02:00
Murat Seker
138b7d9c94
Random cleanup (#861)
Co-authored-by: Seker <murat.seker@barco.com>
2020-07-12 09:19:59 +02:00
brindosch
de9ece5139
feat: Windows console window (#860)
* Add console option for windows

* add changelog entry

* chnagelog

* update changelog

* Daran solls nicht fehlen

* nsis: Install vcredist

* Disable vc_redist detection
2020-07-12 09:18:40 +02:00
Paulchen Panther
0f3da1ccc7
[Fix] Correct path for each build configuration
Used the cmake generator expression to determine the full path to the target file.
Link: https://cmake.org/cmake/help/v3.0/manual/cmake-generator-expressions.7.html#informational-expressions
2020-07-06 18:53:30 +02:00
Murat Seker
6cf9dfaa68
refactor: Get process IDs by iterating /proc. Improve readability in JsonConnection option handling. (#843)
Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-06-29 22:55:12 +02:00
Serhan
26813be36a
Update CHANGELOG.md 2020-06-29 00:45:27 +02:00
Murat Seker
45990f2726
fix: leaking active effects during quit (#850) 2020-06-28 23:46:36 +02:00
Murat Seker
485beab4f3
refactor: show thread names in GDB for better debugging (#848) 2020-06-28 23:43:45 +02:00
Murat Seker
a68ed7d44f
fix: Delete order of threads (#846)
* Fix #668 by fixing delete order of threads

* update changelog

Co-authored-by: Sersch <edeltraud70@gmx.de>
2020-06-28 23:42:57 +02:00
Murat Seker
0cb1ab2be1
fix: Broken link to CompileHowto (#845) 2020-06-28 23:19:39 +02:00
Murat Seker
db8b872217
feat: Delay M-SEARCH response by a random value according to MX header (#844) 2020-06-28 23:19:06 +02:00
Murat Seker
458113f8f9
refactor: Improve utils code style (#841)
* Improve utils code style

* Fix indendation

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-06-28 23:12:22 +02:00
LordGrey
bfb50b8d91
refactor: Address (Windows) compile warnings (#840)
* Windows compile errors and (Qt 5.15 deprecation) warnings

* Usability - Enable/Disable Instance button

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-06-28 23:05:32 +02:00
heikobihr
e365a2839d
fix: Windows serialport detection (fix #836) (#837)
* use QSerialPortInfo do detect presence of a serial port (fix #836)

* checking for existence of device file does not work on windows
* instead: construct QSerialPortInfo from device name and check, if it is not null
  When constructing QSerialPortInfo from device name, this constructor finds the
  relevant serial port among the available ones according to the port name name,
  and constructs the serial port info instance for that port.
  (https://doc.qt.io/qt-5/qserialportinfo.html#QSerialPortInfo-2)

* serial port: set device in error with a failure text, if device name is invalid

Co-authored-by: heiko <heiko@bihr.internal>
2020-06-28 22:45:43 +02:00
Serhan
2562787dae
Update CHANGELOG.md (#833)
Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-06-28 22:40:25 +02:00
brindosch
def7d285d0
feat(webui): Add French, Turkish, Vietnamese & translation update (#842)
* add Turkey

* Add French, Vietnamese

* Update translations

* Update settings.js

* add changelog entry

Co-authored-by: Serhan <TPmodding@serhan.in>
2020-06-28 22:34:53 +02:00
Paulchen Panther
6ce97e7f30
Open WebUI instead of the color picker 2020-06-28 20:15:47 +02:00
Paulchen Panther
f9f32c6cff
[HOTFIX] Python module path (Windows)
The pythonPath pointer was not properly enlarged when expanded.
Reduced to the return of Py_DecodeLocale.
This sets the correct size of the pointer at the beginning.
2020-06-28 16:08:19 +02:00
Hyperion-Bot
00da8c6d8e Update it.json (POEditor.com) 2020-06-26 22:33:02 +02:00
brindosch
49dc80d5ae
Update CHANGELOG.md 2020-06-26 18:20:43 +02:00
LordGrey
1744f6d07a
Suppress default password warning (#830) 2020-06-26 18:16:59 +02:00
Serhan
5eb45e857f
Merge pull request #829 from Lord-Grey/Update_LedDevices
Update led devices(LPD8806 + Nanoleaf)
2020-06-17 21:38:24 +02:00
Serhan
38db12b109
Merge pull request #812 from Lord-Grey/Language_selection-#787
Improve language selection usability
2020-06-17 21:37:46 +02:00
mootzen
9ff8634d63
Added Link to HyperBian zip File (#832)
Simply linked to your own repo
2020-06-17 21:05:41 +02:00
Paulchen Panther
aa55edf5a7
Reset/V4L2/Systemd/rpi_ws281x/Profiler (#820) 2020-06-17 20:59:26 +02:00
Paulchen Panther
756247aa1e
V4l2 input (#825) 2020-06-17 20:55:57 +02:00
LordGrey
e30a9d263d Nanoleaf Feature Request #827 2020-06-12 11:16:39 +02:00
LordGrey
7d354aa72d Fix LedDeviceLpd8806 2020-06-11 23:10:22 +02:00
dependabot[bot]
244b4e6886 build(deps): bump websocket-extensions from 0.1.3 to 0.1.4 in /docs (#826)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-11 22:57:41 +02:00
dependabot[bot]
423a59fa34
build(deps): bump websocket-extensions from 0.1.3 to 0.1.4 in /docs (#826)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-08 15:46:10 +02:00
brindosch
2110548751 fix: p2 2020-06-04 16:21:23 +02:00
brindosch
536b5c4c1e fix: Windows ci 2020-06-04 14:32:35 +02:00
brindosch
4be47fd222 fix: transparent btn dark mode :hover :focus 2020-06-04 11:55:45 +02:00
LordGrey
081e375927 Show used language, if nothing stored locally 2020-05-30 16:40:51 +02:00
Paulchen Panther
08de6b7831
Fix python 3 error & lgtm alert 2020-05-29 21:19:29 +02:00
LordGrey
b49ff0e5e2 Move language selector under setting drop-down saving space 2020-05-29 14:28:15 +02:00
LordGrey
6c7b1813a7 Improve language selection usability 2020-05-29 11:28:35 +02:00
Sersch
85e2bc9fb8 fix: Repair HyperBian dispatch 2020-05-28 17:57:22 +02:00
Sersch
6d12b111a5 docs: fix windows compile instruction 2020-05-28 12:48:23 +02:00
Sersch
f5583de85b chore: Release 2.0.0-alpha.6 2020-05-27 22:33:39 +02:00
brindosch
336379357d
add changelog (#810) 2020-05-27 22:31:57 +02:00
LordGrey
55253b5322
fix: Rewrite-/LatchTime LedDevice definitions (#785) (#799)
* Fix Rewrite/Latch Time

* dependencies can now be specified in the schema

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* dependencies can now be specified in the schema

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* correct default config

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* dependencies part 2

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Update README.md

* build: Update Windows to Qt5.15 (#798)

* Update compile howto

- to qt5.15
- minimal install overhead
- sync with vscode and cmake

* Update docs with more input

gh actions windows: Qt5.15 and msvc2019

* fix: Azure build

* feat: Add Trapezoid to LED Layout (#791)

* Update schema-ledConfig.json

extend schema with corner points (vertcal and horizontal values in percent)

* Update conf_leds.html

input fields for corner points

* Update content_leds.js

add corner values and calculation of led rows

* Update de.json

german title for corners

* CHanges 26.12.2019 Correction and PowerOff add

* GrabberFix PiCam

* VType as QString

* Unused variable deletet

* Missing new paramneters for GrabberFix

* Error json

* JSon error by user

* Crosscompile SutnikElf frok

* Warning unused variable

* Revert "Crosscompile SutnikElf frok"

This reverts commit 443fe8009021f15b617292868c778499c13282a7.

* Fixing a linting error

* Adding Grabber Override Names

* Adding more Grabber Fix translations

* Missed one

* remove V4L2 Grabber Fix and Power Button from Dashboard

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Setting some limits to the trapezoid

Co-authored-by: SputnikElf <58911932+SputnikElf@users.noreply.github.com>
Co-authored-by: SputnikElf <sputnikelf@gmx.de>
Co-authored-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* add Hue EntertainmentAPI + Forwarder & other Fixes (#592)

* whitespaces + typo fixes

* JS / LGTM fixes

* SSDP Handler crash fix

* MessageForwarder handlePriorityChanges Slave fixes

* use aboutToQuit Signal

* complete rewriten Hue Entertainment API structure
combined Philips Hue and Entertainment API
with new MbedTLS based SSL UDP Provider

* add required cross-compile submodules

* logical rebuild fn: initLeds, setLights + new logs
-more detailed checks and error handling inside iniLeds and setLights
- logical script procedure before ProviderUdpSSL init
- first steps for multiple ProviderUdpSSL usage
- better fallback support to old RestAPI, if entertainment api is not supported
- just 4 u LordGrey: new log fn for cosmetic config outputs ;)

* add OSX CompileHowTo - undo from CrossCompileHowTo

* whitespace fixes

* lightID toString fix

* fix unsigned int E-API + debug output

* bugfixes, reworked black signal detection, wizard:
- change device config field light-ids from int to string -> real unsigned int fix
- add signal detection brightness minimum threshold value
0.0 for 0% brightness - 1.0 for 100% brightness to count for blacklight signal detection
reason: input may not 100% black, like mine - i have a deep dark gray input signal
-> my threshold value is set to 0.005 for 0.5% minimum brightness = 1 (from max 255) to count as black
- wizard optimations, with fallback without entertainment support (beta state)
- whitespace fixes

* cleanup + minor fixes

* change fixed Hue UPD SSL config to _devConfig paras

* Hotfix SSL Connection, new light models, wizard:
- Fix UPD SSL Connection failed Problems
- add new supported gamut C light models: LCG002, LCA001, LCA002, LCA003
- wizard: extend fallback support to classic mode + hints

* whitespace, typo fix

* uncheck useEntertainmentAPI, if noAPISupport detected + hint

* coredump fix -> add _blackLightsTimer nullptr init

* code cleanup / remove old debugs + whitespacefixes

* add gamut C LCP001, LCP002

* SSL UDP config made more flexible + remove qDebug
-> switch to hyerion.ng _log
-> replace logCommand with verbose
-> code cleanups etc...

* extended mbedtls debugging infos

* add adjustable ssl timeout settings

* error handling

* streamdebugger bugfixes

* UPDSSL psk / psk_identity bugfixes! + hue wizard fn typo fix +
- verbose option available without dependencies
- whitespace fixes

* Philips Hue Assistant now recognizes non-original bridges better...
+ Added note if no clientkey is set when using the entertainment API
+ User creation (+ clientkey) for non-original bridges can now also be used
+ Minor changes and bug fixes

* CMAKE mbedTLS  detection

* minor bug fixes + code cleanups

* FindMbedTLS.cmake remove Path-Hints + wizard.js: ajax timeout handling
Test - content_grabber.js: run relevant code only, if V4L2_AVAIL is true:
conf_grabber don't displays other devices, if V4L2 is not available

* compile mbedtls via cmake as static lib

* remove libmbedtls-dev from compileHowto / scripts

* Fix Windows build

* Fix windows build (part 2)

* removed unnecessary osx x11 include directory path

* QTimer Shutdown bugfix

* cmake win32 fix + minor bugfixes

* cmake debug msg used mbedtls libs

* Bugfix: noSignalDetection wasn't switchedOn again
if no signal was previously detected

* Some code fixes based on alerts from lgtm.com

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>

* Update devices allowing rewriteTime

* Fix typo

* Add missing "general_btn_saverestart" text to en-file

Co-authored-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: brindosch <edeltraud70@gmx.de>
Co-authored-by: Ben Williams <desertblade@gmail.com>
Co-authored-by: SputnikElf <58911932+SputnikElf@users.noreply.github.com>
Co-authored-by: SputnikElf <sputnikelf@gmx.de>
Co-authored-by: SJunkies <41368976+SJunkies@users.noreply.github.com>
2020-05-26 22:28:36 +02:00
brindosch
d5af0f4290
feat: Add build trigger for HyperBian on release 2020-05-25 22:22:21 +02:00
SJunkies
3ff7fe483f
fix: small collection of bugfixed debugger hints and warnings (#801)
* small collection of bugfixed debugger hints / warnings

* 'toStdVector' has been explicitly marked deprecated

* fixed double zip naming in artifacts

* V4L2 WebUI Fix

* Some code fixes based on alerts from lgtm.com

* only execute dynamic v4l2 enum code, if V4L2_AVAIL

* very high critical bugfix ;)

* merge fix

* some lgtm.com fixes

* lgtm fixes

* undo localtime_r fix

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-05-25 21:51:11 +02:00
SJunkies
e1288a2649
fix: OSX add x11 new include path (#802) 2020-05-25 21:46:25 +02:00
SJunkies
3f68e55d1a
docs(device): Philips Hue Entertainment API Documentation (#806)
* Philips Hue Entertainment API hyperion docu

* Signal detection brightness minimum + minor changes
2020-05-25 21:42:52 +02:00
SJunkies
259becea04
add Hue EntertainmentAPI + Forwarder & other Fixes (#592)
* whitespaces + typo fixes

* JS / LGTM fixes

* SSDP Handler crash fix

* MessageForwarder handlePriorityChanges Slave fixes

* use aboutToQuit Signal

* complete rewriten Hue Entertainment API structure
combined Philips Hue and Entertainment API
with new MbedTLS based SSL UDP Provider

* add required cross-compile submodules

* logical rebuild fn: initLeds, setLights + new logs
-more detailed checks and error handling inside iniLeds and setLights
- logical script procedure before ProviderUdpSSL init
- first steps for multiple ProviderUdpSSL usage
- better fallback support to old RestAPI, if entertainment api is not supported
- just 4 u LordGrey: new log fn for cosmetic config outputs ;)

* add OSX CompileHowTo - undo from CrossCompileHowTo

* whitespace fixes

* lightID toString fix

* fix unsigned int E-API + debug output

* bugfixes, reworked black signal detection, wizard:
- change device config field light-ids from int to string -> real unsigned int fix
- add signal detection brightness minimum threshold value
0.0 for 0% brightness - 1.0 for 100% brightness to count for blacklight signal detection
reason: input may not 100% black, like mine - i have a deep dark gray input signal
-> my threshold value is set to 0.005 for 0.5% minimum brightness = 1 (from max 255) to count as black
- wizard optimations, with fallback without entertainment support (beta state)
- whitespace fixes

* cleanup + minor fixes

* change fixed Hue UPD SSL config to _devConfig paras

* Hotfix SSL Connection, new light models, wizard:
- Fix UPD SSL Connection failed Problems
- add new supported gamut C light models: LCG002, LCA001, LCA002, LCA003
- wizard: extend fallback support to classic mode + hints

* whitespace, typo fix

* uncheck useEntertainmentAPI, if noAPISupport detected + hint

* coredump fix -> add _blackLightsTimer nullptr init

* code cleanup / remove old debugs + whitespacefixes

* add gamut C LCP001, LCP002

* SSL UDP config made more flexible + remove qDebug
-> switch to hyerion.ng _log
-> replace logCommand with verbose
-> code cleanups etc...

* extended mbedtls debugging infos

* add adjustable ssl timeout settings

* error handling

* streamdebugger bugfixes

* UPDSSL psk / psk_identity bugfixes! + hue wizard fn typo fix +
- verbose option available without dependencies
- whitespace fixes

* Philips Hue Assistant now recognizes non-original bridges better...
+ Added note if no clientkey is set when using the entertainment API
+ User creation (+ clientkey) for non-original bridges can now also be used
+ Minor changes and bug fixes

* CMAKE mbedTLS  detection

* minor bug fixes + code cleanups

* FindMbedTLS.cmake remove Path-Hints + wizard.js: ajax timeout handling
Test - content_grabber.js: run relevant code only, if V4L2_AVAIL is true:
conf_grabber don't displays other devices, if V4L2 is not available

* compile mbedtls via cmake as static lib

* remove libmbedtls-dev from compileHowto / scripts

* Fix Windows build

* Fix windows build (part 2)

* removed unnecessary osx x11 include directory path

* QTimer Shutdown bugfix

* cmake win32 fix + minor bugfixes

* cmake debug msg used mbedtls libs

* Bugfix: noSignalDetection wasn't switchedOn again
if no signal was previously detected

* Some code fixes based on alerts from lgtm.com

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-05-22 19:40:50 +02:00
Ben Williams
4aebd55715
feat: Add Trapezoid to LED Layout (#791)
* Update schema-ledConfig.json

extend schema with corner points (vertcal and horizontal values in percent)

* Update conf_leds.html

input fields for corner points

* Update content_leds.js

add corner values and calculation of led rows

* Update de.json

german title for corners

* CHanges 26.12.2019 Correction and PowerOff add

* GrabberFix PiCam

* VType as QString

* Unused variable deletet

* Missing new paramneters for GrabberFix

* Error json

* JSon error by user

* Crosscompile SutnikElf frok

* Warning unused variable

* Revert "Crosscompile SutnikElf frok"

This reverts commit 443fe8009021f15b617292868c778499c13282a7.

* Fixing a linting error

* Adding Grabber Override Names

* Adding more Grabber Fix translations

* Missed one

* remove V4L2 Grabber Fix and Power Button from Dashboard

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Setting some limits to the trapezoid

Co-authored-by: SputnikElf <58911932+SputnikElf@users.noreply.github.com>
Co-authored-by: SputnikElf <sputnikelf@gmx.de>
Co-authored-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-05-20 08:36:52 +02:00
brindosch
a38502b8fe
build: Update Windows to Qt5.15 (#798)
* Update compile howto

- to qt5.15
- minimal install overhead
- sync with vscode and cmake

* Update docs with more input

gh actions windows: Qt5.15 and msvc2019

* fix: Azure build
2020-05-18 21:09:33 +02:00
Paulchen Panther
b0fcad4bb3
Update README.md 2020-05-15 22:13:07 +02:00
LordGrey
9472860868
Toggle-Buttons for Component Remote Control (#677) (#778)
* Toggle-Buttons for Component Remote Control (#677)

* Update remote.js

* Handle Component Updates individually

* Avoid unnecessary updates

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-05-12 19:56:06 +02:00
Paulchen Panther
9e149308f4
new effect plasma (#792)
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-05-12 19:52:46 +02:00
brindosch
510bb903ae
Windows compilation support (#738)
* Disable AVAHI

* Replace SysInfo backport with Qt SysInfo

* Update vscode config

* Update LedDevices

* Update Logger

* Update hyperiond

* Update hyperion-remote

* Exclude avahi

* Empty definition for Process

* PythonInit path broken

* Exclude PiBlaster and link ws2_32

* more avahi

* resolve ui bug

* Update Compile howto

* JsonAPI QtGrabber missing

* fix error

* ssize_t replacement

* Nope, doesn't work

* Adjust compile description and verify winSDK

* Update ci script

* Update ci script

* Update ci

* Update ci script

* update Logger

* Update PythonInit

* added Azure & GitHub Actions, Logger, PythonInit

* resolve merge conflicts

* revert ssize_t in FadeCandy

* look at registry for QT5 & use find_package(Python) if cmake >= 3.12

* second try

* another try

* and yet another test

* qt5 registry search undone

* Package creation test

* finished package creation. only fine tuning is required :-)

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Dependencies for Windows finished

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* use 'add_definitions()' until CMake 3.12

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Update .github/workflows/pull-request.yml

Co-Authored-By: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>

* Update cmake/Dependencies.cmake

Co-Authored-By: brindosch <edeltraud70@gmx.de>

* fix typo/ add VCINSTALLDIR var

* fix again

* Undo change again (Not working)

* fix QT grabber

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* first NSIS test

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Update NSIS package

* surprise :-)

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Update NSIS package

* fix: NSIS .bmps

* Add nsis templates

* Force windows gui app

* fix: QSysInfo required Qt5.6, now it's 5.4 again

* Update: Remove platform component and adjust package name

* Add macOS as system name

* Update docs

* fix: Allow gh actions ci also for forks with branches

* Add ReadMe docs, mention windows, add vscode linux debug config

* fix: readme visual

* reduce/hide banner/copyright/log message

Infos here: https://docs.microsoft.com/de-de/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019#switches

* Fix PythonInit

* vscode: Add runner task

* fix(vscode): compiler path gcc ver independent

* fix azure

* vscode: add windows run tasks

* move process detection

* main: add windows process detection

* Azure file shredder

* Update docs

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-05-12 19:51:19 +02:00
SJunkies
598b404f38
webui: select appearance fix + changed wizard btn color (#789)
* select appearance fix + changed wizard btn color

* default buttons

* warning buttons
2020-05-11 22:10:10 +02:00
clempat
472da54856
doc: fix small typo on effect.py (#790)
This could confuse people who does stupid copy paste 😄
2020-05-11 22:00:08 +02:00
Paulchen Panther
da7b02fc59
github actions replaces azure (release creation) (#788) 2020-05-11 21:54:46 +02:00
Paulchen Panther
aeb199b1c1
Update bug_report.md
https://github.com/hyperion-project/hyperion.ng/issues/772#issuecomment-615870439
2020-05-10 12:49:35 +02:00
Paulchen-Panther
43a91bc21e github actions replaces azure (release creation) 2020-05-03 13:38:18 +02:00
brindosch
e79615534c
fix(webui): hide v4l2 if not available (#782)
* fix(webui): hide v4l2 if not available

* Whups
2020-05-02 15:47:15 +02:00
brindosch
884c68b239
feat(docs): Documentation for Hyperion (#780)
* Add Documentation

* git ignore dist and node_modules filder

* Update dependencies

* Add GH Actions to test build

* Update header to latest Quasar spec

* resolve c&p issue

* Update splashscreens

* Add docs deploy
2020-05-01 20:19:19 +02:00
LordGrey
0c16293319 Fix - Nanoleaf crashes hyperion 2020-04-23 19:05:27 +02:00
Paulchen Panther
3a2b58b571
Fix AArch64 GitHub Actions PR build 2020-04-21 17:08:05 +02:00
Paulchen Panther
91c771ccd6 i386 architecture removed
AArch64 architecture paused at package creation
Self extracting Tar GZip compression (STGZ) packages are no longer built

Signed-off-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
2020-04-20 18:46:51 +02:00
Paulchen-Panther
e3587923e8 Release 2.0.0-alpha.5 2020-04-17 20:37:02 +02:00
Paulchen Panther
2e578c1947
chore: fix JsonAPI 2020-04-17 20:16:33 +02:00
Paulchen Panther
9ca197ea78 Use stages in Azure Pipelines 2020-04-17 18:15:33 +02:00
Paulchen Panther
10f11c2d89
V4L2 enhanced (#766)
* fix v4l2 standard
* ignore v4l2 meta devices
* added resolution, framerate and device dropdown list to WebUI (thx to @Lord-Grey & @b1rdhous3)

* Fix for kernels prior to v4.16
* Device names added & WebUI adapted
2020-04-17 16:59:20 +02:00
SJunkies
b92af63cef
new dark mode - dark gray - color theme + backup previous version (#765)
* new dark mode - dark gray - color theme + backup previous version

* safari select field fix

* minor color corrections
2020-04-16 21:27:24 +02:00
LordGrey
77ee96ab4c
Fix #757 - Some effects are running extreme slowly. (#763) 2020-04-13 12:00:10 +02:00
Paulchen Panther
060d9f45ec
update screenshot 2020-04-10 10:19:15 +02:00
b1rdhous3
52e7f04e46
Introduce Dark Mode (#752)
* Introduce Dark Mode

* Auto Detect Dark Mode from OS

Some OS (iOS or Mac OS e.g.) can give the browser an information if system wide dark mode is set or not. If the OS shares this information, webui is set automatically to the mode. Manual overwrite is still possible by pressing button on the webui. This is valid as long the session in the client is open.

* Burger Button Dark Mode

Dark Mode for Burger Button (Mobile View)
2020-04-05 20:08:56 +02:00
b1rdhous3
5d1063e935
Check if requested Instance is running (#759)
Preventing a dead lock when the requested instance from local store is not running. 
If it is not running we will now delete the lastSelectedInstance and switch back to index 0.
2020-04-05 20:05:02 +02:00
LordGrey
7773d07571
Fix SSDP Discovery reliability (#756) 2020-04-05 19:41:02 +02:00
Paulchen Panther
253cd18e89
Azure refactor (#758)
* Refactor Azure Pipelines

* forgot a space
2020-04-05 18:57:15 +02:00
Paulchen Panther
0e736f785a [HotFix] version
CPack doesn't like line breaks
2020-03-29 16:26:16 +02:00
Paulchen Panther
14a26cd5e1
Fix Typo 2020-03-28 13:45:29 +01:00
brindosch
731b517be1 chore: Release 2.0.0-alpha.4 2020-03-27 23:21:12 +01:00
Paulchen Panther
662872dafe
feat: SchemaChecker & V4L2 enhancement (#734)
* libjpeg-turbo, QJsonSchemaChecker, V4L2 width/height/fps

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

* Implement hyperion-v4l cli args

* Apply v4l2 settings during runtime

* feat: Provide minimum values for input restriction

* fix: merge mess

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-03-27 23:13:58 +01:00
brindosch
20a5e5dc06
fix: GridSize change, show brightness compensation (#746)
* show brightness compensation and set to 0

* New gridLayout calculation and px limiter
2020-03-27 16:08:42 +01:00
Paulchen Panther
133399c6b6
README cosmetics 2020-03-26 21:41:15 +01:00
Paulchen Panther
c3cf352b0c
SIGUSR1/SIGUSR2 implemented again (#725)
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-03-26 19:37:39 +01:00
LordGrey
aaa4235cab
refactor: Align Phillips Hue to reworked device handling (#712)
* Align PhilipsHue (Classic)

* Minor Device corrections

* Have code working with Qt < 5.10

* Fixes on Hue Wizzard

* Fixes on Hue Wizzard

* Calculate Latchtime only for lights updated by hyperion

* Allow to disable restoring original light's state

* Fix - LightIDs / LightMap vectors were not cleared when reopening the device

* Reduce API Calls for state updates by consolidation
2020-03-26 18:49:44 +01:00
brindosch
2739aec1e3
refactor: API split (#721)
* refactor: API split

* refactor: cleanup hyperiond
2020-03-26 17:59:41 +01:00
Paulchen Panther
c6c6453267
fix: removed necessary libs from the exclude list (#736)
* removed necessary libs from the exclude list

* libxcb also needed
2020-03-26 17:53:16 +01:00
brindosch
cb98d51a9c
fix: Resolve enable state for v4l and screen capture (#728)
* fix: Resolve the enable state for v4l and screen capture

* Use instance index instead of pointer

* Second try

* fix(QtGrabber): QScreen ownership

* Remove v4l2 compState listener
2020-03-26 17:49:36 +01:00
LordGrey
49b30c47f7
fix: Memoryleaks & Coredump, if no Grabber compiled (#724)
* Fix Memoryleaks & Coredump, if no Grabber

* Fix Memoryleaks & Coredump, if no Grabber
2020-03-22 22:07:19 +01:00
Paulchen Panther
1fb14b2002
The Hyperion project [bot] now gets its PR comments from this file 2020-03-15 17:46:30 +01:00
Paulchen Panther
69828d140e
The cleanup job for outdated artifacts has be changed 2020-03-14 11:51:47 +01:00
Paulchen Panther
be72b1ef98
macOS Azure CI test updated
Reason: https://aka.ms/blocked-hosted-agent
2020-03-12 21:50:54 +01:00
T-IOOO
8b59de59b3
Swedish Translation Update (#711)
Spelling errors and rephrased sentences
2020-03-12 21:36:14 +01:00
brindosch
56023ed154
fix(ssdp): ssdp:all provide better feedback (#720)
* fix: ssdp:all provide a better feedback

* Add more debug statements to webserver
2020-03-11 22:18:08 +01:00
Paulchen Panther
9a587d3a27
The PR comment job has been removed (#719)
because this is now handled by our GitHub action app.
2020-03-11 17:24:05 +01:00
Paulchen Panther
2fa7af2974
Release type changed in the description 2020-03-09 21:44:18 +01:00
hissingshark
77ac853210
Add libssl-dev to dependencies in build instructions (#716) 2020-03-07 09:56:20 +01:00
Paulchen Panther
75f9a6df60
Fixed bug PR #703 2020-03-05 18:29:10 +01:00
Hyperion-Bot
cc840ab513 From now on I'm creating the GitHub releases for you :-) 2020-03-01 20:19:16 +01:00
brindosch
bec6c4956c chore: Release 2.0.0-alpha.3 2020-03-01 15:47:25 +01:00
Scott Porter
11a6ff43ae
fix: multiple memory leaks and segfault issues in Flatbuffer Forwarder. (#709) 2020-03-01 15:37:06 +01:00
brindosch
8db85c9a5a
refactor: Led layout, clearAll (#703)
* add SSDP name field

* YALL - yet another led layout

* led layout migration

* add initial vscode config

* merge clearAll with clear, rename Hyperion::compStateChange

* simpler components api

* Corrected code formatting

+ triggered PR build

* fix: regression from #636

* Support for color patterns

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-02-26 18:54:56 +01:00
Paulchen Panther
ef51d28463
chore: GitHub Actions bot comment on PR to find artifacts faster (#707)
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-02-26 18:52:54 +01:00
Paulchen Panther
737b629adc
Only archive files are collected as PR artifacts 2020-02-24 20:09:24 +01:00
Paulchen Panther
96bede6f7a
CI - Artifacts for faster testing (#702)
Cleanup Workflow Job is set to 14 days
2020-02-24 18:02:34 +01:00
b1rdhous3
fa553820f5
feat: Package Update Descriptions on WebUi (#694)
* md highlighting

* Update 3RD_PARTY_LICENSES
2020-02-23 23:19:14 +01:00
LordGrey
f955af29fd
fix: Nanoleaf - Udp Network init was missing (#698)
* Fix Nanoleaf - Udp Network init was missing

* ProviderUdp - Add init error handling
2020-02-23 23:18:34 +01:00
LordGrey
a2dbbcdd0d
feat: Led Matrix Layout - Save/Restore (#669) (#697)
* Led Matrix Layout (#669)

* fix: ledConfig object missing

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-02-23 00:51:58 +01:00
T-IOOO
81ef1163c1
Update sv.json (#695)
New lines translated
2020-02-21 18:55:55 +01:00
b1rdhous3
8bbaa8b359
Fixing new hue user generation (#696)
* Fixing new hue user generation

Button was not linked with the create user function
2020-02-21 18:55:17 +01:00
Paulchen Panther
ebb4a98fff
Download notice has been corrected 2020-02-20 19:12:44 +01:00
brindosch
ae265eceac chore: Release 2.0.0-alpha.2 2020-02-20 13:50:06 +01:00
Paulchen-Panther
5d3520730c New language from POEditor: Dutch, Polish, Romanian
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-02-19 20:20:03 +01:00
Paulchen Panther
98ef6328a6 Update sv.json (POEditor.com) 2020-02-19 19:37:13 +01:00
Paulchen Panther
8911a99a39 Update es.json (POEditor.com) 2020-02-19 19:37:10 +01:00
Paulchen Panther
5c9b6caf47 Update it.json (POEditor.com) 2020-02-19 19:37:08 +01:00
Paulchen Panther
906476d7de Update cs.json (POEditor.com) 2020-02-19 19:37:06 +01:00
T-IOOO
1e3c1057d1
Swedish Translation (#675)
* Swedish Translation

Swedish translation

* Update and rename sv to sv.json

translation 100%

* add sv

Co-authored-by: brindosch <edeltraud70@gmx.de>
2020-02-19 19:30:22 +01:00
b1rdhous3
75f39bb125
Deleted active js debugger; (#693) 2020-02-19 17:46:08 +01:00
b1rdhous3
065634076b
Changed WebUI Version Check to SemVer. Also addes "Alpha" Channel (#692) 2020-02-19 17:29:11 +01:00
zerobabble
2db3f0c835
Added SSL development package to bin/compile.sh (#690) 2020-02-19 17:28:11 +01:00
Paulchen Panther
b5c74a84c8
Resolved SSL/Avahi problem in Packages (#689)
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
2020-02-19 17:27:25 +01:00
Paulchen Panther
2e15ef7c82
Download link added 2020-02-17 21:17:20 +01:00
brindosch
aac4ce8b89
chore: Add Azure Github release title (#686)
* Add a release title

* Corrected SemVer variable

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-02-16 21:38:36 +01:00
brindosch
bae9147dec
fix: Smoothing comp state on startup (#685)
* fix: Smoothing compo state on startup

* Adjust issue template
2020-02-16 18:05:50 +01:00
brindosch
521922353a
chore: Remove Travis (#684)
* chore: Remove Travis

* Travis badge removed

* remove travis from build scripts

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
2020-02-16 18:01:40 +01:00
954 changed files with 119758 additions and 42805 deletions

View File

@ -1,147 +0,0 @@
jobs:
######################
###### Linux #########
######################
- job: Linux
timeoutInMinutes: 120
pool:
vmImage: 'ubuntu-16.04'
strategy:
matrix:
AMD64 (x64):
dockerTag: 'amd64'
dockerName: 'Debian Stretch (AMD64)'
platform: 'x11'
i386 (x86):
dockerTag: 'i386'
dockerName: 'Debian Stretch (i386)'
platform: 'x11'
ARMv6hf (Raspberry Pi v1 & ZERO):
dockerTag: 'armv6hf'
dockerName: 'Debian Stretch (Raspberry Pi v1 & ZERO)'
platform: 'rpi'
ARMv7hf (Raspberry Pi 2 & 3):
dockerTag: 'armv7hf'
dockerName: 'Debian Stretch (Raspberry Pi 2 & 3)'
platform: 'rpi'
ARMv8 (Generic AARCH64):
dockerTag: 'aarch64'
dockerName: 'ARMv8 (Generic AARCH64)'
platform: 'amlogic'
steps:
- checkout: self # represents the repo where the initial Pipelines YAML file was found
submodules: recursive # set to 'recursive' to get submodules of submodules
# read version file
- bash: echo "##vso[task.setvariable variable=semVer]$(grep -oE 'alpha|beta' version)"
workingDirectory: '$(Build.SourcesDirectory)'
displayName: 'Read and generate pipeline variables'
# build process
- bash: ./.ci/ci_build.sh
displayName: 'Build $(dockerName) packages'
env:
DOCKER_TAG: $(dockerTag)
DOCKER_NAME: $(dockerName)
PLATFORM: $(platform)
# copy files
- bash: 'cp -v deploy/Hyperion-* $(Build.ArtifactStagingDirectory) 2>/dev/null || :'
workingDirectory: '$(Build.SourcesDirectory)'
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Collecting deployable artifacts'
# publish artifacts
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: $(dockerTag)
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Publish deployables artifacts'
# set release to pre-release
- bash: echo '##vso[task.setvariable variable=preRelease;]true'
condition: and(succeeded(), or(contains(variables['semVer'], 'alpha'), contains(variables['semVer'], 'beta')), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Mark alpha or beta as pre-release'
# create or update github release
- task: GithubRelease@0
inputs:
gitHubConnection: Hyperion.NG
repositoryName: $(Build.Repository.Name)
action: edit
target: $(Build.SourceVersion)
tagSource: manual
tag: $(Build.SourceBranchName)
assets: '$(Build.ArtifactStagingDirectory)/*'
assetUploadMode: 'replace'
addChangeLog: false
isPreRelease: $(preRelease)
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: Create/Update GitHub release
######################
###### macOS #########
######################
- job: macOS
timeoutInMinutes: 120
pool:
vmImage: 'macOS-10.13'
steps:
- checkout: self # represents the repo where the initial Pipelines YAML file was found
submodules: recursive # set to 'recursive' to get submodules of submodules
# read version file
- bash: echo "##vso[task.setvariable variable=semVer]$(grep -oE 'alpha|beta' version)"
workingDirectory: '$(Build.SourcesDirectory)'
displayName: 'Read and generate pipeline variables'
# install dependencies
- bash: ./.ci/ci_install.sh
displayName: 'Install dependencies'
# build process
- bash: ./.ci/ci_build.sh
displayName: 'Build macOS 10.13 packages'
env:
PLATFORM: 'osx'
# copy files
- bash: 'cp -v build/Hyperion-* $(Build.ArtifactStagingDirectory) 2>/dev/null || :'
workingDirectory: '$(Build.SourcesDirectory)'
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Collecting deployable artifacts'
# publish artifacts
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'macos'
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Publish deployables artifacts'
# set release to pre-release
- bash: echo '##vso[task.setvariable variable=preRelease;]true'
condition: and(succeeded(), or(contains(variables['semVer'], 'alpha'), contains(variables['semVer'], 'beta')), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: 'Mark alpha or beta as pre-release'
# create or update github release
- task: GithubRelease@0
inputs:
gitHubConnection: Hyperion.NG
repositoryName: $(Build.Repository.Name)
action: edit
target: $(Build.SourceVersion)
tagSource: manual
tag: '$(Build.SourceBranchName)'
assets: '$(Build.ArtifactStagingDirectory)/*'
assetUploadMode: 'replace'
addChangeLog: false
isPreRelease: $(preRelease)
condition: and(succeeded(), ne(variables['system.pullrequest.isfork'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
displayName: Create/Update GitHub release

View File

@ -1,63 +0,0 @@
#!/bin/bash
# detect CI
if [ -n "${TRAVIS-}" ]; then
# Travis-CI
CI_NAME="$(echo "$TRAVIS_OS_NAME" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$TRAVIS_BUILD_DIR"
elif [ "$SYSTEM_COLLECTIONID" != "" ]; then
# Azure Pipelines
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
# GitHub Actions
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE"
else
# for executing in non ci environment
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
fi
# set environment variables if not exists
[ -z "${BUILD_TYPE}" ] && BUILD_TYPE="Debug"
# Determine cmake build type; tag builds are Release, else Debug (-dev appends to platform)
if [[ $BUILD_SOURCEBRANCH == *"refs/tags"* || $GITHUB_REF == *"refs/tags"* ]]; then
BUILD_TYPE=Release
else
PLATFORM=${PLATFORM}-dev
fi
# Build the package on osx or linux
if [[ "$CI_NAME" == 'osx' || "$CI_NAME" == 'darwin' ]]; then
# compile prepare
mkdir build || exit 1
cd build
cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ../ || exit 2
make -j $(sysctl -n hw.ncpu) || exit 3 # Notes: The package creation is currently not supported because of strange errors.
cd ${CI_BUILD_DIR} && source /${CI_BUILD_DIR}/test/testrunner.sh || exit 4
exit 0;
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
elif [[ "$CI_NAME" == 'linux' ]]; then
echo "Compile Hyperion with DOCKER_TAG = ${DOCKER_TAG} and friendly name DOCKER_NAME = ${DOCKER_NAME}"
# take ownership of deploy dir
mkdir ${CI_BUILD_DIR}/deploy
# run docker
docker run --rm \
-v "${CI_BUILD_DIR}/deploy:/deploy" \
-v "${CI_BUILD_DIR}:/source:ro" \
hyperionproject/hyperion-ci:$DOCKER_TAG \
/bin/bash -c "mkdir hyperion && cp -r source/. /hyperion &&
cd /hyperion && mkdir build && cd build &&
cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DDOCKER_PLATFORM=${DOCKER_TAG} ../ || exit 2 &&
make -j $(nproc) package || exit 3 &&
cp /hyperion/build/bin/h* /deploy/ 2>/dev/null || : &&
cp /hyperion/build/Hyperion-* /deploy/ 2>/dev/null || : &&
cd /hyperion && source /hyperion/test/testrunner.sh || exit 4 &&
exit 0;
exit 1 " || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
# overwrite file owner to current user
sudo chown -fR $(stat -c "%U:%G" ${CI_BUILD_DIR}/deploy) ${CI_BUILD_DIR}/deploy
fi

View File

@ -1,48 +0,0 @@
#!/bin/bash
# detect CI
if [ -n "${TRAVIS-}" ]; then
# Travis-CI
CI_NAME="$(echo "$TRAVIS_OS_NAME" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$TRAVIS_BUILD_DIR"
elif [ "$SYSTEM_COLLECTIONID" != "" ]; then
# Azure Pipelines
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
# GitHub Actions
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE"
else
# for executing in non ci environment
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
fi
function installAndUpgrade()
{
arr=("$@")
for i in "${arr[@]}";
do
list_output=`brew list | grep $i`
outdated_output=`brew outdated | grep $i`
if [[ ! -z "$list_output" ]]; then
if [[ ! -z "$outdated_output" ]]; then
brew upgrade $i
fi
else
brew install $i
fi
done
}
# install osx deps for hyperion compile
if [[ $CI_NAME == 'osx' || $CI_NAME == 'darwin' ]]; then
echo "Install dependencies"
brew update
dependencies=("qt5" "python" "libusb" "cmake" "doxygen")
installAndUpgrade "${dependencies[@]}"
elif [[ $CI_NAME != 'linux' ]]; then
echo "Unsupported platform: $CI_NAME"
exit 5
fi

View File

@ -1,76 +0,0 @@
# Hyperion.NG .codedocs Configuration File
#---------------------------------------------------------------------------
# CodeDocs Configuration
#---------------------------------------------------------------------------
# Include the Doxygen configuration from another file.
# The file must be a relative path with respect to the root of the repository.
DOXYFILE =
# Specify external repository to link documentation with.
# This is similar to Doxygen's TAGFILES option, but will automatically link to
# tags of other repositories already using CodeDocs. List each repository to
# link with by giving its location in the form of owner/repository.
# For example:
# TAGLINKS = doxygen/doxygen CodeDocs/osg
# Note: these repositories must already be built on CodeDocs.
TAGLINKS =
#---------------------------------------------------------------------------
# Doxygen Configuration
#---------------------------------------------------------------------------
# Doxygen configuration may also be placed in this file.
# Currently, the following Doxygen configuration options are available. Refer
# to http://doxygen.org/manual/config.html for detailed explanation of the
# options. To request support for more options, contact support@codedocs.xyz.
#
# ABBREVIATE_BRIEF =
# ALIASES =
# ALPHABETICAL_INDEX =
# ALWAYS_DETAILED_SEC =
# CASE_SENSE_NAMES =
# CLASS_DIAGRAMS =
# DISABLE_INDEX =
# DISTRIBUTE_GROUP_DOC =
# EXAMPLE_PATH =
EXCLUDE = .ci/ \
assets/ \
bin/
config/ \
effects/ \
test/ \
# EXCLUDE_PATTERNS =
# EXCLUDE_SYMBOLS =
# EXTENSION_MAPPING =
# EXTRACT_LOCAL_CLASSES =
# FILE_PATTERNS =
# GENERATE_TAGFILE =
# GENERATE_TREEVIEW =
# HIDE_COMPOUND_REFERENCE =
# HIDE_SCOPE_NAMES =
# HIDE_UNDOC_CLASSES =
# HIDE_UNDOC_MEMBERS =
# HTML_TIMESTAMP =
# INLINE_GROUPED_CLASSES =
# INPUT_ENCODING =
# INTERNAL_DOCS =
# OPTIMIZE_OUTPUT_FOR_C =
PROJECT_BRIEF = "The successor to Hyperion aka Hyperion Next Generation"
PROJECT_NAME = "Hyperion.NG"
# PROJECT_NUMBER =
# SHORT_NAMES =
# SHOW_FILES =
# SHOW_INCLUDE_FILES =
# SHOW_NAMESPACES =
# SORT_BRIEF_DOCS =
# SORT_BY_SCOPE_NAME =
# SORT_MEMBER_DOCS =
# STRICT_PROTO_MATCHING =
# TYPEDEF_HIDES_STRUCT =
USE_MDFILE_AS_MAINPAGE = README.md
# VERBATIM_HEADERS =
#

25
.devcontainer.json Normal file
View File

@ -0,0 +1,25 @@
{
"name": "Hyperion.ng Linux",
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
"extensions": [
"twxs.cmake",
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"spmeesseman.vscode-taskexplorer",
"yzhang.markdown-all-in-one",
"CoenraadS.bracket-pair-colorizer",
"vscode-icons-team.vscode-icons",
"editorconfig.editorconfig",
"RVSmartPorting.rpm-spec-ext"
],
"settings": {
"editor.formatOnSave": false,
"cmake.environment": { }
}
}
},
"forwardPorts": [8090, 8092],
"postCreateCommand": "git submodule update --recursive --init && sudo apt-get update && sudo apt-get install -y git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev libasound2-dev"
}

25
.editorconfig Normal file
View File

@ -0,0 +1,25 @@
root = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
trim_trailing_whitespace = true
end_of_line = lf
insert_final_newline = true
# Tab indentation (no size specified)
[Makefile]
indent_style = tab
[*.{c,h,cpp,hpp}]
indent_style = tab
indent_size = 4
# js and webui
[*.{ts,js,html}]
indent_style = space
indent_size = 2
# version file
[version]
insert_final_newline = false

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
custom: "https://www.paypal.me/HyperionAmbi"

View File

@ -1,7 +1,7 @@
---
name: Bug report
about: Create a report to help us improving Hyperion
labels: Waiting For Review
---
<!-- Please don't delete this template or we'll close your issue -->
@ -29,4 +29,4 @@ about: Create a report to help us improving Hyperion
#### System
<!-- Your system information - please copy paste "System info (Github Issue)" section from web configuration/system/about -->
<!-- In the web interface of the Hyperion config go to System > About Hyperion and Paste the content of "System info (Github Issue)" here -->

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

View File

@ -1,7 +1,7 @@
---
name: Feature request
about: Suggest an idea for Hyperion
labels: feature request
---
<!-- Please don't delete this template or we'll close your issue -->

View File

@ -5,6 +5,8 @@
**Summary**
**What kind of change does this PR introduce?** (check at least one)
- [ ] Bugfix
@ -25,8 +27,8 @@ If changing the UI of web configuration, please provide the **before/after** scr
If yes, please describe the impact and migration path for existing setups:
**The PR fulfills these requirements:**
- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number)
<!-- Github will close properly linked issues automatically on PR merge -->
- [ ] When resolving a specific issue, it's referenced in the PR's body (e.g. `Fixes: #xxx[,#xxx]`, where "xxx" is the issue number)
If adding a **new feature**, the PR's description includes:
@ -34,6 +36,9 @@ If adding a **new feature**, the PR's description includes:
- [ ] Related documents have been updated (docs/docs/en)
- [ ] Related tests have been updated
**PLEASE DON'T FORGET TO ADD YOUR CHANGES TO CHANGELOG.MD**
- [ ] Yes, CHANGELOG.md is also updated
To avoid wasting your time, it's best to open a **feature request issue** first and wait for approval before working on it.
**Other information:**

4
.github/config/codeql.yml vendored Normal file
View File

@ -0,0 +1,4 @@
name: "CodeQL config"
paths-ignore:
- 'dependencies/external/'
- 'assets/webconfig/js/lib'

7
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"

12
.github/issues.yml vendored Normal file
View File

@ -0,0 +1,12 @@
Issues:
opened: |
Hello @$AUTHOR
We make use of an **[ISSUE TEMPLATE](https://github.com/$REPO_FULL_NAME/issues/new/choose)** to capture relevant information to support you best. Unfortunately, **you ignored or deleted** the given sections. Please take care that all information requested is provided.
This issue will be automatically closed by our bot, please do not take it personally. We would like asking you to open a new issue following the **[ISSUE TEMPLATE](https://github.com/$REPO_FULL_NAME/issues/new/choose)**.
Thanks for your continuous support!
Best regards,
Hyperion-Project

20
.github/pr_comment.yml vendored Normal file
View File

@ -0,0 +1,20 @@
PullRequest:
opened: |
Hello @$AUTHOR :wave:
I'm the Hyperion Project Bot and I want to thank you for
contributing to Hyperion with your pull requests!
To help you and other users test your pull requests faster,
I'll create a link for you to your workflow artifacts.
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID
Of course, if you make changes to your PR, I will create a new link.
Best regards,
Hyperion Project
synchronize: |
Hey @$AUTHOR I created a new link to your workflow artifacts:
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID

57
.github/scripts/build.sh vendored Executable file
View File

@ -0,0 +1,57 @@
#!/bin/bash
# set environment variables if not exists
[ -z "${BUILD_TYPE}" ] && BUILD_TYPE="Debug"
[ -z "${TARGET_ARCH}" ] && TARGET_ARCH="linux/amd64"
[ -z "${PLATFORM}" ] && PLATFORM="x11"
# Determine cmake build type; tag builds are Release, else Debug (-dev appends to platform)
if [[ $GITHUB_REF == *"refs/tags"* ]]; then
BUILD_TYPE=Release
else
PLATFORM=${PLATFORM}-dev
fi
echo "Compile Hyperion on '${RUNNER_OS}' with build type '${BUILD_TYPE}' and platform '${PLATFORM}'"
# Build the package on MacOS, Windows or Linux
if [[ "$RUNNER_OS" == 'macOS' ]]; then
mkdir build || exit 1
cmake -B build -G Ninja -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=/usr/local || exit 2
cmake --build build --target package --parallel $(sysctl -n hw.ncpu) || exit 3
cd ${GITHUB_WORKSPACE} && source /${GITHUB_WORKSPACE}/test/testrunner.sh || exit 4
exit 0;
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
elif [[ $RUNNER_OS == "Windows" ]]; then
echo "Number of Cores $NUMBER_OF_PROCESSORS"
mkdir build || exit 1
cd build
cmake -G "Visual Studio 17 2022" -A x64 -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE="Release" ../ || exit 2
cmake --build . --target package --config "Release" -- -nologo -v:m -maxcpucount || exit 3
exit 0;
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
elif [[ "$RUNNER_OS" == 'Linux' ]]; then
echo "Docker arguments used: DOCKER_IMAGE=${DOCKER_IMAGE}, DOCKER_TAG=${DOCKER_TAG}, TARGET_ARCH=${TARGET_ARCH}"
# verification bypass of external dependencies
# set GitHub Container Registry url
REGISTRY_URL="ghcr.io/hyperion-project/${DOCKER_IMAGE}"
# take ownership of deploy dir
mkdir ${GITHUB_WORKSPACE}/deploy
# run docker
docker run --rm --platform=${TARGET_ARCH} \
-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
-v "${GITHUB_WORKSPACE}:/source:rw" \
$REGISTRY_URL:$DOCKER_TAG \
/bin/bash -c "mkdir -p /source/build && cd /source/build &&
cmake -G Ninja -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. || exit 2 &&
cmake --build . --target package -- -j $(nproc) || exit 3 || : &&
cp /source/build/bin/h* /deploy/ 2>/dev/null || : &&
cp /source/build/Hyperion-* /deploy/ 2>/dev/null || : &&
cd /source && source /source/test/testrunner.sh || exit 5 &&
exit 0;
exit 1 " || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
# overwrite file owner to current user
sudo chown -fR $(stat -c "%U:%G" ${GITHUB_WORKSPACE}/deploy) ${GITHUB_WORKSPACE}/deploy
fi

View File

@ -1,80 +0,0 @@
name: GitHub Actions
on: [push, pull_request]
jobs:
Linux:
name: ${{ matrix.dockerName }}
runs-on: ubuntu-latest
strategy:
matrix:
dockerTag: [ amd64, i386, armv6hf, armv7hf, aarch64 ]
include:
- dockerTag: amd64
dockerName: Debian Stretch (AMD64)
platform: x11
- dockerTag: i386
dockerName: Debian Stretch (i386)
platform: x11
- dockerTag: armv6hf
dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
platform: rpi
- dockerTag: armv7hf
dockerName: Debian Stretch (Raspberry Pi 2 & 3)
platform: rpi
- dockerTag: aarch64
dockerName: Debian Stretch (Generic AARCH64)
platform: amlogic
steps:
- uses: actions/checkout@v1
with:
submodules: true
# build process
- name: Build packages
env:
DOCKER_TAG: ${{ matrix.dockerTag }}
DOCKER_NAME: ${{ matrix.dockerName }}
PLATFORM: ${{ matrix.platform }}
shell: bash
run: ./.ci/ci_build.sh
# create/update github release (replacement for Microsoft Azure after the beta phase)
# - name: Create/Update GitHub release
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') && success()
# uses: docker://softprops/action-gh-release
# with:
# files: deploy/Hyperion.NG-*
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
macOS:
name: macOS
runs-on: macos-latest
steps:
- uses: actions/checkout@v1
with:
submodules: true
# install dependencies
- name: Install dependencies
shell: bash
run: ./.ci/ci_install.sh
# build process
- name: Build packages
env:
PLATFORM: osx
shell: bash
run: ./.ci/ci_build.sh
# create/update github release (replacement for Microsoft Azure after the beta phase)
# - name: Create/Update GitHub release
# if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') && success()
# uses: docker://softprops/action-gh-release
# with:
# files: deploy/Hyperion.NG-*
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

16
.github/workflows/cleanup.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: 🧹 Cleanup old artifacts
# Run cleanup workflow at the end of every day
on:
schedule:
- cron: '0 0 * * *'
jobs:
clean:
runs-on: ubuntu-latest
steps:
- name: 🧹 Cleanup old workflow artifacts
uses: kolpav/purge-artifacts-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
expire-in: 14days # all artifacts at least 14 days old

86
.github/workflows/codeql.yml vendored Normal file
View File

@ -0,0 +1,86 @@
name: 📊 CodeQL
run-name: |
${{ github.event_name == 'schedule' && '⏰ Scheduled CodeQL run' || '' }}
${{ github.event_name == 'push' && format('📊 Pushed CodeQL run - {0}', github.event.head_commit.message) || '' }}
${{ github.event_name == 'pull_request' && format('📊 CodeQL run for PR {0} - {1}', github.event.pull_request.number, github.event.pull_request.title) || github.event.head_commit.message }}
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
schedule:
- cron: "36 18 * * 4"
jobs:
analyze:
name: 📊 Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ python, javascript, cpp ]
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📥 Install Packages (cpp)
if: ${{ matrix.language == 'cpp' }}
run: |
sudo apt-get update
sudo apt-get install --yes git build-essential qtbase5-dev libqt5serialport5-dev libqt5websockets5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libasound2-dev libturbojpeg0-dev libjpeg-dev libssl-dev libftdi1-dev
- name: Temporarily downgrade CMake to 3.28.3 # Please remove if GitHub has updated Cmake (greater than 3.30.0)
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.28.3'
- name: 🔁 Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-and-quality
config-file: ./.github/config/codeql.yml
- name: 👷 Autobuild
uses: github/codeql-action/autobuild@v3
- name: 🏃 Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
upload: False
output: sarif-results
- name: 🆔 Filter SARIF
uses: advanced-security/filter-sarif@v1
with:
patterns: |
-**/dependencies/**
-**/moc_*.cpp
-**/libsrc/flatbufserver/hyperion_request_generated.h
-**/libsrc/protoserver/message.pb.cc
-**/libsrc/protoserver/message.pb.h
input: sarif-results/${{ matrix.language }}.sarif
output: sarif-results/${{ matrix.language }}.sarif
- name: 📦 Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sarif-results/${{ matrix.language }}.sarif
- name: 📦 Upload loc as a Build Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.language }}.sarif
path: sarif-results
retention-days: 1

49
.github/workflows/push_pull.yml vendored Normal file
View File

@ -0,0 +1,49 @@
name: Hyperion CI/PR Builds
run-name: |
${{ github.event_name == 'push' && '🌱 Push build -' || '' }}
${{ github.event_name == 'pull_request' && format('📦 Artifacts build for PR {0} - {1}', github.event.pull_request.number, github.event.pull_request.title) || github.event.head_commit.message }}
on:
push:
branches:
- '**'
tags:
- '*'
pull_request:
branches:
- 'master'
jobs:
# GitHub Push/Pull Request (Release only on tagged commits)
github_build:
name: Qt ${{ matrix.qt_version }} Build ${{ matrix.qt_version == '6' && '(Testing))' || '' }}
strategy:
fail-fast: false
matrix:
qt_version: ['5', '6']
uses: ./.github/workflows/qt5_6.yml
secrets: inherit
with:
qt_version: ${{ matrix.qt_version }}
event_name: ${{ github.event_name }}
pull_request_number: ${{ github.event.pull_request.number }}
publish: ${{ startsWith(github.event.ref, 'refs/tags') && matrix.qt_version == '5' }}
# Build DEB/RPM Packages for APT/DNF Repository (runs only on tagged commits)
repo_build:
name: 🚀 Let Hyperion build its own repository (APT/DNF)
if: startsWith(github.event.ref, 'refs/tags')
needs: [ github_build ]
runs-on: ubuntu-latest
steps:
- name: 📲 Dispatch APT/DNF build
if: ${{ env.SECRET_HYPERION_BOT_TOKEN != null }}
uses: peter-evans/repository-dispatch@v3.0.0
with:
repository: hyperion-project/hyperion.releases-ci
token: ${{ secrets.HYPERION_BOT_TOKEN }}
event-type: releases_repo_build
client-payload: '{ "head_sha": "${{ github.sha }}", "repo_checkout": "hyperion-project/hyperion.ng" }'
env:
SECRET_HYPERION_BOT_TOKEN: ${{ secrets.HYPERION_BOT_TOKEN }}

258
.github/workflows/qt5_6.yml vendored Normal file
View File

@ -0,0 +1,258 @@
name: GitHub Qt5/6 Builds
on:
# Reusable from push_pull.yml
workflow_call:
inputs:
qt_version:
type: string
description: Build with this Qt version
default: '5'
required: false
event_name:
type: string
description: The event name
default: ''
required: false
pull_request_number:
type: string
description: The corresponding PR number
default: ''
required: false
publish:
type: boolean
description: Package publishing
default: false
required: false
env:
ghcr: hyperion-project
jobs:
######################
###### Linux #########
######################
Linux:
name: 🐧 ${{ matrix.os.description }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
os: [
{ distribution: debian, codename: buster, description: Debian Buster (x86_64), architecture: [ amd64, linux/amd64 ], platform: x11 },
{ distribution: debian, codename: buster, description: Debian Buster (Raspberry Pi 1 & Zero 1), architecture: [ armv6, linux/arm/v6 ], platform: rpi },
{ distribution: debian, codename: buster, description: Debian Buster (Raspberry Pi 2), architecture: [ armv7, linux/arm/v7 ], platform: rpi },
{ distribution: debian, codename: buster, description: Debian Buster (Raspberry Pi 3/4/5 & Zero 2), architecture: [ arm64, linux/arm64 ], platform: rpi },
{ distribution: debian, codename: bullseye, description: Debian Bullseye (x86_64), architecture: [ amd64, linux/amd64 ], platform: x11 },
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 2), architecture: [ armv7, linux/arm/v7 ], platform: rpi },
{ distribution: debian, codename: bullseye, description: Debian Bullseye (Raspberry Pi 3/4/5 & Zero 2), architecture: [ arm64, linux/arm64 ], platform: rpi }
]
isQt5:
- ${{ inputs.qt_version == '5' }}
exclude:
- isQt5: true
os: { distribution: debian, codename: bullseye }
- isQt5: false
os: { distribution: debian, codename: buster }
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare
shell: bash
run: |
echo '::group::Append PR number to version (PR only)'
if [[ "${{ inputs.event_name }}" = "pull_request" ]]; then
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ inputs.pull_request_number }}" >> .version
fi
echo '::endgroup::'
- name: 👷 Build
shell: bash
run: ./.github/scripts/build.sh
env:
DOCKER_IMAGE: ${{ matrix.os.distribution }}
DOCKER_TAG: ${{ matrix.os.codename }}${{ inputs.qt_version == '6' && '-qt6' || '' }}
PLATFORM: ${{ matrix.os.platform }}
TARGET_ARCH: ${{ matrix.os.architecture[1] }}
- name: 📦 Upload
if: ${{ inputs.publish || inputs.event_name == 'pull_request' }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.event_name == 'pull_request' && env.NAME || format('artifact-{0}', env.NAME) }}
path: ${{ inputs.event_name == 'pull_request' && 'deploy/*.tar.gz' || 'deploy/Hyperion-*' }}
env:
NAME: ${{ format('{0}_{1}_{2}{3}', matrix.os.distribution, matrix.os.codename, matrix.os.architecture[0], inputs.qt_version == '6' && '_qt6' || '') }}
######################
###### macOS #########
######################
macOS:
name: 🍏 macOS x64
runs-on: macos-latest
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare
shell: bash
run: |
echo '::group::Append PR number to version (PR only)'
if [[ "${{ inputs.event_name }}" = "pull_request" ]]; then
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ inputs.pull_request_number }}" >> .version
fi
echo '::endgroup::'
echo '::group::Update/Install dependencies'
brew untap --force homebrew/core homebrew/cask
brew update || true
brew install qt@${{ inputs.qt_version }} vulkan-headers ninja libftdi || true
echo '::endgroup::'
- name: Temporarily downgrade CMake to 3.28.3 # Please remove if GitHub has updated Cmake (greater than 3.30.0)
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.28.3'
- name: 👷 Build
shell: bash
run: ./.github/scripts/build.sh
env:
PLATFORM: osx
- name: 📦 Upload
if: ${{ inputs.publish || inputs.event_name == 'pull_request' }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.event_name == 'pull_request' && env.NAME || format('artifact-{0}', env.NAME) }}
path: 'build/Hyperion-*'
env:
NAME: ${{ inputs.qt_version == '6' && 'macOS_x64_qt6' || 'macOS_x64' }}
######################
###### Windows #######
######################
windows:
name: 🪟 Windows x64
runs-on: windows-2022
env:
VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 🔧 Prepare PR
if: ${{ inputs.event_name == 'pull_request' }}
shell: bash
run: |
echo '::group::Append PR number to version'
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ inputs.pull_request_number }}" >> .version
echo '::endgroup::'
- name: 💾 Cache/Restore
uses: actions/cache@v4
with:
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
key: ${{ runner.os }}${{ '-chocolatey' }}
- name: 📥 Install DirectX SDK, OpenSSL, libjpeg-turbo
shell: powershell
run: |
choco install --no-progress directx-sdk -y
choco install --no-progress ${{env.OPENSSL}} -y
Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/3.0.1/libjpeg-turbo-3.0.1-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost
.\libjpeg-turbo /S
env:
OPENSSL: ${{ inputs.qt_version == '6' && 'openssl' || 'openssl --version=1.1.1.2100' }}
- name: Install Vulkan SDK
if: ${{ inputs.qt_version == '6' }}
uses: jakoch/install-vulkan-sdk-action@v1.0.6
with:
install_runtime: false
cache: true
stripdown: true
- name: 📥 Install Qt
uses: jurplel/install-qt-action@v4
with:
version: ${{ inputs.qt_version == '6' && '6.8' || '5.15.*' }}
target: 'desktop'
modules: ${{ inputs.qt_version == '6' && 'qtserialport qtwebsockets' || '' }}
cache: 'true'
cache-key-prefix: 'cache-qt-windows'
- name: 🛠️ Setup MSVC
shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
- name: Temporarily downgrade CMake to 3.28.3 # Please remove if GitHub has updated Cmake (greater than 3.30.0)
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.28.3'
- name: 👷 Build
shell: bash
run: ./.github/scripts/build.sh
env:
PLATFORM: windows
- name: 📦 Upload
if: ${{ inputs.publish || inputs.event_name == 'pull_request' }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.event_name == 'pull_request' && env.NAME || format('artifact-{0}', env.NAME) }}
path: ${{ inputs.event_name == 'pull_request' && 'build/*.exe' || 'build/Hyperion-*' }}
env:
NAME: ${{ inputs.qt_version == '6' && 'windows_x64_qt6' || 'windows_x64' }}
#####################################
###### Publish GitHub Releases ######
#####################################
github_publish:
name: 🚀 Publish GitHub Releases
if: ${{ inputs.qt_version == '5' && inputs.publish }}
needs: [Linux, macOS, windows]
runs-on: ubuntu-latest
steps:
- name: ⬇ Checkout
uses: actions/checkout@v4
- name: 🔧 Prepare
run: |
echo '::group::Generate environment variables from .version and tag'
echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
echo '::endgroup::'
- name: 💾 Artifact download
uses: actions/download-artifact@v4.1.8
with:
pattern: artifact-*
path: all-artifacts
- name: 📦 Upload
uses: softprops/action-gh-release@v2
with:
name: Hyperion ${{ env.VERSION }}
tag_name: ${{ env.TAG }}
files: "all-artifacts/**"
draft: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

21
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: 🚀 Release Actions
run-name: 🚀 Let HyperBian create
on:
release:
types: [published]
jobs:
hyperbian:
name: 🚀 Let HyperBian create
runs-on: ubuntu-latest
steps:
# Dispatch event to build new HyperBian image
- name: 📲 Dispatch HyperBian build
uses: peter-evans/repository-dispatch@v3.0.0
if: ${{ github.repository_owner == 'hyperion-project'}}
with:
repository: hyperion-project/HyperBian
token: ${{ secrets.HYPERION_BOT_TOKEN }}
event-type: hyperion_push

34
.gitignore vendored
View File

@ -17,3 +17,37 @@ CMakeCache.txt
/lib
.directory
*.pyc
compile_commands.json
# Autogenerated by flatbuffers
libsrc/flatbufserver/hyperion_reply_generated.h
libsrc/flatbufserver/hyperion_request_generated.h
# Kdevelop project files
*.kdev*
# Visual Studio 2015/2017/2019 cache/options directory
# Ignore
.vs/*
CMakeSettings.json
/out
# Allow
!.vs/launch.vs.json
# LedDevice 'File' output
NULL
# Docker deploy folder
deploy/*
# ccache/buildcache
.*cache/
# release-deps/debug-deps
*-deps/
# User defined CMake preset file.
CMakeUserPresets.json
#Configurations created under config for testing
/configs

13
.gitmodules vendored
View File

@ -1,12 +1,17 @@
[submodule "dependencies/external/rpi_ws281x"]
path = dependencies/external/rpi_ws281x
url = https://github.com/hyperion-project/rpi_ws281x.git
branch = master
url = https://github.com/hyperion-project/rpi_ws281x
branch = main
[submodule "dependencies/external/flatbuffers"]
path = dependencies/external/flatbuffers
url = https://github.com/google/flatbuffers
branch = master
[submodule "dependencies/external/protobuf"]
path = dependencies/external/protobuf
url = https://github.com/hyperion-project/protobuf.git
branch = master
url = https://github.com/protocolbuffers/protobuf
[submodule "dependencies/external/qmdnsengine"]
path = dependencies/external/qmdnsengine
url = https://github.com/nitroshare/qmdnsengine.git
[submodule "dependencies/external/mbedtls"]
path = dependencies/external/mbedtls
url = ../../Mbed-TLS/mbedtls.git

View File

@ -1,66 +0,0 @@
linux: &linux
os: linux
dist: xenial
services:
- docker
osx: &osx
os: osx
cache:
- ccache
- directories:
- $HOME/brew-cache
notifications:
email: false
language: cpp
before_install:
- ./.ci/ci_install.sh
jobs:
include:
- <<: *linux
name: "AMD64 (x64)"
env:
- DOCKER_TAG=amd64
- DOCKER_NAME="Debian Stretch (AMD64)"
- PLATFORM="x11"
- <<: *linux
name: "i386 (x86)"
env:
- DOCKER_TAG=i386
- DOCKER_NAME="Debian Stretch (i386)"
- PLATFORM="x11"
# ////////////////////////////////////////////////////////////////
# NOTE: Temporary disabled because travis timeouts
# ////////////////////////////////////////////////////////////////
# - <<: *linux
# name: "ARMv6hf (Raspberry Pi v1 & ZERO)"
# env:
# - DOCKER_TAG=armv6hf
# - DOCKER_NAME="Debian Stretch (Raspberry Pi v1 & ZERO)"
# - PLATFORM="rpi"
# - <<: *linux
# name: "ARMv7hf (Raspberry Pi 2 & 3)"
# env:
# - DOCKER_TAG=armv7hf
# - DOCKER_NAME="Debian Stretch (Raspberry Pi 2 & 3)"
# - PLATFORM="rpi"
# - <<: *linux
# name: "ARMv8 (Generic AARCH64)"
# env:
# - DOCKER_TAG=aarch64
# - DOCKER_NAME="ARMv8 (Generic AARCH64)"
# - PLATFORM="amlogic"
#
# ////////////////////////////////////////////////////////////////
- <<: *osx
osx_image: xcode11.2
name: "macOS 10.14 (Xcode 11.2.1)"
env:
- HOMEBREW_CACHE=$HOME/brew-cache
- PLATFORM="osx"
script:
- ./.ci/ci_build.sh

1
.version Normal file
View File

@ -0,0 +1 @@
2.0.17-beta.2

47
.vs/launch.vs.json Normal file
View File

@ -0,0 +1,47 @@
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "hyperiond.exe (bin\\hyperiond.exe)",
"name": "Run Hyperion"
},
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "hyperiond.exe (bin\\hyperiond.exe)",
"name": "Run hyperion with debug logging and external console",
"args": [
"-d",
"-c"
],
"externalConsole": true
},
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "hyperiond.exe (bin\\hyperiond.exe)",
"name": "Run hyperion with verbose logging with external console",
"args": [
"-v",
"-c"
],
"externalConsole": true
},
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "hyperiond.exe (bin\\hyperiond.exe)",
"name": "Run hyperion with debug logging and a test configuration DB",
"args": [
"-d",
"-c",
"-u",
"${workspaceRoot}\\configs\\testConfig"
],
"externalConsole": true
}
]
}

34
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"intelliSenseMode": "gcc-x64",
"cppStandard": "c++11",
"cStandard": "c11",
"configurationProvider": "ms-vscode.cmake-tools"
},
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Qt/5.15.0/msvc2019_64/include/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "msvc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}

23
.vscode/hyperion.code-workspace vendored Normal file
View File

@ -0,0 +1,23 @@
{
"folders": [
{
"path": "../"
}
],
"settings": {
"editor.formatOnSave": false,
"cmake.environment": {
},
},
"extensions": {
"recommendations": [
"twxs.cmake",
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"spmeesseman.vscode-taskexplorer",
"yzhang.markdown-all-in-one",
"vscode-icons-team.vscode-icons",
"editorconfig.editorconfig"
]
}
}

50
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,50 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Linux) hyperiond",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/hyperiond",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(Windows) hyperiond",
"type": "cppvsdbg",
"request": "launch",
"program": "${command:cmake.launchTargetDirectory}/hyperiond",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "internalConsole"
},
{
"name": "(macOS) Hyperion.app",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/Hyperion.app/Contents/MacOS/Hyperion",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "internalConsole",
"MIMode": "lldb"
}
]
}

View File

@ -1 +0,0 @@
{}

123
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,123 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "cmake:conf Release",
"detail": "Configure Build Env. Release/Debug switch not required for multi generators (msvc)",
"type": "shell",
"command": "cmake -B ${workspaceFolder}/build -DCMAKE_BUILD_TYPE=Release",
"windows": {
"command": "cmake -G \"Visual Studio 16 2019\" -A x64 -B ${workspaceFolder}/build"
},
"group": "build"
},
{
"label": "cmake:conf Debug",
"detail": "Configure Build Env. Release/Debug switch not required with msvc",
"type": "shell",
"command": "cmake -B ${workspaceFolder}/build -DCMAKE_BUILD_TYPE=Debug",
"windows": {
"command": "cmake -G \"Visual Studio 16 2019\" -A x64 -B ${workspaceFolder}/build"
},
"group": "build"
},
{
"label": "build:debug hyperiond",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build --target hyperiond -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --target hyperiond --config Debug -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build --target hyperiond -- -j $(sysctl -n hw.ncpu)"
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "build:debug all",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --config Debug -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build -- -j $(sysctl -n hw.ncpu)"
},
"group": "build"
},
{
"label": "build:debug package",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build --target package -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --target package --config Debug -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build --target package -- -j $(sysctl -n hw.ncpu)"
},
"group": "build"
},
{
"label": "build:release hyperiond",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build --target hyperiond -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --target hyperiond --config Release -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build --target hyperiond -- -j $(sysctl -n hw.ncpu)"
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "build:release all",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --config Release -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build -- -j $(sysctl -n hw.ncpu)"
},
"group": "build"
},
{
"label": "build:release package",
"type": "shell",
"command": "cmake --build ${workspaceFolder}/build --target package -- -j $(nproc)",
"windows": {
"command": "cmake --build ${workspaceFolder}/build --target package --config Release -- -maxcpucount"
},
"osx": {
"command": "cmake --build ${workspaceFolder}/build --target package -- -j $(sysctl -n hw.ncpu)"
},
"group": "build"
},
{
"label": "run:hyperiond (Debug)",
"type": "shell",
"command": "${workspaceFolder}/build/bin/hyperiond -d",
"windows": {
"command": "${workspaceFolder}/build/bin/Debug/hyperiond -d -c"
},
"group": "build"
},
{
"label": "run:hyperiond (Release)",
"type": "shell",
"command": "${workspaceFolder}/build/bin/hyperiond -d",
"windows": {
"command": "${workspaceFolder}/build/bin/Release/hyperiond -d -c"
},
"group": "build"
}
]
}

File diff suppressed because it is too large Load Diff

757
CHANGELOG.md Normal file
View File

@ -0,0 +1,757 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.16...HEAD)
### Breaking
**JSON-API**
- Align JSON subscription update elements. `ledcolors-imagestream-update, ledcolors-ledstream-update, logmsg-update` now return data via `data` and not `result
- Global global configuration elements are now separated form instance specific ones
### Added
- Support for ftdi chip based LED-devices with ws2812, sk6812 apa102 LED types (Many thanks to @nurikk) (#1746)
- Support for Skydimo devices
- Support gaps on Matrix Layout (#1696)
- Windows: Added a new grabber that uses the DXGI DDA (Desktop Duplication API). This has much better performance than the DX grabber as it does more of its work on the GPU.
- Support to import, export and backup Hyperion's full configuration via the UI, JSON-API and commandline (`--importConfig, --exportConfig`) (#804)
- Allow to force starting Hyperion in read-only mode (`--readonlyMode`)
- JSON-API: Support to query for a dedicated set of configuration items for a set of instances
- JSON-API: Support to save a dedicated set of configuration items for a set of instances
- JSON-API: Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz)
- Effects: Limit the maximum update rate to 200Hz
**JSON-API**
- New subscription support for event updates, i.e. `Suspend, Resume, Idle, idleResume, Restart, Quit`.
- Support direct or multiple instance addressing via single requests (#809)
- Support of `serverinfo` subcommands: `getInfo, subscribe, unsubscribe, getSubscriptions, getSubscriptionCommands`
- [Overview](https://github.com/hyperion-project/hyperion.ng/blob/API_Auth/doc/development/JSON-API%20_Commands_Overview.md) of API commands and subscription updates
### Changed
- Fixed: Cross Site Scripting Vulnerability (CVE-2024-4174, CVE-2024-4175)
- Fixed: hyperion-v4l2 taking screenshot failed (#1722)
- Nanoleaf: Support new devices and do not restore ExtControl state
- Workaround to address Web UI keeps forcing browser to download the html instead (#1692)
- Fixed: Kodi Color Calibration, Refactor Wizards (#1674)
- Fixed: Token Dialog not closing
- Fixed: Philip Hue APIv2 support without Entertainment group defined (#1742)
- Refactored: Database access layer
- Refactored: Hyperion's configuration database is validated before start-up (and migrated, if required)
- Refactored: Python to enable parallel effect processing under Python 3.12
- Fixed: Python 3.12 crashes (#1747)
- osX Grabber: Use ScreenCaptureKit under macOS 15 and above
- Removed maximum LED number constraint from Matrix layout schema which was not synced with the UI behaviour (#1804)
- Fixed bespoke WebSocket implementation by using of QWebSockets (#1816, #1448, #1247, #1130)
**JSON-API**
- Refactored JSON-API to ensure consistent authorization behaviour across sessions and single requests with token authorization.
- Provide additional error details with API responses, esp. on JSON parsing, validation or token errors.
- Generate random TANs for every API request from the Hyperion UI
- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections-
- Fixed: Local Admin API Authentication rejects valid tokens (#1251)
### Removed
**JSON-API**
- Removed ability to enable/disable local admin authorization. All admin commands require authorization, i.e. `authorize-adminRequired` will always be `true`.
- Removed `session-updates` subscription
- `serverinfo/subscribe` element will be deprecated and replaced by corresponding subcommand
## [2.0.16](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.16) - 2024-01
### Added
- New languages: Hebrew, Indonesian, Ukrainian
**Event Services**
Newly introduced Event Service configuration and consistent handling across all components
- Suspend/Resume & Screen Locking support for MaxOS
- Allow to enable/disable suspend & lock on operating system events (#1633, #1632)
- Scheduled events allowing to suspend,resume, etc. (#1088)
- Configurable CEC event handling
##### LED-Devices
**Philips Hue**
- APIv2 support, incl. full https security and certificate validation
- Multi-Segment device support, e.g. Gradient light
- Use Entertainment area device location for Hyperion layout in addition to manual locations
- Option to layout by focussing on full- or only center of entertainment area
- Wizard supports multiple Hue-Bridge discovery
- Support of DIYHue specifics. DIYHue bridge's name must start with "DIY"
- Backward compatibility for bridges not supporting APIv2 and/or Entertainment API
Note: The wizard will configure an APIv2 capable bridge always with Entertainment to ensure the best experience.
**Nanoleaf**
- Wizard to generate user authorization token allowing users to configure the device via a single window
- Generation of a default layout per device's configuration, including orientation
- Lines support
### Changed
- Updated misleading error messages in case Hyperion is not able to support the suspend/lock feature (#1622)
- Restart Serial Device, if write error occurred
- ws281x - Update logic to identify is user is admin and disable device configuration if not (#1621)
- Hide Hyperion from the Dock on macOS, as all features can be accessed from the menubar - Thanks @Rastafabisch
### Fixed
- Correctly display local language characters in log, e.g. Umlauts
- Fixed that Audio Capture is enabled after reboot automatically (#1581)
- Fixed that Audio Capture is not shown when there is no screen nor video grabber
- Audio Capture settings are no longer ignored (#1630)
- Fixed that the Matrix effect finds its image - Thanks @lsellens
- MDNSBrower - Fixed, if timeout while resolving host occurs
- Non image updates ignored blacklisted LEDs (#1634)
- Fixed that Windows OsEvents failed in non-GUI mode (#1671)
- Addressed serious (#1425) and some smaller memory leaks
##### LED-Devices
**WLED**
- Fixed UI handling, if segment streaming is not supported
**Nanoleaf**
- "Panel numbering sequence" was not configurable any longer
- Number of panels increased during retries (#1643)
### Removed
##### LED-Devices
**Philips Hue**
- "Switch Off On Black" for APIv2, as the original bridge will switch off LEDs itself.
- "Candy Gamma" for APIv2, as the bridge maps the RGB values best per device.
**Nanoleaf**
- Removed "Start Position" in favour of the general Blacklist feature provided
### Technical
- Changed default build from Stretch to Buster
- Support Qt 6.7, Update to Protobuf 25.1, Update mbedTLS to v3.4.0, Update flatbuffers to v23.5.26
- Use C++17 standard as default
- Started using SmartPointers (#981)
- Added Pull Request (PR) installation script, allowing users to test development builds savely on Linux
- Fixed missing include limits in QJsonSchemaChecker - Thanks @Portisch
- Fixed dependencies for deb packages in Debian Bookworm (#1579) - Thanks @hg42, @Psirus
- Fixed git version identification when run in docker and local code
- Address cmake deprecation warnings, cmake 3.5 is required at minimum now
- Address some build warnings
- Removed UniqueConnections from Lambdas, as not supported
## [2.0.15](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.15) - 2023-02
### Added
- Audio Grabber to add audio visualization support for both Windows and Linux.
- Support streaming to individual WLED segments (requires WLED 0.13.3+).
To allow segment streaming, enable "Realtime - Use main segment only" in WLED's Sync Interfaces setup screen
- Allow to keep WLED powered on after streaming and restoring state
- Allow to Disable / Enable all instances (#970) by
- Suspend/Resume support for Linux and Windows (#1493,#1282, #978).
Suspend/Resume/Restart is supported via API, UI, Systray and hyperion-remote
- Idle scenario via Screen Locking (Linux/Windows), Screensaver invokation (Linux), hyperion-remote or API
In Idle, all instances, components will be disabled besides the output processing (LED-Devices, smoothing).
The current priorities will be cleared and the background effect per instance will be executed, if enabled.
- Commands toogleSuspend and toggleIdle allow to flip between modes, e.g. might be used to trigger modes by a remote
- Reduced pixel processing to reduce resources on big assignment areas
- Support for squared mean color processing
- Support for dominant color processing on assigned LED areas (#1382). A simple and advanced way is provided. Advanced and high accuracy might be combined with reduced pixel processing to lower CPU usage.
- Add instance# in API response (#1504)
### Changed
- REST API - Increased default timeout to address "Operation cancelled" errors
- LED Devices: Allow to differentiate between recoverable/unrecoverable errors
- Renamed LED area assignment naming to provide clarity on the processing algorithms
- Updated SEDU default baud rates
### Fixed
- Effects/Smoothing: Effects with dedicated smoothing settings will now run with those settings (even if general smoothing is off)
- No interim color update after streaming and turning off WLED
- LED-Matrix Layout: Add Cabling direction selection element again (#1566)
- Restart correctly, if running as service (#1368)
- Hue-Wizard: In case auto discovery failed, port 80 was not used as default (#1544)
- Send only one reply per Start Instance request (#1551)
- Add instance# in JSON-API replies (aligning to Add instance in websocket response to a subscription #1504 behaviour)
- hyperion-remote: Extracting reply for a configGet request correctly (#1555)
- Grabber fps setting was not applied correctly
- Smoothing: No empty updates
### Technical
- Add CodeQL for GitHub code scanning
- Update to Protocol Buffers 3.21.12
- Update to Mbed TLS 3.3.0
- Qt6 alignments
- cmake support of libcec without version in lib-name
- Refactor for Python 3.11 deprecated functions
## Removed
## [2.0.14](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.14) - 2022-11
Hyperion's November release is not too big, but provides you with the latest updates and fixes. Many thanks to all contributors providing code (xkns, drzony) or translations.
### Added
- New color processing settings: Saturation gain and brightness/value gain. They allow compensating washed out HDR colors on LEDs (#822, #1092, #1142 partially).
- New languages: Catalan & Greek
- USB Capture: Support 3D processing for MJPEG
- Forwarding: Support flat-/proto buffer input
- Adalight: HyperSerial support (High speed protocol by awawa-dev) and support device feedback, show statistics provided by HyperSerial (modified by LordGrey) sketch
- AtmoOrb: Firmware image for Particle/Photon
### Changed
- Serial LED-devices: Ability to select standard Baud rates, as well as defining a custom one
- LED-devices: Do not switch-off device, if background effect is configured and will kick-in soon
### Fixed
- USB-Grabber: Fixed a SEGFAULT when compiled on Ubuntu Server 22.04
- USB Grabber: Fixed memory leak when transforming MJPEG
- ImageResampler: Apply only half crop for 3D to maintain crop ratio
- Remote Control: Update Color calibration values when calibration settings were saved
- Fixed Smoothing got out of sync when saving configuration
- Smoothing: Removed "outputrate" as duplicate to update frequency
- Queue LED-device on/off signals
- UI: Correctly lookup current Instance Name
- Fixed AtmoOrb firmware image
## [2.0.13](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.13) - 2022-05-22
### Added
- Allow to build a "light" version of Hyperion, i.e. no grabbers, or services like flat-/proto buffers, boblight, CEC
- Allow to restart Hyperion via Systray
- mDNS support for all platforms inkl. Windows (#740)
- Forwarder: mDNS discovery support and ease of configuration of other Hyperion instances
- Grabber: mDNS discovery for standalone grabbers
- Grabber: Dynamic loading of the Dispmanx Grabber (#1418)
- Flatbuffer/Protobuf are now able to receive RGBA data
- Added the instance number as part of the logline (#910). In the UI Log the instance is presented as a readable name.
- New language: Japanese
##### LED-Devices
- Support retry attempts enabling devices, e.g. to open devices after network or a device itself got available (#1302). Fixes that devices got "stuck", if initial open failed e.g. for WLED, Hue
- New UDP-DDP (Distributed Display Protocol) device to overcome the 490 LEDs limitation of UDP-RAW
- mDNS discovery support and ease of configuration (Cololight, Nanoleaf, Philips-Hue, WLED, Yeelight); removes the need to configure IP-Address, as address is resolved automatically.
- Allow to disable switching LEDs on during startup (#1390)
- Support additional Yeelight models
- Show warning, if get properties failed (Network devices: indication that network device is not reachable)
- LED Layout Classic: Support keystone correction via draggable corner LEDs
- LED Layout Matrix: Support vertical cabling direction (#1420)
### Changed
- Color Smoothing is started in pause mode to save resources, when Hyperion starts with no active source
- Boblight: Support multiple Boblight clients with different priorities
- UI: LED Preview has been given a touch of Ambilight.
- UI: Allow configuration of a Boblight server per LED-instance
- UI: LED Layout - Removed limitations on indention
- UI: Log output and LED preview window can be maximized
- mDNS Publisher: Aligned Hyperion mDNS names to general conventions and simplified naming
##### LED-Devices
- Refactored Philips Hue wizard and LED-Device
- WLED's default streaming protocol is now UDP-DDP. More than 490 LEDs are supported now (requires minimum WLED 0.11.0). UDP-RAW is still supported in parallel (via expert settings).
- Present all serial/TTY devices during discovery in expert mode; no filtering on existing vendor-identifier (Adalight serial USB does not show up in GUI #1458)
### Fixed
- UI: Ensure all configuration and system info response are there before reloading the page (#1430)
- UI: Show all previous log lines in the Log UI (was only working for Debug before)
- UI: Remote control: Treat duration=0 as endless
- UI: Stop Web-Browser capture when user triggers other activities
- Effects: Fix image URL in Matrix effect
- Effects: Fix that start effect is stuck on UI
- Effects: Fixed that effect specific smoothing setup was not applied when effect is started from available- or effects under configuration
- Qt-Grabber: Fixed position handling of multiple monitors (#1320, #1403)
- Standalone grabbers: Improved fps help/error text, fixed default address and port, fixed auto discovery of Hyperion server in hyperion-remote
- hyperion-remote: Show image filename in UI for images sent
- Reworked PriorityMuxer and Subscriptions
- PriorityMuxer: Fix crash when running fore- and background effect in parallel during start-up
- Update Priority, if first LED changes for COLOR update (to reflect color correctly in UI)
- Start JSON and WebServer only, if Hyperion's instance 0 is available
- Treat http headers case insensitive (RFC 2616)
- Fixed: Signal detection does not switch off all instances (#1281)
- Do not kill application on SIGILL-signal (#1435)
- Fixed Qt version override, e.g. set via QTDIR
- Update jsonschema and checkschema to allow checking hyperion.config.json.default on Windows
##### LED-Devices
- Fixes that the Led-Device output flow was interrupted, by an enabling API request on an already enabled device (#967)
- Yeelight - Workaround: Ignore error when setting music mode = off, but the music-mode is already off (#1372)
- Fixed: Hue Entertainment mode does not resume after no signal (#930)
## Removed
- UI: Removed sessions (of other Hyperions)
- Replaced existing AVAHI/Bonjour code by QMdnsEngine
## [2.0.12](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.12) - 2021-11-20
Hyperion's November release brings you some new features, removed IPv6 address related limitations, as well as fixing a couple of issues.
Hyperion packages can be installed now under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
Details about the installation can be found in the installation.md and at apt.hyperion-project.org.
### Added
- New LED-device type: Razor Chroma.
Note: Due to Chroma Razer API limitations, only one device can be configured.
- APA102 - Support setting maximum brightness level (1-31)
- New installation method (Drag'n Drop) for macOS.
- hyperion-remote & standalone grabbers: IPv6 support
- New languages: Danish & Hungarian
### Changed
- LED-Devices: Removed IPv6 limitations
- Philips-Hue Wizard optimizations
- JSON/Flatbuffer forwarder: Removed IPv6 limitations
- Allow to import configurations from previous versions
Note: Existing configurations are migrated to new structures automatically
### Fixed
- Fixed API Subscription (e.g. as used by HomeAssistant) (#1351)
- Fixed APA102 protocol aligning to the standard defined, removed Latch-Time as not required by APA102 protocol (#1352, #1132)
- Fixed hyperion-remote when sending multiple Hex-Colors with "Set Color" option
- UI: Fixed "Selected Hyperion instance isn't running" issue (#1357)
- Fixed Database migration version handling
- Fixed Python ModuleNotFoundError (#1109)
### Technical
- Added Qt6 support
- Migrated to MBEDTSL 3
## [2.0.0-alpha.11](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.11) - 2021-10-06
The release is primarily fixing issues introduced with alpha 10, but covering other findings too.
Thanks to everybody highlighting real problem areas, as well as to those proactively providing fixes for integration via pull requests.
Besides bug fixing, you will find some smaller enhancements which make everybodys life easier.
The fact that WS281x devices must run under root caused many headaches before in getting them running.
We did not weaken security, but provide you with an easy to use script to switch the user-id of hyperion going forward. Furthermore, device configuration is blocked, if the environment does not allow it.
### Added:
- Script to change the user Hyperion is executed with.
To run Hyperion with root privileges (e.g. for WS281x) execute <br> `sudo updateHyperionUser -u root`
- Gif effects can source Gifs via URLs in addition to local files as input
- System info screen: Added used config path and "is run under root/admin"
- LED-Device enhancements
- WS281x: Ensure that a device cannot be configured via the UI when Hyperion is not run with root privileges
- Nanoleaf: Support discovering additional Nanoleaf devices, e.g. Shapes
- Nanoleaf: Ability to restore state when Hyperion stops streaming<br>
Note: In case previous state was a dynamic/temporary effect, the state cannot be restored
- Nanoleaf: New Feature: allow to overwrite brightness by Hyperion
### Changed:
- The Systemd/Upstart/System-V-Init service registers Hyperion under the name hyperion instead of hyperiond, as this has caused confusion among users in the past.
- WLED and UDP-Raw: Limit maximum LEDs number to 490
- WS281x: Update DMA default as per rpi_ws281x recommendation
- Smoothing is paused when no input source is available (to save resources)
- Disable LED update streaming, if LED updates are not required, Sync. Video-Streaming between Layout and Simulation
- Load configuration of last instance used when loading the UI page, Streamline API requests to avoid unnecessary invocations (#1311)
- BobLight: Priorities are not limited any longer. BobLight can feed Priorities [2-253], default is still 128 (#1269)
- Amlogic grabber: Limit grabber to 30fps during discovery
- Amlogic grabber: Continuous image feed even when paused (to not have LEDs switched off), plus no delay when pausing/unpausing
### Fixed:
- Fixed that Smoothing with "Continuous Updates" disabled does not provides LED updates (#1068, #1240)
- Fixed Issue Blinking / flickering cursor with QT screen capture on Windows (#1328)
- Fixed Colour effect priority is not deleted when Colorpicker is open (double click on delete is required)
- Fixed reuse local SSDP address (#1324)
- Exclude FB Grabber on Amlogic platform, as FB is included in Amlogic Grabber
- Escape XSS payload to avoid execution (#1292)
- Include libqt5sql5-sqlite packaging dependency
- Fixed embedded Python location (#1109)
- LED-Devices
- Fixed Philips Hue wizard (#1276)
- Fixed AtmoOrb wizard
- Fixed that Lightpack device does not core when lack of permissions error (LIBUSB_ERROR_ACCESS)
- Fixed Atmo/Karate LED count constraint handling
- Fixed Hue, Disable LED general options (HW Led count & RGB Byte order) as calculated
- Fixed SPI, Tpm2.Net - Memory issues
- Fixed: Nanoleaf does not turn on
- Fixed LED layout - Additional parameters for classic layout were not saved (#1314)
- Fixed Network LED-Device UI: Trigger getProperties for the configured host, when no hosts were discovered
### Removed:
- Smoothing: Removed "Continuous Updates" flag as it is obsolete.
In case an LED-device requires continuous updates, use the LED-Device's "Rewrite Time" parameter.
## [2.0.0-alpha.10](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.10) - 2021-07-17
The focus of this release is on user experience.
We tried as much as possible supporting you in getting valid setup done, as well as providing enough room for expert users to tweak configurations here and there.
The reworked dashboard provides you now with the ability to control individual components, jump to key configuration items, as well as to switch between LED instances easily.
The refined color coding in the user-interfaces, helps you to quickly identify instance specific and global configuration items.
Of course, the release brings new features (e.g. USB Capture on Windows), as well as minor enhancements and a good number of fixes.
Note:
- **IMPORTANT:** Due to the rework of the grabbers, both screen- and video grabbers are disabled after the upgrade to the new version.
Please, re-enable the grabber of choice via the UI, validate the configuration and save the setup. The grabber should the restart.
- Hyperion packages can now be installed under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
Details about the installation can be found in the [installation.md](https://github.com/hyperion-project/hyperion.ng/blob/master/Installation.md) and at [apt.hyperion-project.org](apt.hyperion-project.org).
- Find here more details on [supported platforms and configuration sets](https://github.com/hyperion-project/hyperion.ng/blob/master/doc/development/SupportedPlatforms.md)
### Breaking
### Added
- The Dashboard is now a one-stop control element to control instances and link into configuration areas
- LED Instance independent configuration objects (e.g. capturing hardware) are now separated out in the menu
- New menu item "Sources" per LED instances configuration to enable/disable screen or usb grabber per instance
#### Grabbers
- Windows Media Foundation USB grabber (incl. Media Foundation transform/Turbo-JPEG scaling)
- Linux V4L2 Grabber now supports the following formats: NV12, YUV420
- Image flipping ability in ImageResampler/Turbo-JPEG
- UI: Simplified screens for non-expert usage, do only show elements relevant
- Discover available Grabbers (incl. their capabilities for selection), not supported grabbers are not presented. Note: Screen capturing on Wayland is not supported (given the Wayland security architecture)
- USB Grabber: New ability to configure hardware controls (brightness, contrast, saturation, hue), as well as populating defaults
- Configuration item ranges are automatically adopted based on grabber capabilities,
- Grabbers can only be saved with a valid configuration
- Standalone grabbers: Added consistent options/capabilities for standalone grabbers, debug logging support
- Screen grabbers: Allow to set capture frequency, size decimation and cropping across all grabber types
- Screen grabber: QT-Grabber allows to capture individual displays or all displays in a multi-display setup
- Display Signal Detection area in preview (expert users)
- UI: Only show CEC detection, if supported by platform
#### LED-Devices
- Select device from list of available devices (UI Optimization - Select device from list of available devices #1053) - Cololight, Nanoleaf, Serial Devices (e.g. Adalight), SPI-Device, Pi-Blaster
- Get device properties for automatic configuration of number of LEDs and initial layout (WLED, Cololight, Nanoleaf)
- Identify/Test device (WLED, Cololight, Nanoleaf, Adalight)
- For selected devices a default layout configuration is created, if the user chooses "Overwrite" (WLED, Cololight, Nanoleaf, all serial devices, all spi device, pi-blaster)
- Ensure Hardware LED count matches number of lights (Philips Hue, Yeelight, Atmo Orb)
- User is presented a warning/error, if there is a mismatch between configured LED number and available hardware LEDs
- Add udev support for Serial-Devices
- Allow to get properties for Atmo and Karatedevices to limit LED numbers configurable
- Philips Hue: Add basic support for the Play Gradient Lightstrip
- WLED: Support of ["live" property] (https://github.com/Aircoookie/WLED/issues/1308) (#1095)
- WLED: Brightness overwrite control by configuration
- WLED: Allow to disable WLED synchronization when streaming via hyperion
- WLED: Support storing/restoring state (#1101)
- Adalight: Fix LED Num for non analogue output in arduino firmware
- Allow to blacklist LEDs in layout via UI
- Live Video image to LedLayout preview (#1136)
#### Other
- Effects: Support Custom Effect Templates in UI for custom effect creation and configuration
- Effects: Custom effect separation in the systray menu
- New languages - Portuguese (Std/Brazil) & Norwegian (Bokmål)
- New Flags: Russia, Cameroon, Great Britain, England, Scotland
- Provide cross compilation on x86_64 for developers using docker. This includes the ability to use local code, as well as build incrementally
### Changed
- Grabbers use now precise timings for better timing accuracy
- Nanoleaf: Consider Nanoleaf-Shape Controllers
- LED-Devices: Show HW-Ledcount in all setting levels
- System Log Screen: Support to copy loglines, system info and status of the current instance to the clipboard (to share it for investigation)
- Updated dependency rpi_ws281x to latest upstream
- Fix High CPU load (RPI3B+) (#1013)
### Fixed
- Active grabbers are displayed correctly after updating the WebUI
- Issue Crop values are checked against decimated resolution (#1160)
- Framebuffer grabber is deactivated in case of error
- Fix/no signal detection (#1087)
- Fix that global settings were not correctly reflected across instances after updates in other non default instance (#1131,#1186,#1188)
- Fix UI: Handle error scenario properly, when last instance number used does not exist any longer.
- UI Allow to have password handled by Password-Manager (#1263)
- Fixed effect freezing during startup
- Effects were not started from tray (#1199)
- Interrupt effect on timeout (#1013)
- Fixed color and effect handling and duplicate priorities (#993,#1113,#1216)
- Stop background effect, when it gets out of scope (to not use resources unnecessarily)
- Custom Effect Templates (schemas) are now loaded
- Effects: Uploaded images were not found executing custom image effects
- "LED Test" effect description is in wrong order (#1229)
- LED-Devices: Only consider Hardware LED count (#673)
- LED-Devices: Correct total packet count in tpm2net implementation (#1127)
- LED-Hue: Proper black in Entertainment mode if min brightness is set
- LED-Hue: Minor fix of setColor command
- Nanoleaf: Fixed behaviour, if external control mode cannot be set
- System Log Screen: Fixed Auto-Scrolling, Update Look & Feel, Works across multiple Browser tabs/windows, as log stream is not stopped by a new UI
- Rename Instance and Change Password: Modal did not close
- Read-Only mode was not handled in the SysInfo function
- WebSockets: Handling of fragmented frames fixed
- Fixed libcec dependencies
- General language and grammar updates
### Removed
## [2.0.0-alpha.9](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.9) - 2020-11-18
### Added
- Grabber: DirectX9 support (#1039)
- New blackbar detection mode "Letterbox", that considers only bars at the top and bottom of picture
- LED-Devices: Cololight support (Cololight Plus & Strip) incl. configuration wizard
- LED-Devices: SK9822 support (#1005,#1017)
- UX: New language support: Russian and Chinese (simplified) (#1005)
- UX: Additional details on Hardware/CPU information (#1045)
- UX: Systray icons added - Issue #925 (#1040)
- Read-Only configuration database support
- Hide Window Systray icon on Hyperion exit & Install DirectX Redistributable
- Read-Only configuration database support
### Changed
- boblight: reduce cpu time spent on memcopy and parsing rgb values (#1016)
- Windows Installer/Uninstaller notification when Hyperion is running (#1033)
- Updated Windows Dependencies
- Documentation: Optimized images (#1058)
- UX: Default LED-layout is now one LED only to avoid errors as in #673
- UX: Change links from http to https (#1067)
- Change links from http to https (#1067)
- Cleanup packages.cmake & extend NSIS plugin directory
- Optimize images (#1058)
- Docs: Refreshed EN JSON API documentation
### Fixed
- Color calibration for Kodi 18 (#1044)
- LED-Devices: Karatelight, allow an 8-LED configuration (#1037)
- LED-Devices: Save Hue light state between sessions (#1014)
- LED-Devices: LED's retain last state after clearing a source (#1008)
- LED-Devices: Lightpack issue #1015 (#1049)
- Fix various JSON API issues (#1036)
- Fix issue #909, Have ratio correction first and then scale (#1047)
- Fix display argument in hyperion-qt (#1027)
- Fix Python reset thread state
- AVAHI included in Webserver (#996)
- Fix add libcec to deb/rpm dependency list
- Fix Hyperion configuration is corrected during start-up, if required
- Fix color comparison / Signal detection (#1087)
### Removed
- Replace Multi-Lightpack by multi-instance Lightpack configuration (#1049)
## [2.0.0-alpha.8](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.8) - 2020-09-14
### Added
- Add XCB grabber, a faster and safer alternative for X11 grabbing (#912)
- for Windows: Add binary meta (#932)
- Differentiate between LED-Device Enable/Disable and Switch On/Off (#960) (Fixes: #828)
- AtmoOrb discovery and identification support (#988)
- New AtmoOrb Wizard (#988)
- Added and updated some language files (#900, #926, #916) (DE, CS, NL, FR, IT, PL, RO, ES, SV, TR, VI)
### Changed
- Improved UDP-Device Error handling (#961)
- NSIS/Systray option to launch Hyperion on Windows start (HKCU) (#887)
- Updated some dependencies (#929, #1003, #1004)
- refactor: Modernize Qt connections (#914)
- refactor: Resolve some clang warnings (#915)
- refactor: Several random fixes + Experimental playground (#917)
- Use query interface for void returning X requests (#945)
- Move Python related code to Python module (#946)
- General tidy up (#958)
- AtmoOrb ESP8266 sketch to support device identification, plus small fix (#988)
### Fixed
- webui: Works now with HTTPS port 443 (#923 with #924)
- Adalight issue (#903 with #991)
- Fixed CI: Trigger HyperBian build after release
- Fixed: -DUSE_SYSTEM_MBEDTLS_LIBS=ON - undefined reference (#898)
- set zlib back to system ignore list/revert pr #871 (#904)
- Fixed: logger and led colors (#906)
- Fixed: some more threading errors (#911)
- Fix OSX build (#952)
- AtmoOrb Fix (#988)
- Return TAN to API requests whenever possible (#1002)
## [2.0.0-alpha.7](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.7) - 2020-07-23
### Added
- [HyperBian](https://github.com/hyperion-project/HyperBian/releases) - A Raspberry Pi OS Lite image with Hyperion pre installed. (#832)
- An option to reset (delete) the database for the commandline has been added (#820)
- Improve language selection usability (#812)
- re-added V4L2 Input method from old Hyperion (#825)
- Windows: Start Hyperion with a console window `hyperiond -c` (Or new start menu entry) (#860)
- Get process IDs by iterating /proc (#843)
- Dump stack trace on crash (Implement #849) (#870)
- Minor fixes
- New Devices (#875)
* Yeelight support incl. device discovery and setup-wizard
* WLED as own device and pre-configuration
- Additional device related capabilities (#875)
* discover, getProperties, identify, store/restore state and power-on/off available for Philips-Hue, Nanoleaf, Yeelight, partially for Rs232 / USB (Hid)
* New device capabilities are accessible via JSON-API
* New REST-API wrapper class in support of network devices, e.g. Philips Hue, Nanoleaf and WLED
* Flexible SSDP-Discovery incl. RegEx matching and filtering
- Documentation (#875)
* Process workflow for LED-Devices
* Documentation of device classes & methods
* Code template for new LED-Devices available
- CEC detection (#877)
### Changed
- Updated dependency rpi_ws281x to latest upstream (#820)
- Updated websocket-extensions (#826)
- webui: Suppress default password warning (#830)
- webui: Add French, Vietnamese and Turkish (#842)
- Show thread names in GDB for better debugging (#848)
- CompileHowto.md updated (#864)
- Updated Embedded python package (zip) for Linux (#871)
- DBManager: ORDER BY parameter added to getRecord(s) (#770)
- Corrected GitHub Actions badge
- Fix GitHub Actions/Azure Windows Workflow/Pipeline
- Updated submodules flatbuffers/rpi_ws281x (#873)
- LED-Device workflow changed allowing proper suspend/resume & disable/enable scenarios (#875)
- Network LED-Devices will stop sending packages when disabled (#875)
- Rs232 Provider fully reworked and changed to synchronous writes (#875)
- Rs232 configuration via portname and system location (/dev/ style), auto detection is not case-sensitive any longer (#875)
- Additional error handling depending on device type (#875)
- Add Windows compatibility incl. moving to Qt functions (#875)
- Add compatibility for different Qt versions (#875)
### Fixed
- device: Nanoleaf (#829)
- device: LPD8806 Problems fixed (#829)
- Possible crash on shutdown (#846). Issue #668
- Enumerate only V4L2 frame sizes & intervals for framesize type DISCRETE (fix BCM2835 ISP) (#820)
- Fix systemd registration in debian for RPi4 (#820)
- Fix missing define in Profiler & added header notes (#820)
- some Windows Compile issues
- Fix: leaking active effects during quit (#850)
- Correct path for each build configuration
- Fix heap corruption (#862)
- Fix OpenSSL dependencies for Windows (#864)
- Fix resolution change event Fixes part of #620 (#867)
- some code improvements & cleanup (#861) (#872) (#880) (#876)
- some little things, as always (#863)
- AtmoOrb: Buffer length fix and new configuration validations (#875)
- Added missing DMX SubTypes to configuration (#875)
- Fix logger (#885)
* Make logger thread safe
* Include timestamp in logs
* Make logs look a bit more cleaner
- Decrease compile time (#886)
- Fix some data synchronization error (#890)
- Fix Qt screenshot crash (#889)
- Fix crash on startup if no X server available (#892)
- Fix RPC restart of Hyperion (#894)
## [2.0.0-alpha.6](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.6) - 2020-05-27
### Breaking
The release package names have been adjusted.\
If you used a `.deb` package please uninstall it before you upgrade
- Check for the package name `apt-cache search hyperion`. You may see now a entry like `hyperion-x86`, `hyperion-rpi`
- Remove with the correct name `sudo apt-get remove hyperion-XX`
- Now install the new .deb as usual. From now on the package is just called `hyperion`
### Added
- [Documentation](https://docs.hyperion-project.org) for Hyperion (#780)
- Hyperion can be compiled on windows. [Issues list](https://github.com/hyperion-project/hyperion.ng/issues/737) (#738)
- effect: New plasma/lava lamp effect (#792)
- device: Philips Hue Entertainment API now available as new device. [Read about requirements](https://docs.hyperion-project.org/en/user/LedDevices.html#philipshue) (#806)
- webui: Philips Hue Entertainment API Wizard (#806)
- webui: Toggle-Buttons for Component Remote Control (#677) (#778)
- webui: Add Trapezoid to LED Layout creation (#791)
### Changed
- webui: Dark mode adjustments (#789)
### Fixed
- device: Rewrite-/LatchTime definitions for all devices adjusted (#785) (#799)
- device: Nanoleaf crashes hyperion
- Documentation for Hyperion (#780)
- webui: Hide v4l2 if not available (#782)
- Documentation fixes (#790)
### Removed
- Linux 32bit packages are no longer available for download. Also the `.sh` packages are gone.
- Mac `.dmg` package disabled because of new apple restrictions. Please use the `tar.gz` instead.
## [2.0.0-alpha.5](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.5) - 2020-04-17
### Added:
- WebUI Dark Mode (#752) (#765)
### Fixed:
- SSDP Discovery reliability (#756)
- Some effects are running extreme slowly (#763)
- JsonAPI error "Dead lock detected" (2e578c1)
- USB Capture only in Black and white (#766)
### Changed:
- Check if requested Instance is running (#759)
- V4L2 enhancements (#766)
- Stages are now used in Azure CI/CD (9ca197e)
## [2.0.0-alpha.4](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.4) - 2020-03-27
### Fixed:
- Memoryleaks & Coredump, if no Grabber compiled (#724)
- Resolve enable state for v4l and screen capture (#728)
- Enable/Disable loops for components
- Runs now on x86_64 LibreElec (missing libs) (#736)
- Brightness compensation is now visible for configuration (#746)
- Prevent malformed image size for effects with specific led layouts (#746)
### Changed:
- SIGUSR1/SIGUSR2 implemented again (#725)
- V4L2 width/height/fps options available (#734)
- Swedish translation update
## [2.0.0-alpha.3](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.3) - 2020-03-01
### Added
- Package Update Descriptions on WebUi (#694)
- Pull Requests will now create artifacts for faster testing!
### Fixed
- Led Matrix Layout - Save/Restore (#669) (#697)
- New hue user generation (#696)
- Nanoleaf - Udp Network init was missing (#698)
- Multiple memory leaks and segfault issues in Flatbuffer Forwarder
## [2.0.0-alpha.2](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.2) - 2020-02-20
### Added
- Swedish Translation (#675)
- Dutch translation from [Kees](mailto:kees@vannieuwenhuijzen.com), [Nick](mailto:nick@doingcode.nl) & [Ward Wygaerts](mailto:wardwygaerts@gmail.com)
- Polish translation from [Patryk Niedźwiedziński](mailto:pniedzwiedzinski19@gmail.com)
- Romanian translation from [Ghenciu Ciprian](mailto:g.ciprian@osn.ro)
### Changed
- Smoothing comp state on startup (#685)
- Azure GitHub release title (#686)
- SSL/Avahi problems in previous release (#689)
- WebUI Version Check to SemVer. Also adds "Alpha" Channel (#692)
### Removed
- Travis CI tests (#684)
## [2.0.0-alpha.1](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.1) - 2020-02-16
### Added
- Initial Release

View File

@ -1,215 +1,481 @@
cmake_minimum_required(VERSION 3.0.0)
cmake_minimum_required(VERSION 3.5.0)
message( STATUS "CMake Version: ${CMAKE_VERSION}" )
message(STATUS "CMake Version: ${CMAKE_VERSION}")
macro(addIndent text)
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
list(APPEND CMAKE_MESSAGE_INDENT ${text})
endif()
endmacro()
macro(removeIndent)
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
list(POP_BACK CMAKE_MESSAGE_INDENT)
endif()
endmacro()
PROJECT(hyperion)
# Parse semantic version of version file
# Parse semantic version of version file and write version to config
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake)
file (STRINGS "version" HYPERION_VERSION)
file (STRINGS ".version" HYPERION_VERSION)
SetVersionNumber(HYPERION ${HYPERION_VERSION})
set(DEFAULT_JSON_CONFIG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/settings/hyperion.settings.json.default)
file(READ ${DEFAULT_JSON_CONFIG_FILE} DEFAULT_JSON_CONFIG_VAR)
string(REPLACE "configVersionValue" ${HYPERION_VERSION} DEFAULT_JSON_CONFIG_VAR "${DEFAULT_JSON_CONFIG_VAR}")
file(WRITE ${CMAKE_BINARY_DIR}/settings/hyperion.settings.json.default "${DEFAULT_JSON_CONFIG_VAR}")
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# auto prepare .qrc files
set(CMAKE_AUTORCC ON)
if ( POLICY CMP0026 )
CMAKE_POLICY( SET CMP0026 OLD )
# multicore compiling
include(ProcessorCount)
ProcessorCount(NCORES)
if(NOT NCORES EQUAL 0)
set(CMAKE_BUILD_PARALLEL_LEVEL NCORES)
endif()
# Configure CCache if available
# Configure CCache ifavailable
find_program(CCACHE_FOUND ccache)
if ( CCACHE_FOUND )
if(CCACHE_FOUND)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif(CCACHE_FOUND)
set(Python_ADDITIONAL_VERSIONS 3.5)
find_package( PythonInterp 3.5 REQUIRED )
# Set build variables
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_QT ON )
SET ( DEFAULT_WS281XPWM OFF )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
SET ( DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS OFF )
SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
SET ( DEFAULT_TESTS OFF )
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_V4L2 ON )
SET ( DEFAULT_SPIDEV ON )
SET ( DEFAULT_FB ON )
SET ( DEFAULT_USB_HID ON )
ELSE()
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_FB OFF )
SET ( DEFAULT_SPIDEV OFF )
SET ( DEFAULT_USB_HID OFF )
ENDIF()
if ( NOT DEFINED PLATFORM )
if ( "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86" )
SET( PLATFORM "x11")
elseif ( "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64")
SET( PLATFORM "rpi")
FILE( READ /proc/cpuinfo SYSTEM_CPUINFO )
STRING ( TOLOWER "${SYSTEM_CPUINFO}" SYSTEM_CPUINFO )
if ( "${SYSTEM_CPUINFO}" MATCHES "amlogic" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 4 )
SET( PLATFORM "amlogic" )
elseif ( ("${SYSTEM_CPUINFO}" MATCHES "amlogic" OR "${SYSTEM_CPUINFO}" MATCHES "odroid-c2" OR "${SYSTEM_CPUINFO}" MATCHES "vero4k") AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8 )
SET( PLATFORM "amlogic64" )
endif()
elseif ( APPLE )
SET( PLATFORM "osx")
elseif ( WIN32 )
SET( PLATFORM "windows")
endif()
if ( PLATFORM )
message( STATUS "PLATFORM is not defined, evaluated platform: ${PLATFORM}")
else()
message( FATAL_ERROR "PLATFORM is not defined and could not be evaluated. Set -DPLATFORM=<rpi|amlogic|amlogic64|x11|x11-dev|osx|osx-dev>")
# enable C++17
if(APPLE)
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("Werror=unguarded-availability" REQUIRED_UNGUARDED_AVAILABILITY)
if(REQUIRED_UNGUARDED_AVAILABILITY)
list(APPEND CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "Werror=unguarded-availability")
endif()
endif()
message( STATUS "PLATFORM: ${PLATFORM}")
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Set build variables
# Grabber
set(DEFAULT_AMLOGIC OFF)
set(DEFAULT_DISPMANX OFF)
set(DEFAULT_DX OFF)
set(DEFAULT_DDA OFF)
set(DEFAULT_MF OFF)
set(DEFAULT_OSX OFF)
set(DEFAULT_QT ON )
set(DEFAULT_V4L2 OFF)
set(DEFAULT_AUDIO ON )
set(DEFAULT_X11 OFF)
set(DEFAULT_XCB OFF)
# Input
set(DEFAULT_BOBLIGHT_SERVER ON )
set(DEFAULT_CEC OFF)
set(DEFAULT_FLATBUF_SERVER ON )
set(DEFAULT_PROTOBUF_SERVER ON )
# Output
set(DEFAULT_FORWARDER ON )
set(DEFAULT_FLATBUF_CONNECT ON )
# LED-Devices
set(DEFAULT_DEV_NETWORK ON )
set(DEFAULT_DEV_SERIAL ON )
set(DEFAULT_DEV_SPI OFF)
set(DEFAULT_DEV_TINKERFORGE OFF)
set(DEFAULT_DEV_USB_HID OFF)
set(DEFAULT_DEV_WS281XPWM OFF)
set(DEFAULT_DEV_FTDI ON )
# Services
set(DEFAULT_EFFECTENGINE ON )
set(DEFAULT_EXPERIMENTAL OFF)
set(DEFAULT_MDNS ON )
set(DEFAULT_REMOTE_CTL ON )
# Build
set(DEFAULT_JSONCHECKS ON )
set(DEFAULT_DEPLOY_DEPENDENCIES ON )
set(DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS OFF)
set(DEFAULT_USE_SYSTEM_PROTO_LIBS OFF)
set(DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF)
set(DEFAULT_USE_SYSTEM_QMDNS_LIBS OFF)
set(DEFAULT_TESTS OFF)
# Build Hyperion with a reduced set of functionality, overwrites other default values
set(DEFAULT_HYPERION_LIGHT OFF)
if(${CMAKE_SYSTEM} MATCHES "Linux")
set(DEFAULT_FB ON)
set(DEFAULT_V4L2 ON)
set(DEFAULT_DEV_SPI ON)
set(DEFAULT_DEV_TINKERFORGE ON)
set(DEFAULT_DEV_USB_HID ON)
set(DEFAULT_CEC ON)
elseif (WIN32)
set(DEFAULT_DX ON )
set(DEFAULT_DDA ON )
set(DEFAULT_MF ON )
set(DEFAULT_DEV_FTDI OFF)
else()
set(DEFAULT_FB OFF)
set(DEFAULT_V4L2 OFF)
set(DEFAULT_DEV_SPI OFF)
set(DEFAULT_DEV_TINKERFORGE OFF)
set(DEFAULT_DEV_USB_HID OFF)
set(DEFAULT_CEC OFF)
endif()
if(NOT DEFINED PLATFORM)
if(APPLE)
set(PLATFORM "osx")
elseif (WIN32)
set(PLATFORM "windows")
elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86")
set(PLATFORM "x11")
elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm" OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64")
set(PLATFORM "rpi")
file(READ /proc/cpuinfo SYSTEM_CPUINFO)
STRING (TOLOWER "${SYSTEM_CPUINFO}" SYSTEM_CPUINFO)
if("${SYSTEM_CPUINFO}" MATCHES "amlogic" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 4)
set(PLATFORM "amlogic")
elseif (("${SYSTEM_CPUINFO}" MATCHES "amlogic" OR "${SYSTEM_CPUINFO}" MATCHES "odroid-c2" OR "${SYSTEM_CPUINFO}" MATCHES "vero4k") AND ${CMAKE_SIZEOF_VOID_P} EQUAL 8)
set(PLATFORM "amlogic64")
endif()
endif()
if(PLATFORM)
message(STATUS "PLATFORM is not defined, evaluated platform: ${PLATFORM}")
else()
message(FATAL_ERROR "PLATFORM is not defined and could not be evaluated. Set -DPLATFORM=<rpi|amlogic|amlogic64|x11|x11-dev|osx|osx-dev>")
endif()
endif()
message(STATUS "PLATFORM: ${PLATFORM}")
# Macro to get path of first sub dir of a dir, used for MAC OSX lib/header searching
MACRO(FIRSTSUBDIR result curdir)
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
SET(dirlist "")
FOREACH(child ${children})
IF(IS_DIRECTORY ${curdir}/${child})
LIST(APPEND dirlist "${curdir}/${child}")
#BREAK()
ENDIF()
ENDFOREACH()
SET(${result} ${dirlist})
ENDMACRO()
if ( "${PLATFORM}" MATCHES "osx" )
# add specific prefix paths
FIRSTSUBDIR(SUBDIRQT "/usr/local/Cellar/qt5")
FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions")
SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${SUBDIRQT} ${SUBDIRPY} "/usr/local/opt/qt5" )
include_directories("/opt/X11/include/")
SET ( DEFAULT_OSX ON )
SET ( DEFAULT_USB_HID ON )
elseif ( "${PLATFORM}" STREQUAL "rpi" )
SET ( DEFAULT_DISPMANX ON )
SET ( DEFAULT_WS281XPWM ON )
elseif ( "${PLATFORM}" STREQUAL "amlogic" )
SET ( DEFAULT_AMLOGIC ON )
elseif ( "${PLATFORM}" STREQUAL "amlogic64" )
SET ( DEFAULT_AMLOGIC ON )
elseif ( "${PLATFORM}" MATCHES "x11" )
SET ( DEFAULT_X11 ON )
if ( "${PLATFORM}" STREQUAL "x11-dev" )
SET ( DEFAULT_AMLOGIC ON)
SET ( DEFAULT_WS281XPWM ON )
macro(FIRSTSUBDIR result curdir)
file(GLOB children RELATIVE ${curdir} ${curdir}/*)
set(dirlist "")
foreach(child ${children})
if(IS_DIRECTORY ${curdir}/${child})
list(APPEND dirlist "${curdir}/${child}")
break()
endif()
elseif ( "${PLATFORM}" STREQUAL "imx6" )
SET ( DEFAULT_FB ON )
elseif ( "${PLATFORM}" STREQUAL "windows" )
MESSAGE( WARNING "Hyperion is not developed nor tested on MS Windows.")
endforeach()
set(${result} ${dirlist})
endmacro()
if("${PLATFORM}" MATCHES "osx")
# specify the min version of the target platform (only GitHub Actions)
if(DEFINED ENV{GITHUB_WORKSPACE})
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")
endif()
# add specific prefix paths
FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${SUBDIRPY})
include_directories("/opt/X11/include/")
set(DEFAULT_OSX ON )
set(DEFAULT_AUDIO OFF)
set(DEFAULT_DEV_USB_HID ON )
elseif ("${PLATFORM}" MATCHES "rpi")
set(DEFAULT_DISPMANX ON)
set(DEFAULT_DEV_WS281XPWM ON)
elseif ("${PLATFORM}" MATCHES "^amlogic")
set(DEFAULT_AMLOGIC ON)
if("${PLATFORM}" MATCHES "-dev$")
set(DEFAULT_AMLOGIC ON)
set(DEFAULT_DISPMANX OFF)
set(DEFAULT_QT OFF)
set(DEFAULT_CEC OFF)
endif()
elseif ("${PLATFORM}" MATCHES "^x11")
set(DEFAULT_X11 ON)
set(DEFAULT_XCB ON)
if("${PLATFORM}" MATCHES "-dev$")
set(DEFAULT_AMLOGIC ON)
set(DEFAULT_DEV_WS281XPWM ON)
endif()
elseif ("${PLATFORM}" STREQUAL "imx6")
set(DEFAULT_FB ON)
endif()
# enable tests for -dev builds
if ( "${PLATFORM}" MATCHES "-dev" )
SET ( DEFAULT_TESTS ON )
if("${PLATFORM}" MATCHES "-dev$")
set(DEFAULT_TESTS ON)
endif()
STRING( TOUPPER "-DPLATFORM_${PLATFORM}" PLATFORM_DEFINE)
STRING( REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}" )
ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
string(TOUPPER "-DPLATFORM_${PLATFORM}" PLATFORM_DEFINE)
string(REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}")
ADD_DEFINITIONS(${PLATFORM_DEFINE})
# set the build options
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
option(HYPERION_LIGHT "Build Hyperion with a reduced set of functionality" ${DEFAULT_HYPERION_LIGHT})
message(STATUS "HYPERION_LIGHT = ${HYPERION_LIGHT}")
if(HYPERION_LIGHT)
message(STATUS "HYPERION_LIGHT: Hyperion is build with a reduced set of functionality.")
# Disable Screen/Video Grabbers
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_DDA OFF )
SET ( DEFAULT_FB OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF )
# Disable Audio Grabbers
SET ( DEFAULT_AUDIO OFF )
# LED-Devices
#SET ( DEFAULT_DEV_NETWORK OFF )
#SET ( DEFAULT_DEV_FTDI OFF )
#SET ( DEFAULT_DEV_SERIAL OFF )
#SET ( DEFAULT_DEV_SPI OFF )
#SET ( DEFAULT_DEV_TINKERFORGE OFF )
#SET ( DEFAULT_DEV_USB_HID OFF )
#SET ( DEFAULT_DEV_WS281XPWM OFF )
# Disable Input Servers
SET ( DEFAULT_BOBLIGHT_SERVER OFF )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_FLATBUF_SERVER OFF )
SET ( DEFAULT_PROTOBUF_SERVER OFF )
# Disable Output Connectors
SET ( DEFAULT_FORWARDER OFF )
SET ( DEFAULT_FLATBUF_CONNECT OFF )
# Disable Services
SET ( DEFAULT_EFFECTENGINE OFF )
SET ( DEFAULT_EXPERIMENTAL OFF )
#SET ( DEFAULT_MDNS OFF )
SET ( DEFAULT_REMOTE_CTL OFF )
SET ( ENABLE_JSONCHECKS ON )
SET ( ENABLE_DEPLOY_DEPENDENCIES ON )
endif()
message(STATUS "Grabber options:")
addIndent(" - ")
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC})
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX})
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
if (ENABLE_AMLOGIC)
SET(ENABLE_FB ON)
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX})
message(STATUS "ENABLE_DX = ${ENABLE_DX}")
option(ENABLE_DDA "Enable the DXGI DDA grabber" ${DEFAULT_DDA})
message(STATUS "ENABLE_DDA = ${ENABLE_DDA}")
if(ENABLE_AMLOGIC)
set(ENABLE_FB ON)
else()
option(ENABLE_FB "Enable the framebuffer grabber" ${DEFAULT_FB} )
option(ENABLE_FB " Enable the framebuffer grabber" ${DEFAULT_FB})
endif()
message(STATUS "ENABLE_FB = ${ENABLE_FB}")
option(ENABLE_OSX "Enable the osx grabber" ${DEFAULT_OSX} )
option(ENABLE_MF "Enable the Media Foundation grabber" ${DEFAULT_MF})
message(STATUS "ENABLE_MF = ${ENABLE_MF}")
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX})
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
message(STATUS "ENABLE_SPIDEV = ${ENABLE_SPIDEV}")
option(ENABLE_TINKERFORGE "Enable the TINKERFORGE device" ON)
message(STATUS "ENABLE_TINKERFORGE = ${ENABLE_TINKERFORGE}")
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
option(ENABLE_USB_HID "Enable the libusb and hid devices" ${DEFAULT_USB_HID} )
message(STATUS "ENABLE_USB_HID = ${ENABLE_USB_HID}")
option(ENABLE_X11 "Enable the X11 grabber" ${DEFAULT_X11})
message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
option(ENABLE_QT "Enable the qt grabber" ${DEFAULT_QT})
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
message(STATUS "ENABLE_XCB = ${ENABLE_XCB}")
option(ENABLE_AUDIO "Enable the AUDIO grabber" ${DEFAULT_AUDIO})
message(STATUS "ENABLE_AUDIO = ${ENABLE_AUDIO}")
removeIndent()
message(STATUS "Input options:")
addIndent(" - ")
option(ENABLE_BOBLIGHT_SERVER "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT_SERVER})
message(STATUS "ENABLE_BOBLIGHT_SERVER = ${ENABLE_BOBLIGHT_SERVER}")
option(ENABLE_CEC "Enable the libcec and CEC control" ${DEFAULT_CEC})
message(STATUS "ENABLE_CEC = ${ENABLE_CEC}")
option(ENABLE_FLATBUF_SERVER "Enable Flatbuffers server" ${DEFAULT_FLATBUF_SERVER})
message(STATUS "ENABLE_FLATBUF_SERVER = ${ENABLE_FLATBUF_SERVER}")
option(ENABLE_PROTOBUF_SERVER "Enable Protocol Buffers server" ${DEFAULT_PROTOBUF_SERVER})
message(STATUS "ENABLE_PROTOBUF_SERVER = ${ENABLE_PROTOBUF_SERVER}")
removeIndent()
message(STATUS "Output options:")
addIndent(" - ")
option(ENABLE_FORWARDER "Enable Hyperion forwarding" ${DEFAULT_FORWARDER})
message(STATUS "ENABLE_FORWARDER = ${ENABLE_FORWARDER}")
if(ENABLE_FORWARDER)
set(ENABLE_FLATBUF_CONNECT ON)
else()
option(ENABLE_FLATBUF_CONNECT "Enable Flatbuffers connecting remotely" ${DEFAULT_FLATBUF_CONNECT})
endif()
message(STATUS "ENABLE_FLATBUF_CONNECT = ${ENABLE_FLATBUF_CONNECT}")
removeIndent()
message(STATUS "LED-Device options:")
addIndent(" - ")
option(ENABLE_DEV_NETWORK "Enable the Network devices" ${DEFAULT_DEV_NETWORK})
message(STATUS "ENABLE_DEV_NETWORK = ${ENABLE_DEV_NETWORK}")
option(ENABLE_DEV_SERIAL "Enable the Serial devices" ${DEFAULT_DEV_SERIAL})
message(STATUS "ENABLE_DEV_SERIAL = ${ENABLE_DEV_SERIAL}")
option(ENABLE_DEV_SPI "Enable the SPI device" ${DEFAULT_DEV_SPI})
message(STATUS "ENABLE_DEV_SPI = ${ENABLE_DEV_SPI}")
option(ENABLE_DEV_TINKERFORGE "Enable the TINKERFORGE device" ${DEFAULT_DEV_TINKERFORGE})
message(STATUS "ENABLE_DEV_TINKERFORGE = ${ENABLE_DEV_TINKERFORGE}")
option(ENABLE_DEV_USB_HID "Enable the libusb and hid devices" ${DEFAULT_DEV_USB_HID})
message(STATUS "ENABLE_DEV_USB_HID = ${ENABLE_DEV_USB_HID}")
option(ENABLE_DEV_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_DEV_WS281XPWM})
message(STATUS "ENABLE_DEV_WS281XPWM = ${ENABLE_DEV_WS281XPWM}")
option(ENABLE_DEV_FTDI "Enable the FTDI devices" ${DEFAULT_DEV_FTDI} )
message(STATUS "ENABLE_DEV_FTDI = ${ENABLE_DEV_FTDI}")
removeIndent()
message(STATUS "Services options:")
addIndent(" - ")
option(ENABLE_EFFECTENGINE "Enable Effect-Engine" ${DEFAULT_EFFECTENGINE})
message(STATUS "ENABLE_EFFECTENGINE = ${ENABLE_EFFECTENGINE}")
option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_EXPERIMENTAL}")
option(ENABLE_MDNS "Enable mDNS (aka Zeroconf)" ${DEFAULT_MDNS})
message(STATUS "ENABLE_MDNS = ${ENABLE_MDNS}")
option(ENABLE_REMOTE_CTL "Enable Hyperion remote control" ${DEFAULT_REMOTE_CTL})
message(STATUS "ENABLE_REMOTE_CTL = ${ENABLE_REMOTE_CTL}")
removeIndent()
message(STATUS "Build options:")
addIndent(" - ")
option(ENABLE_JSONCHECKS "Validate json schema files" ${DEFAULT_JSONCHECKS})
message(STATUS "ENABLE_JSONCHECKS = ${ENABLE_JSONCHECKS}")
option(ENABLE_DEPLOY_DEPENDENCIES "Deploy with dependencies" ${DEFAULT_DEPLOY_DEPENDENCIES})
message(STATUS "ENABLE_DEPLOY_DEPENDENCIES = ${ENABLE_DEPLOY_DEPENDENCIES}")
if(ENABLE_FLATBUF_SERVER OR ENABLE_FLATBUF_CONNECT)
message(STATUS "DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS = ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS}")
endif()
if(ENABLE_PROTOBUF_SERVER)
message(STATUS "DEFAULT_USE_SYSTEM_PROTO_LIBS = ${DEFAULT_USE_SYSTEM_PROTO_LIBS}")
endif()
message(STATUS "DEFAULT_USE_SYSTEM_MBEDTLS_LIBS = ${DEFAULT_USE_SYSTEM_MBEDTLS_LIBS}")
if(ENABLE_MDNS)
message(STATUS "DEFAULT_USE_SYSTEM_QMDNS_LIBS = ${DEFAULT_USE_SYSTEM_QMDNS_LIBS}")
endif()
option(ENABLE_TESTS "Compile additional test applications" ${DEFAULT_TESTS})
message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
option(ENABLE_PROFILER "enable profiler capabilities - not for release code" OFF)
message(STATUS "ENABLE_PROFILER = ${ENABLE_PROFILER}")
SET ( FLATBUFFERS_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf )
SET ( FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf )
option(ENABLE_TESTS "Compile additional test applications" ${DEFAULT_TESTS})
message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
SET ( PROTOBUF_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/proto )
SET ( PROTOBUF_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/proto )
removeIndent()
# check all json files
FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json )
SET( JSON_FILES
config/hyperion.config.json.default
${HYPERION_SCHEMAS}
)
EXECUTE_PROCESS (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_JSON_FAILED
)
IF ( ${CHECK_JSON_FAILED} )
MESSAGE (FATAL_ERROR "check of json files failed" )
ENDIF ()
set(FLATBUFFERS_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf)
set(FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf)
EXECUTE_PROCESS (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkeffects.py effects effects/schema
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_EFFECTS_FAILED
)
IF ( ${CHECK_EFFECTS_FAILED} )
MESSAGE (FATAL_ERROR "check of json effect files failed" )
ENDIF ()
set(PROTOBUF_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/proto)
set(PROTOBUF_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/proto)
# for python 3 the checkschema.py file must be rewritten
EXECUTE_PROCESS (
COMMAND python test/jsonchecks/checkschema.py config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_CONFIG_FAILED
)
IF ( ${CHECK_CONFIG_FAILED} )
MESSAGE (FATAL_ERROR "check of json default config failed" )
ENDIF ()
if(ENABLE_JSONCHECKS OR ENABLE_EFFECTENGINE)
if("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
set(Python_ADDITIONAL_VERSIONS 3.5)
find_package(PythonInterp 3.5 REQUIRED)
else()
find_package(Python3 3.5 COMPONENTS Interpreter Development REQUIRED)
if(Python3_FOUND)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
endif()
endif()
if(ENABLE_JSONCHECKS)
# check all json files
file (GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json)
set(JSON_FILES ${CMAKE_BINARY_DIR}/settings/hyperion.settings.json.default ${HYPERION_SCHEMAS})
execute_process (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_JSON_FAILED
)
if(${CHECK_JSON_FAILED})
message (FATAL_ERROR "check of json files failed")
endif()
if(ENABLE_EFFECTENGINE)
execute_process (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkeffects.py effects effects/schema
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_EFFECTS_FAILED
)
if(${CHECK_EFFECTS_FAILED})
message (FATAL_ERROR "check of json effect files failed")
endif()
endif()
execute_process (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkschema.py ${CMAKE_BINARY_DIR}/settings/hyperion.settings.json.default libsrc/hyperion/schema/schema-settings-default.json
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_CONFIG_FAILED
)
if(${CHECK_CONFIG_FAILED})
message (FATAL_ERROR "check of json default config failed")
endif()
endif(ENABLE_JSONCHECKS)
# Add project specific cmake modules (find, etc)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@ -222,8 +488,8 @@ configure_file("${PROJECT_SOURCE_DIR}/HyperionConfig.h.in" "${PROJECT_BINARY_DIR
include_directories("${PROJECT_BINARY_DIR}")
# Define the global output path of binaries
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
file(MAKE_DIRECTORY ${LIBRARY_OUTPUT_PATH})
file(MAKE_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
@ -235,111 +501,121 @@ include_directories(${CMAKE_SOURCE_DIR}/include)
# Prefer static linking over dynamic
#set(CMAKE_FIND_LIBRARY_SUFFIXES ".a;.so")
# enable C++11
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi")
endif()
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "No support for C++11 detected. Compilation will most likely fail on your compiler")
# MSVC options
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# Search for Windows SDK
find_package(WindowsSDK REQUIRED)
message(STATUS "WINDOWS SDK: ${WINDOWSSDK_LATEST_DIR} ${WINDOWSSDK_LATEST_NAME}")
message(STATUS "MSVC VERSION: ${MSVC_VERSION}")
endif()
# Use GNU gold linker if available
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/LDGold.cmake)
# Don't create new dynamic tags (RUNPATH)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
# setup -rpath to search for shared libs in BINARY/../lib folder
if (UNIX AND NOT APPLE)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif ()
# add QT5 dependency
IF ( CMAKE_CROSSCOMPILING )
file(GLOB QT_BIN ${QT_BIN_PATH})
set(QT_MOC_EXECUTABLE ${QT_BIN}/moc)
add_executable(Qt5::moc IMPORTED)
set_property(TARGET Qt5::moc PROPERTY IMPORTED_LOCATION ${QT_MOC_EXECUTABLE})
set(QT_RCC_EXECUTABLE ${QT_BIN}/rcc)
add_executable(Qt5::rcc IMPORTED)
set_property(TARGET Qt5::rcc PROPERTY IMPORTED_LOCATION ${QT_RCC_EXECUTABLE})
message(STATUS "QT_BIN_PATH = ${QT_BIN}")
message(STATUS "QT_MOC_EXECUTABLE = ${QT_MOC_EXECUTABLE}")
message(STATUS "QT_RCC_EXECUTABLE = ${QT_RCC_EXECUTABLE}")
ENDIF()
SET(QT_MIN_VERSION "5.5.0")
find_package(Qt5 COMPONENTS Core Gui Network SerialPort Sql REQUIRED)
message( STATUS "Found Qt Version: ${Qt5Core_VERSION}" )
IF ( "${Qt5Core_VERSION}" VERSION_LESS "${QT_MIN_VERSION}" )
message( FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}" )
ENDIF()
# Add libusb and pthreads
find_package(libusb-1.0 REQUIRED)
find_package(Threads REQUIRED)
add_definitions(${QT_DEFINITIONS})
# Add jpeg library
if (ENABLE_V4L2)
find_package(JPEG)
if (JPEG_FOUND)
add_definitions(-DHAVE_JPEG)
message( STATUS "Using JPEG library: ${JPEG_LIBRARIES}")
include_directories(${JPEG_INCLUDE_DIR})
else()
message( STATUS "JPEG library not found, MJPEG camera format won't work in V4L2 grabber.")
endif()
# Don't create new dynamic tags (RUNPATH) and setup -rpath to search for shared libs in BINARY/../lib folder (only for Unix)
if(ENABLE_DEPLOY_DEPENDENCIES AND UNIX AND NOT APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()
# TODO[TvdZ]: This linking directory should only be added if we are cross compiling
#if(NOT APPLE)
# link_directories(${CMAKE_FIND_ROOT_PATH}/lib/arm-linux-gnueabihf)
#endif()
if(APPLE)
set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics")
endif()
find_package(Threads REQUIRED)
# Allow to overwrite QT base directory
# Either supply QTDIR as -DQTDIR=<path> to cmake or set and environment variable QTDIR pointing to the Qt installation
# For Windows and OSX, the default Qt installation path are tried to resolved automatically
if(NOT DEFINED QTDIR)
if(DEFINED ENV{QTDIR})
set(QTDIR $ENV{QTDIR})
else()
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
FIRSTSUBDIR(SUBDIRQT "C:/Qt")
if(NOT ${SUBDIRQT} STREQUAL "")
set(QTDIR "${SUBDIRQT}/msvc2019_64")
endif()
elseif ("${PLATFORM}" MATCHES "osx")
foreach(QT_VERSION 6 5)
execute_process(
COMMAND brew --prefix qt@${QT_VERSION}
RESULT_VARIABLE DETECT_QT
OUTPUT_VARIABLE QT_LOCATION
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(${DETECT_QT} EQUAL 0 AND EXISTS ${QT_LOCATION})
set(QTDIR ${QT_LOCATION})
break()
endif()
endforeach()
endif()
endif()
endif()
if(DEFINED QTDIR)
message(STATUS "Add QTDIR: ${QTDIR} to CMAKE_PREFIX_PATH")
list(PREPEND CMAKE_PREFIX_PATH ${QTDIR} "${QTDIR}/lib")
endif()
if(CMAKE_PREFIX_PATH)
message(STATUS "CMAKE_PREFIX_PATH used: ${CMAKE_PREFIX_PATH}")
endif()
# find QT libs
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Network Sql Widgets REQUIRED)
message(STATUS "Found Qt Version: ${QT_VERSION}")
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
set(QT_MIN_VERSION "6.2.2")
else()
set(QT_MIN_VERSION "5.9.0")
endif()
if("${QT_VERSION}" VERSION_LESS "${QT_MIN_VERSION}")
message(FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}")
endif()
find_package(Qt${QT_VERSION_MAJOR} ${QT_VERSION} COMPONENTS Core Gui Network Sql Widgets REQUIRED)
message(STATUS "Qt version used: ${QT_VERSION}")
if(APPLE AND (${QT_VERSION_MAJOR} GREATER_EQUAL 6))
set(OPENSSL_ROOT_DIR /usr/local/opt/openssl)
endif()
# Add libusb and pthreads
find_package(libusb-1.0 REQUIRED)
add_definitions(${QT_DEFINITIONS})
# Add the source/lib directories
add_subdirectory(dependencies)
add_subdirectory(libsrc)
add_subdirectory(src)
if (ENABLE_TESTS)
if(ENABLE_TESTS)
add_subdirectory(test)
endif ()
endif()
# Add resources directory
add_subdirectory(resources)
# remove generated files on make cleaan too
LIST( APPEND GENERATED_QRC
${CMAKE_BINARY_DIR}/EffectEngine.qrc
list(APPEND GENERATED_QRC
${CMAKE_BINARY_DIR}/WebConfig.qrc
${CMAKE_BINARY_DIR}/HyperionConfig.h
)
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_QRC}" )
if(ENABLE_EFFECTENGINE)
list(APPEND GENERATED_QRC
${CMAKE_BINARY_DIR}/EffectEngine.qrc
)
endif()
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_QRC}")
# uninstall target
configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
# enable make package - no code after this line !

317
CMakePresets.json Normal file
View File

@ -0,0 +1,317 @@
{
"version": 8,
"configurePresets": [
{
"name": "base",
"description": "Base settings that apply to all configurations",
"hidden": true,
"binaryDir": "${sourceDir}/build"
},
{
"name": "ccache",
"description": "Set ccache variables",
"hidden": true,
"cacheVariables": {
"USE_COMPILER_CACHE": "ON"
},
"environment": {
"CCACHE_NODEBUG": "true",
"CCACHE_DIRECT": "true",
"CCACHE_MAXSIZE": "500M",
"CCACHE_COMPRESS": "true",
"CCACHE_COMPRESSLEVEL": "1",
"CCACHE_NOSTATS": "true",
"CCACHE_DIR": "${sourceDir}/.ccache"
}
},
{
"name": "buildcache",
"description": "Set buildcache variables",
"hidden": true,
"cacheVariables": {
"USE_COMPILER_CACHE": "ON"
},
"environment": {
"BUILDCACHE_DEBUG": "-1",
"BUILDCACHE_DIRECT_MODE": "true",
"BUILDCACHE_MAX_CACHE_SIZE": "524288000",
"BUILDCACHE_COMPRESS": "true",
"BUILDCACHE_COMPRESS_FORMAT": "LZ4",
"BUILDCACHE_DIR": "${sourceDir}/.buildcache"
}
},
{
"name": "hyperion-light",
"hidden": true,
"cacheVariables": {
"HYPERION_LIGHT": "ON"
}
},
{
"name": "hyperion-bare-minimum",
"hidden": true,
"cacheVariables": {
"ENABLE_AMLOGIC": "OFF",
"ENABLE_DDA": "OFF",
"ENABLE_DISPMANX": "OFF",
"ENABLE_DX": "OFF",
"ENABLE_FB": "OFF",
"ENABLE_MF": "OFF",
"ENABLE_OSX": "OFF",
"ENABLE_QT": "OFF",
"ENABLE_V4L2": "OFF",
"ENABLE_X11": "OFF",
"ENABLE_XCB": "OFF",
"ENABLE_AUDIO": "OFF",
"ENABLE_DEV_FTDI": "OFF",
"ENABLE_DEV_NETWORK": "OFF",
"ENABLE_DEV_SERIAL": "ON",
"ENABLE_DEV_SPI": "OFF",
"ENABLE_DEV_TINKERFORGE": "OFF",
"ENABLE_DEV_USB_HID": "OFF",
"ENABLE_DEV_WS281XPWM": "OFF",
"ENABLE_BOBLIGHT_SERVER": "OFF",
"ENABLE_CEC": "OFF",
"ENABLE_FLATBUF_SERVER": "OFF",
"ENABLE_PROTOBUF_SERVER": "OFF",
"ENABLE_FORWARDER": "OFF",
"ENABLE_FLATBUF_CONNECT": "OFF",
"ENABLE_EXPERIMENTAL": "OFF",
"ENABLE_MDNS": "OFF",
"ENABLE_REMOTE_CTL": "OFF",
"ENABLE_EFFECTENGINE": "OFF",
"ENABLE_JSONCHECKS": "ON",
"ENABLE_DEPLOY_DEPENDENCIES": "ON"
}
},
{
"name": "debug",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "release",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "clang",
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/clang",
"CMAKE_CXX_COMPILER": "/usr/bin/clang++"
}
},
{
"name": "msvc",
"hidden": true,
"generator": "Visual Studio 17 2022",
"architecture": "x64",
"toolset": "host=x64"
},
{
"name": "gcc",
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/gcc",
"CMAKE_CXX_COMPILER": "/usr/bin/g++"
}
},
{
"name": "macos-release",
"displayName": "MacOS (release) (clang)",
"description": "Build with Clang as Release without Debug Symbols",
"inherits": [ "base", "release", "clang" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos-release-deps",
"displayName": "MacOS Dependencies (release) (clang)",
"description": "Build Dependencies with Clang as Release without Debug Symbols",
"inherits": [ "macos-release" ],
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/${presetName}"
}
},
{
"name": "macos-debug",
"displayName": "MacOS Debug (clang)",
"description": "Build with Clang with Debug Symbols",
"inherits": [ "base", "debug", "clang" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos-debug-deps",
"displayName": "MacOS Dependencies (debug) (clang)",
"description": "Build Dependencies with Clang with Debug Symbols",
"inherits": [ "macos-debug" ],
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/${presetName}"
}
},
{
"name": "windows-release",
"displayName": "Windows Release (msvc)",
"description": "Build with MSVC's CL as Release without Debug Symbols",
"inherits": [ "base", "msvc" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows-debug",
"displayName": "Windows Debug (msvc)",
"description": "Build with MSVC's CL with Debug Symbols",
"inherits": [ "base", "msvc" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "linux-release",
"displayName": "Linux Release (gcc)",
"description": "Build with GCC as Release without Debug Symbols",
"inherits": [ "base", "release", "gcc" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
},
{
"name": "linux-debug",
"displayName": "Linux Debug (gcc)",
"description": "Build with GCC with Debug Symbols",
"inherits": [ "base", "debug", "gcc" ],
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
}
],
"buildPresets": [
{
"name": "macos-release",
"displayName": "MacOS (release) (clang)",
"description": "Build with Clang as Release without Debug Symbols",
"targets": "all",
"configurePreset": "macos-release",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos-release-deps",
"displayName": "MacOS Dependencies (release) (clang)",
"description": "Build Dependencies with Clang as Release without Debug Symbols",
"targets": "dependencies/all",
"configurePreset": "macos-release-deps",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos-debug",
"displayName": "MacOS (debug) (clang)",
"description": "Build with Clang as Debug",
"targets": "all",
"configurePreset": "macos-debug",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "macos-debug-deps",
"displayName": "MacOS Dependencies (debug) (clang)",
"description": "Build Dependencies with Clang as Debug",
"targets": "dependencies/all",
"configurePreset": "macos-debug-deps",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Darwin"
}
},
{
"name": "windows-release",
"displayName": "Windows (release) (msvc)",
"description": "Build with MSVC's CL as Release without Debug Symbols",
"configuration": "Release",
"targets": "ALL_BUILD",
"configurePreset": "windows-release",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows-debug",
"displayName": "Windows (debug) (msvc)",
"description": "Build with MSVC's CL with Debug Symbols",
"configuration": "Debug",
"targets": "ALL_BUILD",
"configurePreset": "windows-debug",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "linux-release",
"displayName": "Linux (release) (gcc)",
"description": "Build with GCC as Release without Debug Symbols",
"targets": "all",
"configurePreset": "linux-release",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
},
{
"name": "linux-debug",
"displayName": "Linux (debug) (gcc)",
"description": "Build with GCC with Debug Symbols",
"targets": "all",
"configurePreset": "linux-debug",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
}
]
}

View File

@ -3,10 +3,7 @@ You can participate in the translation.
[![Join Translation](https://img.shields.io/badge/POEditor-translate-green.svg)](https://poeditor.com/join/project/Y4F6vHRFjA)
## Development Setup
> TODO: Be more specific, provide a Visual Studio Code workspace with plugins and pre configured build tasks
Get Hyperion to compile: [Compile HowTo](CompileHowTo.md)
You may already have an editor or IDE you want to use. In any case we provide a pre configured [Visual Studio Code](#visual-studio-code) setup.
## Workflow
@ -97,13 +94,13 @@ Error( log_main, "oh to crazy, aborting");
// quick logging, when only one message exists and want no typing overhead - or usage in static functions
Info( Logger::getInstance("LedDevice"), "Leddevice %s started", "PublicStreetLighting");
// a bit mor complex - with printf like format
// a bit more complex - with printf like format
Info( log_main, "hello %s, you have %d messages", "Dax", 25);
// conditional messages
WarningIf( (value>threshold), log_main, "Alert, your value is greater then %d", threshold );
```
The amount of "%" mus match with following arguments
The amount of "%" must match with following arguments
#### The Placeholders
- %s for strings (this are cstrings, when having std::string use myStdString.c_str() to convert)
@ -113,11 +110,24 @@ The amount of "%" mus match with following arguments
#### Log Level
* Debug - used when message is more or less for the developer or for trouble shooting
* Info - used for not absolutly developer stuff messages for what's going on
* Info - used for not absolutely developer stuff messages for what's going on
* Warning - warn if something is not as it should be, but didn't harm
* Error - used when an error occurs
## Commit specification
> TODO
> TODO
## Visual Studio Code
**We assume that you successfully compiled Hyperion with the [Compile HowTo](doc/development/CompileHowto.md) WITHOUT Docker** \
If you want to use VSCode for development follow the steps.
- Install [VSCode](https://code.visualstudio.com/). On Ubuntu 16.04+ you can also use the [Snapcraft VSCode](https://snapcraft.io/code) package.
- Install gdb:
- Linux: `sudo apt-get install gdb`
- Mac: `brew install gdb`
- Open VSCode and click on _File_ -> _Open Workspace_ and select the file `hyperion.ng/.vscode/hyperion.code-workspace`
- Install recommended extensions
- If you installed the Task Explorer you can now use the defined vscode tasks to build Hyperion and configure cmake
- For debugging you need to build Hyperion in Debug mode and start the correct Run config

View File

@ -1,180 +0,0 @@
# With Docker
If you are using [Docker](https://www.docker.com/), you can compile Hyperion inside a docker container. This keeps your system clean and with a simple script it's easy to use. Supported is also cross compiling for Raspberry Pi (Debian Stretch or higher). To compile Hyperion just execute one of the following commands.
The compiled binaries and packages will be available at the deploy folder next to the script.<br/>
Note: call the script with `./docker-compile.sh -h` for more options
## Native compiling on Raspberry Pi
**Raspbian Stretch**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t rpi-raspbian-stretch
```
**Raspbian Buster**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t rpi-raspbian-buster
```
## Cross compiling on X64_86 for:
**X64:**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh
```
**i386:**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t i386
```
**Raspberry Pi v1 & ZERO**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv6hf
```
**Raspberry Pi 2 & 3**
```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv7hf
```
# The usual way
## Debian/Ubuntu/Win10LinuxSubsystem
```
sudo apt-get update
sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libqt5sql5-sqlite
```
**on RPI you need the videocore IV headers**
```
sudo apt-get install libraspberrypi-dev
```
**OSMC on Raspberry Pi**
```
sudo apt-get install rbp-userland-dev-osmc
```
**ATTENTION Win10LinuxSubsystem** we do not (/we can't) support using hyperion in linux subsystem of MS Windows 10, albeit some users tested it with success. Keep in mind to disable
all linux specific led and grabber hardware via cmake. Because we use QT as framework in hyperion, serialport leds and network driven devices could work.
## Arch
See [AUR](https://aur.archlinux.org/packages/?O=0&SeB=nd&K=hyperion&outdated=&SB=n&SO=a&PP=50&do_Search=Go) for PKGBUILDs on arch. If the PKGBUILD does not work ask questions there please.
## OSX
To install on OS X you either need Homebrew or Macport but Homebrew is the recommended way to install the packages. To use Homebrew XCode is required as well, use `brew doctor` to check your install.
First you need to install the dependencies:
```
brew install qt5
brew install python3
brew install cmake
brew install libusb
brew install doxygen
```
# Compiling and installing Hyperion
### The general quick way (without big comments)
complete automated process:
```bash
wget -qO- https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/bin/compile.sh | sh
```
some more detailed way: (or more or less the content of the script above)
be sure you fulfill the prerequisites above.
```bash
git clone --recursive https://github.com/hyperion-project/hyperion.ng.git hyperion
cd hyperion
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc)
if this get stucked and dmseg says out of memory try:
make -j 2
# optional: install into your system
sudo make install/strip
# to uninstall (not very well tested, please keep that in mind)
sudo make uninstall
# ... or run it from compile directory
bin/hyperiond
# webui is located on localhost:8090 or 8091
```
### Download
Creates hyperion directory and checkout the code from github
```
export HYPERION_DIR="hyperion"
git clone --recursive --depth 1 https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR"
```
### Preparations
Change into hyperion folder and create a build folder
```
cd "$HYPERION_DIR"
mkdir build
cd build
```
### Generate the make files:
To generate make files with automatic platform detection and default settings:
This should fit to *RPI, x86, amlogic/wetek*
```
cmake -DCMAKE_BUILD_TYPE=Release ..
```
*Developers on x86* linux should use:
```
cmake -DPLATFORM=x11-dev -DCMAKE_BUILD_TYPE=Release ..
```
To use framebuffer instead of dispmanx (for example on the *cubox-i*):
```
cmake -DENABLE_FB=ON -DCMAKE_BUILD_TYPE=Release ..
```
To generate make files on OS X:
Platform should be auto detected and refer to osx, you can also force osx:
```
cmake -DPLATFORM=osx -DCMAKE_BUILD_TYPE=Release ..
```
### Run make to build Hyperion
The `-j $(nproc)` specifies the amount of CPU cores to use.
```bash
make -j $(nproc)
```
On a mac you can use ``sysctl -n hw.ncpu`` to get the number of available CPU cores to use.
```bash
make -j $(sysctl -n hw.ncpu)
```
### Install hyperion into your system
Copy all necessary files to ``/usr/local/share/hyperion``
```bash
sudo make install/strip
```
If you want to install into another location call this before installing
```bash
cmake -DCMAKE_INSTALL_PREFIX=/home/pi/apps ..
```
This will install to ``/home/pi/apps/share/hyperion``
### Integrating hyperion into your system
... ToDo

View File

@ -1,92 +0,0 @@
# Cross-Compile Hyperion-NG
Leverage the power of a host environment (here Ubuntu) compiling for a target platform (here Raspberry Pi).
Use a clean Raspbian Stretch Lite (on target) and Ubuntu 18/19 (on host) to execute the steps outlined below.
## On the Target system (here Raspberry Pi)
Install required additional packages.
```
sudo apt-get install qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libqt5sql5-sqlite aptitude show qt5-default rsync
```
## On the Host system (here Ubuntu)
Update the Ubuntu environment to the latest stage and install required additional packages.
```
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -qq -y install git rsync cmake build-essential qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libqt5sql5-sqlite
```
Refine the target IP or hostname, plus userID as required and set-up cross-compilation environment:
```
export TARGET_IP=x.x.x.x
export TARGET_USER=pi
```
```
export CROSSROOT="$HOME/crosscompile"
export RASCROSS_DIR="$CROSSROOT/raspberrypi"
export ROOTFS_DIR="$RASCROSS_DIR/rootfs"
export TOOLCHAIN_DIR="$RASCROSS_DIR/tools"
export QT5_DIR="$CROSSROOT/Qt5"
export HYPERION_DIR="$HOME/hyperion.ng"
```
Get native files from target platform into the host-environment:
```
mkdir -p "$ROOTFS_DIR/lib"
mkdir -p "$ROOTFS_DIR/usr"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/lib "$ROOTFS_DIR"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/usr/include "$ROOTFS_DIR/usr"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/usr/lib "$ROOTFS_DIR/usr"
```
### Raspberry Pi specific steps
Get Raspberry Pi firmware:
```
mkdir -p "$RASCROSS_DIR/firmware"
git clone --depth 1 https://github.com/raspberrypi/firmware.git "$RASCROSS_DIR/firmware"
ln -s "$RASCROSS_DIR/firmware/hardfp/opt" "$ROOTFS_DIR/opt"
```
Get toolchain files which allows to build ARM executables on x86 platforms:
```
mkdir -p "$TOOLCHAIN_DIR"
cd $TOOLCHAIN_DIR
wget -c https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz --no-check-certificate
tar -xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
```
### Install the Qt5 framework
```
mkdir -p "$QT5_DIR"
cd "$QT5_DIR"
wget -c http://download.qt.io/archive/qt/5.7/5.7.1/qt-opensource-linux-x64-5.7.1.run
chmod +x $QT5_DIR/*.run
```
Display absolute installation directory to be used in Qt5 installer:
```
echo $HOME/crosscompile/Qt5
```
Start the Qt5 installation.
Follow the dialogs and install in absolute directory of ```$HOME/crosscompile/Qt5``` (copy from above)
```
./qt-opensource-linux-x64-5.7.1.run
```
### Get the Hyperion-NG source files
```
git clone --recursive https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR"
```
### Get required submodules for Hyperion
```
cd "$HYPERION_DIR"
git fetch --recurse-submodules -j2
```
### Compile Hyperion-NG
```
cd "$HYPERION_DIR"
chmod +x "$HYPERION_DIR/bin/"*.sh
./bin/create_all_releases.sh
```
### Transfer output packages to target platform and install Hyperion-NG
Output packages for target platform (.deb, .tar.gz, .sh) can be found here:
```
$HYPERION_DIR/deploy/rpi
```
# Install Hyperion-NG on target platform
t.b.d.

View File

@ -1,41 +1,99 @@
// Generated config file
// Define to enable the dispmanx grabber
#cmakedefine ENABLE_DISPMANX
// Define to enable the v4l2 grabber
#cmakedefine ENABLE_V4L2
// Define to enable the framebuffer grabber
#cmakedefine ENABLE_FB
// Define to enable the amlogic grabber
// Define to enable the AMLogic grabber
#cmakedefine ENABLE_AMLOGIC
// Define to enable the osx grabber
// Define to enable the DispmanX grabber
#cmakedefine ENABLE_DISPMANX
// Define to enable the DirectX grabber
#cmakedefine ENABLE_DX
// Define to enable the DXGI DDA (Desktop Duplication API) grabber
#cmakedefine ENABLE_DDA
// Define to enable the framebuffer grabber
// Define to enable the Audio grabber
#cmakedefine ENABLE_AUDIO
// Define to enable the Framebuffer grabber
#cmakedefine ENABLE_FB
// Define to enable the Media Foundation grabber
#cmakedefine ENABLE_MF
// Define to enable the OSX grabber
#cmakedefine ENABLE_OSX
// Define to enable the x11 grabber
#cmakedefine ENABLE_X11
// Define to enable the qt grabber
// Define to enable the Qt grabber
#cmakedefine ENABLE_QT
// Define to enable the spi-device
#cmakedefine ENABLE_SPIDEV
// Define to enable the V4L2 grabber
#cmakedefine ENABLE_V4L2
// Define to enable the ws281x-pwm-via-dma-device using jgarff's library
#cmakedefine ENABLE_WS281XPWM
// Define to enable the X11 grabber
#cmakedefine ENABLE_X11
// Define to enable the tinkerforge device
#cmakedefine ENABLE_TINKERFORGE
// Define to enable the XCB grabber
#cmakedefine ENABLE_XCB
// Define to enable the usb / hid devices
#cmakedefine ENABLE_USB_HID
// Define to enable boblight server
#cmakedefine ENABLE_BOBLIGHT_SERVER
// Define to enable CEC
#cmakedefine ENABLE_CEC
// Define to enable flatbuffer server
#cmakedefine ENABLE_FLATBUF_SERVER
// Define to enable protocol buffer server
#cmakedefine ENABLE_PROTOBUF_SERVER
// Define to enable hyperion forwarding
#cmakedefine ENABLE_FORWARDER
// Define to enable enable flatbuffer connect
#cmakedefine ENABLE_FLATBUF_CONNECT
// Define to enable protocol buffer connect
#cmakedefine ENABLE_PROTOBUF_CONNECT
// Define to enable the network devices
#cmakedefine ENABLE_DEV_NETWORK
// Define to enable the Serial devices
#cmakedefine ENABLE_DEV_SERIAL
// Define to enable the SPI devices
#cmakedefine ENABLE_DEV_SPI
// Define to enable the Tinkerforge devices
#cmakedefine ENABLE_DEV_TINKERFORGE
// Define to enable the USB / HID devices
#cmakedefine ENABLE_DEV_USB_HID
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
#cmakedefine ENABLE_DEV_WS281XPWM
// Define to enable MDNS
#cmakedefine ENABLE_MDNS
// Define to enable EFFECTENGINE
#cmakedefine ENABLE_EFFECTENGINE
// Define to enable experimental features
#cmakedefine ENABLE_EXPERIMENTAL
// Define to enable Hyperion remote control
#cmakedefine ENABLE_REMOTE_CTL
// Define to enable profiler for development purpose
#cmakedefine ENABLE_PROFILER
// Define to enable deploy dependencies to packages
#cmakedefine ENABLE_DEPLOY_DEPENDENCIES
// the hyperion build id string
#define HYPERION_BUILD_ID "${HYPERION_BUILD_ID}"
#define HYPERION_GIT_REMOTE "${HYPERION_GIT_REMOTE}"

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2014 hyperion team
Copyright (c) 2014-2024 Hyperion Project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

46
PRIVACY.md Normal file
View File

@ -0,0 +1,46 @@
# Privacy Policy
Hyperion-Project takes your privacy seriously. To better protect your privacy we provide this privacy policy notice
explaining the way your personal or technical information is collected and used.
## Collection of Routine Information
This application does not collect or transmit any user's personally identifiable information.
No personal information is used, stored, secured or disclosed by services this application works with.
Limited technical information is sent (such as IP addresses included in the HTTP/S calls the application makes) but none of that is used or stored.
## Cookies
Where necessary, this app uses cookies to store information about a visitors preferences and history
in order to better serve the user and/or present the user with customized content.
## Links to Third Party Websites
We have included links on this app for your use and reference. We are not responsible for the privacy policies on these websites.
You should be aware that the privacy policies of these websites may differ from our own.
## Security
The security of your personal information is important to us. That is the reason we do not collect any information,
but remember that no method of transmission over the Internet, or method of electronic storage,
is 100% secure. While we strive to use commercially acceptable means to protect your personal information,
we cannot guarantee its absolute security.
## Changes To This Privacy Policy
This Privacy Policy is effective as of February 2022 and will remain in effect except with respect to any changes in its provisions in the future,
which will be in effect immediately after being posted on this page.
We reserve the right to update or change our Privacy Policy at any time and you should check this Privacy Policy periodically.
If we make any material changes to this Privacy Policy, we will notify you by placing a prominent notice on our app.
## Contact Information
For any questions or concerns regarding the privacy policy, please open up an issue on our GitHub
https://github.com/hyperion-project/hyperion.ng

View File

@ -1,15 +1,21 @@
![Hyperion](https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/assets/webconfig/img/hyperion/hyperionlogo.png)
<picture>
<source media="(prefers-color-scheme: dark)" srcset="doc/logo_dark.png">
<source media="(prefers-color-scheme: light)" srcset="doc/logo_light.png">
<img alt="Hyperion" src="doc/logo_light.png">
</picture>
[![Dependencies](https://img.shields.io/librariesio/github/hyperion-project/hyperion.ng.svg)](https://github.com/hyperion-project/hyperion.ng/tree/master/dependencies/external)
[![Azure-Pipeline](https://dev.azure.com/Hyperion-Project/Hyperion.NG/_apis/build/status/Hyperion.NG?branchName=master)](https://dev.azure.com/Hyperion-Project/Hyperion.NG/_build/latest?definitionId=7&branchName=master)
[![Travis-CI](https://travis-ci.org/hyperion-project/hyperion.ng.svg?branch=master)](https://travis-ci.org/hyperion-project/hyperion.ng)
[![GitHub Actions](https://github.com/hyperion-project/hyperion.ng/workflows/GitHub%20Actions/badge.svg)](https://github.com/hyperion-project/hyperion.ng/actions)
[![LGTM](https://img.shields.io/lgtm/alerts/g/hyperion-project/hyperion.ng.svg)](https://lgtm.com/projects/g/hyperion-project/hyperion.ng/alerts/)
[![Documentation](https://codedocs.xyz/hyperion-project/hyperion.ng.svg)](https://codedocs.xyz/hyperion-project/hyperion.ng/)
[![Latest-Release](https://img.shields.io/github/v/release/hyperion-project/hyperion.ng?include_prereleases&label=Latest%20Release&logo=github&logoColor=white&color=0f83e7)](https://github.com/hyperion-project/hyperion.ng/releases)
[![GitHub Actions](https://github.com/hyperion-project/hyperion.ng/actions/workflows/push_pull.yml/badge.svg)](https://github.com/hyperion-project/hyperion.ng/actions)
[![CodeQL Analysis](https://github.com/hyperion-project/hyperion.ng/actions/workflows/codeql.yml/badge.svg)](https://github.com/hyperion-project/hyperion.ng/actions/workflows/codeql.yml)
[![Forum](https://img.shields.io/website/https/hyperion-project.org.svg?label=Forum&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=homeadvisor&logoColor=white)](https://www.hyperion-project.org)
[![Documentation](https://img.shields.io/website/https/docs.hyperion-project.org.svg?label=Documentation&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=read-the-docs)](https://docs.hyperion-project.org)
[![Discord](https://img.shields.io/discord/785578322167463937?label=Discord&logo=discord&logoColor=white&color=4bc51d)](https://discord.gg/XtVTb3HEKS)
[![Package-Repository](https://img.shields.io/badge/Package%20Repository-online-4bc51d?logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMTZweCIgaGVpZ2h0PSIxMjNweCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij48cGF0aCBkPSJNNTUuNzYsNzcuMzlMMTcuMTUsNTcuMTNMNy4xOCw2OUMyMS4xOCw3Ni4zOCAzNC4wOCw4My4zNSA0OC4wNCw5MC43M0w1NS43Niw3Ny40NEw1NS43Niw3Ny4zOVpNNjguNDMsMEw2OC40MywyMS40NEw3OC40MywyMS40NEM3OS44MjQsMjEuMzYyIDgxLjE2NywyMS45OSA4MiwyMy4xMUM4My44NiwyNS45MSA4MS4zMSwyOC42OCA3OS41NSwzMC42MkM3NC41NSwzNi4xMyA2My4xOSw0OC40MiA2MC43MSw1MS4zMkM1OS45MzUsNTIuMzAyIDU4Ljc1MSw1Mi44NzUgNTcuNSw1Mi44NzVDNTYuMjQ5LDUyLjg3NSA1NS4wNjUsNTIuMzAyIDU0LjI5LDUxLjMyQzUxLjczLDQ4LjMyIDM5Ljc0LDM1LjQ2IDM0Ljk3LDMwLjA5QzMzLjMyLDI4LjIzIDMxLjI3LDI1LjY5IDMyLjk3LDIzLjA5QzMzLjgwMSwyMS45NzMgMzUuMTQsMjEuMzQ1IDM2LjUzLDIxLjQyTDQ2LjUzLDIxLjQyTDQ2LjUzLDBMNjguNDMsMFpNMzUuNDMsNDYuMzRMMTkuNzcsNTQuMTJMNTguMjYsNzQuMzVMOTYuODIsNTQuMDhMODAuMjgsNDUuNDhMODIuOTgsNDIuNDhMOTcuOTgsNTAuMjJMMTA4Ljg1LDQwTDkyLjM2LDMxQzkyLjk5NCwyOS43NDUgOTMuNDEzLDI4LjM5MyA5My42LDI3TDExNC4yMywzNy45QzExNC4zNjUsMzcuOTcyIDExNC40ODcsMzguMDY3IDExNC41OSwzOC4xOEMxMTQuODY2LDM4LjQ1NiAxMTUuMDIxLDM4LjgzIDExNS4wMjEsMzkuMjJDMTE1LjAyMSwzOS42MSAxMTQuODY2LDM5Ljk4NCAxMTQuNTksNDAuMjZMMTAxLjM0LDUzLjI2TDExNC4xNyw2OC42MkMxMTQuNjksNjkuMjQ0IDExNC42MDksNzAuMTg0IDExMy45OSw3MC43MUMxMTMuODk1LDcwLjc4IDExMy43OTQsNzAuODQ0IDExMy42OSw3MC45TDEwMi4xNCw3N0wxMDIuMTQsOTkuODhDMTAyLjEzOSwxMDAuNDc3IDEwMS43OCwxMDEuMDE4IDEwMS4yMywxMDEuMjVMNTkuNTcsMTIyLjM5QzU5LjI5LDEyMi43IDU4Ljg5MSwxMjIuODc3IDU4LjQ3MywxMjIuODc3QzU3LjkxNCwxMjIuODc3IDU3LjQwMSwxMjIuNTYgNTcuMTUsMTIyLjA2TDE1LjQxLDEwMS4yQzE0LjkxNCwxMDAuOTQ4IDE0LjYsMTAwLjQzNyAxNC42LDk5Ljg4TDE0LjYsNzcuMTZMMi44NSw3MUMyLjc0Niw3MC45NDQgMi42NDUsNzAuODggMi41NSw3MC44MUMxLjkzMSw3MC4yODQgMS44NSw2OS4zNDQgMi4zNyw2OC43MkwxNC44Nyw1My43MkwwLjM2LDQwQzAuMTE3LDM5LjcyNyAtMC4wMTcsMzkuMzc0IC0wLjAxNywzOS4wMDlDLTAuMDE3LDM4LjU3NSAwLjE3MiwzOC4xNjMgMC41LDM3Ljg4QzAuNTksMzcuODA4IDAuNjg3LDM3Ljc0NCAwLjc5LDM3LjY5TDIxLjczLDI1Ljg0QzIxLjgyNywyNy4yODcgMjIuMTM0LDI4LjcxMSAyMi42NCwzMC4wN0w1LjY5LDM5LjcxTDE3LjUyLDUwLjcxTDMyLjYxLDQzLjI0TDM1LjQ2LDQ2LjM1TDM1LjQzLDQ2LjM0Wk05OS41OSw1Ny4yOEw2MS4wNSw3Ny41TDY4LjU2LDkwLjgyTDEwOS4xMSw2OC44Mkw5OS41OSw1Ny4yOFoiIHN0eWxlPSJmaWxsOndoaXRlO2ZpbGwtcnVsZTpub256ZXJvOyIvPjwvc3ZnPg==)](https://releases.hyperion-project.org)
![made-with-love](https://img.shields.io/badge/Made%20With-&#9829;-ff0000.svg)
## About Hyperion
[Hyperion](https://github.com/hyperion-project/hyperion.ng) is an opensource [Bias or Ambient Lighting](https://en.wikipedia.org/wiki/Bias_lighting) implementation which you might know from TV manufacturers. It supports many LED devices and video grabbers. The project is still in a beta development stage (no stable release available).
[Hyperion](https://github.com/hyperion-project/hyperion.ng) is an opensource [Bias or Ambient Lighting](https://en.wikipedia.org/wiki/Bias_lighting) implementation which you might know from TV manufacturers. It supports many LED devices and video grabbers.
![Screenshot](doc/screenshot.png)
@ -18,34 +24,55 @@
* Low CPU load makes it perfect for SoCs like Raspberry Pi
* Json interface which allows easy integration into scripts
* A command line utility for testing and integration in automated environment
* Priority channels are not coupled to a specific led data provider which means that a provider can post led data and leave without the need to maintain a connection to Hyperion. This is ideal for a remote application (like our [Android app](https://play.google.com/store/apps/details?id=nl.hyperion.hyperionpro)).
* Priority channels are not coupled to a specific led data provider which means that a provider can post led data and leave without the need to maintain a connection to Hyperion. This is ideal for a remote application (like our former [Android app](https://play.google.com/store/apps/details?id=nl.hyperion.hyperionpro), which is no longer available).
* Black border detector and processor
* A scriptable (Python) effect engine
* A scriptable (Python) effect engine with 39 build-in effects for your inspiration
* A multi language web interface to configure and remote control hyperion
If you need further support please open a topic at the forum!
[![Hyperion webpage/forum](https://img.shields.io/website/https/hyperion-project.org.svg?down_color=red&down_message=offline&up_color=green&up_message=online)](https://www.hyperion-project.org)
### Supported Hardware
## Contributing
You can find a list of supported hardware [here](https://docs.hyperion-project.org/user/leddevices/Overview.html).
Contributions are welcome! Feel free to join us! We are looking always for people who wants to participate.
[![Contributors](https://img.shields.io/github/contributors/hyperion-project/hyperion.ng.svg)](https://github.com/hyperion-project/hyperion.ng/graphs/contributors)
If you need further support please open a topic at the forum!<br>
[![Forum](https://img.shields.io/website/https/hyperion-project.org.svg?label=Forum&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=homeadvisor&logoColor=white)](https://www.hyperion-project.org)
For an example, you can participate in the translation.
[![Join Translation](https://img.shields.io/badge/POEditor-translate-green.svg)](https://poeditor.com/join/project/Y4F6vHRFjA)
## Contributing
## Requirements
Debian 9, Ubuntu 16.04 or higher. Windows is not supported currently.
Contributions are welcome! Feel free to join us! We are looking always for people who wants to participate.<br>
[![Contributors](https://img.shields.io/github/contributors/hyperion-project/hyperion.ng.svg?label=Contributors&logo=github&logoColor=white)](https://github.com/hyperion-project/hyperion.ng/graphs/contributors)
We provide a macOS Build but we can not support this.
For an example, you can participate in the translation.<br>
[![Join Translation](https://img.shields.io/badge/POEditor-4bc51d.svg?label=Join%20Translation)](https://poeditor.com/join/project/Y4F6vHRFjA)
## Supported Platforms
Find here more details on [supported platforms and configuration sets](doc/development/SupportedPlatforms.md).
## Documentation
Covers these topics:
- [Getting Started and Installation](https://docs.hyperion-project.org/user/GettingStarted.html)
- [Configuration](https://docs.hyperion-project.org/user/Configuration.html)
- [Effect development](https://docs.hyperion-project.org/effects/Effects.html)
- [JSON API](https://docs.hyperion-project.org/json/JSON.html)
[![Visit Documentation](https://img.shields.io/website/https/docs.hyperion-project.org.svg?label=Documentation&down_color=red&down_message=offline&up_color=4bc51d&up_message=online&logo=read-the-docs)](https://docs.hyperion-project.org)
## Changelog
Released and unreleased changes at [CHANGELOG.md](CHANGELOG.md).
## Building
See [CompileHowto](CompileHowto.md) and [CrossCompileHowto](CrossCompileHowto.md).
See [CompileHowto.md](doc/development/CompileHowto.md).
## Installation
See [Getting Started](https://docs.hyperion-project.org/user/GettingStarted.html) or on the [Release Repository](https://releases.hyperion-project.org).
## Download
**Please be patient. The first release is coming soon.**
GitHub Releases are available on the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases).
## Privacy Policy
See [PRIVACY.md](PRIVACY.md).
## License
The source is released under MIT-License (see http://opensource.org/licenses/MIT).
The source is released under MIT-License (see https://opensource.org/licenses/MIT).<br>
[![GitHub license](https://img.shields.io/badge/License-MIT-yellow.svg)](https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/LICENSE)

View File

@ -0,0 +1,655 @@
#include <NeoPixelBus.h>
////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// CONFIG SECTION STARTS /////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
#define THIS_IS_RGBW // RGBW SK6812, otherwise comment it
#define COLD_WHITE // for RGBW (THIS_IS_RGBW enabled) select COLD version, comment it if NEUTRAL
const bool skipFirstLed = false; // if set the first led in the strip will be set to black (for level shifters using sacrifice LED)
const int serialSpeed = 2000000; // serial port speed
#define DATA_PIN 2 // PIN: data output for LED strip
const bool reportStats = false; // Send back processing statistics
const int reportStatInterval_s = 10; // Send back processing every interval in seconds
/* Statistics breakdown:
FPS: Updates to the LEDs per second
F-FPS: Frames identified per second
S: Shown (Done) updates to the LEDs per given interval
F: Frames identified per interval (garbled grames cannot be counted)
G: Good frames identified per interval
B: Total bad frames of all types identified per interval
BF: Bad frames identified per interval
BS: Skipped incomplete frames
BC: Frames failing CRC check per interval
BFL Frames failing Fletcher content validation per interval
*/
//Developer configs
#define ENABLE_STRIP
#define ENABLE_CHECK_FLETCHER
const int SERIAL_SIZE_RX = 4096;
#ifndef ENABLE_STRIP
const int serial2Speed = 460800;
const bool reportInput = false;
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// CONFIG SECTION ENDS /////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
const String version = "8.0";
#ifdef THIS_IS_RGBW
float whiteLimit = 1.0f;
#ifdef COLD_WHITE
uint8_t rCorrection = 0xA0; // adjust red -> white in 0-0xFF range
uint8_t gCorrection = 0xA0; // adjust green -> white in 0-0xFF range
uint8_t bCorrection = 0xA0; // adjust blue -> white in 0-0xFF range
#else
uint8_t rCorrection = 0xB0; // adjust red -> white in 0-0xFF range
uint8_t gCorrection = 0xB0; // adjust green -> white in 0-0xFF range
uint8_t bCorrection = 0x70; // adjust blue -> white in 0-0xFF range
#endif
#endif
int ledCount = 0; // This is dynamic, don't change it
int pixelCount = 0; // This is dynamic, don't change it
#ifdef THIS_IS_RGBW
#define LED_TYPE NeoGrbwFeature
#if defined(ARDUINO_LOLIN_S2_MINI)
#define LED_METHOD NeoEsp32I2s0Sk6812Method
#else
#define LED_METHOD NeoEsp32I2s1Sk6812Method
#endif
#else
#define LED_TYPE NeoGrbFeature
#if defined(ARDUINO_LOLIN_S2_MINI)
#define LED_METHOD NeoEsp32I2s0Ws2812xMethod
#else
#define LED_METHOD NeoEsp32I2s1Ws2812xMethod
#endif
#endif
#define LED_DRIVER NeoPixelBus<LED_TYPE, LED_METHOD>
uint8_t* ledBuffer;
int ledBufferSize;
#ifdef ENABLE_STRIP
LED_DRIVER* strip = NULL;
#endif
enum class AwaProtocol
{
HEADER_A,
HEADER_w,
HEADER_a,
HEADER_HI,
HEADER_LO,
HEADER_CRC,
CHANNELCALIB_GAIN,
CHANNELCALIB_RED,
CHANNELCALIB_GREEN,
CHANNELCALIB_BLUE,
PIXEL,
FLETCHER1,
FLETCHER2,
FLETCHER_EXT
};
AwaProtocol state = AwaProtocol::HEADER_A;
const int headerSize = 6;
const int trailerSize = 3;
const int calibInfoSize = 4;
int bytesRead = 0;
bool isVersion2 = false;
bool isChannelCalib = false;
uint8_t CRC = 0;
int count = 0;
int currentPixel = 0;
uint16_t fletcher1 = 0;
uint16_t fletcher2 = 0;
uint16_t fletcherExt = 0;
#ifdef THIS_IS_RGBW
RgbwColor inputColor;
uint8_t wChannel[256];
uint8_t rChannel[256];
uint8_t gChannel[256];
uint8_t bChannel[256];
#else
RgbColor inputColor;
#endif
bool ledsComplete = false;
// statistics
const int reportStatInterval_ms = reportStatInterval_s * 1000;
unsigned long curTime;
unsigned long stat_start = 0;
uint16_t stat_shown = 0;
uint16_t stat_frames = 0;
uint16_t stat_good = 0;
uint16_t stat_bad = 0;
uint16_t stat_bad_frame = 0;
uint16_t stat_bad_skip = 0;
uint16_t stat_bad_crc = 0;
uint16_t stat_bad_fletcher = 0;
uint16_t stat_final_shown = 0;
uint16_t stat_final_frames = 0;
uint16_t stat_final_good = 0;
uint16_t stat_final_bad = 0;
uint16_t stat_final_bad_frame = 0;
uint16_t stat_final_bad_skip = 0;
uint16_t stat_final_bad_crc = 0;
uint16_t stat_final_bad_fletcher = 0;
//Debugging
String inputString;
String inputErrorString;
String debugString;
void printStringHex(String string)
{
#ifndef ENABLE_STRIP
Serial2.println(string.length());
for (int i = 0; i < string.length(); ++i)
{
if (i % 36 == 0)
{
Serial2.println();
Serial2.print("[");
Serial2.print(i);
Serial2.print("] ");
}
if (string[i] < 16)
Serial2.print("0");
Serial2.print(string[i], HEX);
Serial2.print(":");
}
#endif
}
inline void showMe()
{
#ifdef ENABLE_STRIP
if (strip != NULL && strip->CanShow())
{
stat_shown++;
strip->Show();
}
#endif
}
// statistics
inline void showStats()
{
if (reportStats)
{
if (stat_frames > 0)
{
stat_final_shown = stat_shown;
stat_final_frames = stat_frames;
stat_final_good = stat_good;
stat_final_bad = stat_bad;
stat_final_bad_frame = stat_bad_frame;
stat_final_bad_skip = stat_bad_skip;
stat_final_bad_crc = stat_bad_crc;
stat_final_bad_fletcher = stat_bad_fletcher;
}
stat_start = curTime;
stat_shown = 0;
stat_frames = 0;
stat_good = 0;
stat_bad = 0;
stat_bad_frame = 0;
stat_bad_skip = 0;
stat_bad_crc = 0;
stat_bad_fletcher = 0;
String summary = String("FPS: ") + (stat_final_shown / reportStatInterval_s) +
" F-FPS: " + (stat_final_frames / reportStatInterval_s) +
" S: " + stat_final_shown +
" F: " + stat_final_frames +
" G: " + stat_final_good +
" B: " + stat_final_bad +
" (BF: " + stat_final_bad_frame +
" BS: " + stat_final_bad_skip +
" BC: " + stat_final_bad_crc +
" BFL: " + stat_final_bad_fletcher +
")";
#ifdef ENABLE_STRIP
Serial.println(summary);
#else
Serial2.println(summary);
#endif
}
}
void InitLeds(uint16_t ledCount, int pixelCount, bool channelCalibration = false)
{
if (ledBuffer != NULL)
delete ledBuffer;
ledBufferSize = pixelCount + (channelCalibration ? calibInfoSize : 0);
ledBuffer = new uint8_t[ledBufferSize];
#ifdef ENABLE_STRIP
if (strip != NULL)
delete strip;
strip = new LED_DRIVER(ledCount, DATA_PIN);
strip->Begin();
#endif
}
inline void processSerialData()
{
while (Serial.available()) {
char input = Serial.read();
++bytesRead;
#ifndef ENABLE_STRIP
if (reportInput)
inputString += input;
#endif
switch (state)
{
case AwaProtocol::HEADER_A:
if (input == 'A')
{
state = AwaProtocol::HEADER_w;
}
break;
case AwaProtocol::HEADER_w:
if (input == 'w')
state = AwaProtocol::HEADER_a;
else
{
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::HEADER_a:
if (input == 'a')
{
isVersion2 = false;
state = AwaProtocol::HEADER_HI;
}
else if (input == 'A')
{
state = AwaProtocol::HEADER_HI;
isVersion2 = true;
}
else
{
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::HEADER_HI:
stat_frames++;
count = input << 8;
CRC = input;
fletcher1 = 0;
fletcher2 = 0;
fletcherExt = 0;
state = AwaProtocol::HEADER_LO;
break;
case AwaProtocol::HEADER_LO:
count += input + 1;
if (ledCount != count || isChannelCalib != isVersion2)
{
ledCount = count;
isChannelCalib = isVersion2;
pixelCount = ledCount * 3;
if (isChannelCalib)
prepareCalibration();
InitLeds(ledCount, pixelCount, isChannelCalib);
}
CRC = CRC ^ input ^ 0x55;
state = AwaProtocol::HEADER_CRC;
break;
case AwaProtocol::HEADER_CRC:
// Check, if incomplete package information was skipped, set bytesread to headersize and skip wrong input
if (bytesRead != headerSize)
{
stat_bad_skip++;
bytesRead = headerSize;
}
currentPixel = 0;
if (CRC == input)
{
state = AwaProtocol::PIXEL;
}
else
{
// CRC failure
stat_bad++;
stat_bad_crc++;
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::PIXEL:
ledBuffer[currentPixel++] = input;
if (currentPixel == pixelCount)
{
if (isChannelCalib)
state = AwaProtocol::CHANNELCALIB_GAIN;
else
state = AwaProtocol::FLETCHER1;
}
break;
case AwaProtocol::CHANNELCALIB_GAIN:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_RED;
break;
case AwaProtocol::CHANNELCALIB_RED:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_GREEN;
break;
case AwaProtocol::CHANNELCALIB_GREEN:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_BLUE;
break;
case AwaProtocol::CHANNELCALIB_BLUE:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::FLETCHER1;
break;
case AwaProtocol::FLETCHER1:
fletcher1 = input;
state = AwaProtocol::FLETCHER2;
break;
case AwaProtocol::FLETCHER2:
fletcher2 = input;
state = AwaProtocol::FLETCHER_EXT;
break;
case AwaProtocol::FLETCHER_EXT:
fletcherExt = input;
ledsComplete = true;
state = AwaProtocol::HEADER_A;
break;
}
}
}
void setup()
{
// Init serial port
int bufSize = Serial.setRxBufferSize(SERIAL_SIZE_RX);
Serial.begin(serialSpeed);
Serial.setTimeout(50);
#ifndef ENABLE_STRIP
Serial2.begin(serial2Speed);
Serial2.println();
Serial2.println("Welcome!");
Serial2.println("Hyperion Awa driver " + version);
Serial2.println("!!! Debug Output !!!");
#endif
// Display config
Serial.println();
Serial.println("Welcome!");
Serial.println("Hyperion Awa driver " + version);
Serial.print("(Build: ");
Serial.print(__DATE__);
Serial.print(" ");
Serial.print(__TIME__);
Serial.println(")");
// first LED info
if (skipFirstLed)
Serial.println("First LED: disabled");
else
Serial.println("First LED: enabled");
// RGBW claibration info
#ifdef THIS_IS_RGBW
#ifdef COLD_WHITE
Serial.println("Default color mode: RGBW cold");
#else
Serial.println("Default color mode: RGBW neutral");
#endif
prepareCalibration();
#else
Serial.println("Color mode: RGB");
#endif
InitLeds(ledCount, pixelCount);
}
void prepareCalibration()
{
#ifdef THIS_IS_RGBW
// prepare LUT calibration table, cold white is much better than "neutral" white
for (uint32_t i = 0; i < 256; i++)
{
// color calibration
float red = rCorrection * i; // adjust red
float green = gCorrection * i; // adjust green
float blue = bCorrection * i; // adjust blue
wChannel[i] = (uint8_t)round(min(whiteLimit * i, 255.0f));
rChannel[i] = (uint8_t)round(min(red / 0xFF, 255.0f));
gChannel[i] = (uint8_t)round(min(green / 0xFF, 255.0f));
bChannel[i] = (uint8_t)round(min(blue / 0xFF, 255.0f));
}
Serial.write("RGBW calibration. White limit(%): ");
Serial.print(whiteLimit * 100.0f);
Serial.write(" %, red: ");
Serial.print(rCorrection);
Serial.write(" , green: ");
Serial.print(gCorrection);
Serial.write(" , blue: ");
Serial.print(bCorrection);
Serial.println();
#endif
}
void loop()
{
curTime = millis();
#ifdef __AVR__
// nothing , USART Interrupt is implemented
ESPserialEvent();
#else
// ESP8266 polling
ESPserialEvent();
#endif
if (ledsComplete)
{
#ifndef ENABLE_STRIP
if (reportInput)
{
Serial2.println();
Serial2.print("<input> L: ");
printStringHex(inputString);
Serial2.println("<\input>");
inputString = "";
Serial2.print("bytesRead: ");
Serial2.print(bytesRead);
Serial2.print(" , currentPixel: ");
Serial2.print(currentPixel);
Serial2.print(" ,pixelCount: ");
Serial2.print(pixelCount);
Serial2.println();
}
#endif
int frameSize = headerSize + ledBufferSize + trailerSize;
if (bytesRead > frameSize)
{
//Add number of frames ignored on top of frame
int frames = bytesRead / frameSize;
stat_frames += frames;
//Count frame plus frames ignored as bad frames
int badFrames = frames + 1;
stat_bad += badFrames;
stat_bad_frame += badFrames;
}
else
{
#ifdef ENABLE_CHECK_FLETCHER
//Test if content is valid
uint16_t item = 0;
uint16_t fletch1 = 0;
uint16_t fletch2 = 0;
uint16_t fletchExt = 0;
while (item < ledBufferSize)
{
fletch1 = (fletch1 + (uint16_t)ledBuffer[item]) % 255;
fletch2 = (fletch2 + fletch1) % 255;
fletcherExt = (fletcherExt + ((uint16_t)ledBuffer[item] ^ (item))) % 255;
++item;
}
if ((fletch1 == fletcher1) && (fletch2 == fletcher2) && (ledBuffer[item-1] == (fletcherExt != 0x41) ? fletcherExt : 0xaa))
{
#endif
stat_good++;
uint16_t startLed = 0;
if (skipFirstLed)
{
#ifdef ENABLE_STRIP
#ifdef THIS_IS_RGBW
strip->SetPixelColor(startLed, RgbwColor(0, 0, 0, 0));
#else
strip->SetPixelColor(startLed, RgbColor(0, 0, 0));
#endif
#endif
startLed = 1;
}
for (uint16_t led = startLed; led < ledCount; ++led)
{
inputColor.R = ledBuffer[led * 3];
inputColor.G = ledBuffer[led * 3 + 1];
inputColor.B = ledBuffer[led * 3 + 2];
#ifdef THIS_IS_RGBW
inputColor.W = min(rChannel[inputColor.R],
min(gChannel[inputColor.G],
bChannel[inputColor.B]));
inputColor.R -= rChannel[inputColor.W];
inputColor.G -= gChannel[inputColor.W];
inputColor.B -= bChannel[inputColor.W];
inputColor.W = wChannel[inputColor.W];
#endif
#ifdef ENABLE_STRIP
strip->SetPixelColor(led, inputColor);
#endif
}
showMe();
yield();
#ifdef THIS_IS_RGBW
if (isChannelCalib)
{
uint8_t incoming_gain = ledBuffer[pixelCount];
uint8_t incoming_red = ledBuffer[pixelCount + 1];
uint8_t incoming_green = ledBuffer[pixelCount + 2];
uint8_t incoming_blue = ledBuffer[pixelCount + 3];
float final_limit = (incoming_gain != 255) ? incoming_gain / 255.0f : 1.0f;
if (rCorrection != incoming_red || gCorrection != incoming_green || bCorrection != incoming_blue || whiteLimit != final_limit)
{
rCorrection = incoming_red;
gCorrection = incoming_green;
bCorrection = incoming_blue;
whiteLimit = final_limit;
prepareCalibration();
}
}
#endif
#ifdef ENABLE_CHECK_FLETCHER
}
else
{
stat_bad++;
stat_bad_fletcher++;
}
#endif
}
bytesRead = 0;
state = AwaProtocol::HEADER_A;
ledsComplete = false;
}
if ((curTime - stat_start > reportStatInterval_ms))
{
if (stat_frames > 0)
{
showStats();
}
}
}
#ifdef __AVR__
void serialEvent()
{
processSerialData();
}
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
void ESPserialEvent()
{
processSerialData();
}
#endif

View File

@ -0,0 +1,646 @@
#include <NeoPixelBus.h>
////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// CONFIG SECTION STARTS /////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
#define THIS_IS_RGBW // RGBW SK6812, otherwise comment it
#define COLD_WHITE // for RGBW (THIS_IS_RGBW enabled) select COLD version, comment it if NEUTRAL
const bool skipFirstLed = false; // if set the first led in the strip will be set to black (for level shifters using sacrifice LED)
const int serialSpeed = 2000000; // serial port speed
const bool reportStats = false; // Send back processing statistics
const int reportStatInterval_s = 10; // Send back processing every interval in seconds
/* Statistics breakdown:
FPS: Updates to the LEDs per second
F-FPS: Frames identified per second
S: Shown (Done) updates to the LEDs per given interval
F: Frames identified per interval (garbled grames cannot be counted)
G: Good frames identified per interval
B: Total bad frames of all types identified per interval
BF: Bad frames identified per interval
BS: Skipped incomplete frames
BC: Frames failing CRC check per interval
BFL Frames failing Fletcher content validation per interval
*/
//Developer configs
#define ENABLE_STRIP
#define ENABLE_CHECK_FLETCHER
const int SERIAL_SIZE_RX = 4096;
#ifndef ENABLE_STRIP
const int serial2Speed = 460800;
const bool reportInput = false;
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// CONFIG SECTION ENDS /////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
const String version = "8.0";
#ifdef THIS_IS_RGBW
float whiteLimit = 1.0f;
#ifdef COLD_WHITE
uint8_t rCorrection = 0xA0; // adjust red -> white in 0-0xFF range
uint8_t gCorrection = 0xA0; // adjust green -> white in 0-0xFF range
uint8_t bCorrection = 0xA0; // adjust blue -> white in 0-0xFF range
#else
uint8_t rCorrection = 0xB0; // adjust red -> white in 0-0xFF range
uint8_t gCorrection = 0xB0; // adjust green -> white in 0-0xFF range
uint8_t bCorrection = 0x70; // adjust blue -> white in 0-0xFF range
#endif
#endif
int ledCount = 0; // This is dynamic, don't change it
int pixelCount = 0; // This is dynamic, don't change it
#ifdef THIS_IS_RGBW
#define LED_TYPE NeoGrbwFeature
#define LED_METHOD NeoEsp8266Uart1Sk6812Method
#else
#define LED_TYPE NeoGrbFeature
#define LED_METHOD NeoEsp8266Uart1Ws2812xMethod
#endif
#define LED_DRIVER NeoPixelBus<LED_TYPE, LED_METHOD>
uint8_t* ledBuffer;
int ledBufferSize;
#ifdef ENABLE_STRIP
LED_DRIVER* strip = NULL;
#endif
enum class AwaProtocol
{
HEADER_A,
HEADER_w,
HEADER_a,
HEADER_HI,
HEADER_LO,
HEADER_CRC,
CHANNELCALIB_GAIN,
CHANNELCALIB_RED,
CHANNELCALIB_GREEN,
CHANNELCALIB_BLUE,
PIXEL,
FLETCHER1,
FLETCHER2,
FLETCHER_EXT
};
AwaProtocol state = AwaProtocol::HEADER_A;
const int headerSize = 6;
const int trailerSize = 3;
const int calibInfoSize = 4;
int bytesRead = 0;
bool isVersion2 = false;
bool isChannelCalib = false;
uint8_t CRC = 0;
int count = 0;
int currentPixel = 0;
uint16_t fletcher1 = 0;
uint16_t fletcher2 = 0;
uint16_t fletcherExt = 0;
#ifdef THIS_IS_RGBW
RgbwColor inputColor;
uint8_t wChannel[256];
uint8_t rChannel[256];
uint8_t gChannel[256];
uint8_t bChannel[256];
#else
RgbColor inputColor;
#endif
bool ledsComplete = false;
// statistics
const int reportStatInterval_ms = reportStatInterval_s * 1000;
unsigned long curTime;
unsigned long stat_start = 0;
uint16_t stat_shown = 0;
uint16_t stat_frames = 0;
uint16_t stat_good = 0;
uint16_t stat_bad = 0;
uint16_t stat_bad_frame = 0;
uint16_t stat_bad_skip = 0;
uint16_t stat_bad_crc = 0;
uint16_t stat_bad_fletcher = 0;
uint16_t stat_final_shown = 0;
uint16_t stat_final_frames = 0;
uint16_t stat_final_good = 0;
uint16_t stat_final_bad = 0;
uint16_t stat_final_bad_frame = 0;
uint16_t stat_final_bad_skip = 0;
uint16_t stat_final_bad_crc = 0;
uint16_t stat_final_bad_fletcher = 0;
//Debugging
String inputString;
String inputErrorString;
String debugString;
void printStringHex(String string)
{
#ifndef ENABLE_STRIP
Serial2.println(string.length());
for (int i = 0; i < string.length(); ++i)
{
if (i % 36 == 0)
{
Serial2.println();
Serial2.print("[");
Serial2.print(i);
Serial2.print("] ");
}
if (string[i] < 16)
Serial2.print("0");
Serial2.print(string[i], HEX);
Serial2.print(":");
}
#endif
}
inline void showMe()
{
#ifdef ENABLE_STRIP
if (strip != NULL && strip->CanShow())
{
stat_shown++;
strip->Show();
}
#endif
}
// statistics
inline void showStats()
{
if (reportStats)
{
if (stat_frames > 0)
{
stat_final_shown = stat_shown;
stat_final_frames = stat_frames;
stat_final_good = stat_good;
stat_final_bad = stat_bad;
stat_final_bad_frame = stat_bad_frame;
stat_final_bad_skip = stat_bad_skip;
stat_final_bad_crc = stat_bad_crc;
stat_final_bad_fletcher = stat_bad_fletcher;
}
stat_start = curTime;
stat_shown = 0;
stat_frames = 0;
stat_good = 0;
stat_bad = 0;
stat_bad_frame = 0;
stat_bad_skip = 0;
stat_bad_crc = 0;
stat_bad_fletcher = 0;
String summary = String("FPS: ") + (stat_final_shown / reportStatInterval_s) +
" F-FPS: " + (stat_final_frames / reportStatInterval_s) +
" S: " + stat_final_shown +
" F: " + stat_final_frames +
" G: " + stat_final_good +
" B: " + stat_final_bad +
" (BF: " + stat_final_bad_frame +
" BS: " + stat_final_bad_skip +
" BC: " + stat_final_bad_crc +
" BFL: " + stat_final_bad_fletcher +
")";
#ifdef ENABLE_STRIP
Serial.println(summary);
#else
Serial2.println(summary);
#endif
}
}
void InitLeds(uint16_t ledCount, int pixelCount, bool channelCalibration = false)
{
if (ledBuffer != NULL)
delete ledBuffer;
ledBufferSize = pixelCount + (channelCalibration ? calibInfoSize : 0);
ledBuffer = new uint8_t[ledBufferSize];
#ifdef ENABLE_STRIP
if (strip != NULL)
delete strip;
strip = new LED_DRIVER(ledCount);
strip->Begin();
#endif
}
inline void processSerialData()
{
while (Serial.available()) {
char input = Serial.read();
++bytesRead;
#ifndef ENABLE_STRIP
if (reportInput)
inputString += input;
#endif
switch (state)
{
case AwaProtocol::HEADER_A:
if (input == 'A')
{
state = AwaProtocol::HEADER_w;
}
break;
case AwaProtocol::HEADER_w:
if (input == 'w')
state = AwaProtocol::HEADER_a;
else
{
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::HEADER_a:
if (input == 'a')
{
isVersion2 = false;
state = AwaProtocol::HEADER_HI;
}
else if (input == 'A')
{
state = AwaProtocol::HEADER_HI;
isVersion2 = true;
}
else
{
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::HEADER_HI:
stat_frames++;
count = input << 8;
CRC = input;
fletcher1 = 0;
fletcher2 = 0;
fletcherExt = 0;
state = AwaProtocol::HEADER_LO;
break;
case AwaProtocol::HEADER_LO:
count += input + 1;
if (ledCount != count || isChannelCalib != isVersion2)
{
ledCount = count;
isChannelCalib = isVersion2;
pixelCount = ledCount * 3;
if (isChannelCalib)
prepareCalibration();
InitLeds(ledCount, pixelCount, isChannelCalib);
}
CRC = CRC ^ input ^ 0x55;
state = AwaProtocol::HEADER_CRC;
break;
case AwaProtocol::HEADER_CRC:
// Check, if incomplete package information was skipped, set bytesread to headersize and skip wrong input
if (bytesRead != headerSize)
{
stat_bad_skip++;
bytesRead = headerSize;
}
currentPixel = 0;
if (CRC == input)
{
state = AwaProtocol::PIXEL;
}
else
{
// CRC failure
stat_bad++;
stat_bad_crc++;
state = AwaProtocol::HEADER_A;
}
break;
case AwaProtocol::PIXEL:
ledBuffer[currentPixel++] = input;
if (currentPixel == pixelCount)
{
if (isChannelCalib)
state = AwaProtocol::CHANNELCALIB_GAIN;
else
state = AwaProtocol::FLETCHER1;
}
break;
case AwaProtocol::CHANNELCALIB_GAIN:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_RED;
break;
case AwaProtocol::CHANNELCALIB_RED:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_GREEN;
break;
case AwaProtocol::CHANNELCALIB_GREEN:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::CHANNELCALIB_BLUE;
break;
case AwaProtocol::CHANNELCALIB_BLUE:
ledBuffer[currentPixel++] = input;
state = AwaProtocol::FLETCHER1;
break;
case AwaProtocol::FLETCHER1:
fletcher1 = input;
state = AwaProtocol::FLETCHER2;
break;
case AwaProtocol::FLETCHER2:
fletcher2 = input;
state = AwaProtocol::FLETCHER_EXT;
break;
case AwaProtocol::FLETCHER_EXT:
fletcherExt = input;
ledsComplete = true;
state = AwaProtocol::HEADER_A;
break;
}
}
}
void setup()
{
// Init serial port
int bufSize = Serial.setRxBufferSize(SERIAL_SIZE_RX);
Serial.begin(serialSpeed);
Serial.setTimeout(50);
#ifndef ENABLE_STRIP
Serial2.begin(serial2Speed);
Serial2.println();
Serial2.println("Welcome!");
Serial2.println("Hyperion Awa driver " + version);
Serial2.println("!!! Debug Output !!!");
#endif
// Display config
Serial.println();
Serial.println("Welcome!");
Serial.println("Hyperion Awa driver " + version);
Serial.print("(Build: ");
Serial.print(__DATE__);
Serial.print(" ");
Serial.print(__TIME__);
Serial.println(")");
// first LED info
if (skipFirstLed)
Serial.println("First LED: disabled");
else
Serial.println("First LED: enabled");
// RGBW claibration info
#ifdef THIS_IS_RGBW
#ifdef COLD_WHITE
Serial.println("Default color mode: RGBW cold");
#else
Serial.println("Default color mode: RGBW neutral");
#endif
prepareCalibration();
#else
Serial.println("Color mode: RGB");
#endif
InitLeds(ledCount, pixelCount);
}
void prepareCalibration()
{
#ifdef THIS_IS_RGBW
// prepare LUT calibration table, cold white is much better than "neutral" white
for (uint32_t i = 0; i < 256; i++)
{
// color calibration
float red = rCorrection * i; // adjust red
float green = gCorrection * i; // adjust green
float blue = bCorrection * i; // adjust blue
wChannel[i] = (uint8_t)round(min(whiteLimit * i, 255.0f));
rChannel[i] = (uint8_t)round(min(red / 0xFF, 255.0f));
gChannel[i] = (uint8_t)round(min(green / 0xFF, 255.0f));
bChannel[i] = (uint8_t)round(min(blue / 0xFF, 255.0f));
}
Serial.write("RGBW calibration. White limit(%): ");
Serial.print(whiteLimit * 100.0f);
Serial.write(" %, red: ");
Serial.print(rCorrection);
Serial.write(" , green: ");
Serial.print(gCorrection);
Serial.write(" , blue: ");
Serial.print(bCorrection);
Serial.println();
#endif
}
void loop()
{
curTime = millis();
#ifdef __AVR__
// nothing , USART Interrupt is implemented
ESPserialEvent();
#else
// ESP8266 polling
ESPserialEvent();
#endif
if (ledsComplete)
{
#ifndef ENABLE_STRIP
if (reportInput)
{
Serial2.println();
Serial2.print("<input> L: ");
printStringHex(inputString);
Serial2.println("<\input>");
inputString = "";
Serial2.print("bytesRead: ");
Serial2.print(bytesRead);
Serial2.print(" , currentPixel: ");
Serial2.print(currentPixel);
Serial2.print(" ,pixelCount: ");
Serial2.print(pixelCount);
Serial2.println();
}
#endif
int frameSize = headerSize + ledBufferSize + trailerSize;
if (bytesRead > frameSize)
{
//Add number of frames ignored on top of frame
int frames = bytesRead / frameSize;
stat_frames += frames;
//Count frame plus frames ignored as bad frames
int badFrames = frames + 1;
stat_bad += badFrames;
stat_bad_frame += badFrames;
}
else
{
#ifdef ENABLE_CHECK_FLETCHER
//Test if content is valid
uint16_t item = 0;
uint16_t fletch1 = 0;
uint16_t fletch2 = 0;
uint16_t fletchExt = 0;
while (item < ledBufferSize)
{
fletch1 = (fletch1 + (uint16_t)ledBuffer[item]) % 255;
fletch2 = (fletch2 + fletch1) % 255;
fletcherExt = (fletcherExt + ((uint16_t)ledBuffer[item] ^ (item))) % 255;
++item;
}
if ((fletch1 == fletcher1) && (fletch2 == fletcher2) && (ledBuffer[item-1] == (fletcherExt != 0x41) ? fletcherExt : 0xaa))
{
#endif
stat_good++;
uint16_t startLed = 0;
if (skipFirstLed)
{
#ifdef ENABLE_STRIP
#ifdef THIS_IS_RGBW
strip->SetPixelColor(startLed, RgbwColor(0, 0, 0, 0));
#else
strip->SetPixelColor(startLed, RgbColor(0, 0, 0));
#endif
#endif
startLed = 1;
}
for (uint16_t led = startLed; led < ledCount; ++led)
{
inputColor.R = ledBuffer[led * 3];
inputColor.G = ledBuffer[led * 3 + 1];
inputColor.B = ledBuffer[led * 3 + 2];
#ifdef THIS_IS_RGBW
inputColor.W = min(rChannel[inputColor.R],
min(gChannel[inputColor.G],
bChannel[inputColor.B]));
inputColor.R -= rChannel[inputColor.W];
inputColor.G -= gChannel[inputColor.W];
inputColor.B -= bChannel[inputColor.W];
inputColor.W = wChannel[inputColor.W];
#endif
#ifdef ENABLE_STRIP
strip->SetPixelColor(led, inputColor);
#endif
}
showMe();
yield();
#ifdef THIS_IS_RGBW
if (isChannelCalib)
{
uint8_t incoming_gain = ledBuffer[pixelCount];
uint8_t incoming_red = ledBuffer[pixelCount + 1];
uint8_t incoming_green = ledBuffer[pixelCount + 2];
uint8_t incoming_blue = ledBuffer[pixelCount + 3];
float final_limit = (incoming_gain != 255) ? incoming_gain / 255.0f : 1.0f;
if (rCorrection != incoming_red || gCorrection != incoming_green || bCorrection != incoming_blue || whiteLimit != final_limit)
{
rCorrection = incoming_red;
gCorrection = incoming_green;
bCorrection = incoming_blue;
whiteLimit = final_limit;
prepareCalibration();
}
}
#endif
#ifdef ENABLE_CHECK_FLETCHER
}
else
{
stat_bad++;
stat_bad_fletcher++;
}
#endif
}
bytesRead = 0;
state = AwaProtocol::HEADER_A;
ledsComplete = false;
}
if ((curTime - stat_start > reportStatInterval_ms))
{
if (stat_frames > 0)
{
showStats();
}
}
}
#ifdef __AVR__
void serialEvent()
{
processSerialData();
}
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
void ESPserialEvent()
{
processSerialData();
}
#endif

View File

@ -139,7 +139,7 @@ void setup() {
}
int ledCount = MAX_LEDS;
if (ANALOG_MODE == ANALOG_MODE_LAST_LED) {
if (ANALOG_OUTPUT_ENABLED == true && ANALOG_MODE == ANALOG_MODE_LAST_LED) {
ledCount--;
}
@ -170,7 +170,7 @@ void setup() {
showColor(CRGB(0, 0, 0));
Serial.print("Ada\n"); // Send "Magic Word" string to host
Serial.println("Ada: LED num: " + String(FastLED.size())); //Return number of LEDs configured
boolean transmissionSuccess;
unsigned long sum_r, sum_g, sum_b;
@ -254,4 +254,3 @@ void setup() {
void loop() {
// Not used. See note in setup() function.
}

View File

@ -21,6 +21,7 @@ import socket
import serial
import serial.threaded
from __future__ import division
class SerialToNet(serial.threaded.Protocol):
"""serial->socket"""
@ -137,7 +138,7 @@ to this service over the network.
sys.stderr.write(
'--- UDP to Serial redirector\n'
'--- listening on udp port {a.localport}\n'
'--- sending to {p.name} {p.baudrate},{p.bytesize}{p.parity}{p.stopbits}\n'
'--- sending to {p.name} {p.baudrate},{p.bytesize}{p.parity}{p.stopbits}\n'
'--- type Ctrl-C / BREAK to quit\n'.format(p=ser, a=args))
try:
@ -152,10 +153,9 @@ to this service over the network.
srv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(('', args.localport))
srv.bind(('0.0.0.0', args.localport))
try:
intentional_exit = False
while True:
try:
while True:
@ -164,14 +164,14 @@ to this service over the network.
if not data:
break
if args.ada:
numleds = len(data)/3
hi = (numleds-1)/256
lo = (numleds-1)&255
sum = hi^lo^0x55
ser.write ("Ada"+ chr(hi) + chr(lo) + chr(sum))
if args.ada:
numleds = len(data)/3
hi = (numleds-1)/256
lo = (numleds-1)&255
sum = hi^lo^0x55
ser.write ("Ada"+ chr(hi) + chr(lo) + chr(sum))
ser.write(data) # get a bunch of bytes and send them
ser.write(data) # get a bunch of bytes and send them
except socket.error as msg:
if args.develop:
raise
@ -179,7 +179,7 @@ to this service over the network.
# probably got disconnected
break
except KeyboardInterrupt:
intentional_exit = True
# intentional_exit
raise
except socket.error as msg:
if args.develop:
@ -189,6 +189,7 @@ to this service over the network.
ser_to_net.socket = None
sys.stderr.write('Disconnected\n')
except KeyboardInterrupt:
# do not handle exceptions
pass
sys.stderr.write('\n--- exit ---\n')

View File

@ -0,0 +1,354 @@
// AtmoOrb by Lightning303 & Rick164, Additions by Lord-Grey
//
// ESP8266 Standalone Version
//
//
// You may change the settings that are commented
#define FASTLED_ALLOW_INTERRUPTS 0
// To make sure that all leds get changed 100% of the time, we need to allow FastLED to disabled interrupts for a short while.
// If you experience problems, please set this value to 1.
// This is only needed for 3 wire (1 data line + Vcc and GND) chips (e.g. WS2812B). If you are using WS2801, APA102 or similar chipsets, you can set the value back to 1.
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <FastLED.h>
#define NUM_LEDS 24 // Number of leds
#define DATA_PIN D7 // Data pin for leds (the default pin 7 might correspond to pin 13 on some boards)
#define SERIAL_DEBUG 0 // Serial debugging (0=Off, 1=On)
#define ID 1 // Id of this lamp
// Smoothing
#define SMOOTH_STEPS 20 // Steps to take for smoothing colors
#define SMOOTH_DELAY 10 // Delay between smoothing steps
#define SMOOTH_BLOCK 0 // Block incoming colors while smoothing
// Startup color
#define STARTUP_RED 255 // Color shown directly after power on
#define STARTUP_GREEN 175 // Color shown directly after power on
#define STARTUP_BLUE 100 // Color shown directly after power on
// White adjustment
#define RED_CORRECTION 220 // Color Correction
#define GREEN_CORRECTION 255 // Color Correction
#define BLUE_CORRECTION 180 // Color Correction
// RC Switch
#define RC_SWITCH 0 // RF transmitter to swtich remote controlled power sockets (0=Off, 1=On)
#if RC_SWITCH == 1
#include <RCSwitch.h>
#define RC_PIN 2 // Data pin for RF transmitter
#define RC_SLEEP_DELAY 900000 // Delay until RF transmitter send signals
char* rcCode0 = "10001"; // First part of the transmission code
char* rcCode1 = "00010"; // Second part of the transmission code
RCSwitch mySwitch = RCSwitch();
boolean remoteControlled = false;
#endif
// Network settings
const char* ssid = "***"; // WiFi SSID
const char* password = "***"; // WiFi password
const IPAddress multicastIP(239,255,255,250); // Multicast IP address
const int multicastPort = 49692; // Multicast port number
IPAddress ip_null(0,0,0,0);
IPAddress local_IP(0,0,0,0);
WiFiUDP Udp;
int timeout = 20000; // wait 20 sec for successfull login
boolean is_connect = false; // ... not yet connected
CRGB leds[NUM_LEDS];
byte nextColor[3];
byte prevColor[3];
byte currentColor[3];
byte smoothStep = SMOOTH_STEPS;
unsigned long smoothMillis;
void setColor(byte red, byte green, byte blue);
void setSmoothColor(byte red, byte green, byte blue);
void smoothColor();
void clearSmoothColors();
void setup()
{
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
//FastLED.setCorrection(TypicalSMD5050);
FastLED.setCorrection(CRGB(RED_CORRECTION, GREEN_CORRECTION, BLUE_CORRECTION));
FastLED.showColor(CRGB(STARTUP_RED, STARTUP_GREEN, STARTUP_BLUE));
#if RC_SWITCH == 1
mySwitch.enableTransmit(RC_PIN);
#endif
#if SERIAL_DEBUG == 1
Serial.begin(115200);
#endif
#if SERIAL_DEBUG == 1
Serial.printf("Connecting to %s ", ssid);
#endif
// .... wait for WiFi gets valid !!!
unsigned long tick = millis(); // get start-time for login
WiFi.begin(ssid, password);
while ( (!is_connect) && ((millis() - tick) < timeout) )
{
yield(); // ... for safety
is_connect = WiFi.status(); // connected ?
if (!is_connect) // only if not yet connected !
{
#if SERIAL_DEBUG == 1
Serial.print("."); // print a dot while waiting
#endif
delay(50);
}
}
if (is_connect)
{
#if SERIAL_DEBUG == 1
Serial.print("after ");
Serial.print(millis() - tick);
Serial.println(" ms");
#endif
// .... wait for local_IP becomes valid !!!
is_connect = false;
tick = millis(); // get start-time for login
while ( (!is_connect) && ((millis() - tick) < timeout) )
{
yield(); // ... for safety
local_IP = WiFi.localIP();
is_connect = local_IP != ip_null; // connected ?
if (!is_connect) // only if not yet connected !
{
#if SERIAL_DEBUG == 1
Serial.print("."); // print a dot while waiting
#endif
delay(50);
}
}
if (is_connect)
{
#if SERIAL_DEBUG == 1
Serial.print("local_IP valid after ");
Serial.print(millis() - tick);
Serial.println(" ms");
Serial.println("");
Serial.print(F("Connected to "));
Serial.println(ssid);
#endif
// ... now start UDP and check the result:
is_connect = Udp.beginMulticast(local_IP, multicastIP, multicastPort);
if (is_connect)
{
#if SERIAL_DEBUG == 1
Serial.print("Listening to Multicast at ");
Serial.print(multicastIP);
Serial.println(":" + String(multicastPort));
#endif
}
else
{
#if SERIAL_DEBUG == 1
Serial.println(" - ERROR beginMulticast !");
#endif
}
}
else
{
#if SERIAL_DEBUG == 1
Serial.println("local_IP invalid after timeout !");
#endif
}
}
else
{
#if SERIAL_DEBUG == 1
Serial.println("- invalid after timeout !");
#endif
}
}
void loop()
{
#if SERIAL_DEBUG == 1
if (WiFi.status() != WL_CONNECTED)
{
Serial.print(F("Lost connection to "));
Serial.print(ssid);
Serial.println(F("."));
Serial.println(F("Trying to reconnect."));
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(F("."));
}
Serial.println("");
Serial.println(F("Reconnected."));
}
#endif
if (Udp.parsePacket())
{
byte len = Udp.available();
byte rcvd[len];
Udp.read(rcvd, len);
#if SERIAL_DEBUG == 1
Serial.print(F("UDP Packet from "));
Serial.print(Udp.remoteIP());
Serial.print(F(":"));
Serial.print(Udp.remotePort());
Serial.print(F(" to "));
Serial.println(Udp.destinationIP());
for (byte i = 0; i < len; i++)
{
Serial.print(rcvd[i]);
Serial.print(F(" "));
}
Serial.println("");
#endif
if (len >= 8 && rcvd[0] == 0xC0 && rcvd[1] == 0xFF && rcvd[2] == 0xEE && (rcvd[4] == ID || rcvd[4] == 0))
{
switch (rcvd[3])
{
case 1:
smoothStep = SMOOTH_STEPS;
forceLedsOFF();
break;
case 2:
default:
setSmoothColor(rcvd[5], rcvd[6], rcvd[7]);
break;
case 4:
setColor(rcvd[5], rcvd[6], rcvd[7]);
smoothStep = SMOOTH_STEPS;
break;
case 8:
#if SERIAL_DEBUG == 1
Serial.print(F("Announce myself. OrbID: "));
Serial.println(ID);
#endif
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(ID);
Udp.endPacket();
break;
case 9:
#if SERIAL_DEBUG == 1
Serial.print(F("Identify myself. OrbID: "));
Serial.println(ID);
#endif
identify();
break;
}
}
}
if (smoothStep < SMOOTH_STEPS && millis() >= (smoothMillis + (SMOOTH_DELAY * (smoothStep + 1))))
{
smoothColor();
}
#if RC_SWITCH == 1
if (remoteControlled && currentColor[0] == 0 && currentColor[1] == 0 && currentColor[2] == 0 && millis() >= smoothMillis + RC_SLEEP_DELAY)
{
// Send this signal only once every seconds
smoothMillis += 1000;
mySwitch.switchOff(rcCode0, rcCode1);
}
#endif
}
// Display color on leds
void setColor(byte red, byte green, byte blue)
{
// Is the new color already active?
if (currentColor[0] == red && currentColor[1] == green && currentColor[2] == blue)
{
return;
}
currentColor[0] = red;
currentColor[1] = green;
currentColor[2] = blue;
FastLED.showColor(CRGB(red, green, blue));
}
// Set a new color to smooth to
void setSmoothColor(byte red, byte green, byte blue)
{
if (smoothStep == SMOOTH_STEPS || SMOOTH_BLOCK == 0)
{
// Is the new color the same as the one we already are smoothing towards?
// If so dont do anything.
if (nextColor[0] == red && nextColor[1] == green && nextColor[2] == blue)
{
return;
}
// Is the new color the same as we have right now?
// If so stop smoothing and keep the current color.
else if (currentColor[0] == red && currentColor[1] == green && currentColor[2] == blue)
{
smoothStep = SMOOTH_STEPS;
return;
}
prevColor[0] = currentColor[0];
prevColor[1] = currentColor[1];
prevColor[2] = currentColor[2];
nextColor[0] = red;
nextColor[1] = green;
nextColor[2] = blue;
smoothMillis = millis();
smoothStep = 0;
#if RC_SWITCH == 1
if (!remoteControlled)
{
remoteControlled = true;
}
#endif
}
}
// Display one step to the next color
void smoothColor()
{
smoothStep++;
byte red = prevColor[0] + (((nextColor[0] - prevColor[0]) * smoothStep) / SMOOTH_STEPS);
byte green = prevColor[1] + (((nextColor[1] - prevColor[1]) * smoothStep) / SMOOTH_STEPS);
byte blue = prevColor[2] + (((nextColor[2] - prevColor[2]) * smoothStep) / SMOOTH_STEPS);
setColor(red, green, blue);
}
// Force all leds OFF
void forceLedsOFF()
{
setColor(0,0,0);
clearSmoothColors();
}
// Clear smooth color byte arrays
void clearSmoothColors()
{
memset(prevColor, 0, sizeof(prevColor));
memset(currentColor, 0, sizeof(nextColor));
memset(nextColor, 0, sizeof(nextColor));
}
void identify()
{
for (byte i = 0; i < 3; i++)
{
FastLED.showColor(CRGB::LemonChiffon);
delay(500);
FastLED.showColor(CRGB::Black);
delay(500);
}
}

View File

@ -0,0 +1,313 @@
#include <FastLED.h>
FASTLED_USING_NAMESPACE;
SYSTEM_THREAD(ENABLED);
#if FASTLED_VERSION < 3001000
#error "Requires FastLED 3.1 or later; check github for latest code."
#endif
// WiFi
#define timeout 30000
#define reconnect_delay 5000
// UDP
#define SERVER_PORT 49692
#define DISCOVERY_PORT 49692
UDP client;
IPAddress multicastIP(239, 15, 18, 2);
// ORB
unsigned int orbID = 1;
#define SERIAL_DEBUG 0 // Serial debugging (0=Off, 1=On)
// LED
#define DATA_PIN 6
#define NUM_LEDS 24
CRGB leds[NUM_LEDS];
// UDP
#define BUFFER_SIZE 8 // 5 + 3 channels for 1 LED
#define BUFFER_SIZE_DISCOVERY 5
#define TIMEOUT_MS 500
uint8_t buffer[BUFFER_SIZE];
uint8_t bufferDiscovery[BUFFER_SIZE_DISCOVERY];
unsigned long lastWiFiCheck = 0;
// SMOOTHING
#define SMOOTH_STEPS 50 // Steps to take for smoothing colors
#define SMOOTH_DELAY 4 // Delay between smoothing steps
#define SMOOTH_BLOCK 0 // Block incoming colors while smoothing
byte nextColor[3];
byte prevColor[3];
byte currentColor[3];
byte smoothStep = SMOOTH_STEPS;
unsigned long smoothMillis;
// CUSTOM COLOR CORRECTIONS
#define RED_CORRECTION 255
#define GREEN_CORRECTION 255
#define BLUE_CORRECTION 255
#include "Particle.h"
void setup()
{
// Leds - choose one correction method
// 1 - Custom color correction
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS).setCorrection(CRGB(RED_CORRECTION, GREEN_CORRECTION, BLUE_CORRECTION));
// Set color
//setColor(40, 21, 0);
// Uncomment the below lines to dim the single built-in led to 2%
::RGB.control(true);
::RGB.brightness(2);
::RGB.control(false);
// WiFi
lastWiFiCheck = millis();
initWiFi();
// 2 - FastLED predefined color correction
//FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS).setCorrection(TypicalSMD5050);
}
void initWiFi()
{
// Delays added UDP client creation, required for WiFi reconnects as takes a bit for resources to be full available
// Wait for WiFi connection
delay(500);
waitFor(WiFi.ready, timeout);
delay(reconnect_delay);
// Multicast UDP
if(WiFi.ready())
{
#if SERIAL_DEBUG == 1
Serial.println("");
Serial.print(F("Connected to "));
Serial.println(WiFi.SSID());
Serial.print(F("IP address: "));
Serial.println(WiFi.localIP());
#endif
client.begin(SERVER_PORT);
delay(reconnect_delay);
client.joinMulticast(multicastIP);
#if SERIAL_DEBUG == 1
Serial.print(F("Listening to Multicast at "));
Serial.print(multicastIP);
Serial.print(F(":"));
Serial.println(SERVER_PORT);
#endif
}
}
void loop(){
if (Network.listening())
{
// If we are in listening mode (blinking dark blue), don't
// output by USB serial, because it can conflict with
// serial commands.
return;
}
if(WiFi.ready() == false) {
#if SERIAL_DEBUG == 1
Serial.print(F("Lost connection to "));
Serial.print(WiFi.SSID());
Serial.println(F("."));
Serial.println(F("Trying to reconnect."));
#endif
initWiFi();
}
int packetSize = client.parsePacket();
if(packetSize == BUFFER_SIZE){
#if SERIAL_DEBUG == 1
Serial.print(F("Packet size: "));
Serial.println(packetSize);
#endif
client.read(buffer, BUFFER_SIZE);
//client.flush();
#if SERIAL_DEBUG == 1
Serial.print(F("UDP Packet from "));
Serial.println(client.remoteIP());
for (int i = 0; i < BUFFER_SIZE; i++)
{
Serial.print(buffer[i]);
Serial.print(F(" "));
}
Serial.println("");
#endif
unsigned int i = 0;
// Look for 0xC0FFEE
if(buffer[i++] == 0xC0 && buffer[i++] == 0xFF && buffer[i++] == 0xEE)
{
byte commandOptions = buffer[i++];
byte rcvOrbID = buffer[i++];
byte red = buffer[i++];
byte green = buffer[i++];
byte blue = buffer[i++];
// Command options
// 1 = force off
// 2 = use lamp smoothing and validate by Orb ID
// 4 = validate by Orb ID
// 8 = discovery
// 9 = light-up Orb to identify by Orb ID
if(commandOptions == 1)
{
// Orb ID 0 = turn off all lights
// Otherwise turn off selectively
if(rcvOrbID == 0 || rcvOrbID == orbID)
{
smoothStep = SMOOTH_STEPS;
forceLedsOFF();
}
return;
}
else if(commandOptions == 2)
{
if(rcvOrbID != orbID)
{
return;
}
setSmoothColor(red, green, blue);
}
else if(commandOptions == 4)
{
if(rcvOrbID != orbID)
{
return;
}
smoothStep = SMOOTH_STEPS;
setColor(red, green, blue);
setSmoothColor(red, green, blue);
return;
}
else if(commandOptions == 8)
{
#if SERIAL_DEBUG == 1
Serial.print(F("Announce myself. OrbID: "));
Serial.println(orbID);
#endif
// Respond to remote IP address with Orb ID
IPAddress remoteIP = client.remoteIP();
bufferDiscovery[0] = orbID;
client.sendPacket(bufferDiscovery, BUFFER_SIZE_DISCOVERY, remoteIP, DISCOVERY_PORT);
// Clear buffer
memset(bufferDiscovery, 0, sizeof(bufferDiscovery));
return;
}
else if(commandOptions == 9)
{
if(rcvOrbID == 0 || rcvOrbID == orbID)
{
#if SERIAL_DEBUG == 1
Serial.print(F("Identify myself. OrbID: "));
Serial.println(orbID);
#endif
identify();
}
return;
}
}
}else if(packetSize > 0){
// Got malformed packet
}
if (smoothStep < SMOOTH_STEPS && millis() >= (smoothMillis + (SMOOTH_DELAY * (smoothStep + 1))))
{
smoothColor();
}
}
// Set color
void setColor(byte red, byte green, byte blue)
{
for (byte i = 0; i < NUM_LEDS; i++)
{
leds[i] = CRGB(red, green, blue);
}
FastLED.show();
}
// Set a new color to smooth to
void setSmoothColor(byte red, byte green, byte blue)
{
if (smoothStep == SMOOTH_STEPS || SMOOTH_BLOCK == 0)
{
if (nextColor[0] == red && nextColor[1] == green && nextColor[2] == blue)
{
return;
}
prevColor[0] = currentColor[0];
prevColor[1] = currentColor[1];
prevColor[2] = currentColor[2];
nextColor[0] = red;
nextColor[1] = green;
nextColor[2] = blue;
smoothMillis = millis();
smoothStep = 0;
}
}
// Display one step to the next color
void smoothColor()
{
smoothStep++;
currentColor[0] = prevColor[0] + (((nextColor[0] - prevColor[0]) * smoothStep) / SMOOTH_STEPS);
currentColor[1] = prevColor[1] + (((nextColor[1] - prevColor[1]) * smoothStep) / SMOOTH_STEPS);
currentColor[2] = prevColor[2] + (((nextColor[2] - prevColor[2]) * smoothStep) / SMOOTH_STEPS);
setColor(currentColor[0], currentColor[1], currentColor[2]);
}
// Force all leds OFF
void forceLedsOFF()
{
setColor(0,0,0);
clearSmoothColors();
}
// Clear smooth color byte arrays
void clearSmoothColors()
{
memset(prevColor, 0, sizeof(prevColor));
memset(currentColor, 0, sizeof(nextColor));
memset(nextColor, 0, sizeof(nextColor));
}
void identify()
{
for (byte i = 0; i < 3; i++)
{
FastLED.showColor(CRGB::LemonChiffon);
delay(500);
FastLED.showColor(CRGB::Black);
delay(500);
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,89 +1,75 @@
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About
Hyperion</span></h3>
<div class="row">
<div class="col-lg-12">
<div id="about_cont"></div>
<h3 class="page-header">
<i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">
About
Hyperion
</span>
</h3>
<div class="row">
<div class="col-lg-12">
<div id="about_cont"></div>
</div>
<div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px">
<h4>You found a hidden service menu!</h4>
<button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button>
<button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button>
</div>
</div>
</div>
<div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px">
<h4>You found a hidden service menu!</h4>
<button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button>
<button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button>
</div>
</div>
</div>
<script type="text/javascript">
performTranslation();
performTranslation();
var si = sysInfo.hyperion;
var libs = { "Bootstrap 3": "http://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "JSON-Editor": "http://jeremydorn.com/json-editor/", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "http://mm.onokumus.com/index.html", "download.js": "http://danml.com/download.html", "gijgo": "http://gijgo.com/" };
var libh = "";
var lang = [];
var dcount = 0;
var si = window.sysInfo.hyperion;
var libs = { "Bootstrap 3": "https://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "Bootstrap Toggle": "https://www.bootstraptoggle.com/", "Bootstrap Select": "https://developer.snapappointments.com/bootstrap-select/", "JSON-Editor": "https://www.jeremydorn.com/json-editor", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "https://mm.onokumus.com/index.html", "download.js": "https://github.com/rndme/download", "Gijgo": "https://gijgo.com/", "DOMPurify" : "https://github.com/cure53/DOMPurify", "Marked": "https://github.com/markedjs/marked", "PlainDraggable": "https://github.com/anseki/plain-draggable", "LeaderLine": "https://github.com/anseki/leader-line", "Animate.css": "https://github.com/animate-css/animate.css"};
var libh = "";
var lang = [];
var dcount = 0;
for (var i = 0; i < availLang.length; i++)
lang.push($.i18n('general_speech_' + availLang[i]));
for (key in libs)
libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, ';
libh += "<br/>" + $.i18n("about_credits");
lang = lang.toString().replace(/,/g, ", ");
for (var i = 0; i < availLang.length; i++)
lang.push($.i18n('general_speech_' + availLang[i]));
lang.sort();
for (key in libs)
libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, ';
libh += "<br/>" + $.i18n("about_credits");
lang = lang.toString().replace(/,/g, ", ");
// Github Issue bugreport infos
var sys = window.sysInfo.system;
var shy = window.sysInfo.hyperion;
var info = "<pre>Hyperion Server: \n";
info += '- Build: ' + shy.build + '\n';
info += '- Build time: ' + shy.time + '\n';
info += '- Git Remote: ' + shy.gitremote + '\n';
info += '- Version: ' + shy.version + '\n';
info += '- UI Lang: ' + storedLang + ' (BrowserLang: ' + navigator.language + ')\n';
info += '- UI Access: ' + storedAccess + '\n';
//info += 'Log lvl: ' + window.serverConfig.logger.level + '\n';
info += '- Avail Capt: ' + window.serverInfo.grabbers.available + '\n\n';
info += 'Hyperion Server OS: \n';
info += '- Distribution: ' + sys.prettyName + '\n';
info += '- Arch: ' + sys.architecture + '\n';
info += '- Kernel: ' + sys.kernelType + ' (' + sys.kernelVersion + ' (WS: ' + sys.wordSize + '))\n';
info += '- Browser: ' + navigator.userAgent + ' </pre>';
var info = '<pre>' + getSystemInfo() + '</pre>';
var fc = ['<span id="danger_trig">' + $.i18n("about_version") + '<span>', $.i18n("about_build"), $.i18n("about_builddate"), $.i18n("about_translations"), $.i18n("about_resources", $.i18n("general_webui_title")), "System info (Github Issue)", $.i18n("about_3rd_party_licenses")];
var sc = [currentVersion, si.build, si.time, '(' + availLang.length + ')<p>' + lang + '</p><p><a href="https://github.com/hyperion-project/hyperion.ng" target="_blank">' + $.i18n("about_contribute") + '</a></p>', libh, info, '<pre><div id="3rdpartylicenses" style="overflow:scroll;max-height:400px"></div></pre>'];
var fc = ['<span id="danger_trig">' + $.i18n("about_version") + '<span>', $.i18n("about_build"), $.i18n("about_builddate"), $.i18n("about_translations"), $.i18n("about_resources", $.i18n("general_webui_title")), "System info (Github Issue)", $.i18n("about_3rd_party_licenses")];
var sc = [currentVersion, si.build, si.time, '(' + availLang.length + ')<p>' + lang + '</p><p><a href="https://github.com/hyperion-project/hyperion.ng" target="_blank">' + $.i18n("about_contribute") + '</a></p>', libh, info, '<pre><div id="3rdpartylicenses" style="overflow:scroll;max-height:400px"></div></pre>'];
createTable("", "atb", "about_cont");
for (var i = 0; i < fc.length; i++)
$('.atb').append(createTableRow([fc[i], sc[i]], "atb", false));
createTable("", "atb", "about_cont");
for (var i = 0; i < fc.length; i++)
$('.atb').append(createTableRow([fc[i], sc[i]], "atb", false));
$('#danger_trig').off().on('click', function () {
dcount++;
if (dcount > 2)
$('#danger_act').toggle(true);
});
$('#danger_trig').off().on('click', function () {
dcount++;
if (dcount > 2)
$('#danger_act').toggle(true);
});
$('#reset_cache').off().on('click', function () {
localStorage.clear();
});
$('#reset_cache').off().on('click', function () {
localStorage.clear();
});
$('#hyp_restart').off().on('click', function () {
initRestart();
});
$('#hyp_restart').off().on('click', function () {
initRestart();
});
var url = 'https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES';
fetch(url)
.then(function (response) {
if (!response.ok) {
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
}
else {
response.text().then(function (text) {
$("#3rdpartylicenses").html('<code>' + text + '</code>');
});
}
})
.catch(function (rejected) {
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
});
$.ajax({
url:'3RD_PARTY_LICENSES',
dataType: "text",
success: function(data)
{
$("#3rdpartylicenses").html('<code>' + data + '</code>');
},
error: function()
{
$("#3rdpartylicenses").html('<a href="https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
}
});
removeOverlay();
</script>
removeOverlay();
</script>

View File

@ -2,11 +2,23 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h3>
<div id="conf_cont"></div>
<h3 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_colors.js"></script>

View File

@ -2,6 +2,19 @@
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>

View File

@ -0,0 +1,11 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-server fa-fw"></i><span data-i18n="main_menu_events">Event Services</span></h3>
<div id="conf_cont">
</div>
</div>
</div>
</div>
<script src="/js/content_events.js"></script>

View File

@ -6,7 +6,7 @@
<div class="row">
<div class="col-lg-6" id="inst_desc">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-plus fa-fw"></i><span data-i18n="conf_general_inst_title"></span></div>
<div class="panel-heading panel-instance"><i class="mdi mdi-lightbulb-group mdi-24px"></i><span data-i18n="conf_general_inst_title"></span></div>
<div class="panel-body">
<div id="inst_desc_cont"></div>
<div id="itable"></div>
@ -28,17 +28,20 @@
</div>
</div>
</div>
<div class="col-lg-6" id="conf_imp">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_impexp_title"></span></div>
<div class="panel-body">
<p data-i18n="conf_general_impexp_l1" style="font-weight:bold"></p>
<p data-i18n="conf_general_impexp_l2" style="font-weight:bold"></p>
<input type="file" id="select_import_conf" accept=".json">
</div>
<div class="panel-footer" style="text-align:right">
<button type="file" class="btn btn-primary" id="btn_import_conf" data-i18n="conf_general_impexp_impbtn" disabled>Import</button>
<button class="btn btn-primary" id="btn_export_conf" data-i18n="conf_general_impexp_expbtn">Export</button>
<!-- Instance(s) -->
<div class="row instances">
<div class="col-lg-6" id="conf_imp">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_general_impexp_title"></span></div>
<div class="panel-body">
<p data-i18n="conf_general_impexp_l1" style="font-weight:bold"></p>
<p data-i18n="conf_general_impexp_l2" style="font-weight:bold"></p>
<input type="file" id="select_import_conf" accept=".json">
</div>
<div class="panel-footer" style="text-align:right">
<button type="file" class="btn btn-primary" id="btn_import_conf" data-i18n="conf_general_impexp_impbtn" disabled>Import</button>
<button class="btn btn-primary" id="btn_export_conf" data-i18n="conf_general_impexp_expbtn">Export</button>
</div>
</div>
</div>
</div>
@ -48,3 +51,4 @@
</div>
<script src="/js/content_general.js"></script>

View File

@ -2,7 +2,7 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<div id="conf_cont"></div>
</div>
</div>

View File

@ -0,0 +1,24 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_instcapture_conf_token">Capturing Hardware</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_instcapture.js"></script>

775
assets/webconfig/content/conf_leds.html Normal file → Executable file
View File

@ -1,309 +1,486 @@
<!DOCTYPE html>
<html>
<head>
<title>Hyperion - LED Device Configuration</title>
</head>
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h3>
<ul id="leds_cfg_nav" class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
</ul>
<h3 class="page-header"><i class="mdi mdi-lightbulb-on fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h3>
<div class="tab-content">
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div class="row">
<div class="col-lg-12" id="leddevice_intro"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading form-group">
<label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
<select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div>
<ul id="leds_cfg_nav" class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
</ul>
<div class="panel-body">
<div id="btn_wiz_holder"></div>
<div id="ledDeviceOptions"> <div id='editor_container'></div> </div>
</div>
<div class="panel-footer" style="text-align:right">
<button id='btn_submit_controller' class="btn btn-primary"><i class="fa fa-fw fa-save" /><span data-i18n="general_button_savesettings">Save Settings</span></button>
</div>
</div>
</div>
</div>
</div>
<div class="tab-content">
<div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div class="row">
<div class="col-lg-12" id="leddevice_intro"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading form-group">
<label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
<select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div>
<div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
<div class="panel-body">
<div id="btn_wiz_holder"></div>
<div id='editor_container_leddevice'></div>
<div id='info_container' class="bs-callout bs-callout-info" style="margin-top:0px">
<h4 data-i18n="dashboard_infobox_label_title">Information</h4>
<div id='info_container_text'>
<span data-i18n="conf_leds_device_info_log"> In case your LEDs do not work, check here for errors: </span>
<a onclick="SwitchToMenuItem('MenuItemLogging')" data-i18n="main_menu_logging_token" style="cursor:pointer"></a>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right">
<button id='btn_layout_controller' class="btn btn-primary" disabled data-toggle="tooltip" data-placement="top" title="Generate a layout for the configured device">
<i class="fa fa-fw fa-save"></i><span data-i18n="wiz_layout">Generate Layout</span>
</button>
<button id='btn_test_controller' class="btn btn-primary" disabled data-toggle="tooltip" data-placement="top" title="Identify configured device by lighting it up">
<i class="fa fa-fw fa-save"></i><span data-i18n="wiz_identify">Identify/Test</span>
</button>
<button id='btn_submit_controller' class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Save the device's connectivity configuration">
<i class="fa fa-fw fa-save"></i><span data-i18n="general_button_savesettings">Save Settings</span>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12" id="layout_intro"></div>
<div class="col-lg-6 col-md-12">
<div class="panel-group" id="accordion">
<div class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<h4 class="panel-title">
<a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse in">
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="10" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="10" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="6" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="6" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_glength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_glength" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_gpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_gpos" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_reverse" data-i18n="conf_leds_layout_cl_reversdir">Reverse direction</label>
</td>
<td class="itd">
<div class="checkbox">
<input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input>
<label></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="panel panel-default">
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3">
<h4 class="panel-title">
<a><span data-i18n="conf_leds_layout_advanced">Advanced settings</span></a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body ">
<table class="tableform borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_hdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_hdepth" type="number" value="8" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_vdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_vdepth" type="number" value="5" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_overlap" type="number" value="0" min="0" max="200" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_edgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_edgegap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<!-- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_cornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_cornergap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_cl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
<h4 class="panel-title">
<a><i class="fa fa-th fa-fw"></i><span data-i18n="conf_leds_layout_matrix">Matrix Configuration (LED wall)</span></a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">
<table>
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="10" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="10" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_cabling">
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option>
</select>
</td>
</tr>
<!--- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_order" data-i18n="conf_leds_layout_ma_order">Order</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_order">
<option value="horizontal" data-i18n="conf_leds_layout_ma_opthoriz">Horizontal</option>
<option value="vertical" data-i18n="conf_leds_layout_ma_optvert">Vertical</option>
</select>
</td>
</tr>
--->
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_start">
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option>
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option>
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option>
<option value="bottom-right" data-i18n="conf_leds_layout_ma_optbottomright">Bottom right</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_ma_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="texfield_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<div class="panel-body">
<p id="leds_wl" data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p>
<div id="aceedit" style="width:100%;height:500px"></div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button>
<button type="button" class="btn btn-primary pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
</div>
</div> <!-- accordion -->
<div class="col-lg-6 col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4>
</div>
<div class="panel-body">
<p id="previewcreator" style="font-weight:bold"></p>
<p id="previewledcount" style="font-weight:bold"></p>
<p id="previewledpower" style="font-weight:bold"></p>
<div id="led_vis_help"></div>
<div class="col-lg-12 st_helper" style="padding-left:0px; padding-right:0px">
<div id="leds_preview"></div>
</div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
<button type="button" class="btn btn-primary" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">toggle led numbers</span></button>
</div>
</div>
</div>
</div>
</div> <!-- row layout -->
</div>
</div>
<div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
</div> <!-- tab content -->
<div class="row">
<div class="col-lg-12" id="layout_intro"></div>
<div class="col-lg-6 col-md-12" id="layout_type">
<div class="panel-group" id="accordion">
<div class="panel panel-primary">
<div class="panel-heading headcollapse" id="classic_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<h4 class="panel-title">
<a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="1" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_glength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_glength" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_gpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_gpos" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_reverse" data-i18n="conf_leds_layout_cl_reversdir">Reverse direction</label>
</td>
<td class="itd">
<div class="checkbox">
<input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input>
<label></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="panel panel-default">
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3" id="advanced_settings">
<h4 class="panel-title">
<a>
<i class="fa fa-fw fa-cogs"></i>
<span data-i18n="conf_leds_layout_advanced">Advanced settings</span>
<i class="fa fa-angle-down pull-right" id="advanced_settings_right_icon"></i>
</a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body ">
<table class="tableform borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_hdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_hdepth" type="number" value="8" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_vdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_vdepth" type="number" value="5" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_overlap" type="number" value="0" min="0" max="200" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_edgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_edgegap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptl" data-i18n="conf_leds_layout_ptl">Point Top Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlh" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%h</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlv" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%v</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptr" data-i18n="conf_leds_layout_ptr">Point Top Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrh" type="number" value="100" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrv" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbr" data-i18n="conf_leds_layout_pbr">Point Bottom Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrh" type="number" value="100" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrv" type="number" value="100" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbl" data-i18n="conf_leds_layout_pbl">Point Bottom Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblh" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblv" type="number" value="100" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<!-- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_cornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_cornergap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_cl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading headcollapse" id="matrix_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
<h4 class="panel-title">
<a><i class="fa fa-th fa-fw"></i><span data-i18n="conf_leds_layout_matrix">Matrix Configuration (LED wall)</span></a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">
<table>
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_cabling">
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option>
</select>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_direction" data-i18n="conf_leds_layout_ma_direction">Direction</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_direction">
<option value="horizontal" data-i18n="conf_leds_layout_ma_opthoriz">Horizontal</option>
<option value="vertical" data-i18n="conf_leds_layout_ma_optvert">Vertical</option>
</select>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_start">
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option>
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option>
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option>
<option value="bottom-right" data-i18n="conf_leds_layout_ma_optbottomright">Bottom right</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="panel panel-default">
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse-maadv" id="ma_advanced_settings">
<h4 class="panel-title">
<a>
<i class="fa fa-fw fa-cogs"></i>
<span data-i18n="conf_leds_layout_advanced">Advanced settings</span>
<i class="fa fa-angle-down pull-right" id="ma_advanced_settings_right_icon"></i>
</a>
</h4>
</div>
<div id="collapse-maadv" class="panel-collapse collapse">
<div class="panel-body ">
<table class="tableform borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_gapleft" data-i18n="conf_leds_layout_gapleft">Gap Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_gapleft" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%h</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_gapright" data-i18n="conf_leds_layout_gapright">Gap Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_gapright" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%v</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_gaptop" data-i18n="conf_leds_layout_gaptop">Gap Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_gaptop" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%h</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_gapbottom" data-i18n="conf_leds_layout_gapbottom">Gap Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_gapbottom" type="number" value="0" min="0" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%v</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_ma_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="blacklist_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" id="blacklist_config_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-ban fa-fw"></i><span data-i18n="conf_leds_layout_blacklistleds_title">Blacklist LEDs</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<div class="panel-body">
<div id="editor_container_blacklist_conf"></div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_bl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="texfield_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" id="current_config_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse5">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse5" class="panel-collapse collapse in">
<div class="panel-body">
<p id="leds_wl" data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p>
<div id="aceedit" style="width:100%;height:500px"></div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button>
<button type="button" class="btn btn-primary pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
</div>
</div> <!-- accordion -->
<div class="col-lg-6 col-md-12" id="layout_preview">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<i class="fa fa-search fa-fw"></i>
<span data-i18n="conf_leds_layout_peview">LED Layout preview</span>
<a href="#" class='fullscreen-btn' role="button" title="Toggle fullscreen">
<i class="fa fa-expand fa-fw pull-right"></i>
</a>
</h4>
</div>
<div class="panel-body">
<p id="previewcreator" style="font-weight:bold"></p>
<p id="previewledcount" style="font-weight:bold"></p>
<p id="previewledpower" style="font-weight:bold"></p>
<div id="led_vis_help"></div>
<div class="col-lg-12 st_helper" style="position:relative; padding-left:0px; padding-right:0px">
<canvas id="image_preview" style="position:absolute; z-index:0"></canvas>
<div id="keystone_correction_area" style="position: absolute; z-index: 20;"></div>
<div id="leds_preview"></div>
</div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
<button type="button" class="btn btn-danger" id="leds_prev_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">toggle live video</span></button>
<button type="button" class="btn btn-danger" id="leds_prev_toggle_keystone_correction_area" style="display:none;"><i class="mdi mdi-vector-square" style="margin-right:5px;"></i><span data-i18n="conf_leds_layout_btn_keystone">toggle keystone correction</span></button>
<button type="button" class="btn btn-primary pull-right" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">show checklist</span></button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_leds.js"></script>

View File

@ -1,21 +1,30 @@
<div class="container-fluid" id="trans_conf_logging">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h3>
<div id="log_head"></div>
<div class="row" id='conf_cont'></div>
<hr />
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
<hr>
<div style="display:none">
<h4 style="font-weight:bold"><i class="fa fa-reorder fa-fw"></i><span data-i18n="conf_logging_report">Bericht</span></h4>
<button class="btn btn-primary" id="btn_logupload"><i class="fa fa-upload fa-fw"></i><span data-i18n="conf_logging_btn_pbupload"></span></button>
<div id="log_upl_pol"></div>
<div id="upl_link" style="margin-top:10px;font-weight:bold;"></div>
<div id="prev_reports"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h3>
<div id="log_head"></div>
<div class="row" id='conf_cont'></div>
</div>
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<i class="fa fa-book fa-fw"></i>
<span data-i18n="conf_logging_logoutput"></span>
<a href="#" class='fullscreen-btn' role="button" title="Toggle fullscreen">
<i class="fa fa-expand fa-fw pull-right"></i>
</a>
</h4>
</div>
<div class="panel-body">
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
</div>
<div class="panel-footer" id="log_footer">
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_logging.js"></script>

View File

@ -1,12 +1,12 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h3>
<h3 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h3>
<div id="conf_cont">
<div class="row" id="conf_cont_tok">
<div class="col-lg-6" id="tok_desc">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-key fa-fw"></i><span data-i18n="conf_network_tok_title"></span></div>
<div class="panel-heading panel-system"><i class="fa fa-key fa-fw"></i><span data-i18n="conf_network_tok_title"></span></div>
<div class="panel-body">
<div id="tok_desc_cont"></div>
<div id="tktable"></div>
@ -34,4 +34,4 @@
</div>
</div>
<script src="/js/content_network.js"></script>
<script src="/js/content_network.js"></script>

File diff suppressed because one or more lines are too long

View File

@ -1,98 +1,149 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h3>
<div id="dash_intro">
<div class="row">
<div class="col-md-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-info-circle fa-fw"></i>
<span data-i18n="dashboard_infobox_label_title">Information</span>
</div>
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td data-i18n="dashboard_infobox_label_statush"></td>
<td id="dash_statush" style="font-weight:bold">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_platform">Platform:</td>
<td id="dash_platform"></td>
</tr>
<tr>
<td data-i18n="conf_leds_contr_label_contrtype">LED type:</td>
<td id="dash_leddevice"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_instance">Instance</td>
<td id="dash_instance"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_ports">Ports</td>
<td id="dash_ports"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_currenthyp">Hyperion version:</td>
<td id="dash_currv">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_watchedversionbranch">Watched version branch:</td>
<td id="dash_watchedversionbranch">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_latesthyp">Latest version:</td>
<td id="dash_latev">unknown</td>
</tr>
</tbody>
</table>
<hr>
<p style="font-weight:bold" data-i18n="dashboard_infobox_label_smartacc">Smart Access<p>
<span id="btn_hsc"></span>
<hr>
<span id="versioninforesult"></span>
</div>
</div>
</div>
<div class="col-md-6 col-xxl-3">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-eye fa-fw"></i>
<span data-i18n="dashboard_componentbox_label_title">Components status</span>
</div>
<div class="panel-body">
<table class="table">
<thead>
<tr>
<th data-i18n="dashboard_componentbox_label_comp">Component</th>
<th data-i18n="dashboard_componentbox_label_status">Status</th>
</tr>
</thead>
<tbody id="tab_components">
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-12 col-xxl-5" style="display:none">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-newspaper-o fa-fw"></i>
<span data-i18n="dashboard_newsbox_label_title">Visit Hyperion Blog</span>
</div>
<div class="panel-body">
<div id="dash_news" style="margin-bottom:7px"></div>
<a href="https://hyperion-project.org/blog/?pk_campaign=WebUI&pk_kwd=visitblog" target="_blank" data-i18n="dashboard_newsbox_visitblog"></a>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h3>
<script src="/js/content_dashboard.js"></script>
<!-- Infobox -->
<div id="dash_intro">
<!-- Instance(s) -->
<div class="row instances">
<!-- Config status -->
<div class="col-md-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading panel-system">
<span id="dash_config_status">Status</span>
</div>
<div class="panel-body">
<table id="dash_capture_hw" class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-camera"></i>
<span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span>
</th>
</tr>
</thead>
<tbody>
<tr id="dash_screen_grabber_row">
<td></td>
<td data-i18n="edt_conf_fg_heading_title">Screen-Grabber</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_screen_grabber">disabled</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_screengrabber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr id="dash_video_grabber_row">
<td></td>
<td data-i18n="edt_conf_v4l2_heading_title">Video-Grabber</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_video_grabber">disabled</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_videograbber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr id="dash_audio_grabber_row">
<td></td>
<td data-i18n="edt_conf_audio_heading_title">Audio-Grabber</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_audio_grabber">disabled</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_audiograbber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
</tbody>
</table>
<table id="dash_ports" class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-lan"></i>
<span data-i18n="dashboard_infobox_label_ports">Ports</span>
</th>
</tr>
</thead>
<tbody>
<tr id="dash_ports_flat_row">
<td></td>
<td data-i18n="dashboard_infobox_label_port_flat">flat</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_fbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_fbserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr id="dash_ports_proto_row">
<td></td>
<td data-i18n="dashboard_infobox_label_port_proto">proto</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_pbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_protoserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr id="dash_ports_boblight_row">
<td></td>
<td data-i18n="dashboard_infobox_label_port_boblight">proto</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_boblightPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemInstCapture', 'editor_container_boblightserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_json">json</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_jsonPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_jsonserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_ports_websocket">websocket</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_wsPorts">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemWeb')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
</tbody>
</table>
<table class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-numeric"></i>
<span data-i18n="about_version">Version</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_currenthyp">Hyperion version:</td>
<td id="dash_currv" style="text-align: right">unknown</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_watchedversionbranch">Watched version branch:</td>
<td id="dash_watchedversionbranch" style="text-align: right">unknown</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_latesthyp">Latest version:</td>
<td id="dash_latev" style="text-align: right">unknown</td>
</tr>
</tbody>
</table>
<hr>
<span id="versioninforesult"></span>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
</div>
<!-- /.container-fluid -->
<script src="/js/content_dashboard.js"></script>

View File

@ -1,51 +1,65 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
<div id="intro_effc">
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default" >
<div class="panel-heading">
<label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label>
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div>
<div class="panel-body">
<div id="eff_desc"></div>
<table style="margin-bottom:8px" id="effc_nametable">
<tbody>
<tr>
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
<td class="itd"><input class="form-control" type="text" id="name-input" /></td>
</tr>
</tbody>
</table>
<div id="editor_container" />
</div>
<div class="panel-footer" id="eff_footer">
<button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button>
<button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button>
<button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button>
<button class="btn btn-primary" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="panel panel-default" >
<div class="panel-heading">
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div>
<div class="panel-body">
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="intro_effc">
</div>
<div class="row">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
<label for="effectslist" data-i18n="effectsconfigurator_label_chooseeff">Choose Base-Effect:</label>
<select id="effectslist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div>
<div class="panel-body">
<div id="eff_desc"></div>
<table style="margin-bottom:8px" id="effc_nametable">
<tbody>
<tr>
<td class="ltd"><label for="name-input" data-i18n="effectsconfigurator_label_effectname">Effect name:</label></td>
<td class="itd"><input class="form-control" type="text" id="name-input"></td>
</tr>
</tbody>
</table>
<div id="editor_container"></div>
</div>
<div class="panel-footer" id="eff_footer">
<button class="btn btn-warning" id='btn_start_test' data-i18n="effectsconfigurator_button_starttest">Start Effecttest</button>
<button class="btn btn-warning" id='btn_stop_test' data-i18n="effectsconfigurator_button_stoptest">Stop Effecttest</button>
<button class="btn btn-danger" id='btn_cont_test' data-i18n="effectsconfigurator_button_conttest">Toggle continuous testing</button>
<button class="btn btn-primary" id='btn_write' data-i18n="effectsconfigurator_button_saveeffect">Save Effect</button>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div>
<div class="panel-body">
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_effectsconfigurator.js"></script>

View File

@ -5,7 +5,7 @@
<style> body {margin:auto; padding:2%; text-align:center; font-family:arial;}</style>
</head>
<body>
<img src="../img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:20px;">
<img src="../img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:20px;">
<h2><span style="color:red">We are sorry, Internet Explorer is not supported!</span><br /><br /> Please use recent versions of Firefox, Chrome, Safari or MS Edge.</h2>
</body>
</html>

View File

@ -1,35 +1,40 @@
<div class="container" style="margin:20px auto;max-width:500px;">
<center>
<div>
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Login</h3>
</div>
<div class="panel-body">
<form>
<div class="form-group">
<input name="password" class="form-control" type="password" id="password" placeholder="Password" autocomplete="off"/>
<input name="show_pw" type="checkbox" id="show_pw"/><label for="show_pw">Show/Hide Password</label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-sm btn-success" id="btn_password" onclick="requestAuthorization(document.getElementById('password').value); return false;" disabled><i class="fa fa-fw fa-unlock"></i>Login</button>
</div>
</form>
</div>
</div>
</div>
</center>
<center>
<div>
<div class="panel panel-danger">
<div class="panel-heading panel-system">
<h3 class="panel-title">Login</h3>
</div>
<div class="panel-body">
<form>
<div class="form-group">
<input type="name="username" class="form-control" type="text" id="username" value="Hyperion" disabled/></br>
<input name="password" class="form-control" type="password" id="password" placeholder="Password" autocomplete="off"/>
<input name="show_pw" type="checkbox" id="show_pw" /><label for="show_pw">Show/Hide Password</label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-sm btn-success" id="btn_password" onclick="requestAuthorization(document.getElementById('password').value); return false;"><i class="fa fa-fw fa-unlock"></i>Login</button>
</div>
</form>
</div>
</div>
</div>
</center>
</div>
<script>
removeOverlay();
removeOverlay();
$('#password').off().on('input',function(e) {
if(e.currentTarget.value.length >= 8)
$('#btn_password').removeAttr('disabled');
});
$('#password').off().on('input', function (e) {
if (e.currentTarget.value.length >= 8) {
$('#btn_password').prop('disabled', false);
}
else {
$('#btn_password').prop('disabled', true);
}
});
$('#show_pw').off().on('change',function(e) {
(e.currentTarget.checked ? $('#password').attr('type', 'text') : $('#password').attr('type', 'password'))
});
$('#show_pw').off().on('change', function (e) {
(e.currentTarget.checked ? $('#password').attr('type', 'text') : $('#password').attr('type', 'password'))
});
</script>

View File

@ -1,91 +1,107 @@
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
<div class="row">
<div class="col-md-12 col-lg-8 col-xxl-7">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
<div class="panel-body">
<div id="sstcont"></div>
<div id="auto_btn"></div>
</div>
</div>
</div>
<h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
<div class="col-md-6 col-lg-4 col-xxl-5">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
<div class="panel-body" id="comp_intro">
<div id="componentsbutton"></div>
</div>
</div>
</div>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-4">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
<div class="panel-body" id="color_intro">
<table class="table borderless">
<tbody>
<tr>
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
<td>
<div id="cp2" class="colorpicker-component input-group">
<input type="text" id="cpeff" class="form-control"/>
<span class="input-group-addon"><i></i></span>
<span class="input-group-addon" id="remote_input_rescol" title="Repeat Color" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</div>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="effect_select" data-i18n="remote_effects_label_effects">Effect:</label></td>
<td class="input-group">
<select id="effect_select" class="form-control"></select>
<span class="input-group-addon" id="remote_input_reseff" title="Repeat Effect" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="remote_input_img" data-i18n="remote_effects_label_picture" >Picture:</label></td>
<td class="input-group custom-file">
<input class="form-control" id="remote_input_img" type="file" accept="image/*" />
<span class="input-group-addon" id="remote_input_repimg" title="Repeat Image" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
<td class="input-group">
<input id="remote_duration" type="number" class="form-control" value="0" min="0"/>
<span class="input-group-addon" data-i18n="edt_append_s"></span>
</td>
</tr>
</tbody>
</table>
<button data-i18n="remote_color_button_reset" type="button" class="btn btn-primary" id="reset_color" style="margin-top:10px;">Reset Color/Effect</button>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-3">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_maptype_label">Mapping types</span></div>
<div class="panel-body" id="maptype_intro">
<div id="mappingsbutton"></div>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-5">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_videoMode_label"></span></div>
<div class="panel-body" id="videomode_intro">
<div id="videomodebtns"></div>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-5">
<div class="panel panel-default" >
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_adjustment_label"></span></div>
<div class="panel-body" id="adjust_content">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-lg-8 col-xxl-8">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
<div class="panel-body">
<div id="sstcont"></div>
<div id="auto_btn"></div>
</div>
</div>
</div>
<div class="col-md-6 col-lg-4 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
<div class="panel-body" id="comp_intro">
<div id="componentsbutton"></div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-lg-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
<div class="panel-body" id="color_intro">
<table class="table borderless">
<tbody>
<tr>
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
<td>
<div id="cp2" class="colorpicker-component input-group">
<input type="text" id="cpeff" class="form-control" />
<span class="input-group-addon"><i></i></span>
<span class="input-group-addon" id="remote_input_rescol" title="Repeat Color" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</div>
</td>
</tr>
<tr id="effect_row">
<td style="vertical-align:middle"><label for="effect_select" data-i18n="remote_effects_label_effects">Effect:</label></td>
<td class="input-group">
<select id="effect_select" class="form-control"></select>
<span class="input-group-addon" id="remote_input_reseff" title="Repeat Effect" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="remote_input_img" data-i18n="remote_effects_label_picture">Picture:</label></td>
<td class="input-group custom-file">
<input class="form-control" id="remote_input_img" type="file" accept="image/*" />
<span class="input-group-addon" id="remote_input_repimg" title="Repeat Image" style="cursor:pointer"><i class="fa fa-repeat"></i></span>
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
<td class="input-group">
<input id="remote_duration" type="number" class="form-control" value="0" min="0" />
<span class="input-group-addon" data-i18n="edt_append_s"></span>
</td>
</tr>
</tbody>
</table>
<button data-i18n="remote_color_button_reset" type="button" class="btn btn-primary" id="reset_color" style="margin-top:10px;">Reset Color/Effect</button>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-3">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_maptype_label">Mapping types</span></div>
<div class="panel-body" id="maptype_intro">
<div id="mappingsbutton"></div>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-5">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_videoMode_label"></span></div>
<div class="panel-body" id="videomode_intro">
<div id="videomodebtns"></div>
</div>
</div>
</div>
<div class="col-md-6 col-lg-6 col-xxl-5">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_adjustment_label"></span></div>
<div class="panel-body" id="adjust_content">
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_remote.js" ></script>
<script src="/js/content_remote.js"></script>

View File

@ -5,7 +5,7 @@
<h3 data-i18n="info_restart_title"></h3>
<h4 data-i18n="info_restart_rightback"></h4>
<p data-i18n="info_restart_contus"></p>
<a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=failedrestart" data-i18n="info_restart_contusa"></a>
<a href="https://hyperion-project.org/forum/" data-i18n="info_restart_contusa"></a>
</div>
</center>
</div>

View File

@ -3,110 +3,24 @@
<div class="col-xs-12">
<h3 class="page-header"><i class="fa fa-info fa-fw"></i><span data-i18n="support_label_title">Support Hyperion</span></h3>
<div id="supp_intro"></div>
<div style="display:none">
<h4 style="font-weight: bold" data-i18n="support_label_spreadtheword">Spread the word</h4>
<a href="https://www.facebook.com/Hyperion-1415088231896140/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-facebook bg-color-fb"></i>
<h4>Facebook</h4>
<p data-i18n="support_label_fbtext">Share our Hyperion Facebook page and get a notice when new updates are released</p>
</div>
</a>
<a href="https://twitter.com/HyperionAmbient" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-twitter bg-color-tw"></i>
<h4>Twitter</h4>
<p data-i18n="support_label_twtext">Share and follow on Twitter, be always up to date with latest post about the Hyperion development</p>
</div>
</a>
<a href="https://plus.google.com/103082579494653418604" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-google-plus bg-color-g"></i>
<h4>Google+</h4>
<p data-i18n="support_label_ggtext">Circle us on Google +!</p>
</div>
</a>
<a href="https://www.youtube.com/channel/UCCah_idbSMqgo4UwP6R9H-A" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-youtube bg-color-g"></i>
<h4>Youtube</h4>
<p data-i18n="support_label_yttext">Bored from pictures? Checkout our Youtube channel!</p>
</div>
</a>
<a href="https://www.instagram.com/hyperionambient/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-instagram bg-color-ig"></i>
<h4>Instagram</h4>
<p data-i18n="support_label_igtext"></p>
</div>
</a>
</div>
</div>
<div class="col-xs-12" style="display:none">
<hr>
<h4 style="font-weight: bold" data-i18n="support_label_donate">Donate or use our affiliate links</h4>
<ol>
<li data-i18n="support_label_affinstr1">Click on the appropriate link of your country</li>
<li data-i18n="support_label_affinstr2">Everything you buy (doesnt matter what) we get a small fee based on your turnover</li>
<li data-i18n="support_label_affinstr3">You ALWAYS pay the same price, there is absolutely no difference. Try it out!</li>
</ol>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-amazon bg-color-am"></i>
<h4>Amazon</h4>
<ul>
<li><a href="http://www.amazon.de/?tag=hyperionproje-21" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="http://www.amazon.com/?tag=hyperionpro05-20" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="http://www.amazon.co.uk/?tag=hyperionpro02-21" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="http://www.amazon.fr/?tag=hyperionpro0c-21" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="http://www.amazon.es/?tag=hyperionpro07-21" target="_blank" data-i18n="general_country_es">Spain</a></li>
<li><a href="http://www.amazon.it/?tag=hyperionpro00-21" target="_blank" data-i18n="general_country_it">Italy</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-shopping-cart bg-color-am"></i>
<h4>ebay</h4>
<ul>
<li><a href="http://rover.ebay.com/rover/1/707-53477-19255-0/1?pub=5575174930&toolid=10001&campid=707-53477-19255-0&customid=&mpt=9592320&mpre=http%3A%2F%2Fwww.ebay.de" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?pub=5575174930&toolid=10001&campid=711-53200-19255-0&customid=&mpt=8091563&mpre=http%3A%2F%2Fwww.ebay.com" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="http://rover.ebay.com/rover/1/710-53481-19255-0/1?pub=5575174930&toolid=10001&campid=710-53481-19255-0&customid=&mpt=9837178&mpre=http%3A%2F%2Fwww.ebay.co.uk" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="http://rover.ebay.com/rover/1/1346-53482-19255-0/1?pub=5575174930&toolid=10001&campid=1346-53482-19255-0&customid=&mpt=9890408&mpre=http%3A%2F%2Fwww.ebay.nl" target="_blank" data-i18n="general_country_nl">Netherlands</a></li>
<li><a href="http://rover.ebay.com/rover/1/709-53476-19255-0/1?pub=5575174930&toolid=10001&campid=709-53476-19255-0&customid=&mpt=9865977&mpre=http%3A%2F%2Fwww.ebay.fr" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="http://rover.ebay.com/rover/1/1185-53479-19255-0/1?pub=5575174930&toolid=10001&campid=1185-53479-19255-0&customid=&mpt=1016300&mpre=http%3A%2F%2Fwww.ebay.es" target="_blank" data-i18n="general_country_es">Spain</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-paypal bg-color-pp"></i>
<h4>Paypal</h4>
<p data-i18n="support_label_donationpp">Donation:</p><a href="https://www.paypal.me/hyperionproject/10" target="_blank">Paypal</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-btc bg-color-btc"></i>
<h4>Bitcoin</h4>
<p data-i18n="support_label_btctext">Address:</p>
<p style="word-break: break-all;">1GGZbsT6fH3cGq25H5HS2PfisPfDnffSJR</p>
</div>
</div>
<div class="col-xs-12">
<hr>
<h4 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h4>
<a href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_webpage" target="_blank" class="unlink">
<a href="https://hyperion-project.org" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-globe bg-color-wf"></i>
<h4 data-i18n="support_label_webpagetitle">Webpage</h4>
<p data-i18n="support_label_webpagetext">Home of Hyperion</p>
</div>
</a>
<a href="https://wiki.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_wiki" target="_blank" class="unlink">
<a href="https://docs.hyperion-project.org" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-book bg-color-wf"></i>
<h4 data-i18n="support_label_wikititle">Wiki</h4>
<h4 data-i18n="support_label_wikititle">Documentation</h4>
<p data-i18n="support_label_wikitext">The A to Z source for almost everything Hyperion related</p>
</div>
</a>
<a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_forum" target="_blank" class="unlink">
<a href="https://hyperion-project.org/forum/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-comments bg-color-wf"></i>
<h4 data-i18n="support_label_forumtitle">Forum</h4>

View File

@ -1,44 +1,70 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></h3>
<div class="introd">
<h4 data-i18n="update_label_intro">Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest</h4>
<h4> At the moment the install buttons are not working. Development is still ongoing here. </h4>
<hr />
</div>
<h4 id="update_currver"></h4>
<hr>
<div class="col-lg-12" id="versionlist">
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></h3>
<div class="introd">
<h4 data-i18n="update_label_intro">Overview about all available Hyperion versions. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest</h4>
<h4> At the moment the respective install button is disabled. Development is still ongoing here. </h4>
<hr />
</div>
<h4 id="update_currver"></h4>
<hr>
<div class="col-lg-12" id="versionlist">
</div>
</div>
</div>
</div>
<script>
$(document).ready( function(error) {
performTranslation();
getReleases(function (callback){
$(document).ready(function (error) {
performTranslation();
getReleases(function (callback) {
if(callback)
{
for (var key in window.gitHubVersionList)
{
if (callback) {
var matches = 0;
for (var key in window.gitHubVersionList) {
if(window.gitHubVersionList[key].name == null || (window.serverConfig.general.watchedVersionBranch == "Stable" && window.gitHubVersionList[key].prerelease == true))
{
continue;
}
if (window.gitHubVersionList[key].name == null ||
window.gitHubVersionList[key].tag_name.includes('rc') ||
(window.serverConfig.general.watchedVersionBranch == "Stable" &&
(window.gitHubVersionList[key].tag_name.includes('beta') ||
window.gitHubVersionList[key].tag_name.includes('alpha')
)
) ||
(window.serverConfig.general.watchedVersionBranch == "Beta"
&& window.gitHubVersionList[key].tag_name.includes('Alpha')
)) {
continue;
}
$('#versionlist').append('<div class="col-lg-6"><div class="panel panel-'+ (window.gitHubVersionList[key].prerelease == true ? "danger" : "default") +'"><div class="panel-heading"><i class="fa fa-television fa-fw"></i>Hyperion V'+window.gitHubVersionList[key].tag_name+'</div><div class="panel-body"><p><span style="font-weight:bold;">'+$.i18n('update_label_type') + '</span> ' + (window.gitHubVersionList[key].prerelease == true ? "Beta" : "Stable") + '</p><p><span style="font-weight:bold;">'+$.i18n('update_label_description')+'</span> '+window.gitHubVersionList[key].body+'</p><hr><a class="btn btn-primary" href="'+ window.gitHubVersionList[key].html_url +'" target="_blank"><i class="fa fa-list fa-fw"></i><span style="font-weight:bold;">'+$.i18n('update_button_changelog')+'</span></a><button type="button" class="btn btn-warning pull-right" ' + (window.gitHubVersionList[key].tag_name == window.currentVersion ? "disabled":"") + '><i class="fa fa-download fa-fw"></i>'+$.i18n('update_button_install')+'</button></div></div></div>');
}
$('#update_currver').append($.i18n('update_versreminder', currentVersion));
}
else
{
$('#versionlist').append($.i18n('update_error_getting_versions'));
}
});
removeOverlay();
});
var danger;
var type;
if (window.gitHubVersionList[key].tag_name.includes('beta')) {
danger = 'warning';
type = 'Beta';
}
else if (window.gitHubVersionList[key].tag_name.includes('alpha')) {
danger = 'danger';
type = 'Alpha';
}
else {
danger = 'default';
type = 'Stable';
}
matches++;
$('#versionlist').append('<div class="col-lg-6"><div class="panel panel-' + danger + '"><div class="panel-heading"><i class="fa fa-television fa-fw"></i>Hyperion V' + window.gitHubVersionList[key].tag_name + '</div><div class="panel-body"><p><span style="font-weight:bold;">' + $.i18n('update_label_type') + '</span> ' + type + '</p><p><span id="desc" style="font-weight:bold;">' + $.i18n('update_label_description') + '</span> ' + DOMPurify.sanitize(marked.parse(window.gitHubVersionList[key].body)) + '</p><hr><a class="btn btn-primary" href="' + window.gitHubVersionList[key].html_url + '" target="_blank"><i class="fa fa-list fa-fw"></i><span style="font-weight:bold;">' + $.i18n('update_button_changelog') + '</span></a><button type="button" class="btn btn-warning pull-right" ' + (window.gitHubVersionList[key].tag_name == window.currentVersion ? "disabled" : "disabled") + '><i class="fa fa-download fa-fw"></i>' + $.i18n('update_button_install') + '</button></div></div></div>');
}
$('#update_currver').append($.i18n('update_versreminder', currentVersion));
if (matches == 0)
$('#versionlist').append($.i18n('update_no_updates_for_branch'));
}
else {
$('#versionlist').append($.i18n('update_error_getting_versions'));
}
});
removeOverlay();
});
</script>

8
assets/webconfig/css/animate.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,28 @@
/*! ========================================================================
* Bootstrap Toggle: bootstrap-toggle.css v2.2.0
* http://www.bootstraptoggle.com
* ========================================================================
* Copyright 2014 Min Hur, The New York Times Company
* Licensed under MIT
* ======================================================================== */
.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px}
.toggle{position:relative;overflow:hidden}
.toggle input[type=checkbox]{display:none}
.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none}
.toggle.off .toggle-group{left:-100%}
.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0}
.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0}
.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px}
.toggle.btn{min-width:59px;min-height:34px}
.toggle-on.btn{padding-right:24px}
.toggle-off.btn{padding-left:24px}
.toggle.btn-lg{min-width:79px;min-height:45px}
.toggle-on.btn-lg{padding-right:31px}
.toggle-off.btn-lg{padding-left:31px}
.toggle-handle.btn-lg{width:40px}
.toggle.btn-sm{min-width:50px;min-height:30px}
.toggle-on.btn-sm{padding-right:20px}
.toggle-off.btn-sm{padding-left:20px}
.toggle.btn-xs{min-width:35px;min-height:22px}
.toggle-on.btn-xs{padding-right:12px}
.toggle-off.btn-xs{padding-left:12px}

View File

@ -0,0 +1,467 @@
/*General Elements*/
body {
background-color: #212121;
color: #DDDDDD;
}
#page-wrapper {
background-color: #333;
border-left: none;
}
.navbar-default {
background-color: #212121;
border-color: #212121;
}
.navbar-default li a {
color: #C6C6C6 !important;
}
.panel-body {
background-color: #424242;
}
hr {
border-top: 1px solid #DDDDDD;
}
a {
color: #337ab7;
}
a:hover {
color: #5db6ff;
}
a:focus {
color: #5db6ff;
}
a:active {
color: #5db6ff
}
p {
color: #DDDDDD;
}
h4 {
color: #DDDDDD;
}
/*Buttons*/
.btn-transparent:hover {
color: #5db6ff;
}
.btn-transparent:focus{
color: #5db6ff;
}
.btn-default {
color: #DDDDDD;
background-color: #212121;
border-color: #424242;
}
.btn-default:hover {
color: #DDDDDD;
background-color: #333;
border-color: #616161;
}
.btn-default:focus{
color: #DDDDDD;
background-color: #333;
border-color: #616161;
}
.btn-primary {
background-color: #155fa0;
border-color: #5db6ff;
}
.btn-primary:hover{
background-color: #337ab7;
border-color: #82B1FF;
}
.btn-primary:focus{
background-color: #337ab7;
border-color: #82B1FF;
}
.btn-primary[disabled]:hover {
background-color: #337ab7;
border-color: #82B1FF;
}
.btn-warning {
background-color: #bc7410;
border-color: #f0ad4e;
}
.btn-warning:hover {
background-color: #ec971f;
border-color: #f3bd72;
}
.btn-warning:focus {
background-color: #ec971f;
border-color: #f3bd72;
}
.btn-danger {
background-color: #861c30;
border-color: #d43f3a;
}
.btn-danger:hover {
background-color: #b4102d;
border-color: #F44336;
}
.btn-danger:focus {
background-color: #b4102d;
border-color: #F44336;
}
.btn-success {
background-color: darkgreen;
border-color: #4cae4c;
}
.btn-success:hover {
background-color: green;
border-color: #a1eea1;
}
.btn-wizard {
background-color: #602060;
border-color: #993399;
}
.btn-wizard:hover {
background-color: #993399;
border-color: #cc66cc;
}
.btn-wizard:focus {
background-color: #993399;
border-color: #cc66cc;
}
/*Tables*/
tr:hover td {
background-color: #2e6da4;
}
/*Navigation Sidebar*/
.sidebar ul li {
border-bottom: 1px solid #424242;
}
.sidebar ul li a.active{
background-color: #424242;
}
.sidebar ul li a:hover{
background-color: #424242;
}
.sidebar ul li a:focus{
background-color: #424242;
}
/*Navigation Topbar*/
.navbar-top-links li a:hover {
background-color: #424242;
}
.navbar-top-links li a:focus {
background-color: #424242;
}
.nav .open>a, .nav .open>a:hover, .nav .open>a:focus {
background-color: #424242;
}
.dropdown-menu {
background-color: #212121;
border-color: #424242;
}
.dropdown-menu>li>a {
color: #DDDDDD;
}
/*Panels*/
.panel-default {
background-color: #424242!important;
border-color: #424242 !important;
box-shadow: 0px 2px 10px 0px rgba(18, 18, 18, 0.4);
}
.panel-primary {
background-color: #424242!important;
border-color: #424242 !important;
box-shadow: 0px 2px 10px 0px rgba(18, 18, 18, 0.4);
}
.panel-primary>.panel-heading {
background-color: #424242!important;
border-color: #424242 !important;
}
.panel-primary>.panel-heading+.panel-collapse>.panel-body {
border-top-color: #616161;
}
.panel-default>.panel-heading{
background-color: #424242 !important;
border-color: #212121 !important;
color: #DDDDDD;
}
.panel-default>.panel-system{
background-color: #0E83E7 !important;
border-color: #212121 !important;
color: #fff ;
}
.panel-default>.panel-instance{
background-color:#E18300 !important;
border-color: #212121 !important;
color: #DDDDDD;
}
.panel-footer {
background-color: #424242 !important;
border-top: 1px solid #616161 !important;
}
/*JSON Editor Inputs*/
[id^=editor_container] .well {
background-color: #424242 !important;
}
/* Froms */
.form-control {
border-color: #616161;
background-color: #212121;
color: #DDDDDD !important;
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
}
select.form-control {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4.95 10'%3E%3Cpath fill='%23212121' d='M0 0h4.95v10H0z'/%3E%3Cpath fill='%23ddd' d='M1.41 4.67l1.07-1.49 1.06 1.49H1.41zm2.13.66L2.48 6.82 1.41 5.33h2.13z'/%3E%3C/svg%3E") !important;
background-repeat: no-repeat;
background-position: right 5px center;
}
.input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child>.btn, .input-group-btn:last-child>.btn-group>.btn, .input-group-btn:last-child>.dropdown-toggle, .input-group-btn:first-child>.btn:not(:first-child), .input-group-btn:first-child>.btn-group:not(:first-child)>.btn {
border-color: #616161;
background-color: #333;
color: #DDDDDD;
}
.input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child>.btn, .input-group-btn:first-child>.btn-group>.btn, .input-group-btn:first-child>.dropdown-toggle, .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child>.btn-group:not(:last-child)>.btn {
border-color: #616161;
background-color: #212121;
color: #DDDDDD;
}
.keystone_correction_corners {
border:1px solid white;
}
.checkbox label::before {
border-color: #616161;
background-color: #212121;
color: #DDDDDD;
}
.checkbox label::after
{
left: 1px;
color: #DDDDDD;
}
.checklist li::before {
color: #DDDDDD;
}
.checkbox input[type="checkbox"]:checked + label::before, .checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="radio"]:checked + label::before {
border-color: #616161;
background-color: #212121;
}
.checkbox input[type="checkbox"]:checked + label::after, .checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after {
color: #DDDDDD;
}
.radio__field:checked ~ .radio__icon::before {
background: #fff;
}
.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
}
.input-group-addon {
background-color: #333;
border: 1px solid #616161;
border-left: none;
}
/* Tabs Buttons */
.nav-tabs {
border-bottom: 1px solid #616161;
}
.nav-tabs>li.active>a, .nav-tabs>li.active>a:hover, .nav-tabs>li.active>a:focus {
color: #DDDDDD;
border: 1px solid #424242;
border-bottom-color: transparent;
border-top-color: #5db6ff;
background-color: #333;
}
.nav-tabs>li>a {
color: #999999;
border: 1px solid #424242;
border-bottom-color: #616161;
background-color: #424242;
}
.nav-tabs>li>a:hover, .nav-tabs>li>a:focus {
color: #DDDDDD;
border: 1px solid #424242;
border-bottom-color: transparent;
background-color: #333;
}
/*Modals*/
.modal-content {
background-color: #212121;
}
.modal-header {
border-bottom: 1px solid #616161;
}
button.close {
color: #DDDDDD;
}
button.close:hover {
color: #ffffff;
}
/*Bootstrap Notify*/
[data-notify="container"] {
background-color: #212121;
}
.support-container:hover .fa {
background-color: #2e6da4;
}
/*Burger Button*/
.navbar-default .navbar-toggle {
border-color: #2e6da4;
background-color: #1e1e1e;
}
.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
border-color: #2e6da4;
background-color: #424242;
}
.navbar-top-links .dropdown-menu li a:hover{
background-color: #424242;
color: #5db6ff;
}
/*navbar fixes*/
.navbar-top-links {
display: table;
}
.navbar-top-links>li {
display: table-cell;
}
.navbar-top-links li a {
text-align: center;
}
.navbar-top-links li ul a {
text-align: left;
}
.navbar-default .navbar-toggle > .icon-bar {
background-color: #DDDDDD !important;
}
.navbar-top-links .dropdown-alerts {
position: fixed;
top: auto;
margin: 0 auto;
}
/* additinal changes + fixes */
.component-on,
.component-on ~ span {
color: greenyellow;
}
.support-container {
color: #DDDDDD;
}
.bs-callout {
border-top: none;
border-right: none;
border-bottom: none;
background-color: #424242;
}
.page-header {
border-bottom: 1px solid #616161;
}
#page-content .bs-callout {
background-color: #333;
}
.bs-callout-success {
border-left-color: #67FF01;
}
.bs-callout-success h4 {
color: greenyellow;
}
tr:hover td {
background-color: #616161;
}
#dash_statush span[style="color:green"] {
color: greenyellow !important;
}
#dash_statush span[style="color:red"] {
color:#861c30 !important;
}
pre {
background-color: #424242 !important;
border-color: #424242 !important;
box-shadow: 0px 2px 10px 0px rgba(18, 18, 18, 0.4);
color: #DDD;
}

View File

@ -0,0 +1,244 @@
/*General Elements*/
body {
background-color: #080808;
color: #D3D3D3;
}
#page-wrapper {
background-color:#080808;
}
.navbar-default {
background-color:#080808;
}
.panel-body {
background-color: #121212;
}
hr {
border-top: 1px solid #D3D3D3;
}
a {
color: #005d5c;
}
a:hover {
color: #018786;
}
a:focus {
color: #018786;
}
a:active {
color: #018786
}
p {
color: #D3D3D3;
}
h4 {
color: #D3D3D3;
}
/*Buttons*/
.btn-primary {
background-color: #005d5c;
border-color: #D3D3D3;
}
.btn-primary:hover{
background-color: #018786;
border-color: #D3D3D3;
}
.btn-primary:focus{
background-color: #018786;
border-color: #D3D3D3;
}
.btn-primary[disabled]:hover {
background-color: #018786;
border-color: #D3D3D3;
}
.btn-warning {
background-color: #ec971f;
border-color: #D3D3D3;
}
.btn-warning:hover {
background-color: #f0ad4e;
border-color: #D3D3D3;
}
.btn-warning:focus {
background-color: #f0ad4e;
border-color: #D3D3D3;
}
.btn-danger {
background-color: #ca2f4bd4;
border-color: #D3D3D3;
}
.btn-danger:hover {
background-color: #cf6679;
border-color: #D3D3D3;
}
.btn-danger:focus {
background-color: #cf6679;
border-color: #D3D3D3;
}
/*Tables*/
tr:hover td {
background-color: #018786;
}
/*Navigation Sidebar*/
.sidebar ul li {
background-color: #080808;
}
.sidebar ul li a.active{
background-color: #121212;
}
.sidebar ul li a:hover{
background-color: #121212;
}
.sidebar ul li a:focus{
background-color: #121212;
}
/*Navigation Topbar*/
.navbar-top-links li a:hover {
background-color: #121212;
}
.navbar-top-links li a:focus {
background-color: #121212;
}
.nav .open>a, .nav .open>a:hover, .nav .open>a:focus {
background-color: #121212;
}
.dropdown-menu {
background-color: #080808;
border-color: #D3D3D3;
}
.dropdown-menu>li>a {
color: #018786;
}
/*Panels*/
.panel-default {
background-color:#121212 !important;
border-color:#D3D3D3 !important;
}
.panel-primary {
background-color:#121212 !important;
border-color:#D3D3D3 !important;
}
.panel-primary>.panel-heading {
background-color:#121212 !important;
border-color:#D3D3D3 !important;
}
.panel-primary>.panel-heading+.panel-collapse>.panel-body {
border-top-color: #D3D3D3;
}
.panel-default>.panel-heading{
background-color:#121212 !important;
border-color:#D3D3D3 !important;
color: #D3D3D3;
}
.panel-footer {
background-color:#121212 !important;
}
/*JSON Editor Inputs*/
[id^=editor_container] .well {
background-color: #121212 !important;
}
.input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child>.btn, .input-group-btn:last-child>.btn-group>.btn, .input-group-btn:last-child>.dropdown-toggle, .input-group-btn:first-child>.btn:not(:first-child), .input-group-btn:first-child>.btn-group:not(:first-child)>.btn {
border-color: #D3D3D3;
}
.input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child>.btn, .input-group-btn:first-child>.btn-group>.btn, .input-group-btn:first-child>.dropdown-toggle, .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child>.btn-group:not(:last-child)>.btn {
border-color: #D3D3D3;
}
.introd h4 {
border-left: 5px solid #03dac6;
}
.bs-callout-primary h4 {
color: #03dac6;
}
.bs-callout-primary {
border-left-color: #03dac6;
}
/* Tabs Buttons */
.nav-tabs>li.active>a, .nav-tabs>li.active>a:hover, .nav-tabs>li.active>a:focus {
color: #D3D3D3;
background-color: #018786;
}
.nav-tabs>li>a, .nav-tabs>li>a:hover, .nav-tabs>li>a:focus {
color: #D3D3D3;
background-color: #005d5c;
}
/*Modals*/
.modal-content {
background-color: #121212;
}
button.close {
color: #D3D3D3;
}
button.close:hover {
color: #ffffff;
}
/*Bootstrap Notify*/
[data-notify="container"] {
background-color: #121212;
}
.support-container:hover .fa {
background-color: #005d5c;
}
.navbar-top-links .dropdown-menu li a:hover{
background-color: #121212;
color: #03dac6;
}
/*Burger Button*/
.navbar-default .navbar-toggle {
border-color: #005d5c;
background-color: #080808;
}
.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
border-color: #005d5c;
background-color: #080808;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.gj-draggable{cursor:move}.gj-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none;z-index:1203}.gj-dialog-bootstrap [data-role=title],.gj-dialog-bootstrap4 [data-role=title]{display:inline}.gj-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.gj-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.gj-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.gj-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.gj-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.gj-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.gj-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.gj-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.gj-dialog-footer{position:absolute;bottom:0;width:100%;margin-top:0}.gj-dialog-scrollable [data-role=body]{overflow-x:hidden;overflow-y:scroll}.gj-dialog-bootstrap,.gj-dialog-bootstrap4,.gj-dialog-md{overflow:hidden;z-index:1202}.gj-dialog-bootstrap [data-role=close]{line-height:1.42857143}.gj-dialog-bootstrap4 [data-role=close]{line-height:1.5}.gj-dialog-md{background-color:#FFF;border:none;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-sizing:border-box;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.gj-dialog-md-header{padding:24px 24px 0;font-family:Roboto,Helvetica,Arial,sans-serif}.gj-dialog-md-title{margin:0;font-weight:400;display:inline;line-height:28px;font-size:20px}.gj-dialog-md-close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0;float:right;line-height:28px;font-size:28px}.gj-dialog-md-body{padding:20px 24px 24px;color:rgba(0,0,0,.54);font-family:Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:20px}.gj-dialog-md-footer{padding:8px 8px 8px 24px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box}.gj-dialog-md-footer>:first-child{margin-right:0}.gj-dialog-md-footer>*{margin-right:8px;height:36px}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,64 +0,0 @@
/*
* metismenu - v1.1.3
* Easy menu jQuery plugin for Twitter Bootstrap 3
* https://github.com/onokumus/metisMenu
*
* Made by Osman Nuri Okumus
* Under MIT License
*/
.arrow {
float: right;
line-height: 1.42857;
}
.glyphicon.arrow:before {
content: "\e079";
}
.active > a > .glyphicon.arrow:before {
content: "\e114";
}
/*
* Require Font-Awesome
* http://fortawesome.github.io/Font-Awesome/
*/
.fa.arrow:before {
content: "\f104";
}
.active > a > .fa.arrow:before {
content: "\f107";
}
.plus-times {
float: right;
}
.fa.plus-times:before {
content: "\f067";
}
.active > a > .fa.plus-times {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.plus-minus {
float: right;
}
.fa.plus-minus:before {
content: "\f067";
}
.active > a > .fa.plus-minus:before {
content: "\f068";
}

View File

@ -0,0 +1,7 @@
/*!
* metismenu https://github.com/onokumus/metismenu#readme
* A collapsible jQuery menu plugin
* @version 3.0.6
* @author Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
* @license: MIT
*/.metismenu .arrow{float:right;line-height:1.42857}*[dir=rtl] .metismenu .arrow{float:left}.metismenu .glyphicon.arrow:before{content:""}.metismenu .mm-active>a>.glyphicon.arrow:before{content:""}.metismenu .fa.arrow:before{content:""}.metismenu .mm-active>a>.fa.arrow:before{content:""}.metismenu .ion.arrow:before{content:""}.metismenu .mm-active>a>.ion.arrow:before{content:""}.metismenu .plus-times{float:right}*[dir=rtl] .metismenu .plus-times{float:left}.metismenu .fa.plus-times:before{content:""}.metismenu .mm-active>a>.fa.plus-times{transform:rotate(45deg)}.metismenu .plus-minus{float:right}*[dir=rtl] .metismenu .plus-minus{float:left}.metismenu .fa.plus-minus:before{content:""}.metismenu .mm-active>a>.fa.plus-minus:before{content:""}.metismenu .mm-collapse:not(.mm-show){display:none}.metismenu .mm-collapsing{position:relative;height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height,visibility}.metismenu .has-arrow{position:relative}.metismenu .has-arrow::after{position:absolute;content:"";width:.5em;height:.5em;border-width:1px 0 0 1px;border-style:solid;border-color:initial;right:1em;transform:rotate(-45deg) translate(0, -50%);transform-origin:top;top:50%;transition:all .3s ease-out}*[dir=rtl] .metismenu .has-arrow::after{right:auto;left:1em;transform:rotate(135deg) translate(0, -50%)}.metismenu .mm-active>.has-arrow::after,.metismenu .has-arrow[aria-expanded=true]::after{transform:rotate(-135deg) translate(0, -50%)}*[dir=rtl] .metismenu .mm-active>.has-arrow::after,*[dir=rtl] .metismenu .has-arrow[aria-expanded=true]::after{transform:rotate(225deg) translate(0, -50%)}/*# sourceMappingURL=metisMenu.min.css.map */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,93 @@
{
"conf_effect_path_intro": "Заредете ефекти от дефинираните пътища. Освен това можете да деактивирате отделни ефекти по име, за да ги скриете от всички списъци с ефекти.",
"conf_general_impexp_expbtn": "Експортиране",
"conf_general_impexp_impbtn": "Импортиране",
"conf_general_impexp_l1": "Импортирайте конфигурация, като изберете конфигурационен файл по-долу и щракнете върху „Импортиране“.",
"conf_general_impexp_l2": "Експортирайте конфигурация, като щракнете върху „Експортиране“. Вашият браузър започва изтегляне.",
"conf_general_impexp_title": "Импортиране/Експортиране на Конфигурация",
"conf_general_intro": "Основни настройки около Hyperion и WebUI, които не се вписват в друга категория.",
"conf_general_label_title": "Общи настройки",
"conf_helptable_expl": "Обяснение",
"conf_helptable_option": "Опции",
"conf_leds_layout_checkp1": "Черният светодиод е вашият първи светодиод, първият светодиод е точката, в която въвеждате вашия сигнал с данни.",
"conf_leds_layout_checkp2": "Оформлението винаги е изгледът отпред на вашия телевизор, никога отзад.",
"conf_leds_layout_checkp3": "Уверете се, че посоката е правилна. Сивите светодиоди показват светодиод номер 2 и 3 за визуализиране на посоката на данните.",
"conf_leds_optgroup_network": "Мрежа",
"dashboard_alert_message_confedit": "Вашата конфигурация на Hyperion е променена. За да го приложите, рестартирайте Hyperion.",
"dashboard_alert_message_confedit_t": "Конфигурацията е променена",
"dashboard_alert_message_confsave_success": "Вашата конфигурация на Hyperion е запазена успешно. Вашите промени вече са активни.",
"dashboard_alert_message_confsave_success_t": "Конфигурацията е запаметена",
"dashboard_alert_message_disabled": "Тази инстанция в момента е деактивирана! За да я използвате отново, активирайте я на таблото за управление.",
"dashboard_alert_message_disabled_t": "ЛЕД хардуерна инстанция е деактивирана",
"dashboard_componentbox_label_comp": "Компонент",
"dashboard_componentbox_label_status": "Статус",
"dashboard_componentbox_label_title": "Статус на компонентите",
"dashboard_infobox_label_currenthyp": "Вашата версия на Hyperion:",
"dashboard_infobox_label_instance": "Инстанция:",
"dashboard_infobox_label_latesthyp": "Последната версия на Hyperion:",
"dashboard_infobox_label_platform": "Платформа:",
"dashboard_infobox_label_ports": "Портове",
"dashboard_infobox_label_statush": "Hyperion статус:",
"dashboard_infobox_label_title": "Информация",
"dashboard_infobox_message_updatesuccess": "Вие използвате най-новата версия на Hyperion.",
"dashboard_infobox_message_updatewarning": "Нова версия на Hyperion е налична! ($1)",
"dashboard_newsbox_label_title": "Hyperion-Блог",
"dashboard_newsbox_noconn": "Не можете да се свържете с Hyperion Server, за да извлечете най-новите публикации, вашата интернет връзка работи ли?",
"dashboard_newsbox_readmore": "Прочети повече",
"dashboard_newsbox_visitblog": "Посети Hyperion-Блог",
"edt_conf_webc_port_title": "HTTP порт",
"general_access_default": "По подразбиране",
"general_btn_back": "Назад",
"general_btn_cancel": "Откажи",
"general_btn_continue": "Продължи",
"general_btn_next": "Следващ",
"general_btn_off": "Изключване",
"general_btn_ok": "ОК",
"general_btn_on": "Включване",
"general_btn_restarthyperion": "Рестартирай Hyperion",
"general_btn_save": "Запази",
"general_btn_saveandreload": "Запази и презареди",
"general_btn_yes": "Да",
"general_button_savesettings": "Запази настройките",
"general_col_blue": "синьо",
"general_col_green": "зелено",
"general_col_red": "червено",
"general_comp_LEDDEVICE": "ЛЕД Изход",
"general_country_de": "Германия",
"general_country_es": "Испания",
"general_country_fr": "Франция",
"general_country_it": "Италия",
"general_country_nl": "Холандия",
"general_country_uk": "Англия",
"general_country_us": "САЩ",
"general_speech_cs": "Чешки",
"general_speech_de": "Немски",
"general_speech_en": "Английски",
"general_speech_es": "Испански",
"general_speech_he": "Иврит",
"general_speech_id": "Индонезийски",
"general_speech_it": "Италиански",
"general_speech_uk": "Украински",
"general_webui_title": "Hyperion - Уеб Конфигурация",
"main_ledsim_btn_togglelednumber": "Брой ЛЕД",
"main_ledsim_btn_toggleleds": "Показване на светодиоди",
"main_ledsim_btn_togglelivevideo": "Видео на живо",
"main_ledsim_text": "Визуализация на живо на LED цветове и по избор текущия видео поток на вашето устройство за прихващане.",
"main_ledsim_title": "ЛЕД Визуализация",
"main_menu_about_token": "Относно Hyperion",
"main_menu_colors_conf_token": "Обработка на изображение",
"main_menu_configuration_token": "ЛЕД Инстанции",
"main_menu_dashboard_token": "Табло за управление",
"main_menu_effect_conf_token": "Ефекти",
"main_menu_effectsconfigurator_token": "Конфигуратор на ефекти",
"main_menu_general_conf_token": "Общи",
"main_menu_input_selection_token": "Ибор на вход",
"main_menu_leds_conf_token": "ЛЕД Изход",
"main_menu_logging_token": "Дневник",
"main_menu_network_conf_token": "Мрежови услуги",
"main_menu_remotecontrol_token": "Дистанционно управление",
"main_menu_support_token": "Поддръжка",
"main_menu_system_token": "Система",
"main_menu_update_token": "Актуализация",
"main_menu_webconfig_token": "Уеб конфигурация"
}

View File

@ -0,0 +1,61 @@
{
"dashboard_alert_message_confedit": "La teva configuració d'Hyperion s'ha modificat. Per aplicar-la, reinicia Hyperion.",
"dashboard_alert_message_confedit_t": "Configuració modificada",
"dashboard_alert_message_confsave_success_t": "Configuració guardada",
"dashboard_alert_message_disabled_t": "Instància de maquinari LED deshabilitada",
"dashboard_componentbox_label_comp": "Component",
"dashboard_componentbox_label_status": "Estat",
"dashboard_componentbox_label_title": "Estat del component",
"dashboard_infobox_label_currenthyp": "La teva versió d'Hyperion:",
"dashboard_infobox_label_disableh": "Desactivar instància: 1 $",
"dashboard_infobox_label_enableh": "Activar instància: 1 $",
"dashboard_infobox_label_instance": "Instànica:",
"dashboard_infobox_label_latesthyp": "La darrera versió d'Hyperion:",
"dashboard_infobox_label_platform": "Plataforma:",
"dashboard_infobox_label_ports": "Ports:",
"dashboard_infobox_label_smartacc": "Accés intel·ligent",
"dashboard_infobox_label_statush": "Estat d'Hyperion:",
"dashboard_infobox_label_title": "Informació",
"dashboard_infobox_message_updatesuccess": "Estàs executant la darrera versió d'Hyperion.",
"dashboard_infobox_message_updatewarning": "Hi ha una nova versió d'Hyperion disponible! (1 $)",
"dashboard_label_intro": "El panell de control et dona una vista ràpida de l'estat d'Hyperion",
"dashboard_newsbox_label_title": "Bloc d'Hyperion",
"dashboard_newsbox_readmore": "Llegeix més",
"dashboard_newsbox_visitblog": "Visita el bloc d'Hyperion",
"general_access_advanced": "Avançat",
"general_access_default": "Per defecte",
"general_access_expert": "Expert",
"general_btn_back": "Tornar",
"general_btn_cancel": "Cancel.la",
"general_btn_continue": "Continuar",
"general_btn_next": "Següent",
"general_btn_off": "Off",
"general_btn_ok": "OK",
"general_btn_on": "On",
"general_btn_restarthyperion": "Reinicia Hyperion",
"general_btn_save": "Guarda",
"general_btn_saveandreload": "Guarda i recarrega",
"general_btn_yes": "Sí",
"general_button_savesettings": "Guarda la configuració",
"general_col_blue": "blau",
"general_col_green": "verd",
"general_col_red": "vermell",
"general_comp_BLACKBORDER": "Bandes fosques",
"general_comp_GRABBER": "Captura Pantalla",
"general_comp_LEDDEVICE": "Sortida LED",
"general_comp_SMOOTHING": "Suavitzat",
"general_comp_V4L": "Captura l'entrada USB",
"general_country_de": "Alemany",
"general_country_es": "Espanya",
"general_country_fr": "França",
"general_country_it": "Itàlia",
"general_country_nl": "Països Baixos",
"general_country_uk": "Regne Unit",
"general_country_us": "Estats Units",
"general_speech_cs": "Txec",
"general_speech_de": "Alemany",
"general_speech_en": "Anglès",
"general_speech_es": "Espanyol",
"general_speech_it": "Italià",
"general_webui_title": "Hyperion - Configuració Web"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
{
"dashboard_infobox_label_currenthyp": "Din Hyperion version:",
"dashboard_infobox_label_latesthyp": "Seneste Hyperion version:",
"dashboard_infobox_label_platform": "Platform:",
"dashboard_infobox_label_title": "Information",
"dashboard_label_intro": "Dashboardet giver dig en hurtig oversigt over status af Hyperion",
"general_access_advanced": "Avanceret",
"general_access_default": "Standart",
"general_access_expert": "Ekspert",
"general_btn_back": "Tilbage",
"general_btn_cancel": "Annullere",
"general_btn_continue": "Fortsæt",
"general_btn_iswitch": "Skift",
"general_btn_next": "Næste",
"general_btn_off": "Fra",
"general_btn_ok": "OK",
"general_btn_on": "Til",
"general_btn_restarthyperion": "Genstart Hyperion",
"general_btn_save": "Gem",
"general_btn_saveandreload": "Gem og genindlæs",
"general_btn_yes": "Ja",
"general_button_savesettings": "Gem indstillinger",
"general_col_blue": "blå",
"general_col_green": "grøn",
"general_col_red": "rød",
"general_comp_BLACKBORDER": "Blackbar Detektion",
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Forwarder",
"general_comp_GRABBER": "Optag skærm",
"general_comp_LEDDEVICE": "LED output",
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Udjævning",
"general_comp_V4L": "Optag USB-input",
"general_country_de": "Tyskland",
"general_country_es": "Spanien",
"general_country_fr": "Frankrig",
"general_country_it": "Italien",
"general_country_nl": "Holland",
"general_country_uk": "England",
"general_country_us": "USA",
"general_speech_cs": "Tjekkisk",
"general_speech_de": "Tysk",
"general_speech_en": "Engelsk",
"general_speech_es": "Spansk",
"general_speech_it": "Italiensk",
"general_webui_title": "Hyperion - Webkonfiguration",
"general_wiki_moreto": "Mere information om \"$1\" på vores Wiki"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,725 @@
{
"InfoDialog_access_text": "Ανάλογα με το επίπεδο ρυθμίσεων, μπορείτε να προσαρμόσετε περισσότερες επιλογές ή να αποκτήσετε πρόσβαση σε περισσότερες δυνατότητες. Συνιστάται το επίπεδο \"Προεπιλογή\".",
"InfoDialog_access_title": "Επίπεδα Ρυθμίσεων",
"InfoDialog_changePassword_success": "Ο κωδικός πρόσβασης αποθηκεύτηκε με επιτυχία!",
"InfoDialog_changePassword_title": "Αλλαγή κωδικού",
"InfoDialog_iswitch_text": "Εάν εκτελείτε το Hyperion περισσότερες από μία φορές στο τοπικό σας δίκτυο, μπορείτε να κάνετε εναλλαγή μεταξύ των διαμορφώσεων ιστού. Επιλέξτε την παρουσία Hyperion παρακάτω και αλλάξτε!",
"InfoDialog_iswitch_title": "Επιλογέας Hyperion",
"InfoDialog_nostorage_text": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει τοπική αποθήκευση. Δεν μπορείτε να αποθηκεύσετε μια συγκεκριμένη ρύθμιση γλώσσας (επιστροφή στην «αυτόματη ανίχνευση») και επίπεδο πρόσβασης (επιστροφή στην «προεπιλογή»). Μερικοί μάγοι μπορεί να είναι κρυφοί. Θα μπορούσατε ακόμα να χρησιμοποιήσετε τη διεπαφή ιστού χωρίς περαιτέρω προβλήματα",
"InfoDialog_nowrite_foottext": "Το WebUI θα ξεκλειδωθεί αυτόματα μόλις λύσετε το πρόβλημα!",
"InfoDialog_nowrite_text": "Το Hyperion δεν μπορεί να γράψει στο τρέχον φορτωμένο αρχείο διαμόρφωσης. Επιδιορθώστε τα δικαιώματα του αρχείου για να συνεχίσετε.",
"InfoDialog_nowrite_title": "Σφάλμα άδειας εγγραφής!",
"about_3rd_party_licenses": "Άδεια τρίτου μέρους",
"about_build": "Κατασκευή",
"about_builddate": "Ημερομηνία κατασκευής",
"about_contribute": "Αναπτύξτε το Hyperion περαιτέρω με εμάς!",
"about_credits": "Πιστώσεις σε όλους αυτούς τους προγραμματιστές!",
"about_resources": "$1 βιβλιοθήκες",
"about_translations": "Μεταφράσεις",
"about_version": "Έκδοση",
"conf_colors_blackborder_intro": "Παραλείψτε τις μαύρες μπάρες όπου κι αν βρίσκονται. Κάθε λειτουργία χρησιμοποιεί έναν άλλο αλγόριθμο ανίχνευσης που είναι συντονισμένος για ειδικές καταστάσεις. Αυξήστε το όριο αν δεν λειτουργεί για εσάς.",
"conf_colors_color_intro": "Δημιουργήστε ένα ή περισσότερα προφίλ βαθμονόμησης, προσαρμόστε κάθε χρώμα, φωτεινότητα, γραμμικοποίηση και άλλα.",
"conf_colors_smoothing_intro": "Η εξομάλυνση ομαλοποιεί τις αλλαγές σε χρώμα/φωτεινότητα και μειώνει τις ενοχλητικές αποσπάσεις.",
"conf_effect_bgeff_intro": "Καθορίστε ένα εφέ/χρώμα παρασκηνίου, για να εμφανίζεται όταν το Hyperion είναι σε \"αδρανοποιημένο\". Εκκινείται πάντα με προτεραιότητα στο κανάλι 255.",
"conf_effect_fgeff_intro": "Καθορίστε ένα εφέ εκκίνησης ή ένα χρώμα, το οποίο εμφανίζεται κατά την εκκίνηση του Hyperion για την καθορισμένη διάρκεια.",
"conf_effect_path_intro": "Φόρτωση εφέ από τις καθορισμένες διαδρομές. Επιπλέον, μπορείτε να απενεργοποιήσετε μεμονωμένα εφέ ονομαστικά για να τα αποκρύψετε από όλες τις λίστες εφέ.",
"conf_general_impexp_expbtn": "Εξαγωγή",
"conf_general_impexp_impbtn": "Εισαγωγή",
"conf_general_impexp_l1": "Εισαγάγετε μια διαμόρφωση επιλέγοντας ένα αρχείο διαμόρφωσης παρακάτω και κάντε κλικ στο \"Εισαγωγή\".",
"conf_general_impexp_l2": "Εξάγετε μια διαμόρφωση κάνοντας κλικ στο \"Εξαγωγή\". Το πρόγραμμα περιήγησής σας ξεκινά μια λήψη.",
"conf_general_impexp_title": "Εισαγωγή/Εξαγωγή διαρύθμισης",
"conf_general_inst_actionhead": "Ενέργεια",
"conf_general_inst_desc": "Χρησιμοποιήστε διαφορετικό υλικό LED ταυτόχρονα. Κάθε στιγμιότυπο εκτελείται ανεξάρτητα το ένα από το άλλο, γεγονός που επιτρέπει διαφορετικές διατάξεις LED και ρυθμίσεις βαθμονόμησης. Οι εμφανίσεις που εκτελούνται είναι διαθέσιμες στην επάνω γραμμή εικονιδίων",
"conf_general_intro": "Βασικές ρυθμίσεις γύρω από το Hyperion και το WebUI που δεν ταιριάζουν σε άλλη κατηγορία.",
"conf_general_label_title": "Γενικές ρυθμίσεις",
"conf_grabber_fg_intro": "Η καταγραφή οθόνης είναι η λήψη του τοπικού σας συστήματος ως πηγή εισόδου, στο οποίο είναι εγκατεστημένο το Hyperion.",
"conf_grabber_v4l_intro": "Η λήψη USB είναι μια συσκευή (λήψης) που συνδέεται μέσω USB και χρησιμοποιείται για την εισαγωγή εικόνων πηγής για επεξεργασία.",
"conf_helptable_expl": "Εξήγηση",
"conf_helptable_option": "Επιλογή",
"conf_leds_contr_label_contrtype": "Είδος χειριστή:",
"conf_leds_device_intro": "Το Hyperion υποστηρίζει πολλούς ελεγκτές για τη μετάδοση δεδομένων στη συσκευή-στόχο σας. Επιλέξτε έναν ελεγκτή LED από την ταξινομημένη λίστα και διαμορφώστε τον. Έχουμε επιλέξει τις καλύτερες προεπιλεγμένες ρυθμίσεις για κάθε συσκευή.",
"conf_leds_error_get_properties_text": "Αποτυχία λήψης των ιδιοτήτων της συσκευής. Ελέγξτε τα στοιχεία διαμόρφωσης.",
"conf_leds_error_get_properties_title": "Ιδιότητες συσκευής",
"conf_leds_layout_advanced": "Προχωρημένες Ρυθμίσεις",
"conf_leds_layout_blacklist_num_title": "Αριθμός LED",
"conf_leds_layout_blacklist_start_title": "Εκκίνηση LED",
"conf_leds_layout_btn_checklist": "Δείξε λίστα ελέγχου",
"conf_leds_layout_button_savelay": "Αποθήκευση Διάταξης",
"conf_leds_layout_button_updsim": "Ενημέρωση Προεπισκόπησης",
"conf_leds_layout_checkp1": "Το μαύρο LED είναι το πρώτο LED, το πρώτο LED είναι το σημείο όπου εισέρχεται το σήμα",
"conf_leds_layout_checkp2": "Η διάταξη είναι πάντα η μπροστινή όψη της τηλεόρασής σας, ποτέ η πίσω όψη.",
"conf_leds_layout_checkp3": "Βεβαιωθείτε ότι η κατεύθυνση είναι σωστή. Τα γκρι LED υποδεικνύουν τον αριθμό LED 2 και 3 για οπτικοποίηση της κατεύθυνσης των δεδομένων.",
"conf_leds_layout_checkp4": "Κενό θήκης: Για να δημιουργήσετε ένα κενό, αγνοήστε το πρώτα όταν ορίζετε Πάνω/Κάτω/Αριστερά/Δεξιά και στη συνέχεια ορίστε το μήκος του διακένου σας για να αφαιρέσετε μια ποσότητα led. Τροποποιήστε τη θέση του κενού μέχρι να ταιριάζει.",
"conf_leds_layout_cl_bottom": "Κάτω",
"conf_leds_layout_cl_bottomleft": "Κάτω αριστερά (Γωνία)",
"conf_leds_layout_cl_bottomright": "Κάτω Δεξιά (Γωνία)",
"conf_leds_layout_cl_cornergap": "Διάκενο γωνιών",
"conf_leds_layout_cl_edgegap": "Διάκενο περιθωρίου",
"conf_leds_layout_cl_gaglength": "Μήκος κενού",
"conf_leds_layout_cl_gappos": "θέση κενού",
"conf_leds_layout_cl_hleddepth": "Οριζόντιο βάθος LED",
"conf_leds_layout_cl_inppos": "Θέση Εισαγωγής",
"conf_leds_layout_cl_left": "Αριστερά",
"conf_leds_layout_cl_leftbottom": "Αριστερά 50% - 100% Κάτω",
"conf_leds_layout_cl_leftmiddle": "Αριστερά 25% - 75% Μέση",
"conf_leds_layout_cl_lefttop": "Αριστερά 0% - 50% Πάνω",
"conf_leds_layout_cl_lightPosBottomLeft11": "Κάτω: 75 - 100% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeft112": "Κάτω: 0 - 50% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeft12": "Κάτω: 25 - 50% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeft121": "Κάτω: 50 - 100% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeft14": "Κάτω: 0 - 25% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeft34": "Κάτω: 50 - 75% από Αριστερά",
"conf_leds_layout_cl_lightPosBottomLeftNewMid": "Κάτω: 25 - 75% από Αριστερά",
"conf_leds_layout_cl_lightPosTopLeft112": "Πάνω: 0 - 50% από Αριστερά",
"conf_leds_layout_cl_lightPosTopLeft121": "Πάνω: 50 - 100% από Αριστερά",
"conf_leds_layout_cl_lightPosTopLeftNewMid": "Πάνω: 25 - 75% από Αριστερά",
"conf_leds_layout_cl_overlap": "Αλληλοεπικάλυψη",
"conf_leds_layout_cl_reversdir": "Αντίστροφη κατεύθυνση",
"conf_leds_layout_cl_right": "Δεξιά",
"conf_leds_layout_cl_rightbottom": "Δεξιά 50% - 100% Κάτω",
"conf_leds_layout_cl_rightmiddle": "Δεξιά 25% - 75% Μέση",
"conf_leds_layout_cl_righttop": "Δεξιά 0% - 50% Πάνω",
"conf_leds_layout_cl_top": "Πάνω",
"conf_leds_layout_cl_topleft": "Πάνω αριστερά (Γωνία)",
"conf_leds_layout_cl_topright": "Πάνω Δεξιά (Γωνία)",
"conf_leds_layout_cl_vleddepth": "Κάθετο βάθος LED",
"conf_leds_layout_frame": "Κλασική διάταξη (Κορνίζα LED)",
"conf_leds_layout_generatedconf": "Δημιουργία/Τρέχουσα διαμόρφωση LED",
"conf_leds_layout_intro": "Χρειάζεστε επίσης μια διάταξη LED, η οποία αντικατοπτρίζει τις θέσεις LED σας. Η κλασική διάταξη είναι το συνήθως χρησιμοποιούμενο πλαίσιο τηλεόρασης, αλλά υποστηρίζουμε επίσης τη δημιουργία LED matrix (LED walls). Η προβολή αυτής της διάταξης είναι ΠΑΝΤΑ από το ΜΠΡΟΣΤΑ της τηλεόρασής σας.",
"conf_leds_layout_ma_cabling": "Καλωδίωση",
"conf_leds_layout_ma_direction": "Διεύθυνση",
"conf_leds_layout_ma_horiz": "Οριζόντια",
"conf_leds_layout_ma_optbottomleft": "Κάτω Αριστερά",
"conf_leds_layout_ma_optbottomright": "Κάτω Δεξιά",
"conf_leds_layout_ma_opthoriz": "Οριζόντια",
"conf_leds_layout_ma_optparallel": "Παράλληλα",
"conf_leds_layout_ma_optsnake": "Φιδάκι",
"conf_leds_layout_ma_opttopleft": "Πάνω Αριστερά",
"conf_leds_layout_ma_opttopright": "Πάνω Δεξιά",
"conf_leds_layout_ma_optvert": "Κάθετα",
"conf_leds_layout_ma_order": "Σειρά",
"conf_leds_layout_ma_position": "Εισαγωγή",
"conf_leds_layout_ma_vert": "Κάθετα",
"conf_leds_layout_matrix": "Διάταξη Μήτρας (Τοίχος LED)",
"conf_leds_layout_pbl": "Δείξτε κάτω Αριστερά",
"conf_leds_layout_pbr": "Δείξτε κάτω Δεξιά",
"conf_leds_layout_peview": "Προεπισκόπηση διάταξης LED",
"conf_leds_layout_preview_l1": "Αυτό είναι το πρώτο σας LED (θέση εισόδου)",
"conf_leds_layout_preview_l2": "Αυτό οπτικοποιεί την κατεύθυνση των δεδομένων (δεύτερο/τρίτο LED)",
"conf_leds_layout_preview_ledpower": "Μέγιστη κατανάλωση ενέργειας: $1 Α",
"conf_leds_layout_preview_originCL": "Δημιουργήθηκε από: Κλασική διάταξη (πλαίσιο LED)",
"conf_leds_layout_preview_originMA": "Δημιουργήθηκε από: Διάταξη Μήτρας (τείχος LED)",
"conf_leds_layout_preview_originTEXT": "Δημιουργήθηκε από: Πλαίσιο κειμένου",
"conf_leds_layout_preview_totalleds": "Πλήθος LED: $1",
"conf_leds_layout_ptl": "Δείξτε πάνω Αριστερά",
"conf_leds_layout_ptlh": "Οριζόντια",
"conf_leds_layout_ptln": "Τριπλό σημείο",
"conf_leds_layout_ptlv": "Κάθετα",
"conf_leds_layout_ptr": "Δείξτε πάνω Δεξιά",
"conf_leds_layout_textf1": "Αυτό το πεδίο κειμένου εμφανίζει από προεπιλογή την τρέχουσα φορτωμένη διάταξη και θα αντικατασταθεί εάν δημιουργήσετε μια νέα με τις παραπάνω επιλογές. Προαιρετικά, μπορείτε να πραγματοποιήσετε περαιτέρω επεξεργασίες.",
"conf_leds_nav_label_ledcontroller": "Χειριστής LED",
"conf_leds_nav_label_ledlayout": "Διάταξη LED",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "PRI PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_network": "Δίκτυο",
"conf_leds_optgroup_other": "Άλλο",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Αυτόματη κύλιση",
"conf_logging_btn_pbupload": "Μεταφόρτωση αναφοράς για αιτήματα υποστήριξης",
"conf_logging_contpolicy": "Αναφορά Πολιτικής Απορρήτου",
"conf_logging_label_intro": "Περιοχή ελέγχου αρχείων καταγραφών συστήματος, θα βλέπετε περισσότερα ή λιγότερα ανάλογα την ρύθμιση του επίπεδου των καταγραφών.",
"conf_logging_lastreports": "Προηγούμενες αναφορές",
"conf_logging_nomessage": "Μη διαθέσιμα αρχεία καταγραφής συστήματος.",
"conf_logging_report": "Αναφορά",
"conf_logging_uplfailed": "Η μεταφόρτωση απέτυχε! Ελέγξτε τη σύνδεσή σας στο Διαδίκτυο!",
"conf_logging_uploading": "Προετοιμασία δεδομένων...",
"conf_logging_uplpolicy": "Κάνοντας κλικ σε αυτό το κουμπί αποδέχεστε το",
"conf_logging_yourlink": "Σύνδεσμος στην αναφορά σας",
"conf_network_bobl_intro": "Δέκτης για το Boblight",
"conf_network_fbs_intro": "Δέκτης για Flatbuffers της Google. Χρησιμοποιείται για γρήγορη αποστολή της εικόνας.",
"conf_network_forw_intro": "Προωθήστε όλες τις εισόδους σε μια δεύτερη εγκατάσταση Hyperion που θα μπορούσε να οδηγηθεί με άλλο ελεγκτή LED",
"conf_network_json_intro": "Η JSON-RPC θύρα για όλες τις διεργασίες του Hyperion, χρησιμοποιείται για απομακρυσμένο χειρισμό.",
"conf_network_proto_intro": "Η θύρα PROTO για όλες τις διεργασίες Hyperion, χρησιμοποιείται για μεταδώσεις εικόνας (HyperionScreenCap, πρόσθετο Kodi, Android Hyperion Grabber, ...)",
"conf_network_tok_cidhead": "Περιγραφή",
"conf_network_tok_desc": "Τα διακριτικά παρέχουν σε άλλες εφαρμογές πρόσβαση στο Hyperion API, μια εφαρμογή μπορεί να ζητήσει ένα διακριτικό όπου πρέπει να το αποδεχτείτε ή να τις δημιουργήσετε μόνοι σας παρακάτω. Αυτά τα διακριτικά απαιτούνται απλώς όταν η \"Εξουσιοδότηση API\" είναι ενεργοποιημένη στις ρυθμίσεις δικτύου.",
"conf_network_tok_grantMsg": "Μια εφαρμογή ζήτησε ένα διακριτικό για να αποκτήσει πρόσβαση στο Hyperion API. Θέλετε να παραχωρήσετε πρόσβαση; Επαληθεύστε τις παρεχόμενες πληροφορίες!",
"conf_network_tok_lastuse": "Τελευταία χρήση",
"conf_network_tok_title": "Διαχείρηση Διακριτικών",
"conf_webconfig_label_intro": "Ρυθμίσεις Webconfiguration. Επεξεργαστείτε με σύνεση.",
"dashboard_alert_message_confedit": "Η διαμόρφωση του Hyperion έχει τροποποιηθεί. Για να το εφαρμόσετε, επανεκκινήστε το Hyperion.",
"dashboard_alert_message_confedit_t": "Τροποποιημένη διαμόρφωση",
"dashboard_alert_message_confsave_success": "Η διαμόρφωσή σας στο Hyperion αποθηκεύτηκε επιτυχώς. Οι αλλαγές σας είναι πλέον ενεργές.",
"dashboard_alert_message_confsave_success_t": "Η διαμόρφωση αποθηκεύτηκε",
"dashboard_alert_message_disabled": "Η διαδικασία είναι απενεργοποιημένη! Για να την χρησιμοποιήσετε ξανά, ενεργοποιήστε την από τον πίνακα ελέγχου.",
"dashboard_alert_message_disabled_t": "Απενεργοποιημένη η διαδικασία για το υλισμικό LED",
"dashboard_componentbox_label_comp": "Στοιχείο",
"dashboard_componentbox_label_status": "Κατάσταση",
"dashboard_componentbox_label_title": "Κατάσταση στοιχείου",
"dashboard_infobox_label_currenthyp": "Η έκδοση Hyperion σας:",
"dashboard_infobox_label_disableh": "Απενεργοποίηση Περίπτωσης: $1",
"dashboard_infobox_label_enableh": "Ενεργοποίηση Περίπτωσης: $1",
"dashboard_infobox_label_instance": "Περίπτωση:",
"dashboard_infobox_label_latesthyp": "Η τελευταία έκδοση Hyperion:",
"dashboard_infobox_label_platform": "Πλατφόρμα",
"dashboard_infobox_label_ports": "Θύρες",
"dashboard_infobox_label_smartacc": "Έξυπνη πρόσβαση",
"dashboard_infobox_label_statush": "Κατάσταση Hyperion:",
"dashboard_infobox_label_title": "Πληροφορίες",
"dashboard_infobox_message_updatesuccess": "Τρέχεται την τελευταία έκδοση Hyperion.",
"dashboard_infobox_message_updatewarning": "Μια νεότερη έκδοση του Hyperion είναι διαθέσιμη! (1$)",
"dashboard_label_intro": "Ο πίνακας ελέγχου σας δίνει μια σύντομη περιγραφή για τη κατάσταση του Hyperion",
"dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_noconn": "Δεν μπορείτε να συνδεθείτε με το Hyperion Server για να ανακτήσετε τις τελευταίες δημοσιεύσεις, λειτουργεί το διαδύκτιο σας;",
"dashboard_newsbox_readmore": "Διαβάστε παραπάνω",
"dashboard_newsbox_visitblog": "Επισκεφτείτε Hyperion-Blog ",
"edt_append_degree": "°",
"edt_append_frames": "καρέ",
"edt_append_hz": "Hz",
"edt_append_leds": "LED",
"edt_append_ms": "ms",
"edt_append_ns": "ns",
"edt_append_percent": "%",
"edt_append_percent_h": "% hori",
"edt_append_percent_v": "% vert",
"edt_append_pixel": "Πίξελ",
"edt_append_s": "s",
"edt_append_sdegree": "s/μοίρα",
"edt_conf_bb_blurRemoveCnt_title": "Θόλωσε πίξελ",
"edt_conf_bb_heading_title": "Ανίχνευση μαύρων μπαρών",
"edt_conf_bb_mode_title": "Τρόπο",
"edt_conf_bb_threshold_title": "Κατώφλι",
"edt_conf_color_black_expl": "Η βαθμονομημένη τιμή μαύρου.",
"edt_conf_color_black_title": "Μαύρο",
"edt_conf_color_blue_expl": "Η βαθμονομημένη τιμή μπλε.",
"edt_conf_color_blue_title": "Μπλε",
"edt_conf_color_brightness_title": "Φωτεινότητα",
"edt_conf_color_channelAdjustment_header_expl": "Δημιουργήστε προφίλ χρωμάτων που θα μπορούσαν να αντιστοιχιστούν σε ένα συγκεκριμένο στοιχείο. Προσαρμόστε χρώμα, γάμμα, φωτεινότητα, αντιστάθμιση και πολλά άλλα.",
"edt_conf_color_channelAdjustment_header_itemtitle": "Προφίλ",
"edt_conf_color_channelAdjustment_header_title": "Διόρθωση κανάλι χρώματος",
"edt_conf_color_cyan_expl": "Η βαθμονομημένη τιμή κυανού.",
"edt_conf_color_cyan_title": "Κυανό",
"edt_conf_color_green_expl": "Η βαθμονομημένη τιμή πράσινου.",
"edt_conf_color_green_title": "Πράσινο",
"edt_conf_color_heading_title": "Βαθμονόμηση Χρώματος",
"edt_conf_color_id_title": "ID",
"edt_conf_color_imageToLedMappingType_expl": "Αντικαθιστά την εκχώρηση περιοχής LED της διάταξης LED εάν δεν είναι \"πολύχρωμη\"",
"edt_conf_color_imageToLedMappingType_title": "Ανάθεση επιφάνειας LED",
"edt_conf_color_leds_expl": "Αντιστοιχίστε αυτήν τη ρύθμιση σε όλα τα LED (*) ή μόνο σε μερικά (0-24).",
"edt_conf_color_leds_title": "Δείκτης LED",
"edt_conf_color_magenta_expl": "Η βαθμονομημένη τιμή ματζέντας.",
"edt_conf_color_magenta_title": "Ματζέντα",
"edt_conf_color_red_expl": "Η βαθμονομημένη τιμή κόκκινου.",
"edt_conf_color_red_title": "Κόκκινο",
"edt_conf_color_saturationGain_expl": "Ρυθμίζει τον κορεσμό των χρωμάτων. 1,0 σημαίνει καμία αλλαγή, πάνω από 1,0 αυξάνει τον κορεσμό, κάτω από 1,0 αποκορεσμένα.",
"edt_conf_color_white_expl": "Η βαθμονομημένη τιμή λευκού.",
"edt_conf_color_white_title": "Λευκό",
"edt_conf_color_yellow_expl": "Η βαθμονομημένη τιμή κίτρινου.",
"edt_conf_color_yellow_title": "Κίτρινο",
"edt_conf_enum_BOTH": "Οριζόντια & Κάθετα",
"edt_conf_enum_HORIZONTAL": "Οριζόντια",
"edt_conf_enum_NO_CHANGE": "Αυτόματο",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Κάθετα",
"edt_conf_enum_automatic": "Αυτόματο",
"edt_conf_enum_bbclassic": "Κλασσικό",
"edt_conf_enum_bbdefault": "Προεπιλεγμένο",
"edt_conf_enum_bbletterbox": "Γραμματοκιβώτιο",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Χρώμα",
"edt_conf_enum_decay": "Αποσύνθεση",
"edt_conf_enum_dl_error": "Σφάλμα",
"edt_conf_enum_dl_verbose1": "Επίπεδο πολυγλωσσίας 1",
"edt_conf_enum_dl_verbose2": "Επίπεδο πολυγλωσσίας 2",
"edt_conf_enum_dl_verbose3": "Επίπεδο πολυγλωσσίας 3",
"edt_conf_enum_effect": "Εφέ",
"edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB",
"edt_conf_enum_hsv": "HSV",
"edt_conf_enum_linear": "Γραμμικό",
"edt_conf_enum_logdebug": "Αποσφαλμάτωση",
"edt_conf_enum_logsilent": "Αθόρυβο",
"edt_conf_enum_logverbose": "Αναλυτικά",
"edt_conf_enum_logwarn": "Προειδοποίση",
"edt_conf_enum_multicolor_mean": "Πολύχρωμο",
"edt_conf_enum_please_select": "Παρακαλώ Επιλέξτε",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_transeffect_smooth": "Λείο",
"edt_conf_enum_transeffect_sudden": "Απότομο",
"edt_conf_enum_udp_ddp": "DDP",
"edt_conf_enum_udp_raw": "RAW",
"edt_conf_enum_unicolor_mean": "Μονοχρωματικό",
"edt_conf_fg_display_title": "Απεικόνηση",
"edt_conf_fg_frequency_Hz_title": "Συχνότητα καταγραφής",
"edt_conf_fg_heading_title": "Καταγραφή Οθόνης",
"edt_conf_fg_height_expl": "Συρρικνώστε την εικόνα σε αυτό το ύψος, καθώς η ακατέργαστη εικόνα χρειάζεται πολύ χρόνο cpu.",
"edt_conf_fg_height_title": "Ύψος",
"edt_conf_fg_type_title": "Είδος",
"edt_conf_fg_width_expl": "Συρρικνώστε την εικόνα σε αυτό το πλάτος, καθώς η ακατέργαστη εικόνα χρειάζεται πολύ χρόνο cpu.",
"edt_conf_fg_width_title": "Πλάτος",
"edt_conf_fge_color_expl": "Εάν ο τύπος είναι \"Χρώμα\", ορίστε ένα χρώμα της επιλογής σας εδώ.",
"edt_conf_fge_color_title": "Χρώμα",
"edt_conf_fge_duration_ms_title": "Διάρκεια.",
"edt_conf_fge_effect_expl": "Εάν ο τύπος είναι \"Εφέ\", ορίστε ένα εφέ της επιλογής σας εδώ.",
"edt_conf_fge_effect_title": "Εφέ",
"edt_conf_fge_type_expl": "Επιλέξτε ανάμεσα σε χρώμα ή εφέ.",
"edt_conf_fge_type_title": "Είδος",
"edt_conf_fw_remote_service_discovered_none": "Δεν ανακαλύφθηκαν απομακρυσμένες υπηρεσίες",
"edt_conf_fw_service_name_expl": "Όνομα του παρόχου υπηρεσιών",
"edt_conf_fw_service_name_title": "Όνομα υπηρεσίας",
"edt_conf_gen_configVersion_title": "Έκδοση διαμόρφωσης",
"edt_conf_gen_heading_title": "Γενικές Ρυθμίσεις",
"edt_conf_gen_name_expl": "Ένα όνομα καθορισμένο από το χρήστη που χρησιμοποιείται για τον εντοπισμό του Hyperion. (Χρήσιμο με περισσότερες από μία περιπτώσεις Hyperion)",
"edt_conf_gen_name_title": "Όνομα διαμόρφωσης",
"edt_conf_gen_showOptHelp_expl": "Εμφάνιση όλων των διαθέσιμων επεξηγήσεων σε κάθε ενότητα. Συνιστάται ανεπιφύλακτα για αρχάριους!",
"edt_conf_gen_showOptHelp_title": "Δείξε παραδείγματα",
"edt_conf_general_enable_expl": "Αν είναι επιλεγμένο, η συνιστώσα είναι ενεργοποιημένη.",
"edt_conf_general_enable_title": "Ενεργοποίηση",
"edt_conf_general_port_expl": "Η θύρα που χρησιμοποιείται.",
"edt_conf_general_port_title": "Θύρα",
"edt_conf_general_priority_expl": "Η προτεραιότητα αυτής της συνιστώσας",
"edt_conf_general_priority_title": "Κανάλι προτεραιότητας",
"edt_conf_instC_systemEnable_title": "Ενεργοποίηση καταγραφής οθόνης",
"edt_conf_instC_v4lEnable_title": "Ενεργοποίηση συσκευής καταγραφής μέσω USB",
"edt_conf_instCapture_heading_title": "Συσκευές καταγραφής",
"edt_conf_net_apiAuth_expl": "Επιβολή όλων των εφαρμογών που χρησιμοποιούν το Hyperion API για έλεγχο ταυτότητας έναντι του Hyperion (Εξαίρεση: βλ. \"Τοπικός έλεγχος ταυτότητας API\"). Υψηλότερη ασφάλεια, καθώς ελέγχετε την πρόσβαση και την ανακαλείτε ανά πάσα στιγμή.",
"edt_conf_net_apiAuth_title": "Αυθεντικοποίηση ΑΡΙ",
"edt_conf_net_heading_title": "Δίκτυο",
"edt_conf_net_ip_itemtitle": "ΙΡ",
"edt_conf_smooth_decay_expl": "Η ταχύτητα της αποσύνθεσης. Το 1 είναι γραμμικό, οι μεγαλύτερες τιμές έχουν ισχυρότερο αποτέλεσμα.",
"edt_conf_smooth_decay_title": "Αποσύνθεση-Δύναμη",
"edt_conf_smooth_dithering_title": "Χρωματική αντιπαράθεση",
"edt_conf_smooth_heading_title": "Λείανση",
"edt_conf_smooth_interpolationRate_expl": "Ταχύτητα υπολογισμού λείων ενδιάμεσων πλαισίων.",
"edt_conf_smooth_interpolationRate_title": "Ρυθμός Παρεμβολής",
"edt_conf_smooth_time_ms_title": "Χρόνος",
"edt_conf_smooth_type_expl": "Είδος λείανσης.",
"edt_conf_smooth_type_title": "Είδος",
"edt_conf_smooth_updateFrequency_title": "Ρυθμός ανανέωσης",
"edt_conf_v4l2_cecDetection_expl": "Εάν είναι ενεργοποιημένο, η λήψη USB θα απενεργοποιηθεί προσωρινά όταν ληφθεί συμβάν αναμονής CEC από το δίαυλο HDMI.",
"edt_conf_v4l2_cecDetection_title": "Ανίχνευση CEC",
"edt_conf_v4l2_cropBottom_title": "Περικοπή κάτω",
"edt_conf_v4l2_cropHeightValidation_error": "Περικοπή πάνω + Περικοπή κάτω δεν μπορεί να είναι μεγαλύτερη από το πλάτος ($1)",
"edt_conf_v4l2_cropLeft_title": "Περικοπή αριστερά",
"edt_conf_v4l2_cropRight_title": "Περικοπή δεξιά",
"edt_conf_v4l2_cropTop_title": "Περικοπή πάνω",
"edt_conf_v4l2_cropWidthValidation_error": "Περικοπή αριστερά + Περικοπή δεξιά δεν μπορεί να είναι μεγαλύτερη από το πλάτος ($1)",
"edt_conf_v4l2_device_title": "Συσκευή",
"edt_conf_v4l2_flip_expl": "Αυτό σας επιτρέπει να αναστρέψετε την εικόνα οριζόντια, κάθετα ή και τα δύο.",
"edt_conf_v4l2_flip_title": "Αναστροφή εικόνας",
"edt_conf_v4l2_framerate_title": "Καρέ ανά δευτερόλεπτο",
"edt_conf_v4l2_heading_title": "Λήψη εισόδου USB",
"edt_conf_v4l2_resolution_title": "Ανάλυση Συσκευής",
"edt_conf_v4l2_signalDetection_title": "Ανίχνευση σήματος",
"edt_conf_webc_keyPassPhrase_expl": "Προαιρετικό: Το κλειδί μπορεί να προστατεύεται με κωδικό πρόσβασης",
"edt_conf_webc_keyPassPhrase_title": "Κωδικός πρόσβασης",
"edt_conf_webc_sslport_title": "Θύρα HTTPS",
"edt_dev_enum_sub_min_cool_adjust": "Αφαίρεσε ψυχρό λευκό",
"edt_dev_enum_sub_min_warm_adjust": "Αφαίρεσε θερμό λευκό",
"edt_dev_enum_subtract_minimum": "Αφαίρεση ελάχιστου",
"edt_dev_enum_white_off": "Απενεργοποίηση Λευκού",
"edt_dev_general_autostart_title": "Αυτόματη Εκκίνηση",
"edt_dev_general_colorOrder_title": "Διάταξη RGB byte",
"edt_dev_general_enableAttemptsInterval_title": "Διάστημα Επανάληψης",
"edt_dev_general_enableAttempts_title": "Προσπάθεια Σύνδεσης",
"edt_dev_general_enableAttempts_title_info": "Αριθμός προσπαθειών σύνδεσης μιας συσκευής προτού μεταβεί σε κατάσταση σφάλματος.",
"edt_dev_general_heading_title": "Γενικές Ρυθμίσεις",
"edt_dev_general_name_title": "Όνομα διαμόρφωσης",
"edt_dev_general_rewriteTime_title": "Χρόνος Ανανέωσης",
"edt_dev_spec_baudrate_title": "Ρυθμός επικοινωνίας",
"edt_dev_spec_brightnessFactor_title": "Συντελεστής φωτεινότητας",
"edt_dev_spec_brightnessMax_title": "Μέγιστη Φωτεινότητα",
"edt_dev_spec_brightnessMin_title": "Ελάχιστη Φωτεινότητα",
"edt_dev_spec_brightness_title": "Φωτεινότητα",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_colorComponent_title": "Συνιστώσες χρώματος",
"edt_dev_spec_delayAfterConnect_title": "Καθυστέρηση μετά την σύνδεση",
"edt_dev_spec_dithering_title": "Χρωματική αντιπαράθεση",
"edt_dev_spec_dmaNumber_title": "Κανάλι DMA",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Μέγιστο επίπεδο Έντασης",
"edt_dev_spec_gpioMap_title": "Χαρτογράφηση GPIO",
"edt_dev_spec_gpioNumber_title": "Αριθμός GPIO",
"edt_dev_spec_header_title": "Συγκεκριμένες ρυθμίσεις",
"edt_dev_spec_intervall_title": "Διάστημα",
"edt_dev_spec_invert_title": "Αναστροφή σήματος",
"edt_dev_spec_ledIndex_title": "Δείκτης LED",
"edt_dev_spec_ledType_title": "Είδος LED",
"edt_dev_spec_lightid_itemtitle": "ID",
"edt_dev_spec_lights_itemtitle": "Φως",
"edt_dev_spec_lights_name": "Όνομα",
"edt_dev_spec_lights_title": "Φώτα",
"edt_dev_spec_maximumLedCount_title": "Μέγιστος αριθμός LED",
"edt_dev_spec_networkDevicePort_title": "Θύρα",
"edt_dev_spec_numberOfLeds_title": "Αριθμός LED",
"edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_pid_title": "PID",
"edt_dev_spec_port_title": "Θύρα",
"edt_dev_spec_razer_device_title": "Συσκευή RΛΖΞR Chroma",
"edt_dev_spec_serial_title": "Σειριακός Αριθμός",
"edt_dev_spec_spipath_title": "Συσκευή SPI",
"edt_dev_spec_switchOffOnBlack_title": "Απενεργοποίηση στο μαύρο",
"edt_dev_spec_targetIpHost_title": "Hostname/Διεύθυνση ΙΡ",
"edt_dev_spec_targetIp_title": "Διεύθυνση ΙΡ",
"edt_dev_spec_transistionTime_title": "Χρόνος Μετάβασης",
"edt_dev_spec_uid_title": "UID",
"edt_dev_spec_useRgbwProtocol_title": "Χρησιμοπίησε πρωτόκολο RGBW",
"edt_dev_spec_username_title": "Όνομα Χρήστη",
"edt_dev_spec_vid_title": "VID",
"edt_eff_blobcount": "Αριθμός σταγώνων",
"edt_eff_candle_header": "Κερί",
"edt_eff_candle_header_desc": "Λαμπερά κεριά",
"edt_eff_centerx": "Κέντρο Χ-άξονα",
"edt_eff_centery": "Κέντρο Υ-άξονα",
"edt_eff_color": "Χρώμα",
"edt_eff_colorHour": "Χρώμα ώρας",
"edt_eff_colorMinute": "Χρώμα λεπτού",
"edt_eff_colorSecond": "Χρώμα δευτερολέπτου",
"edt_eff_colorcount": "Μήκος χρώματος",
"edt_eff_colorend": "Τέλους χρώματος",
"edt_eff_colorevel": "Επίπεδο χρώματος",
"edt_eff_colorone": "Χρώμα ένα",
"edt_eff_colorrandom": "Τυχαίο χρώμα",
"edt_eff_colorshift": "Μετάβαση Χρώματος",
"edt_eff_colorstart": "Αρχή χρώματος",
"edt_eff_colortwo": "Χρώμα δύο",
"edt_eff_count": "Αριθμός",
"edt_eff_countries": "Χώρες",
"edt_eff_enableSecondSwirl": "Δεύτερος Στροβιλισμός",
"edt_eff_enum_all": "Όλα",
"edt_eff_enum_all-together": "Όλα μαζί",
"edt_eff_enum_list": "Λίστα LED",
"edt_eff_fade_header": "Σβήσιμο",
"edt_eff_fade_header_desc": "Σβήσιμο ανάμεσα σε χρώματα",
"edt_eff_flag_header": "Σημαίες",
"edt_eff_flag_header_desc": "Αφήστε τα LED σας να λάμπουν στα χρώματα της χώρας σας. Μπορείτε να επιλέξετε περισσότερες από μία σημαίες και θα αλλάξουν με βάση το χρονικό διάστημα.",
"edt_eff_fps": "Καρέ ανά δευτερόλεπτο",
"edt_eff_frequency": "Συχνότητα",
"edt_eff_gif_header": "GIF's",
"edt_eff_gif_header_desc": "Αυτό το εφέ αναπαράγει αρχεία .gif, παρέχει ένα απλό βίντεο όπως βρόχο ως εφέ.",
"edt_eff_height": "Ύψος",
"edt_eff_huechange": "Αλλαγή χρώματος",
"edt_eff_image_source_url": "URL",
"edt_eff_knightrider_header": "Knight Rider",
"edt_eff_knightrider_header_desc": "O K.I.T.T επέστρεψε! Ο μπροστινός σαρωτής του γνωστού αυτοκινήτου, αυτή τη φορά όχι μόνο στο κόκκινο.",
"edt_eff_ledlist": "Λίστα LED",
"edt_eff_ledtest_header": "Δοκιμή LED",
"edt_eff_length": "Μήκος",
"edt_eff_lightclock_header_desc": "Ένα πραγματικό ρολόι σαν φως! Προσαρμόστε τα χρώματα των ωρών, λεπτών, και δευτερολέπτων. Διατίθεται επίσης προαιρετικός δείκτης ώρας 3/6/9/12. Σε περίπτωση που το ρολόι είναι λάθος, πρέπει να ελέγξετε το ρολόι του συστήματός σας.",
"edt_eff_max_len": "Μέγιστο μήκος",
"edt_eff_min_len": "Ελάχιστο μήκος",
"edt_eff_moodblobs_header_desc": "Χαλαρώστε το βράδυ με αργή κίνηση και σταγόνες που αλλάζουν χρώμα.",
"edt_eff_pacman_header": "Πακ-Μαν",
"edt_eff_pacman_header_desc": "Μικρό, πεινασμένο και κίτρινο. Ποιος θα επιβιώσει;",
"edt_eff_plasma_header": "Πλάσμα",
"edt_eff_police_header": "Αστυνομία",
"edt_eff_police_header_desc": "Φώτα σαν αστινομικό όχημα σε δράση",
"edt_eff_randomCenter": "Τυχαίο Κέντρο",
"edt_eff_random_header": "Τυχαίο",
"edt_eff_repeat": "Επανάληψη",
"edt_eff_reverseRandomTime": "Ανέστρεψε κάθε",
"edt_eff_reversedirection": "Ανάστροφη κίνηση",
"edt_eff_rotationtime": "Χρόνος περιστροφής",
"edt_eff_showseconds": "Δείξε δευτερόλεπτα",
"edt_eff_snake_header": "Φιδάκι",
"edt_eff_snake_header_desc": "Που υπάρχει κάτι να φάω;",
"edt_eff_sparks_header": "Σπίθες",
"edt_eff_sparks_header_desc": "Αστερική-σπίθα, επιλέξτε ανάμεσα σε ένα στατικό χρώμα ή ένα τυχαίο. Θα μπορούσατε επίσης να ρυθμίσετε τη φωτεινότητα, τον κορεσμό και την ταχύτητα.",
"edt_eff_speed": "Ταχύτητα",
"edt_eff_swirl_header": "στροβιλισμός χρωμάτων",
"edt_eff_swirl_header_desc": "Ένας στροβιλισμός με προσαρμοσμένα χρώματα. Τα χρώματα απλώνονται ακόμη και στις 360°, θα υπολογίζονται οι μετατοπίσεις μεταξύ των χρωμάτων. Επιπλέον, μπορείτε να προσθέσετε ένα δεύτερο στροβιλισμό από πάνω, να γνωρίζετε ότι χρειάζεστε μερική διαφάνεια! Συμβουλή: Η επανάληψη του ίδιου χρώματος έχει ως αποτέλεσμα μια \"υψηλότερη\" περιοχή χρώματος και μια μειωμένη περιοχή μετατόπισης χρώματος.",
"edt_eff_trails_header": "Πεφταστέρι",
"edt_eff_trails_header_desc": "Χρωματιστά αστέρια που πέφτουν από τη κορυφή",
"edt_eff_waves_header": "Κύματα",
"edt_eff_whichleds": "Ποια LEDs",
"edt_eff_whitelevel": "Επίπεδο λευκού",
"edt_eff_x-mas_header": "Χριστούγεννα",
"edt_eff_x-mas_header_desc": "Άγγιγμα Χριστουγέννων",
"edt_msg_button_add_row_title": "Προσθήκη $1",
"edt_msg_button_collapse": "Σύμπτηξη",
"edt_msg_button_delete_all": "Όλα",
"edt_msg_button_delete_all_title": "Διαγραφή Όλων",
"edt_msg_button_delete_last": "Τουλάχιστον $1",
"edt_msg_button_delete_last_title": "Διαγραφή Τελευταίων $1",
"edt_msg_button_delete_row_title": "Διαγραφή $1",
"edt_msg_button_delete_row_title_short": "Διαγραφή",
"edt_msg_button_expand": "Ανέπτυξε",
"edt_msg_button_move_down_title": "Μετακίνησε κάτω",
"edt_msg_button_move_up_title": "Μετακίνησε πάνω",
"edt_msg_error_additionalItems": "Δεν επιτρέπονται επιπλέον στοιχεία σε αυτόν τον πίνακα",
"edt_msg_error_additional_properties": "Δεν επιτρέπονται πρόσθετες ιδιότητες, αλλά η ιδιότητα $1 έχει οριστεί",
"edt_msg_error_dependency": "Πρέπει να έχει την ιδιότητα $1",
"edt_msg_error_disallow": "Η τιμή δεν πρέπει να είναι τύπου $1",
"edt_msg_error_disallow_union": "Η τιμή δεν πρέπει να είναι ένας από τους παρεχόμενους μη επιτρεπόμενους τύπους",
"edt_msg_error_maxItems": "Η τιμή πρέπει να έχει το πολύ $1 αντικείμενα",
"edt_msg_error_maxLength": "Η τιμή πρέπει να έχει το πολύ $1 μήκος χαρακτήρων",
"edt_msg_error_maxProperties": "Το αντικείμενο πρέπει να έχει το πολύ $1 ιδιότητες",
"edt_msg_error_maximum_excl": "Η τιμή πρέπει να είναι λιγότερο του $1",
"edt_msg_error_maximum_incl": "Η τιμή πρέπει να είναι το πολύ $1",
"edt_msg_error_minItems": "Η τιμή πρέπει να έχει τουλάχιστον $1 αντικείμενα",
"edt_msg_error_minLength": "Η τιμή πρέπει να έχει τουλάχιστον $1 μήκος χαρακτήρων",
"edt_msg_error_minProperties": "Το αντικείμενο πρέπει να έχει τουλάχιστον $1 ιδιότητες",
"edt_msg_error_minimum_excl": "Η τιμή πρέπει να είναι μεγαλύτερη του $1",
"edt_msg_error_minimum_incl": "Η τιμή πρέπει να είναι τουλάχιστον $1",
"edt_msg_error_multipleOf": "Η τιμή πρέπει να είναι πολλαπλάσιο του $1",
"edt_msg_error_pattern": "Η τιμή πρέπει να μοιάζει με το μοτίβο",
"edt_msg_error_required": "Από το αντικείμενο λείπει η απαιτούμενη ιδιότητα '$1'",
"edt_msg_error_type": "Η τιμή πρέπει να είναι τύπου $1",
"edt_msg_error_uniqueItems": "Ο πίνακας πρέπει να έχει μοναδικά στοιχεία",
"effectsconfigurator_button_conttest": "Συνεχές τεστ",
"effectsconfigurator_button_deleffect": "Διαγραφή Εφέ",
"effectsconfigurator_button_editeffect": "Φόρτωση Εφέ",
"effectsconfigurator_button_saveeffect": "Αποθήκευση Εφέ",
"effectsconfigurator_button_starttest": "Εκκίνηση τεστ",
"effectsconfigurator_button_stoptest": "Τερματισμός τεστ",
"effectsconfigurator_editdeleff": "Διαγραφή/Φόρτωση εφέ",
"effectsconfigurator_label_chooseeff": "Επιλέξτε Πρότυπο",
"effectsconfigurator_label_effectname": "Όνομα Εφέ",
"effectsconfigurator_label_intro": "Δημιουργήστε από τα βασικά εφέ νέα εφέ που είναι συντονισμένα σύμφωνα με τις προτιμήσεις σας. Ανάλογα με το Εφέ, υπάρχουν διαθέσιμες επιλογές όπως χρώμα, ταχύτητα, κατεύθυνση και άλλα.",
"general_access_advanced": "Προχωρημένο",
"general_access_default": "Προεπιλεγμένο",
"general_access_expert": "Ειδικό",
"general_btn_back": "Πίσω",
"general_btn_cancel": "Ακύρωση",
"general_btn_continue": "Συνέχεια",
"general_btn_delete": "Διαγραφή",
"general_btn_denyAccess": "Απόρριψη πρόσβασης",
"general_btn_grantAccess": "Παραχώρηση πρόσβασης",
"general_btn_iswitch": "Διακόπτης",
"general_btn_next": "Επόμενο",
"general_btn_off": "Απενεργοποίηση",
"general_btn_ok": "ΟΚ",
"general_btn_on": "Εκκίνηση",
"general_btn_overwrite": "Αντικατάσταση",
"general_btn_rename": "Μεταονόμασε",
"general_btn_restarthyperion": "Επανεκκίνηση Hyperion",
"general_btn_save": "Αποθήκευση",
"general_btn_saveandreload": "Αποθήκευση και επαναφόρτωση",
"general_btn_saverestart": "Αποθήκευση και επανεκκίνηση",
"general_btn_start": "Εκκίνηση",
"general_btn_stop": "Τερματισμός",
"general_btn_yes": "Ναι",
"general_button_savesettings": "Αποθήκευση ρυθμίσεων",
"general_chars_needed": "χρειάζονται περισσότεροι χαρακτήρες",
"general_col_blue": "Μπλε",
"general_col_green": "Πράσινο",
"general_col_red": "Κόκκινο",
"general_comp_BLACKBORDER": "Ανίχνευση μαύρης μπάρας",
"general_comp_BOBLIGHTSERVER": "Διακομιστής Boblight",
"general_comp_FLATBUFSERVER": "Διακομιστής Flatbuffers",
"general_comp_GRABBER": "Λήψη Οθόνης",
"general_comp_LEDDEVICE": "Έξοδος LED",
"general_comp_SMOOTHING": "Εξομάλυνση",
"general_comp_V4L": "Λήψη εισόδου-USB",
"general_country_cn": "Κίνα",
"general_country_de": "Γερμανία",
"general_country_es": "Ισπανία",
"general_country_fr": "Γαλλία",
"general_country_it": "Ιταλία",
"general_country_nl": "Ολλανδία",
"general_country_ru": "Ρωσία",
"general_country_uk": "Ηνωμένο Βασίλειο",
"general_country_us": "ΗΠΑ",
"general_disabled": "Απενεργοποιημένο",
"general_enabled": "Ενεργοποιημένο",
"general_speech_cs": "Τσέχικα",
"general_speech_da": "Δανέζικα",
"general_speech_de": "Γερμανικά",
"general_speech_en": "Αγγλικά",
"general_speech_es": "Ισπανικά",
"general_speech_fr": "Γαλλικά",
"general_speech_hu": "Ουγγαρικά",
"general_speech_it": "Ιταλικά",
"general_speech_ja": "Ιαπωνικά",
"general_speech_nb": "Νορβηγικά (Bokmål)",
"general_speech_nl": "Ολλανδικά",
"general_speech_pl": "Πολωνικά",
"general_speech_pt": "Πορτογαλικά",
"general_speech_ro": "Ρουμάνικα",
"general_speech_ru": "Ρωσικά",
"general_speech_sv": "Σουηδικά",
"general_speech_tr": "Τούρκικα",
"general_speech_vi": "Βιετναμέζικα",
"general_speech_zh-CN": "Κινέζικα (απλοποιημένα)",
"general_webui_title": "Hyperion - Διαμόρφωση Ιστού",
"general_wiki_moreto": "Περισσότερες πληροφορίες για \"$1\" στο Wiki μας",
"infoDialog_effconf_created_text": "Το εφέ \"$1\" κατασκευάστηκε επιτυχώς!",
"infoDialog_effconf_deleted_text": "Το εφέ \"$1\" διαγράφτηκε επιτυχώς!",
"infoDialog_general_error_title": "Σφάλμα",
"infoDialog_general_success_title": "Επιτυχία",
"infoDialog_general_warning_title": "Προειδοπίηση",
"infoDialog_import_comperror_text": "Λυπητερό! Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την εισαγωγή. Δοκιμάστε ξανά με άλλο πρόγραμμα περιήγησης.",
"infoDialog_import_confirm_text": "Είστε βέβαιοι ότι θα εισαγάγετε το \"$1\"; Δεν είναι δυνατή η επαναφορά αυτής της διαδικασίας!",
"infoDialog_import_confirm_title": "Συμφωνήστε στην εισαγωγή",
"infoDialog_import_hyperror_text": "Δεν είναι δυνατή η εισαγωγή του επιλεγμένου αρχείου διαμόρφωσης \"$1\". Δεν είναι συμβατό με Hyperion 2.0 και νεότερη έκδοση!",
"infoDialog_import_jsonerror_text": "Το επιλεγμένο αρχείο διαμόρφωσης \"$1\" δεν είναι αρχείο .json ή είναι κατεστραμμένο. Μήνυμα σφάλματος: ($2)",
"infoDialog_password_current_text": "Τωρινός κωδικός",
"infoDialog_password_new_text": "Νέος κωδικός",
"infoDialog_username_text": "Όνομα Χρήστη",
"infoDialog_wizrgb_text": "Η διάταξη του RGB Byte έχει ήδη ρυθμιστεί σωστά.",
"infoDialog_writeconf_error_text": "Η αποθήκευση της διαμόρφωσής σας απέτυχε.",
"infoDialog_writeimage_error_text": "Το επιλεγμένο αρχείο \"$1\" δεν είναι αρχείο εικόνας ή είναι κατεστραμμένο! Επιλέξτε άλλο αρχείο εικόνας.",
"info_404": "Η σελίδα που ζητήσατε δεν είναι διαθέσιμη!",
"info_conlost_label_autorecon": "Θα επανασυνδεθείτε ξανά αφού το Hyperion είναι διαθέσιμο.",
"info_conlost_label_autorefresh": "Αυτή η σελίδα θα ανανεωθεί αυτόματα.",
"info_conlost_label_reason": "Πιθανές αιτίες:",
"info_conlost_label_reason1": "- Κακή σύνδεση WLAN",
"info_conlost_label_reason2": "- Πραγματοποιήσατε αναβάθμιση",
"info_conlost_label_reason3": "- Το Hyperion δεν τρέχει",
"info_conlost_label_reload": "Η αυτόματη επανασύνδεση διακόπηκε - υπέρβαση του ορίου. Ανανεώστε τη σελίδα ή κάντε κλικ σε εμένα!",
"info_conlost_label_title": "Χάθηκε η σύνδεση με την υπηρεσία Hyperion!",
"info_restart_contus": "Εάν εξακολουθείτε να μένετε εδώ μετά από 20 δευτερόλεπτα και δεν έχετε ιδέα γιατί ανοίξτε ένα νέο θέμα στο φόρουμ υποστήριξής μας...",
"info_restart_contusa": "...με τα τελευταία σου βήματα. Ευχαριστώ!",
"info_restart_rightback": "Ο Hyperion θα επιστρέψει αμέσως!",
"info_restart_title": "Αυτήν τη στιγμή γίνεται επανεκκίνηση...",
"main_ledsim_btn_togglelednumber": "Αριθμός LED",
"main_ledsim_btn_toggleleds": "Δείξε LED",
"main_ledsim_btn_togglelivevideo": "Ζωντανό βίντεο",
"main_ledsim_text": "Ζωντανή απεικόνιση χρωμάτων LED και προαιρετική η τρέχουσα ροή βίντεο της συσκευής λήψης.",
"main_ledsim_title": "Οπτικοποίηση LED",
"main_menu_about_token": "Σχετικά με το Hyperion",
"main_menu_colors_conf_token": "Επεξεργασία εικόνας",
"main_menu_configuration_token": "LED διαδικασία",
"main_menu_dashboard_token": "Πίνακας Ελέγχου",
"main_menu_effect_conf_token": "Εφέ",
"main_menu_effectsconfigurator_token": "Παραμετροποιητής εφέ",
"main_menu_general_conf_token": "Γενικά",
"main_menu_grabber_conf_token": "Υλισμικό καταγραφής",
"main_menu_input_selection_token": "Επιλογή εισόδου",
"main_menu_instcapture_conf_token": "Πηγές",
"main_menu_leds_conf_token": "Έξοδος LED",
"main_menu_logging_token": "Καταγράψτε",
"main_menu_network_conf_token": "Υπηρεσίες δικτύου",
"main_menu_remotecontrol_token": "Ασύρματος χειρισμός",
"main_menu_support_token": "Υποστήριξη",
"main_menu_system_token": "Σύστημα",
"main_menu_update_token": "Αναβάθμιση",
"main_menu_webconfig_token": "Διαμόρφωση Ιστού",
"remote_adjustment_intro": "Παραμετροποίηση χρώματος/φωτεινότητας/εξομάλυνσης κατά την εκτέλεση. $1",
"remote_adjustment_label": "Ρύθμιση χρώματος",
"remote_color_button_reset": "Επαναφορά Χρώματος/Εφέ",
"remote_color_intro": "Ορίστε ένα εφέ ή χρώμα. Επίσης παρατίθενται τα εφέ που δημιουργήσατε εσείς (εάν είναι διαθέσιμα). $1",
"remote_color_label": "Χρώματα/Εφέ",
"remote_color_label_color": "Χρώμα:",
"remote_components_intro": "Ενεργοποίηση και απενεργοποίηση στοιχείων του Hyperion κατά τη διάρκεια του χρόνου εκτέλεσης. $1",
"remote_components_label": "Έλεγχος συνιστωσών",
"remote_effects_label_effects": "Εφέ:",
"remote_effects_label_picture": "Εικόνα:",
"remote_input_clearall": "Καθαρισμός όλων των Χρωμάτων/Εφέ",
"remote_input_duration": "Διάρκεια:",
"remote_input_intro": "Το Hyperion χρησιμοποιεί ένα σύστημα προτεραιότητας για να επιλέξει μια πηγή. Ό,τι ορίζετε έχει προτεραιότητα (Εφέ/Χρώμα/Λήψη οθόνης/Λήψη USB και πηγές δικτύου). Από προεπιλογή, το Hyperion επιλέγει πηγές ανάλογα με την προτεραιότητα (ο χαμηλότερος αριθμός αντικατοπτρίζει την τρέχουσα ενεργή πηγή). Τώρα έχετε την ευκαιρία να επιλέξετε μόνοι σας πηγές. $1",
"remote_input_ip": "ΙΡ:",
"remote_input_label": "Επιλογή πηγής",
"remote_input_label_autoselect": "Αυτόματη Επιλογή",
"remote_input_origin": "Προέλευση",
"remote_input_owner": "Είδος",
"remote_input_priority": "Προτεραιότητα",
"remote_input_setsource_btn": "Επιλέξτε Πηγή",
"remote_input_sourceactiv_btn": "Πηγή ενεργή",
"remote_input_status": "Κατάσταση/Ενέργεια",
"remote_losthint": "Σημείωση: Όλες οι αλλαγές θα χαθούν μετά από επανεκκίνηση.",
"remote_maptype_intro": "Συνήθως η διάταξη LED καθορίζει ποια LED καλύπτει μια συγκεκριμένη περιοχή εικόνας. Μπορείτε να το αλλάξετε εδώ: $1.",
"remote_maptype_label": "Είδος Χαρτογράφισης",
"remote_maptype_label_multicolor_mean": "Πολύχρωμο",
"remote_maptype_label_unicolor_mean": "Μονοχρωματικό",
"remote_optgroup_syseffets": "Ρυθμίσης Συστήματος",
"remote_optgroup_templates_custom": "Πρότυπα Χρήστη",
"remote_optgroup_templates_system": "Πρότυπα Συστήματος",
"remote_optgroup_usreffets": "Εφέ Χρήστη",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Εναλλαγή μεταξύ διαφορετικών επιλογών βίντεο για να απολαύσετε ταινίες 3D! Όλες οι συσκευές καταγραφής υποστηρίζονται. $1",
"remote_videoMode_label": "Λειτουργία βίντεο",
"support_label_affinstr1": "Κάντε κλικ στον κατάλληλο σύνδεσμο της χώρας σας",
"support_label_affinstr2": "Ό,τι αγοράζετε (δεν έχει σημασία τι) παίρνουμε μια μικρή χρέωση με βάση τον τζίρο σας",
"support_label_affinstr3": "Πληρώνετε ΠΑΝΤΑ το ίδιο, δεν υπάρχει καμία απολύτως διαφορά. Δοκίμασέ το!",
"support_label_btctext": "Διεύθυνση:",
"support_label_donate": "Δωρίστε ή χρησιμοποιήστε τους συνδέσμους συνεργατών μας",
"support_label_donationpp": "Δωρεά:",
"support_label_fbtext": "Μοιραστείτε τη σελίδα μας στο Hyperion στο Facebook και λάβετε ειδοποίηση όταν κυκλοφορούν νέες ενημερώσεις",
"support_label_forumtext": "Προθήκες, συζητήσεις, βοήθεια και πολλά άλλα",
"support_label_forumtitle": "Φόρουμ",
"support_label_ggtext": "Κυκλώστε μας στο Google+!",
"support_label_ghtext": "Επισκευτείτε μας στο GitHub",
"support_label_igtext": "Επισκεφθείτε μας στο Instagram για να παρακολουθήσετε τις τελευταίες φωτογραφίες του Hyperion!",
"support_label_intro": "Το Hyperion είναι ένα δωρεάν, μη-κερδοσκοπικό λογισμικό. Μια μικρή ομάδα εργάζεται πάνω σε αυτό και γι' αυτό χρειαζόμαστε τη σταθερή υποστήριξή σας.",
"support_label_spreadtheword": "Διέδωσέ το",
"support_label_title": "Υποστήριξη Hyperion",
"support_label_twtext": "Μοιραστείτε και ακολουθήστε μας στο Twitter, για να είστε πάντα ενημερωμένοι με την τελευταία ανάρτηση σχετικά με την ανάπτυξη του Hyperion",
"support_label_webpagetext": "Αρχική σελίδα του Hyperion",
"support_label_webpagetitle": "Ιστοσελίδα",
"support_label_webrestitle": "Πληροφορίες και βοηθιτικό υλικό",
"support_label_wikitext": "Το Α έως Ω για σχεδόν οτιδήποτε σχετίζεται με το Hyperion",
"support_label_wikititle": "Βιβλιογραφία",
"support_label_yttext": "Βαρεθήκατε τις φωτογραφίες; Δείτε το κανάλι μας στο YouTube!",
"update_button_changelog": "Πλήρες αρχείο αλλαγών",
"update_button_install": "Εγκατάσταση",
"update_error_getting_versions": "Παρουσιάστηκε πρόβλημα με τον προσδιορισμό της πιο πρόσφατης διαθέσιμης έκδοσης.",
"update_label_description": "Περιγραφή:",
"update_label_intro": "Επισκόπηση όλων των διαθέσιμων εκδόσεων Hyperion. Επιπλέον, θα μπορούσατε να ενημερώσετε ή να υποβαθμίσετε την έκδοση του Hyperion όποτε θέλετε. Ταξινόμηση από το νεότερο στο παλαιότερο",
"update_label_type": "Τύπος:",
"update_versreminder": "Η έκδοση σας: $1",
"wiz_cc_adjustgamma": "Gamma: Αυτό που πρέπει να κάνετε είναι να προσαρμόσετε τα επίπεδα γάμμα κάθε καναλιού μέχρι να έχετε την ίδια αντιληπτή ποσότητα για κάθε κανάλι. Υπόδειξη: Το ουδέτερο είναι 1,0! Για παράδειγμα, εάν το Γκρι σας είναι λίγο κοκκινωπό, σημαίνει ότι πρέπει να αυξήσετε το κόκκινο γάμμα για να μειώσετε την ποσότητα του κόκκινου (όσο περισσότερο γάμμα, τόσο μικρότερη ποσότητα χρώματος).",
"wiz_cc_adjustit": "Προσαρμόστε το \"$1\" σας, μέχρι να τα καταφέρετε. Λάβετε υπόψη: Όσο περισσότερο προσαρμόζετε μακριά από την προεπιλεγμένη τιμή, το φάσμα χρωμάτων θα είναι περιορισμένο (Επίσης για όλα τα ενδιάμεσα χρώματα). Ανάλογα με το χρωματικό φάσμα της τηλεόρασης/LED, τα αποτελέσματα θα διαφέρουν.",
"wiz_cc_backlight": "Επιπλέον, θα μπορούσατε να ορίσετε έναν οπίσθιο φωτισμό για να ταξινομήσετε τα \"κακά χρώματα\" σε σχεδόν σκοτεινές περιοχές ή εάν δεν σας αρέσει η εναλλαγή μεταξύ χρώματος και απενεργοποίησης κατά την παρακολούθηση. Επιπλέον, θα μπορούσατε να ορίσετε εάν πρέπει να υπάρχει κάποιο χρώμα σε αυτό ή απλώς λευκό. Αυτό είναι απενεργοποιημένο κατά την κατάσταση \"Απενεργοποίηση\" \"Χρώμα\" και \"Εφέ\".",
"wiz_cc_btn_stop": "Σταματήστε το βίντεο",
"wiz_cc_btn_switchpic": "Αλλαγή εικόνας",
"wiz_cc_chooseid": "Ορίστε ένα όνομα για αυτό το προφίλ χρώματος.",
"wiz_cc_kodicon": "Βρέθηκε το Kodi, προχωρήστε με την υποστήριξη του Kodi.",
"wiz_cc_kodidiscon": "Το Kodi δεν βρέθηκε, προχωρήστε χωρίς υποστήριξη Kodi (ελέγξτε εάν είναι ενεργοποιημένος ο τηλεχειρισμός από άλλα συστήματα).",
"wiz_cc_kodimsg_start": "Επιτυχία δοκιμής - ώρα να προχωρήσετε!",
"wiz_cc_kodishould": "Το Kodi θα πρέπει να δείχνει την ακόλουθη εικόνα: $1",
"wiz_cc_kwebs": "Kodi webserver (Hostname ή IP)\n",
"wiz_cc_lettvshow": "Αφήστε την τηλεόρασή σας να εμφανίσει την ακόλουθη εικόνα: $1",
"wiz_cc_lettvshowm": "Ελέγξτε αυτό με τις παρακάτω εικόνες: $1",
"wiz_cc_link": "Πάτα με!",
"wiz_cc_morethanone": "Έχετε περισσότερα από ένα προφίλ, επιλέξτε το προφίλ που θέλετε να βαθμονομήσετε.",
"wiz_cc_summary": "Συμπέρασμα των ρυθμίσεών σας. Κατά τη διάρκεια της αναπαραγωγής βίντεο, μπορείτε να αλλάξετε ή να δοκιμάσετε ξανά τις τιμές. Εάν τελειώσετε, κάντε κλικ στην αποθήκευση.",
"wiz_cc_testintro": "Ώρα για ένα πραγματικό τεστ",
"wiz_cc_testintrok": "Πατήστε ένα κουμπί παρακάτω για να ξεκινήσετε ένα δοκιμαστικό βίντεο.",
"wiz_cc_testintrowok": "Δείτε τον παρακάτω σύνδεσμο για να κατεβάσετε δοκιμαστικά βίντεο:",
"wiz_cc_title": "Οδηγός ρύθμισης βαθμονόμησης χρωμάτων",
"wiz_cc_try_connect": "Σύνδεση...",
"wiz_cololight_desc2": "Τώρα επιλέξτε ποια Cololights θα προστεθούν. Για να αναγνωρίσετε μεμονωμένα φώτα, πατήστε το κουμπί στα δεξιά.",
"wiz_cololight_noprops": "Δεν είναι δυνατή η λήψη των ιδιοτήτων της συσκευής - Ορίστε τον αριθμό των LED υλικού με μη αυτόματο τρόπο",
"wiz_guideyou": "Το $1 θα σας καθοδηγήσει στις ρυθμίσεις. Απλά πατήστε το κουμπί!",
"wiz_hue_blinkblue": "Εγένετο φως",
"wiz_hue_create_user": "Δημιουργία νέου Χρήστη",
"wiz_hue_desc1": "1. Το Hyperion αναζητά αυτόματα ένα Hue-Bridge, σε περίπτωση που δεν μπορεί να βρει, πρέπει να δώσετε το όνομα κεντρικού υπολογιστή ή τη διεύθυνση IP και να πατήσετε το κουμπί επαναφόρτωσης. <br> 2. Δώστε ένα αναγνωριστικό χρήστη, εάν δεν έχετε, δημιουργήστε ένα νέο.",
"wiz_hue_desc2": "3. Τώρα επιλέξτε ποιοι λαμπτήρες πρέπει να προστεθούν. Η θέση αντιστοιχίζει τη λάμπα σε μια συγκεκριμένη θέση στην \"εικόνα\" σας. Δεν θα προστεθούν απενεργοποιημένες λάμπες. Για να αναγνωρίσετε μεμονωμένους λαμπτήρες πατήστε το κουμπί στα δεξιά.",
"wiz_hue_e_desc1": "1. Το Hyperion αναζητά αυτόματα ένα Hue-Bridge, σε περίπτωση που δεν μπορεί να βρει, πρέπει να δώσετε το όνομα κεντρικού υπολογιστή ή τη διεύθυνση IP και να πατήσετε το κουμπί επαναφόρτωσης. <br> 2. Δώστε ένα αναγνωριστικό χρήστη και το κλειδί πελάτη, εάν δεν έχετε και τα δύο, δημιουργήστε νέα.",
"wiz_hue_e_noapisupport": "Ο Wizard έχει απενεργοποιήσει την υποστήριξη API ψυχαγωγίας και θα συνεχίσει σε κλασική λειτουργία.",
"wiz_hue_e_title": "Wizard ψυχαγωγίας Philips Hue",
"wiz_hue_failure_connection": "Τέλος χρόνου: Παρακαλώ πατήστε το κουμπί (bridge) μέσα σε διάστημα 30 δευτερολέπτων",
"wiz_hue_failure_ip": "Δεν βρέθηκε καμία γέφυρα δικτύου (bridge), παρακαλείστε να παρέχετε έγκυρο όνομα διακομιστή ή διεύθυνση IP",
"wiz_hue_failure_user": "Ο χρήστης δεν βρέθηκε, δημιουργήστε έναν νέο με το κουμπί παρακάτω ή εισάγετε ένα έγκυρο όνομα χρήστη και πατήστε το σύμβολο της \"επαναφόρτωσης\".",
"wiz_hue_intro1": "Αυτός ο βοηθός ρυθμίζει το Hyperion για το γνωστό σύστημα Philips Hue. Χαρακτηριστικά όπως την αυτόματη αναγνώριση του Hue Bridge, δημιουργίες χρήστη, τοποθέτηση κάθε Hue συσκευής σε συγκεκριμένη θέση στην εικόνα σας ή απενεργοποίηση της και ρύθμιση των επιλογών του Hyperion αυτόματα! Στα γρήγορα: Το μόνο που χρειάζεται είναι μερικά κλικ και είστε έτοιμοι!",
"wiz_hue_ip": "Hostname ή ΙΡ",
"wiz_hue_press_link": "Παρακαλώ πατήστε το κουμπί σύζευξης στη Hue γέφυρα (bridge).",
"wiz_hue_searchb": "Αναζήτηση για γέφυρα (bridge)...",
"wiz_hue_title": "Philips Hue Wizard",
"wiz_hue_username": "ID Χρήστη",
"wiz_identify": "Αναγνώρισε",
"wiz_identify_light": "Αναγνώρισε $1",
"wiz_ids_disabled": "Απενεργοποίηση",
"wiz_ids_entire": "Πλήρη εικόνα",
"wiz_noLights": "Δεν βρέθηκε το $1! Συνδέστε τα φώτα στο δίκτυο ή διαμορφώστε τα με μη αυτόματο τρόπο.",
"wiz_pos": "Θέση/Κατάσταση",
"wiz_rgb_expl": "Η χρωματική κουκκίδα αλλάζει κάθε x δευτερόλεπτα το χρώμα (κόκκινο, πράσινο), την ίδια στιγμή που τα LED σας αλλάζουν και το χρώμα. Απαντήστε στις ερωτήσεις στο κάτω μέρος για να ελέγξετε/διορθώσετε τη σειρά των byte.",
"wiz_rgb_intro1": "Αυτός ο βοηθός ρύθμισης θα σας οδηγήσει μέσα από την διαδικασία εύρεσης της σωστής σειράς χρωμάτων των Led σας. Κάντε κλικ στο κουμπί συνέχεια για να ξεκινήσετε.",
"wiz_rgb_intro2": "Πότε χρειάζεται αυτός ο βοηθός ρύθμισης; Παράδειγμα: όταν έχετε θέσει το χρώμα κόκκινο, αλλά εμφανίζει πράσινο ή μπλε. Μπορείτε επίσης να τον χρησιμοποιήσετε για την πρώτη παραμετροποίηση.",
"wiz_rgb_q": "Ποιο χρώμα δείχνουν τα LED σας, όταν η έγχρωμη κουκκίδα παραπάνω δείχνει...",
"wiz_rgb_qgend": "...πράσινο;",
"wiz_rgb_qrend": "...κόκινο;",
"wiz_rgb_switchevery": "Αλάξτε χρώμα κάθε...",
"wiz_rgb_title": "Βοηθός ρύθμισης διάταξης RGB Byte",
"wiz_wizavail": "Βοηθός ρύθμισης διαθέσιμος",
"wiz_yeelight_unsupported": "Μη-υποστηριζόμενο"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,155 @@
{
"InfoDialog_access_text": "בהתאם לרמת ההגדרות תוכל להתאים אפשרויות נוספות או לקבל גישה לתכונות נוספות. רמת \"ברירת המחדל\" המומלצת היא.",
"InfoDialog_iswitch_text": "אם אתה מפעיל את Hyperion יותר מפעם אחת ברשת המקומית שלך, תוכל לעבור בין תצורות האינטרנט. בחר את המופע של Hyperion למטה והחלף!",
"InfoDialog_nostorage_text": "הדפדפן שלך אינו תומך ב-localStorage. לא ניתן לשמור הגדרת שפה מסוימת (חזרה ל'זיהוי אוטומטי') ורמת גישה (חזרה ל'ברירת מחדל'). קוסמים מסוימים עשויים להיות מוסתרים. אתה עדיין יכול להשתמש בממשק האינטרנט ללא בעיות נוספות",
"InfoDialog_nowrite_text": "Hyperion לא יכול לכתוב לקובץ התצורה הנטען הנוכחי שלך. אנא תקן את הרשאות הקובץ כדי להמשיך.",
"conf_colors_blackborder_intro": "דלג על פסים שחורים באשר הם. כל מצב משתמש באלגוריתם זיהוי אחר המכוון למצבים מיוחדים. תעלה את הסף אם זה לא עובד לך.",
"conf_colors_color_intro": "צור פרופיל כיול אחד או יותר, התאם כל צבע, בהירות, ליניאריזציה ועוד.",
"conf_colors_smoothing_intro": "החלקה משטחת שינויי צבע/בהירות כדי להפחית הסחת דעת מעצבנת.",
"conf_effect_bgeff_intro": "הגדר אפקט/צבע רקע, המוצג בזמן \"בטלה\" של Hyperion. מתחיל תמיד בערוץ עדיפות 255.",
"conf_effect_fgeff_intro": "הגדר אפקט אתחול או צבע, שיוצג במהלך האתחול של Hyperion למשך הזמן שהוגדר.",
"conf_effect_path_intro": "טען אפקטים מהנתיבים המוגדרים. בנוסף, אתה יכול להשבית אפקטים בודדים לפי שם כדי להסתיר אותם מכל רשימות האפקטים.",
"conf_general_impexp_expbtn": "ייצא",
"conf_general_impexp_impbtn": "ייבא",
"conf_general_impexp_l1": "ייבא הגדרה על ידי בחירת קובץ הגדרות למטה ולחץ על \"ייבוא\".",
"conf_general_impexp_l2": "ייצא הגדרה על ידי בחירת קובץ הגדרות למטה ולחץ על \"ייצוא\".",
"conf_general_impexp_title": "תצורת ייבוא/ייצוא",
"conf_general_intro": "הגדרות בסיסיות סביב Hyperion ו-WebUI שאינן מתאימות לקטגוריה אחרת.",
"conf_general_label_title": "הגדרות כלליות",
"conf_grabber_fg_intro": "לכידת מסך היא לכידת המערכת המקומית שלך כמקור קלט, Hyperion מותקן על.",
"conf_grabber_v4l_intro": "לכידת USB היא התקן (לכידה) המחובר באמצעות USB המשמש להזנת תמונות מקור לעיבוד.",
"conf_helptable_expl": "הֶסבֵּר",
"conf_helptable_option": "אפשרות",
"conf_leds_contr_label_contrtype": "סוג בקר",
"conf_leds_device_intro": "Hyperion תומך בהרבה בקרים להעברת נתונים למכשיר היעד שלך. בחר בקר LED מתוך הרשימה הממוינת והגדר אותו. בחרנו את הגדרות ברירת המחדל הטובות ביותר עבור כל מכשיר.",
"conf_leds_layout_btn_checklist": "הצג רשימת בדיקה",
"conf_leds_layout_checkp1": "ה-LED השחור הוא ה-LED הראשון שלך, LED הראשון הוא הנקודה שבה אתה מזין את אות הנתונים שלך.",
"conf_leds_layout_checkp2": "הפריסה היא תמיד המראה הקדמי של הטלוויזיה שלך, לעולם לא התצוגה האחורית.",
"conf_leds_layout_checkp3": "ודא שהכיוון נכון. הנוריות האפורות מציינות את מספר LED 2 ו-3 כדי להמחיש את כיוון הנתונים.",
"conf_leds_layout_checkp4": "בחר פער: בכדי ליצור פער, התעלם ממנו תחילה כאשר אתה מגדיר עליון/תחתון/שמאל/ימין והגדר לאחר מכן את אורך הפער כדי להסיר כמות לדים. שנה את מיקום הפער עד שיתאים.",
"conf_leds_layout_frame": "פריסה קלאסית (מסגרת LED)",
"conf_leds_layout_generatedconf": "תצורת LED שנוצרה/נוכחית",
"conf_leds_layout_intro": "אתה גם צריך פריסת LED, המשקפת את עמדות LED שלך. הפריסה הקלאסית היא מסגרת הטלוויזיה המשמשת בדרך כלל, אך אנו תומכים גם ביצירת מטריצות LED (קירות LED). התצוגה על פריסה זו היא תמיד מחזית הטלוויזיה שלך.",
"conf_leds_layout_matrix": "פריסת מטריצה (קיר LED)",
"conf_leds_layout_textf1": "שדה טקסט זה מציג כברירת מחדל את הפריסה הנטענת הנוכחית שלך וייחלף אם תיצור פריסה חדשה עם האפשרויות שלמעלה. לחלופין, תוכל לבצע עריכות נוספות.",
"conf_leds_nav_label_ledcontroller": "בקר LED",
"conf_leds_nav_label_ledlayout": "פריסת LED",
"conf_leds_optgroup_network": "רשת",
"conf_logging_label_intro": "אזור לבדיקת הודעות יומן, תראה יותר או פחות מידע בהתאם לרמת הרישום שנקבעה.",
"conf_network_forw_intro": "העבר את כל הקלט להתקנה שנייה של Hyperion שניתן להניע עם בקר LED אחר",
"conf_network_proto_intro": "ה-PROTO-Port של כל המופעים של Hyperion, המשמש עבור זרמי תמונות (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)",
"dashboard_alert_message_confedit": "תצורת ה-Hyperion שלך שונתה. כדי להחיל אותו, הפעל מחדש את Hyperion.",
"dashboard_alert_message_confedit_t": "התצורה השתנתה",
"dashboard_alert_message_confsave_success": "תצורת ה-Hyperion שלך נשמרה בהצלחה. השינויים שלך פעילים כעת.",
"dashboard_alert_message_confsave_success_t": "התצורה נשמרה",
"dashboard_componentbox_label_comp": "רְכִיב",
"dashboard_componentbox_label_status": "מצב",
"dashboard_componentbox_label_title": "מצב הרכיבים",
"dashboard_infobox_label_currenthyp": "גרסת ה-Hyperion שלך:",
"dashboard_infobox_label_instance": "למשל:",
"dashboard_infobox_label_latesthyp": "הגרסה האחרונה של Hyperion:",
"dashboard_infobox_label_platform": "פלטפורמה:",
"dashboard_infobox_label_ports": "יציאות",
"dashboard_infobox_label_smartacc": "גישה חכמה",
"dashboard_infobox_label_statush": "מצב ה-Hyperion:",
"dashboard_infobox_label_title": "מידע",
"dashboard_infobox_message_updatesuccess": "הינך מריץ את הגרסה האחרונה של Hyperion.",
"dashboard_infobox_message_updatewarning": "גרסה חדשה יותר של Hyperion זמינה! ($1)",
"dashboard_label_intro": "לוח המחוונים נותן לך סקירה מהירה על מצב ה- Hyperion",
"dashboard_newsbox_label_title": "בלוג ה-Hyperion",
"dashboard_newsbox_noconn": "לא ניתן להתחבר לשרת Hyperion כדי לאחזר את הפוסטים האחרונים, האם חיבור האינטרנט שלך תקין?",
"dashboard_newsbox_readmore": "קרא עוד",
"dashboard_newsbox_visitblog": "בקר ב-Hyperion בלוג ",
"edt_conf_color_brightnessComp_expl": "מפצה על הבדלי בהירות בין אדום ירוק כחול, ציאן מגנטה צהוב ולבן. 100 פירושו פיצוי מלא, 0 אין פיצוי",
"edt_conf_color_channelAdjustment_header_expl": "צור פרופילי צבע שניתן להקצות לרכיב מסוים. התאם צבע, גמא, בהירות, פיצוי ועוד.",
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "כדי לחסוך במשאבים כל מסגרת n' תעובד בלבד. למשל. אם ה-grabber מוגדר ל-30fps עם אפשרות זו מוגדרת ל-5, התוצאה הסופית תהיה בסביבות 6fps",
"edt_conf_v4l2_signalDetection_expl": "אם מופעל, לכידת USB תושבת זמנית כאשר לא נמצא אות. זה יקרה כאשר התמונה תרד מתחת לערך הסף למשך תקופה של 4 שניות.",
"effectsconfigurator_label_intro": "צור מתוך האפקטים הבסיסיים אפקטים חדשים המותאמים לטעמך. בהתאם לאפקט יש אפשרויות כמו צבע, מהירות, כיוון ועוד.",
"general_access_advanced": "מתקדם",
"general_access_default": "ברירת מחדל",
"general_access_expert": "מומחה",
"general_btn_back": "חזור",
"general_btn_cancel": "בטל",
"general_btn_continue": "המשך",
"general_btn_iswitch": "החלף",
"general_btn_next": "הבא",
"general_btn_off": "כיבוי",
"general_btn_ok": "בסדר",
"general_btn_on": "הדלקה",
"general_btn_restarthyperion": "הפעל מחדש את Hyperion",
"general_btn_save": "שמור",
"general_btn_saveandreload": "שמור וטען מחדש",
"general_btn_yes": "כן",
"general_button_savesettings": "שמור הגדרות",
"general_col_blue": "כחול",
"general_col_green": "ירוק",
"general_col_red": "אדום",
"general_comp_BLACKBORDER": "Blackbar זיהוי",
"general_comp_BOBLIGHTSERVER": "שרת Boblight",
"general_comp_FLATBUFSERVER": "שרת ",
"general_comp_FORWARDER": "שילוח",
"general_comp_GRABBER": "לכידת מסך",
"general_comp_LEDDEVICE": "פלט LED",
"general_comp_PROTOSERVER": "שרת מאגר פרוטוקול",
"general_comp_SMOOTHING": "חלק",
"general_comp_V4L": "לכידת כניסת USB",
"general_country_de": "גרמניה",
"general_country_es": "ספרד",
"general_country_fr": "צרפת",
"general_country_it": "איטליה",
"general_country_nl": "הולנד",
"general_country_uk": "בריטניה",
"general_country_us": "ארצות הברית",
"general_speech_cs": "צ'כית",
"general_speech_de": "גרמנית",
"general_speech_en": "אנגלית",
"general_speech_es": "ספרדית",
"general_speech_it": "איטלקית",
"general_webui_title": "Hyperion - תצורת אינטרנט",
"general_wiki_moreto": "מידע נוסף על \"$1\" בוויקי שלנו",
"info_restart_contus": "אם אתה עדיין משוטט כאן לאחר 20 שניות ואין לך מושג למה, בבקשה פתח נושא חדש בפורום התמיכה שלנו...",
"main_ledsim_btn_togglelednumber": "מספר נורות LED",
"main_ledsim_btn_toggleleds": "הצג אורות",
"main_ledsim_btn_togglelivevideo": "וידאו חי",
"main_ledsim_text": "הדמיה חיה של צבעי LED ואפשרות הזרמת הווידאו הנוכחי של מכשיר הלכידה שלך.",
"main_ledsim_title": "חזותיות LED",
"main_menu_about_token": "אודות Hyperion",
"main_menu_colors_conf_token": "עיבוד תמונה",
"main_menu_dashboard_token": "לוּחַ מַחווָנִים",
"main_menu_effect_conf_token": "אפקטים",
"main_menu_effectsconfigurator_token": "הגדרת אפקטים",
"main_menu_general_conf_token": "כללי",
"main_menu_grabber_conf_token": "לכידת חומרה",
"main_menu_input_selection_token": "בחירת קלט",
"main_menu_leds_conf_token": "יצאת LED",
"main_menu_network_conf_token": "שירותי אינטרנט",
"main_menu_remotecontrol_token": "שלט רחוק",
"main_menu_support_token": "תמיכה",
"main_menu_system_token": "מערכת",
"main_menu_update_token": "עדכון",
"main_menu_webconfig_token": "תצורת אינטרנט",
"remote_input_intro": "Hyperion משתמש במערכת עדיפות לבחירת מקור. לכל מה שתגדירו יש עדיפות (אפקט/צבע/צילום מסך/לכידת USB ומקורות רשת). כברירת מחדל, Hyperion בוחר מקורות בהתאם לעדיפות (המספר הנמוך ביותר משקף את המקור הפעיל הנוכחי). כעת יש לך הזדמנות לבחור מקורות בעצמך. $1",
"support_label_intro": "Hyperion היא תוכנה חינמית ללא מטרות רווח. צוות קטן עובד על זה וזו הסיבה שאנחנו צריכים את התמיכה הקבועה שלכם.",
"update_label_intro": "סקירה כללית על כל גרסאות Hyperion הזמינות. בנוסף, תוכל לעדכן או לשדרג לאחור את הגרסה שלך של Hyperion מתי שתרצה. ממוין מהחדש להכי ישן",
"wiz_atmoorb_desc2": "כעת בחר אילו כדורים יש להוסיף. המיקום מקצה את המנורה למיקום מסוים ב\"תמונה\" שלך. מנורות מושבתות לא יתווספו. לזיהוי מנורות בודדות לחץ על הכפתור בצד ימין.",
"wiz_atmoorb_intro1": "אשף זה מגדיר את Hyperion עבור AtmoOrbs. התכונות הן הזיהוי האוטומטי של AtmoOrb, הגדרת כל אור למיקום ספציפי בתמונה שלך או השבתה וביצוע אופטימיזציה של הגדרות Hyperion באופן אוטומטי! אז בקיצור: כל מה שאתה צריך זה כמה קליקים וסיימת!",
"wiz_cc_adjustgamma": "גמא: מה שאתה צריך לעשות הוא, להתאים את רמות הגמא של כל ערוץ עד שתהיה לך אותה כמות נתפסת של כל ערוץ. רמז: ניטרלי הוא 1.0! לדוגמה, אם האפור שלך קצת אדמדם, זה אומר שאתה צריך להגדיל את הגמא האדום כדי להפחית את כמות האדום (ככל שיותר גמא, כך פחות צבע).",
"wiz_cc_adjustit": "התאם את ה-\"$1\" שלך עד שתסתדר עם זה. שימו לב: ככל שתתרחקו מערך ברירת המחדל, ספקטרום הצבעים יהיה מוגבל (גם עבור כל הצבעים שביניהם). תלוי בקול הטלוויזיה/LED",
"wiz_cc_backlight": "בנוסף, אתה יכול להגדיר תאורה אחורית כדי למיין \"צבעים רעים\" באזורים כמעט כהים או אם אתה לא אוהב את המעבר בין צבע לכבוי במהלך הצפייה. בנוסף אתה יכול להגדיר אם צריך להיות בו קצת צבע או רק לבן. זה מושבת במצב \"כבוי\", \"צבע\" ו\"אפקט\".",
"wiz_cc_intro1": "אשף זה ידריך אותך בכיול ה-LED שלך. אם אתה משתמש בקודי, ניתן לשלוח את תמונות הכיול וסרטוני הווידאו ישירות אליו. תנאי מוקדם: עליך להפעיל את \"אפשר שליטה מרחוק מיישומים במערכות אחרות\" בקודי.<br />לחלופין, ייתכן שתרצה להוריד את הקבצים האלה בעצמך ולהציג אותם כשהאשף יבקש ממך להתאים את ההגדרה.",
"wiz_cc_kodidiscon": "Kodi לא נמצא, המשך ללא תמיכת Kodi (אנא בדוק אם שלט רחוק על ידי מערכות אחרות מופעלת).",
"wiz_cc_summary": "מסקנה של ההגדרות שלך. במהלך הפעלת וידאו, תוכל לשנות או לבדוק שוב ערכים. אם סיימת, לחץ על שמור.",
"wiz_cololight_intro1": "אשף זה מגדיר את Hyperion עבור מערכת Cololight. התכונות הן הזיהוי האוטומטי של Cololight וכוונון את הגדרות Hyperion באופן אוטומטי! בקיצור: כל מה שאתה צריך זה כמה קליקים וסיימת!<br />הערה: במקרה של Cololight Strip, ייתכן שיהיה עליך לתקן ידנית את ספירת ה-LED ואת הפריסה.",
"wiz_hue_desc1": "1. Hyperion מחפש אוטומטית עבור Hue-Bridge, במקרה שהוא לא יכול למצוא אחד, עליך לספק את שם המארח או כתובת ה-IP וללחוץ על כפתור הטעינה מחדש. \n2. ספק מזהה משתמש, אם אין לך צור אחד חדש.",
"wiz_hue_desc2": "3. כעת בחרו אילו מנורות יש להוסיף. המיקום מקצה את המנורה למיקום מסוים ב\"תמונה\" שלך. מנורות מושבתות לא יתווספו. לזיהוי מנורות בודדות לחץ על הכפתור בצד ימין",
"wiz_hue_e_desc1": "1. Hyperion מחפש אוטומטית עבור Hue-Bridge, במקרה שהוא לא יכול למצוא אחד, עליך לספק את שם המארח או כתובת ה-IP וללחוץ על כפתור הטעינה מחדש. <br>2. ספק מזהה משתמש ומפתח הלקוח, אם אין לך את שניהם, צור חדשים.",
"wiz_hue_e_desc3": "4. בחר באיזה מיקום המנורה המתאימה צריכה להיות \"בתמונה\". בחירה מראש של העמדה נעשתה בהתבסס על המיקומים המוגדרים של האורות בקבוצת הבידור. זו רק המלצה וניתן להתאים אישית לפי הרצון. לכן אתה יכול להדגיש אותם בקצרה על ידי לחיצה על הכפתור הימני כדי לשפר את הבחירה.",
"wiz_hue_e_intro1": "אשף זה מגדיר את Hyperion עבור מערכת Philips Hue Entertainment הידועה. התכונות הן: זיהוי אוטומטי של Hue Bridge, יצירת מפתחות משתמש ולקוח, בחירת קבוצת בידור, הגדרת אורות קבוצה למיקום ספציפי בתמונה שלך ואופטימיזציה של הגדרות Hyperion באופן אוטומטי! אז בקיצור: כל מה שאתה צריך זה כמה קליקים וסיימת!",
"wiz_hue_failure_user": "המשתמש לא נמצא, צור אחד חדש עם הכפתור למטה או הזן מזהה משתמש חוקי ולחץ על הסמל \"טען מחדש\".",
"wiz_hue_intro1": "אשף זה מגדיר את Hyperion עבור מערכת Philips Hue הידועה. התכונות הן זיהוי אוטומטי של Hue Bridge, יצירת משתמש, הגדר כל אור גוון למיקום מסוים בתמונה שלך או השבת אותו וכוונו את הגדרות Hyperion באופן אוטומטי! אז בקיצור: כל מה שאתה צריך זה כמה קליקים וסיימת!",
"wiz_rgb_expl": "נקודת הצבע מחליפה כל x שניות את הצבע (אדום, ירוק), ובאותו הזמן גם נוריות ה-LED שלך מחליפות את הצבע. ענה על השאלות בתחתית כדי לבדוק/לתקן את סדר הביטים שלך.",
"wiz_rgb_intro1": "אשף זה ידריך אותך בתהליך מציאת סדר הצבעים הנכון עבור הלדים שלך. לחץ על המשך כדי להתחיל.",
"wiz_rgb_intro2": "מתי אתה צריך את האשף הזה? דוגמה: אתה קובע את הצבע האדום, אבל אתה מקבל ירוק או כחול. אתה יכול גם להשתמש בו עבור תצורה ראשונה.",
"wiz_yeelight_desc2": "כעת בחר אילו מנורות יש להוסיף. המיקום מקצה את המנורה למיקום מסוים ב\"תמונה\" שלך. מנורות מושבתות לא יתווספו. לזיהוי מנורות בודדות לחץ על הכפתור בצד ימין.",
"wiz_yeelight_intro1": "אשף זה מגדיר את Hyperion עבור מערכת Yeelight. התכונות הן הזיהוי האוטומטי של Yeelighs, הגדרת כל אור למיקום מסוים בתמונה שלך או להשבית אותו ולכוון את הגדרות Hyperion באופן אוטומטי! אז בקיצור: כל מה שאתה צריך זה כמה קליקים וסיימת!"
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,266 @@
{
"conf_colors_blackborder_intro": "Lewati bar hitam di mana pun mereka berada. Setiap mode menggunakan algoritme pendeteksian lain yang disetel untuk situasi khusus. Tinggikan ambang batas jika tidak berhasil untuk Anda.",
"conf_colors_color_intro": "Buat satu atau beberapa profil kalibrasi, sesuaikan setiap warna, kecerahan, linearisasi, dan lainnya.",
"conf_colors_smoothing_intro": "Smoothing meratakan perubahan warna/kecerahan untuk mengurangi gangguan yang mengganggu.",
"conf_effect_bgeff_intro": "Menentukan efek/warna latar belakang, yang ditampilkan selama Hyperion \"idle\". Selalu dimulai dengan channel prioritas 255.",
"conf_effect_fgeff_intro": "Tentukan efek boot atau warna, yang ditampilkan sewaktu Hyperion dinyalakan selama durasi yang ditentukan.",
"conf_effect_path_intro": "Memuat efek dari jalur yang ditentukan. Tambahan Anda dapat menonaktifkan efek tunggal berdasarkan nama untuk menyembunyikannya dari semua daftar efek.",
"conf_general_impexp_expbtn": "Ekspor",
"conf_general_impexp_impbtn": "Impor",
"conf_general_impexp_l1": "Impor konfigurasi dengan memilih file konfigurasi di bawah ini dan klik \"Impor\".",
"conf_general_impexp_l2": "Ekspor konfigurasi dengan mengklik \"Ekspor\". Peramban Anda akan memulai pengunduhan.",
"conf_general_impexp_title": "Konfigurasi Impor/Ekspor",
"conf_general_intro": "Pengaturan dasar di sekitar Hyperion dan WebUI yang tidak sesuai dengan kategori lain.",
"conf_general_label_title": "Pengaturan Umum",
"conf_grabber_fg_intro": "Screen capture adalah tangkapan layar sistem lokal Anda sebagai sumber input, tempat Hyperion diinstal.",
"conf_grabber_v4l_intro": "USB capture adalah perangkat (capture) yang terhubung melalui USB yang digunakan untuk memasukkan gambar sumber untuk diproses.",
"conf_helptable_expl": "Penjelasan",
"conf_helptable_option": "Opsi",
"conf_leds_contr_label_contrtype": "Tipe kontroler:",
"conf_leds_device_intro": "Hyperion mendukung banyak kontroler untuk mengirimkan data ke perangkat target Anda. Pilih kontroler LED dari daftar yang sudah diurutkan dan di konfigurasikan. Kami telah memilih pengaturan default terbaik untuk setiap perangkat.",
"conf_leds_layout_advanced": "Pengaturan Tingkat Lanjut",
"conf_leds_layout_btn_checklist": "Tampilkan checklist",
"conf_leds_layout_button_savelay": "Simpan Layout",
"conf_leds_layout_button_updsim": "Perbarui Preview",
"conf_leds_layout_checkp1": "LED hitam adalah LED pertama Anda, LED pertama adalah titik di mana Anda memasukkan sinyal data Anda.",
"conf_leds_layout_checkp2": "Layout ini selalu tampak dari depan TV Anda, tidak pernah dari belakang.",
"conf_leds_layout_checkp3": "Pastikan arahnya sudah benar. LED abu-abu menunjukkan LED nomor 2 dan 3 untuk memvisualisasikan arah data.",
"conf_leds_layout_checkp4": "Gap: Untuk membuat gap, abaikan terlebih dulu ketika Anda menentukan Atas/Bawah/Kiri/Kanan, kemudian tetapkan panjang gap Anda untuk menghilangkan sejumlah led. Ubah posisi gap sampai sesuai.",
"conf_leds_layout_cl_bottom": " Bawah",
"conf_leds_layout_cl_cornergap": "Gap Sudut",
"conf_leds_layout_cl_edgegap": "Gap Tepi",
"conf_leds_layout_cl_gaglength": "Panjang gap",
"conf_leds_layout_cl_gappos": "posisi gap",
"conf_leds_layout_cl_hleddepth": "Kedalaman LED horizontal",
"conf_leds_layout_cl_inppos": "Posisi input",
"conf_leds_layout_cl_left": "Kiri",
"conf_leds_layout_cl_overlap": "Overlap",
"conf_leds_layout_cl_reversdir": "Membalikkan arah",
"conf_leds_layout_cl_right": "Kanan",
"conf_leds_layout_cl_top": "Atas",
"conf_leds_layout_cl_vleddepth": "Kedalaman LED vertikal",
"conf_leds_layout_frame": "Layout Klasik (Bingkai LED)",
"conf_leds_layout_generatedconf": "Konfigurasi LED yang Dihasilkan/Saat Ini",
"conf_leds_layout_intro": "Anda juga memerlukan tata letak LED, yang mencerminkan posisi LED Anda. Layout klasik yang biasanya dipakai adalah bingkai TV, tetapi kami juga mendukung pembuatan matriks LED (LED Walls). Tampilan pada tata letak ini SELALU dari DEPAN TV Anda.",
"conf_leds_layout_ma_cabling": "Pengkabelan",
"conf_leds_layout_ma_horiz": "Horisontal",
"conf_leds_layout_ma_optbottomleft": "Kiri bawah",
"conf_leds_layout_ma_optbottomright": "Kanan bawah",
"conf_leds_layout_ma_opthoriz": "Horisontal",
"conf_leds_layout_ma_optparallel": "Paralel",
"conf_leds_layout_ma_optsnake": "Snake",
"conf_leds_layout_ma_opttopleft": "Kiri Atas",
"conf_leds_layout_ma_opttopright": "Kanan atas",
"conf_leds_layout_ma_optvert": "Vertikal",
"conf_leds_layout_ma_order": "Order",
"conf_leds_layout_ma_position": "Input",
"conf_leds_layout_ma_vert": "Vertikal",
"conf_leds_layout_matrix": "Layout Matriks (Dinding LED)",
"conf_leds_layout_peview": "Preview Layout LED",
"conf_leds_layout_preview_l1": "Ini adalah LED pertama Anda (posisi input)",
"conf_leds_layout_preview_l2": "Ini memvisualisasikan arah data (LED kedua/ketiga)",
"conf_leds_layout_preview_ledpower": "Maks. konsumsi daya: $1 A",
"conf_leds_layout_preview_originCL": "Dibuat dari: Layout Klasik (Bingkai LED)",
"conf_leds_layout_preview_originMA": "Dibuat dari: Layout Matriks (Dinding LED)",
"conf_leds_layout_preview_originTEXT": "Dibuat dari: Textfield",
"conf_leds_layout_preview_totalleds": "Total LED: $1",
"conf_leds_layout_ptlh": "Horisontal",
"conf_leds_layout_ptlv": "Vertikal",
"conf_leds_layout_textf1": "Kolom teks ini menunjukkan secara default layout yang dimuat saat ini dan akan ditimpa jika Anda membuat layout baru dengan opsi-opsi di atas. Secara opsional, Anda dapat melakukan pengeditan lebih lanjut.",
"conf_leds_nav_label_ledcontroller": "Kontroler LED",
"conf_leds_nav_label_ledlayout": "Tata Letak LED",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_network": "Jaringan",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Scrolling otomatis",
"conf_logging_btn_pbupload": "Unggah laporan untuk permintaan dukungan",
"conf_logging_contpolicy": "Report Privacy Policy",
"conf_logging_label_intro": "Area untuk memeriksa pesan log, Anda akan melihat lebih banyak atau lebih sedikit informasi tergantung pada tingkat logging yang ditetapkan.",
"conf_logging_lastreports": "Laporan sebelumnya",
"conf_logging_nomessage": "Tidak ada pesan log yang tersedia.",
"conf_logging_report": "Laporan",
"conf_logging_uplfailed": "Gagal mengunggah! Silakan periksa koneksi internet Anda!",
"conf_logging_uploading": "Menyiapkan data...",
"conf_logging_uplpolicy": "Dengan mengklik tombol ini, Anda menyetujui",
"conf_logging_yourlink": "Tautan ke laporan Anda",
"conf_network_bobl_intro": "Receiver untuk Boblight",
"conf_network_fbs_intro": "Receiver Google Flatbuffers. Digunakan untuk transmisi gambar yang cepat.",
"conf_network_forw_intro": "Meneruskan semua input ke instalasi Hyperion kedua yang dapat dikendalikan dengan kontroler LED lain",
"conf_network_json_intro": "JSON-RPC-Port dari semua instance Hyperion, yang digunakan untuk kontrol jarak jauh.",
"conf_network_proto_intro": "PROTO-Port dari semua contoh Hyperion, digunakan untuk streaming gambar (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)",
"conf_webconfig_label_intro": "Pengaturan konfigurasi web. Edit dengan bijak.",
"dashboard_alert_message_confedit": "Konfigurasi Hyperion Anda telah dimodifikasi. Untuk menerapkannya, mulai ulang Hyperion.",
"dashboard_alert_message_confedit_t": "Konfigurasi yang dimodifikasi",
"dashboard_alert_message_confsave_success": "Konfigurasi Hyperion Anda telah berhasil disimpan. Perubahan yang Anda buat sekarang sudah aktif.",
"dashboard_alert_message_confsave_success_t": "Konfigurasi disimpan",
"dashboard_alert_message_disabled": "Instance ini saat ini dinonaktifkan! Untuk menggunakannya lagi, aktifkan di dasbor.",
"dashboard_alert_message_disabled_t": "perangkat keras LED dinonaktifkan",
"dashboard_componentbox_label_comp": "Komponen",
"dashboard_componentbox_label_status": "Status",
"dashboard_componentbox_label_title": "Status komponen",
"dashboard_infobox_label_currenthyp": "Versi Hyperion Anda:",
"dashboard_infobox_label_disableh": "Matikan Instance: $1",
"dashboard_infobox_label_enableh": "Aktifkan Instance: $1",
"dashboard_infobox_label_instance": "Instance:",
"dashboard_infobox_label_latesthyp": "Versi Hyperion Terbaru:",
"dashboard_infobox_label_platform": "Platform:",
"dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_smartacc": "Akses Cerdas",
"dashboard_infobox_label_statush": "Status Hyperion:",
"dashboard_infobox_label_title": "Information",
"dashboard_infobox_message_updatesuccess": "Anda menjalankan Hyperion versi terbaru.",
"dashboard_infobox_message_updatewarning": "Versi terbaru dari Hyperion telah tersedia! ($1)",
"dashboard_label_intro": "Dasbor memberi Anda gambaran umum singkat tentang status Hyperion",
"dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_noconn": "Tidak dapat terhubung ke Server Hyperion untuk mengambil postingan terbaru, apakah koneksi internet Anda berfungsi?",
"dashboard_newsbox_readmore": "Baca lebih lanjut",
"dashboard_newsbox_visitblog": "Kunjungi Hyperion-Blog",
"edt_conf_bobls_heading_title": "Server Boblight",
"edt_conf_color_blue_title": "Biru",
"edt_conf_color_green_title": "Hijau",
"edt_conf_color_red_title": "Merah",
"edt_conf_enum_HORIZONTAL": "Horisontal",
"edt_conf_enum_VERTICAL": "Vertikal",
"edt_conf_enum_bbdefault": "bawaan",
"edt_conf_fbs_heading_title": "Server Flatbuffer",
"edt_conf_fg_type_title": "Tipe",
"edt_conf_fge_type_title": "Tipe",
"edt_conf_fw_heading_title": "Forwarder",
"edt_conf_gen_heading_title": "Pengaturan Umum",
"edt_conf_net_heading_title": "Jaringan",
"edt_conf_pbs_heading_title": "Server Buffer Protokol",
"edt_conf_smooth_heading_title": "Menghaluskan",
"edt_conf_smooth_type_title": "Tipe",
"edt_conf_v4l2_heading_title": "Capture USB-Input",
"edt_conf_v4l2_input_title": "Input",
"edt_conf_webc_heading_title": "Konfigurasi Web",
"edt_dev_general_heading_title": "Pengaturan Umum",
"edt_eff_reversedirection": "Membalikkan arah",
"edt_eff_snake_header": "Snake",
"effectsconfigurator_button_conttest": "Tes terus menerus",
"effectsconfigurator_button_deleffect": "Hapus Efek",
"effectsconfigurator_button_editeffect": "Load Effect",
"effectsconfigurator_button_saveeffect": "Simpan Efek",
"effectsconfigurator_button_starttest": "Mulai tes",
"effectsconfigurator_button_stoptest": "Hentikan tes",
"effectsconfigurator_editdeleff": "Menghapus/Memuat Efek",
"effectsconfigurator_label_chooseeff": "Pilih Template",
"effectsconfigurator_label_effectname": "Nama efek",
"effectsconfigurator_label_intro": "Menciptakan efek baru dari efek dasar yang disesuaikan dengan keinginan Anda. Tergantung pada Efek, tersedia opsi seperti warna, kecepatan, arah dan lainnya.",
"general_access_advanced": "Tingkat lanjut",
"general_access_default": "bawaan",
"general_access_expert": "Ahli",
"general_btn_back": "Kembali",
"general_btn_cancel": "Batal",
"general_btn_continue": "Lanjut",
"general_btn_iswitch": "Saklar",
"general_btn_next": "Berikutnya",
"general_btn_off": "Mati",
"general_btn_ok": "OK",
"general_btn_on": "Hidup",
"general_btn_restarthyperion": "Muat Ulang Hyperion",
"general_btn_save": "Simpan",
"general_btn_saveandreload": "Simpan dan Muat Ulang",
"general_btn_yes": "Iya",
"general_button_savesettings": "Simpan Pengaturan",
"general_col_blue": "Biru",
"general_col_green": "Hijau",
"general_col_red": "Merah",
"general_comp_BLACKBORDER": "Pendeteksi Blackbar",
"general_comp_BOBLIGHTSERVER": "Server Boblight",
"general_comp_FLATBUFSERVER": "Server Flatbuffer",
"general_comp_FORWARDER": "Forwarder",
"general_comp_GRABBER": "Capture Screen",
"general_comp_LEDDEVICE": "Output LED",
"general_comp_PROTOSERVER": "Server Buffer Protokol",
"general_comp_SMOOTHING": "Menghaluskan",
"general_comp_V4L": "Capture USB-Input",
"general_country_de": "German",
"general_country_es": "Spanyol",
"general_country_fr": "Prancis",
"general_country_it": "Itali",
"general_country_nl": "Belanda",
"general_country_uk": "Inggris",
"general_country_us": "Amerika Serikat",
"general_speech_cs": "Ceko",
"general_speech_de": "German",
"general_speech_en": "Inggris",
"general_speech_es": "Spanyol",
"general_speech_it": "Itali",
"general_webui_title": "Hyperion - Konfigurasi Web",
"general_wiki_moreto": "Informasi lebih lanjut tentang \"$1\" di Wiki kami",
"main_ledsim_btn_togglelednumber": "Nomor LED",
"main_ledsim_btn_toggleleds": "Tampilkan LED",
"main_ledsim_btn_togglelivevideo": "Vidio Langsung",
"main_ledsim_text": "Visualisasi langsung warna LED dan opsional stream video saat ini dari capture card Anda.",
"main_ledsim_title": "Visualisasi LED",
"main_menu_about_token": "Tentang Hyperion",
"main_menu_colors_conf_token": "Pemrosesan Gambar",
"main_menu_configuration_token": "Instance LED",
"main_menu_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Efek",
"main_menu_effectsconfigurator_token": "Konfigurator Efek",
"main_menu_general_conf_token": "Umum",
"main_menu_grabber_conf_token": "Capturing Hardware",
"main_menu_input_selection_token": "Pilihan Input",
"main_menu_leds_conf_token": "Output LED",
"main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Layanan Jaringan",
"main_menu_remotecontrol_token": "Remote Kontrol",
"main_menu_support_token": "Dukungan",
"main_menu_system_token": "Sistem",
"main_menu_update_token": "Perbarui",
"main_menu_webconfig_token": "Konfigurasi Web",
"remote_adjustment_intro": "Memodifikasi warna/kecerahan/kompensasi pada saat runtime. $1",
"remote_adjustment_label": "Penyesuaian warna",
"remote_color_button_reset": "Reset Warna/Efek",
"remote_color_intro": "Menetapkan efek atau warna. Dan juga, efek yang Anda ciptakan sendiri, juga dicantumkan (jika tersedia). $1",
"remote_color_label": "Warna/Efek",
"remote_color_label_color": "Warna:",
"remote_components_intro": "Mengaktifkan dan menonaktifkan komponen Hyperion selama waktu berjalan. $1",
"remote_components_label": "Kontrol komponen",
"remote_effects_label_effects": "Efek:",
"remote_input_clearall": "Menghapus semua Efek/Warna",
"remote_input_duration": "Durasi:",
"remote_input_intro": "Hyperion menggunakan sistem prioritas untuk memilih source. Semua yang Anda tetapkan memiliki prioritas (Efek/Warna/Tangkapan layar/tangkapan USB dan sumber jaringan). Secara default, Hyperion memilih sumber tergantung pada prioritas (angka terendah mencerminkan sumber yang aktif saat ini). Sekarang Anda memiliki kesempatan untuk memilih sumber sendiri. $1",
"remote_input_ip": "IP:",
"remote_input_label": "Pemilihan Source",
"remote_input_label_autoselect": "Pilihan Otomatis",
"remote_input_origin": "Asal",
"remote_input_owner": "Tipe",
"remote_input_priority": "Priority",
"remote_input_setsource_btn": "Pilih Source",
"remote_input_sourceactiv_btn": "Source aktif",
"remote_input_status": "Status/Tindakan",
"remote_losthint": "Catatan: Semua perubahan akan hilang setelah restart.",
"remote_maptype_intro": "Biasanya tata-letak LED menentukan LED mana yang mencakup area gambar tertentu. Anda dapat mengubahnya di sini: $1.",
"remote_maptype_label": "Jenis pemetaan",
"remote_maptype_label_multicolor_mean": "Berarti Warna Sederhana",
"remote_maptype_label_unicolor_mean": "Berarti Gambar Berwarna",
"remote_optgroup_syseffets": "Efek Sistem",
"remote_optgroup_usreffets": "Efek Pengguna",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Beralih di antara mode video yang berbeda untuk menikmati film 3D! Semua perangkat perekaman didukung. $1",
"remote_videoMode_label": "Mode video",
"support_label_affinstr1": "Klik tautan yang sesuai dengan negara Anda",
"support_label_affinstr2": "Semua yang Anda beli (apa pun itu), kami akan mendapatkan sedikit biaya berdasarkan turnover Anda",
"support_label_affinstr3": "Anda SELALU membayar dengan harga yang sama, sama sekali tidak ada perbedaan. Cobalah!",
"support_label_btctext": "Alamat:",
"support_label_donate": "Donasi atau gunakan tautan afiliasi kami",
"support_label_donationpp": "Donasi:",
"support_label_fbtext": "Bagikan halaman Facebook Hyperion kami dan dapatkan pemberitahuan ketika pembaruan baru dirilis",
"support_label_ggtext": "Circle us on Google +!",
"support_label_igtext": "Kunjungi kami di Instagram untuk melihat foto-foto Hyperion terbaru!",
"support_label_intro": "Hyperion adalah sebuah software gratis non-profit. Dikembangkan dengan tim yang kecil dan karena itulah kami membutuhkan dukungan Anda.",
"support_label_spreadtheword": "Sebarkan berita",
"support_label_title": "Dukung Hyperion",
"support_label_twtext": "Bagikan dan ikuti di Twitter, selalu dapatkan informasi terbaru tentang perkembangan Hyperion",
"support_label_webpagetext": "Rumah dari Hyperion",
"support_label_webpagetitle": "Halaman web",
"support_label_webrestitle": "Sumber daya informasi dan bantuan",
"support_label_yttext": "Bosan dengan gambar? Lihat saluran YouTube kami!"
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More