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:
@@ -25,7 +25,7 @@ LedDevice::LedDevice(const QJsonObject& config, QObject* parent)
|
||||
, _latchTime_ms(0)
|
||||
, _componentRegistered(false)
|
||||
, _enabled(false)
|
||||
, _refresh_enabled (false)
|
||||
, _refresh_enabled(false)
|
||||
{
|
||||
// setup refreshTimer
|
||||
_refresh_timer->setTimerType(Qt::PreciseTimer);
|
||||
@@ -74,7 +74,7 @@ void LedDevice::close()
|
||||
|
||||
void LedDevice::setEnable(bool enable)
|
||||
{
|
||||
if (!_deviceReady && enable)
|
||||
if ( !_deviceReady && enable )
|
||||
{
|
||||
Debug(_log, "Device '%s' was not ready! Trying to re-open.", QSTRING_CSTR(_activeDeviceType));
|
||||
if ( open() < 0 )
|
||||
@@ -90,19 +90,19 @@ void LedDevice::setEnable(bool enable)
|
||||
}
|
||||
|
||||
// emit signal when state changed
|
||||
if (_enabled != enable)
|
||||
if ( _enabled != enable )
|
||||
{
|
||||
emit enableStateChanged(enable);
|
||||
}
|
||||
// switch off device when disabled, default: set black to leds when they should go off
|
||||
if ( _enabled && !enable)
|
||||
if ( _enabled && !enable )
|
||||
{
|
||||
switchOff();
|
||||
}
|
||||
else
|
||||
{
|
||||
// switch on device when enabled
|
||||
if ( !_enabled && enable)
|
||||
if ( !_enabled && enable )
|
||||
{
|
||||
switchOn();
|
||||
}
|
||||
@@ -123,19 +123,18 @@ bool LedDevice::init(const QJsonObject &deviceConfig)
|
||||
_activeDeviceType = deviceConfig["type"].toString("file").toLower();
|
||||
setLedCount(static_cast<unsigned int>( deviceConfig["currentLedCount"].toInt(1) )); // property injected to reflect real led count
|
||||
|
||||
_latchTime_ms =deviceConfig["latchTime"].toInt( _latchTime_ms );
|
||||
_refresh_timer_interval = deviceConfig["rewriteTime"].toInt( _refresh_timer_interval);
|
||||
_latchTime_ms = deviceConfig["latchTime"].toInt( _latchTime_ms );
|
||||
_refresh_timer_interval = deviceConfig["rewriteTime"].toInt( _refresh_timer_interval);
|
||||
|
||||
if ( _refresh_timer_interval > 0 )
|
||||
{
|
||||
_refresh_enabled = true;
|
||||
|
||||
if (_refresh_timer_interval <= _latchTime_ms )
|
||||
if ( _refresh_timer_interval <= _latchTime_ms )
|
||||
{
|
||||
int new_refresh_timer_interval = _latchTime_ms + 10;
|
||||
Warning(_log, "latchTime(%d) is bigger/equal rewriteTime(%d), set rewriteTime to %dms", _latchTime_ms, _refresh_timer_interval, new_refresh_timer_interval);
|
||||
_refresh_timer_interval = new_refresh_timer_interval;
|
||||
_refresh_timer->setInterval( _refresh_timer_interval );
|
||||
}
|
||||
|
||||
//Debug(_log, "Refresh interval = %dms",_refresh_timer_interval );
|
||||
@@ -150,7 +149,7 @@ bool LedDevice::init(const QJsonObject &deviceConfig)
|
||||
|
||||
void LedDevice::startRefreshTimer()
|
||||
{
|
||||
if ( _deviceReady)
|
||||
if ( _deviceReady )
|
||||
{
|
||||
_refresh_timer->start();
|
||||
}
|
||||
@@ -164,7 +163,7 @@ void LedDevice::stopRefreshTimer()
|
||||
int LedDevice::updateLeds(const std::vector<ColorRgb>& ledValues)
|
||||
{
|
||||
int retval = 0;
|
||||
if ( !_deviceReady || _deviceInError)
|
||||
if ( !_deviceReady || _deviceInError )
|
||||
{
|
||||
//std::cout << "LedDevice::updateLeds(), LedDevice NOT ready!" << std::endl;
|
||||
return -1;
|
||||
@@ -243,8 +242,8 @@ int LedDevice::rewriteLeds()
|
||||
|
||||
if ( _deviceReady )
|
||||
{
|
||||
//qint64 elapsedTime = QDateTime::currentMSecsSinceEpoch() - _last_write_time;
|
||||
//std::cout << "LedDevice::rewriteLeds(): Rewrite Leds now, elapsedTime [" << elapsedTime << "] ms" << std::endl;
|
||||
// qint64 elapsedTime = QDateTime::currentMSecsSinceEpoch() - _last_write_time;
|
||||
// std::cout << "LedDevice::rewriteLeds(): Rewrite Leds now, elapsedTime [" << elapsedTime << "] ms" << std::endl;
|
||||
// //:TESTING: Inject "white" output records to differentiate from normal writes
|
||||
// _last_ledValues.clear();
|
||||
// _last_ledValues.resize(static_cast<unsigned long>(_ledCount), ColorRgb::WHITE);
|
||||
@@ -262,7 +261,7 @@ int LedDevice::rewriteLeds()
|
||||
return retval;
|
||||
}
|
||||
|
||||
void LedDevice::printLedValues(const std::vector<ColorRgb>& ledValues )
|
||||
void LedDevice::printLedValues(const std::vector<ColorRgb>& ledValues)
|
||||
{
|
||||
std::cout << "LedValues [" << ledValues.size() <<"] [";
|
||||
for (const ColorRgb& color : ledValues)
|
||||
|
Reference in New Issue
Block a user