Я создаю приложение, которое управляет тремя светодиодными лампами Philips Hue RGB. Я хочу иметь возможность изменять яркость с помощью UISlider. В настоящее время у меня есть UISlider, который вызывает метод при каждом изменении, однако этот метод намного превышает ограничение в 10 команд в секунду моста Philips hue. Вот метод, который я вызываю при изменении ползунка пользовательского интерфейса.
- (void) changeBulbBrightness: (NSNumber *)currentBrightness
{
NSTimeInterval timeInterval = [self.timeLastCommandSent timeIntervalSinceNow];
NSLog(@"Time Since Last command: %f", timeInterval);
if (timeInterval < -0.3)
{
NSLog(@"COMMAND SENT!!!!");
PHBridgeResourcesCache *cache = [PHBridgeResourcesReader readBridgeResourcesCache];
PHBridgeSendAPI *bridgeSendAPI = [[PHBridgeSendAPI alloc] init];
for (PHLight *light in cache.lights.allValues)
{
PHLightState *lightState = light.lightState;
//PHLightState *lightState = [[PHLightState alloc] init];
if (lightState.on)
{
[lightState setBrightness:currentBrightness];
// Send lightstate to light
[bridgeSendAPI updateLightStateForId:light.identifier withLightState:lightState completionHandler:^(NSArray *errors) {
/*if (errors != nil) {
NSString *message = [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Errors", @""), errors != nil ? errors : NSLocalizedString(@"none", @"")];
if (self.loggingOn)
{
NSLog(@"Brightness Change Response: %@",message);
}
}
*/
}];
}
self.timeLastCommandSent = [[NSDate alloc]init];
}
}
self.appDelegate.currentSetup.brightnessSetting = currentBrightness;
NSLog(@"Brightness Now = %@", currentBrightness);
Я пытался сделать таймер, чтобы ограничить количество команд до 10 в секунду, но мост по-прежнему действует так же, как и при перегрузке команд (останавливает прием всех команд). Любая помощь или направление будет принята с благодарностью. Заранее спасибо!
updateLightState
, чтобы проверить частоту. - person rmaddy   schedule 08.05.2015updateLightStateForId
, чтобы вы могли проверить свою логику. - person rmaddy   schedule 08.05.2015