mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
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>
This commit is contained in:
@@ -39,12 +39,12 @@ function createLedPreview(leds, origin){
|
||||
{
|
||||
var led = leds[idx];
|
||||
var led_id='ledc_'+[idx];
|
||||
var bgcolor = "background-color:hsl("+(idx*360/leds.length)+",100%,50%);";
|
||||
var bgcolor = "background-color:hsla("+(idx*360/leds.length)+",100%,50%,0.75);";
|
||||
var pos = "left:"+(led.hmin * canvas_width)+"px;"+
|
||||
"top:"+(led.vmin * canvas_height)+"px;"+
|
||||
"width:"+((led.hmax-led.hmin) * (canvas_width-1))+"px;"+
|
||||
"height:"+((led.vmax-led.vmin) * (canvas_height-1))+"px;";
|
||||
leds_html += '<div id="'+led_id+'" class="led" style="'+bgcolor+pos+'" title="'+idx+'"><span id="'+led_id+'_num" class="led_prev_num">'+idx+'</span></div>';
|
||||
leds_html += '<div id="'+led_id+'" class="led" style="'+bgcolor+pos+'" title="'+idx+'"><span id="'+led_id+'_num" class="led_prev_num">'+((led.name) ? led.name : idx)+'</span></div>';
|
||||
}
|
||||
$('#leds_preview').html(leds_html);
|
||||
$('#ledc_0').css({"background-color":"black","z-index":"12"});
|
||||
@@ -496,9 +496,13 @@ $(document).ready(function() {
|
||||
$("#leddevices").off().on("change", function() {
|
||||
var generalOptions = window.serverSchema.properties.device;
|
||||
|
||||
// Modified schema enty "hardwareLedCount" in generalOptions to minimum LedCount
|
||||
// Modified schema entry "hardwareLedCount" in generalOptions to minimum LedCount
|
||||
var ledType = $(this).val();
|
||||
|
||||
var specificOptions = window.serverSchema.properties.alldevices[$(this).val()];
|
||||
//philipshueentertainment backward fix
|
||||
if(ledType == "philipshueentertainment") ledType = "philipshue";
|
||||
|
||||
var specificOptions = window.serverSchema.properties.alldevices[ledType];
|
||||
conf_editor = createJsonEditor('editor_container', {
|
||||
generalOptions : generalOptions,
|
||||
specificOptions : specificOptions,
|
||||
@@ -506,21 +510,19 @@ $(document).ready(function() {
|
||||
|
||||
var values_general = {};
|
||||
var values_specific = {};
|
||||
var isCurrentDevice = (window.serverConfig.device.type == $(this).val());
|
||||
var isCurrentDevice = (window.serverConfig.device.type == ledType);
|
||||
|
||||
for(var key in window.serverConfig.device){
|
||||
if (key != "type" && key in generalOptions.properties)
|
||||
values_general[key] = window.serverConfig.device[key];
|
||||
for(var key in window.serverConfig.device) {
|
||||
if (key != "type" && key in generalOptions.properties) values_general[key] = window.serverConfig.device[key];
|
||||
};
|
||||
conf_editor.getEditor("root.generalOptions").setValue( values_general );
|
||||
|
||||
if (isCurrentDevice)
|
||||
{
|
||||
var specificOptions_val = conf_editor.getEditor("root.specificOptions").getValue()
|
||||
var specificOptions_val = conf_editor.getEditor("root.specificOptions").getValue();
|
||||
for(var key in specificOptions_val){
|
||||
values_specific[key] = (key in window.serverConfig.device) ? window.serverConfig.device[key] : specificOptions_val[key];
|
||||
values_specific[key] = (key in window.serverConfig.device) ? window.serverConfig.device[key] : specificOptions_val[key];
|
||||
};
|
||||
|
||||
conf_editor.getEditor("root.specificOptions").setValue( values_specific );
|
||||
};
|
||||
|
||||
@@ -528,18 +530,29 @@ $(document).ready(function() {
|
||||
conf_editor.validate().length ? $('#btn_submit_controller').attr('disabled', true) : $('#btn_submit_controller').attr('disabled', false);
|
||||
|
||||
// led controller sepecific wizards
|
||||
if($(this).val() == "philipshue")
|
||||
{
|
||||
createHint("wizard", $.i18n('wiz_hue_title'), "btn_wiz_holder","btn_led_device_wiz");
|
||||
$('#btn_led_device_wiz').off().on('click',startWizardPhilipsHue);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#btn_wiz_holder').html("")
|
||||
$('#btn_led_device_wiz').off();
|
||||
}
|
||||
$('#btn_wiz_holder').html("")
|
||||
$('#btn_led_device_wiz').off();
|
||||
|
||||
if(ledType == "philipshue") {
|
||||
$('#root_specificOptions_useEntertainmentAPI').bind("change", function() {
|
||||
var ledWizardType = (this.checked) ? "philipshueentertainment" : ledType;
|
||||
var data = { type: ledWizardType };
|
||||
var hue_title = (this.checked) ? 'wiz_hue_e_title' : 'wiz_hue_title';
|
||||
changeWizard(data, hue_title, startWizardPhilipsHue);
|
||||
});
|
||||
$("#root_specificOptions_useEntertainmentAPI").trigger("change");
|
||||
}
|
||||
|
||||
function changeWizard(data, hint, fn) {
|
||||
$('#btn_wiz_holder').html("")
|
||||
createHint("wizard", $.i18n(hint), "btn_wiz_holder","btn_led_device_wiz");
|
||||
$('#btn_led_device_wiz').off().on('click', data , fn);
|
||||
}
|
||||
});
|
||||
|
||||
//philipshueentertainment backward fix
|
||||
if(window.serverConfig.device.type == "philipshueentertainment") window.serverConfig.device.type = "philipshue";
|
||||
|
||||
// create led device selection
|
||||
var ledDevices = window.serverInfo.ledDevices.available;
|
||||
var devRPiSPI = ['apa102', 'apa104', 'ws2801', 'lpd6803', 'lpd8806', 'p9813', 'sk6812spi', 'sk6822spi', 'ws2812spi'];
|
||||
|
Reference in New Issue
Block a user