* Feat: Add image sender to webui
This PR adds a new image sending feature to the webui and extends the api accordingly. In javascript the processing of images is horrible slow (without WASM), so the solution is at the API side with out-of-the-box power of Qt.
- The image cmd accepts now a raw image that is encoded with base64. Supported are all image formats that qt supports (enough)
- There is no real size limit. It will be automatically scaled down to max 2000px width or height according to aspect ratio
- It's possible to scale down through a new "scale" property if developer wants that.
- Test were successfull until 3MP pictues, 4k+ closes the websocket on browser side, so 2k is a decent value
- Adds a new image streaming feature from browser (tabs/applications/complete desktop as target). This works just if used with HTTPS PR#612 AND with a recent version of Firefox/Chrome
* Feat: Add SSL support for webserver + websocket
Finally, Hyperion reaches the SSL century!
- Uses by default a internal key and certificate to provide working HTTPS out-of-the-box
- Your browser won't like that, for a green ssl seal next to the browser address bar you need to use Let's Encrypt with a own legit domain. This is out of the scope of Hyperion
* WebUi: Instance Management Tweaks and Chars Needed Information
* WebUi: 3rd Party Licenses Tweaks
* WebUi: Apply changes from Brindosch PR #596
* WebUi: Changing i18n tokens and adding catch event for connection error
* WebUi: Adding Link to GitHub License Ressource if an error is catched
* Add hyperion-remote instance cmd
- Adds a new command to hyperion-remote that allows the selection of a instance by name
- Fixed broken umlauts
- Fixed wrong text placement inside icon tags
* Add warning if selected instance is not found
* Moved Token Management to Network Settings
* Fixed alignment of Token Settings Div if Help Tables are switched off
* Added Chars counter, new format of the div panel (footer), change i18n
* Added Explanation for Token Management
* Moved Token Management to Network Settings
* Fixed alignment of Token Settings Div if Help Tables are switched off
* Added Chars counter, new format of the div panel (footer), change i18n
* Added Explanation for Token Management
* i18n Fix
* Revert "i18n Fix"
This reverts commit 0186290689d8b140310d5376617a3d43429bb632.
* i18n Fix
- Added CodeDocs config file for customization
- Fixing LGTM alerts
- LGTM bug fixed again
- added token option to hyperion-remote
- fix DBManager::getDB()
- next bugfix
- correct broken signal from SettingManager to Hyperion
- Token list is created after the schema is fetched
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
- versionBranch was renamed to watchedVersionBranch (including all variables and strings. even config)
- Enhancements for JSON Editor. Detection of advanced was not so good. Now you can see advaced if advanced or expert is selected. expert is the highest and should also make advanced visible.
- The levels default, advanced, expert are now also respected in the information tabs. Same logic as for the forms itself. Expert is highest and will also show all advanced settings.
- Build problems:
- Qt 5.13 obsoleted some calls that were used in our Qt library.
- The PhilipsHueLight and PhilipsHueBridge classes did not use the private logger class
- Undo changes:
- In Commit e6c2e7e, I made changes that were not covered. An apology goes to @b1rdhous3
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
- added native RPi docker image instruction to CompileHowto.md
- version channel is received from JsonAPI instead of reading from the configuration file
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
Now the last stable will be used when the latest stable version have a higher version number than the last beta version. This only triggers when Beta Branch is used. If the user chooses Stable only stable versions will be considered.
Update Check:
- New Property which allows you to select stable or beta branch checks.
- This would rely on current versions.json. It selects the first version in list with you branch (stable, beta). If it is newer hyperion tells you that a update is available
- For this we should keep our deployment pipeline in mind to format the json this way.
Cleanup:
- I cleaned up the WebUI from dead links and the support page with the affiliate links and donation adresses as we don't have them under our control. Currently only disabled, not deleated
Switcher:
- If the address which is published via bonjour serve is IPv6 the Switcher was bugged. Fixed that.
- Increases linker performance under Linux builds by using Gold linker, if available
- ccache is used if available
- removed statistic class (Stats.cpp) from project due to the missing result (sorry @Brindosch)
- add LGTM bandges for code analysis overview
Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
- Video format MJPEG implemented (libjpeg/qimage)
- Inactive priorities are now skipped correctly (PriorityMuxer.cpp line 297)
- v4l configuration section replaced with an object (preparation for #542)
Protocol Buffer reimplemented to receive image data from third-party apps
The status of the component "UDPListener" is now displayed correctly in WebUI
Global signal names for WebUI added
- More i18n
- Easy use of mutual exclusion in JsonAPI with QMutexLocker
- Smoothing type "linear" hidden in the WebUI, because there is currently only one
- Message forwarding implemented again
- For compatibility to home assistants and other remote controls, "activeEffects" and "activeLedColor" has been added to the JSON-RPC
- FlatBuffer clear now the Priority on disconnect
- The information "available V4L2 devices" is now only displayed if the device list is not empty
- LED device "PiBlaster" excluded from OSX build
* save it
* ws: multiframe receive now works
* port cfg write with autocorrect to jsonprocessor
cleanup
* cleanup
* cleanup
* add support for image data over ws binary frame
* - grabber auto off when not set as active prio
- join aml and fb - on aml platform both grabbers are needed, so they joind in one module and share one prio. user don't the the nasty magic behind
- aml: preparation for direct ge2d access
* just save it, in the middle of ge2d impl
* fix compile issues
* now grabbing works basicly
* add 3d support for ge2d
* next step, we got some video from aml
* switch back to rgba
* remove unfinished ge2d stuff
* commit missing changes
* some urgent fixes, needs some beautifying, but it works now
* fixes and refctoring
* revoke schema split
* add "getAutoCorrectedConfig" function
* revoke schema split
* revoke schema split
* revoke schema split
* Prevent compiler error if none grabber is available
* revoke schema split
* add "getAutoCorrectedConfig" function
* revoke schema split
* remove "configMigrator"
* remove "configMigrator"
* Change TestConfigFile to show how the autocorrection works
* revoke schema split
* revoke schema split
* remove "ConfigMigrator"
* remove "ConfigMigrator"
* remove "ConfigMigratorBase"
* remove "ConfigMigratorBase"
* Add QJsonUtils.h
* added ability "ignore-required"
It has been added the ability to correct the configuration without having to pay attention to the keyword "required" in the hyperion schema
* Allow Comments in Hyperion Schema
* add ability to ignore the "required" keyword in hyperion schema
* add ability to ignore the "required" keyword in hyperion schema
* add ability to ignore the "required" keyword in hyperion schema
* //Allow Comments in Hyperion Schema
* Update jsonschema.py to version 0.8.0 to support ...
references in json schema
* add RefResolver from jsonschema.py to resolve
references in hyperion schema
* remove dupe code
* split the hyperion schema in separatly files
For better readability
* add function "resolveReferences" to resolve
references in hyperion schema.
* remove CURRENT_CONFIG_VERSION
* remove CURRENT_CONFIG_VERSION
* split the hyperion schema in separatly files
For better readability
* Create schema-backgroundEffect.json
* Add the rest of the Hyperion schema via upload
* Remove Comments in config file
* Add return variable to function writeJson().
fix function resolveReferences().
edit function load() to handle QPair result from schemaChecker.
* edit function validate() to return QPair variable
* fit function loadEffectDefinition()
* fit function checkJson()
* Expand error check by dividing
"_error" variable in "_error" and "_schemaError".
Replace variable "bool" in validate() in QPair
* Extend function "cmd_cfg_set" to handle auto correction
* Extend function "loadConfig" to handle auto correction
* fix function loadConfig()
* Started implementing artnet/DMX support
It compiles, but certainly wont work just yet
* Fix up packet data and length
correct default udp port
The data looks ok in wireshark
* Code cleanup
Sequence runs from 1..255 not 0
fix universe > 255
* code cleanups and force even number of channels
* Fix potential endianness issue
* added support for 'x' channels per fixture with zero padding
its very basic support for now - it needs better multi universe support
* clean color adjustment
* now a prio duration of "0" means infinity
* implement dynamic 'just in time' initialization
* implement new brightness handling
* cahnge access level
* i18n fix
* - cleanup brightness stuff
- update webserver, now with initial ssl support
* - backlightThreshold is now 0-100 instead 0-1
- better performance for brightness - use piecewise linear instead of sqrt
* no smooth for efx
rework fade effect
* join strobe and fade effects
new effect "breath"
* - make transition efx to smooth mode more smooth
- fixes for pacman
- rework fade base effect - make it more versatile
- fix prios in schema files
- new notify blue effect to demonstrate capability of fade effect
* upd
* update
* update
* update schemachecker
* ...
* fix lowest priority
* zeroconf updates (#421) (#3)
* zeroconf:
add ip
make names more uniq
* tune dns name for webconfig
* update
* update
* update
* update ui
* ...
* min val for gamma
* lost somewhere this
* add status to hyperion object
* update ui
* start of integrating a bonkour service browser
* some experiments
* blub
* bonjour browser via jsonrpc ...
* fix indention
* - make leddevice as component
- extend sysinfo with domain
- add more data for bonjour browser (e.g. split domain and hostname)
* code cleanup
* add translation
* use component names instead of ids
* fix compile
* std::string -> qstring part 1
* more string migration
* more string migration ...
* ...
* more qstring mogrations
add sysinfo via json
* remove unneccessary includes
* integrate sysinfo into webui
* Adding support for sk6822 timing
This isnt complete, but should be a good starting point for others to learn from.
1) Here is where the led device source is located:
cd libsrc/leddevice
2) Find the files that need changing:
root@loungepi:libsrc/leddevice# grep -ri 2812spi *
CMakeLists.txt: ${CURRENT_SOURCE_DIR}/LedDeviceWs2812SPI.h
CMakeLists.txt: ${CURRENT_SOURCE_DIR}/LedDeviceWs2812SPI.cpp
LedDeviceFactory.cpp: #include "LedDeviceWs2812SPI.h"
LedDeviceFactory.cpp: REGISTER(Ws2812SPI);
LedDeviceSchemas.qrc: <file alias="schema-ws2812spi">schemas/schema-ws2812spi.json</file>
LedDeviceWs2812SPI.cpp:#include "LedDeviceWs2812SPI.h"
LedDeviceWs2812SPI.cpp:LedDeviceWs2812SPI::LedDeviceWs2812SPI(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp:LedDevice* LedDeviceWs2812SPI::construct(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp: return new LedDeviceWs2812SPI(deviceConfig);
LedDeviceWs2812SPI.cpp:bool LedDeviceWs2812SPI::init(const QJsonObject &deviceConfig)
LedDeviceWs2812SPI.cpp:int LedDeviceWs2812SPI::write(const std::vector<ColorRgb> &ledValues)
LedDeviceWs2812SPI.h:class LedDeviceWs2812SPI : public ProviderSpi
LedDeviceWs2812SPI.h: LedDeviceWs2812SPI(const QJsonObject &deviceConfig);
3) Copy the existing files as a starting point:
cp LedDeviceWs2812SPI.cpp LedDeviceSk6822SPI.cpp
cp LedDeviceWs2812SPI.h LedDeviceSk6822SPI.h
cp schemas/schema-ws2812spi.json schemas/schema-sk6822spi.json
4) Do some search and replacing:
:%s/Ws2812SPI/Sk6822SPI/g
5) edit the other files (see the diffs in this commit)
* Added wait time and reset time
* Fixed up debugging output and commented it out.
* fix/refactor backlight stuff:
- fix colors dont turn of when backlight 0 and black is set
- add option to use not colored backlight
- fix colored backlight not colored on very low color values
- various code style tunings
* apply needed change to wizard
* backlight disabled on static color and efects
* fix warnings
* try fix udp compiler warnings
* implement config save over http post instead of json
* remove json set config
finish config write thrugh http post
* remove debug code and add failure messages
* fix save issue with white spaces
* new connection lost detection
* implement config save over http post instead of json
* remove json set config
finish config write thrugh http post
* remove debug code and add failure messages
* fix save issue with white spaces
* implement config save over http post instead of json
* remove json set config
finish config write thrugh http post
* remove debug code and add failure messages
* move name to general
add a version for config file
* start impl. config migrator
* fix typo amd set access level
* fix schemaa name
* fix schema
* add structure for config migrator
* update lightberry sketches
update compilehowwto (windows disclaimer)
some refactoring in main cmakelists + preparation for windows compile
tune ada driver, set delayAfterConnect default to 1.5s because some arduino (e.g. mega r3) needs this
set priority min/max for grabber/network services - prevent colliding prios between webui/background stuff and grabbers/net services
* add check if config is writable. TODO do something usefull in webui
* fix indention error
* fix typo
* fix webui can't write led config
* typo
* fix cmakelists
* change methode of detecting linux
* always output latest version of config file to webui
* fix permissions after default config export
* tune code
* set permissions for exported effects
* use qt setperm instead of chmod
update effects code style a bit
* add fallback when config is not readable
* ui: when sending config, convert to utf8 to save size and avoid jumbo frames (todo: minify it)
jsonclient: add some constants for websocket frames (taken from https://github.com/zaphoyd/websocketpp/blob/master/websocketpp/frame.hpp)
* webui:
refactory of websocket connector
sended json data is always convert to utf8
* - implement a global logbuffer
- providerrs232 reduce log spam
* logger add signal and start json push
* implement logger notifier ... need some cleanup
* imlement logview in webui - the layout stuff is basic atm and needs some tuning
* remove color temperatire, its the same as color adjustment
* remove temperature from schema
* implement most part of v4l only colro settings,
now hyperion update knows from which component the colors come
* update configs
* fix webui config write
* reomve correction and temperature from hyperion-remote
* implement a function for easy json editor creation
* grabber and kodi moved to new editor func
* webui: implement conf editors
* add missing files and remove debug code
* - effects now can use qt image effects
- rainbow swirtl is now suitable for any led layout - including matrix
* fix rainbow effect
* effect: add radialGradient
* fix some js errors
* optimize code
* try fix travis test not working as expected
* fix default config files
* fix config
* first try
* implement hyperion restart. core function is good, but needs a beeter structuring- something for next refactoring session ;-)
* several fixes (including osx)
merge with upstream
some refactoring
* add some eye candy to webui
* implement effects included in hyperiond binary
* cleanup
* remove install of effects dir. People who wants to develop effects has to copy them from github
effect params for initial effects can be changed in config permanently and other effect params can be changed
via json (currently only temporarily)
* fix schema of fadecandy
webui fix display of specific led options
* add leddevice write support
* cleanup
* webui: tune hue code
* when use json effect definition from putsiede hyperiond but want to use py script from inside hyperiond use ad a :
e.g. fade.py needs a fade.py near the json file, but :fade.py is taken from resource inside hyperiond
* add ability to di
* add abiloty to diable effcts via hyperion config
* use effect name instead of script in active effects and prio register
* finally solve open file handle during effect is playing. Now script is read before, then file closed and then t is run by python
* fix some webui things
- led config tabs
- inital loading screen
optimize qrc file generation
fix compile warning in hyperion.cpp
* cleanup
* more cleanup
* initial support for leddevice options
* fix schema and editor init
* fix led editor labels and schema
* add some led schemas
* led config: insert current values. not yet perfect, but it works
* tune editor style
* initial support for leddevice options
* fix schema and editor init
* fix led editor labels and schema
* add some led schemas
* led config: insert current values. not yet perfect, but it works
* make enable/disable of bborder work
* fix typo
* smoothing can be disabled via config again
* fix smoothing
* merge remotecontrol into single page
* tiny cleanup in general conf
* tune icons
* fix loading display
* tune some layout stuff
* merge huebridge into leddevice
* split content and js
tune leds config
* implement connection lost page
* split js/html in huebridge
* add js action for connection lost
* extend led config
make connection loss nicer
* tune led code
add menu entry for grabber
* more tuning of webui
* switch back to botstrap textarea
add v4l to components
* add icon
* extend schema for jsoneditor
* implement ledcolors streaming with 4fps
* implement component state
* make hyperion websocket api event based
* implement new websocket handling for generalconf
* migrate all webui stuff to new event based websocket api
some cleanup ... now all html templates are in content
refactoring of web stuff
* add hyperionport to global
start impl. removing advanced key
* separate dashboard
serverinfo is updated every 3 seconds automatily
add input selection
cleanup and remove not needed stuff
* prepare infrastructure for server sided file execution
* webui minor fixes
* fix compile
* implement led layout view with live colors
* live led vies
* fix general conf
unrigister ledcolors request, when not on leds.html
* fix compiler warning
* prepare realtime ledview and enhance ui
* make hyperion websocket api event based
* implement new websocket handling for generalconf
* migrate all webui stuff to new event based websocket api
some cleanup ... now all html templates are in content
refactoring of web stuff
* add hyperionport to global
start impl. removing advanced key
* separate dashboard
serverinfo is updated every 3 seconds automatily
add input selection
cleanup and remove not needed stuff
* prepare infrastructure for server sided file execution
* webui minor fixes
* fix compile
* Example JSON Form Example with General setting
I have created a new Category "General" with several Settings for
Hyperion.
For now the Submit Button only console.log's the values.
Known Bug: For some reason it seems to do not load the bootstrap
correctly or maybe the Lib isn't compatible with the newest version of
bootstrap.
* Reorganize files
* Example JSON Form Example with General setting
I have created a new Category "General" with several Settings for
Hyperion.
For now the Submit Button only console.log's the values.
Known Bug: For some reason it seems to do not load the bootstrap
correctly or maybe the Lib isn't compatible with the newest version of
bootstrap.
* Translationsupport for JSON Forms
* Hotfix
* Added Bootstrap Switches for all checkboxes
All checkboxes will be converted to Switches
I have created a new Category "General" with several Settings for
Hyperion.
For now the Submit Button only console.log's the values.
Known Bug: For some reason it seems to do not load the bootstrap
correctly or maybe the Lib isn't compatible with the newest version of
bootstrap.
* Initial WebUI with sample functions
* Changed folder structure
* Light Reset Button and Translation fixing in Links
* Indentation fixed
* Reorganized menu and new function for setting effects
* Styling fix