// Listing 1: Vom System generierter View - (void)viewDidLoad { [super viewDidLoad]; // Weiteres Setup nach dem Laden des View // Erzeugung des HomeManager für den Zugriff auf die Homes // Beim ersten Zugriff meldet das System, ob der Zugriff gestattet ist mHMManager = [[HMHomeManager alloc] init]; mHMManager.delegate = self; } // Protokollimplementierung - (void)homeManagerDidUpdateHomes:(HMHomeManager *)manager{ // HomeManager ist einsatzbereit // Zugriff auf Homes und die nächsten Hierarchieebenen ist möglich if(mHMManager.homes.count > 0){ HMHome* einHome = mHMManager.homes[0]; // Auslesen des Home und zur Verwendung als Property speichern } else{ // Es existiert kein Home, Anlegen eines exemplarische Home [mHMManager addHomeWithName:@"Beispielhome" completionHandler:^(HMHome *home, NSError *error) { // Codeblock nach Anlegen des Home // beispielsweise Aktualisierung des TableView }]; } } // Protokollimplementierung nach Ergänzung des Home - (void)homeManager:(HMHomeManager *)manager didAddHome:(HMHome *)home{ // Home wurde angelegt home.delegate = self; // Hinzufügen eines Raums [home addRoomWithName:@"Unser Wohnzimmmer" completionHandler:^(HMRoom *room, NSError *error) { // completitionhandler erlaubt, auf Fehler zu reagieren if(error) NSLog(@"Folgender Fehler ist aufgetreten: %@",error.userInfo); }]; } // Listing 3: Suche nach Geräten - (void) findeAccessories{ mHMAB = [[HMAccessoryBrowser alloc] init]; mHMAB.delegate = self; [mHMAB startSearchingForNewAccessories]; } // Meldet jedes gefundene Device - (void)accessoryBrowser:(HMAccessoryBrowser *)browser didFindNewAccessory:(HMAccessory *)accessory{ // Hinzufügen der Geräte [mUnserHome addAccessory:accessory completionHandler:^(NSError *error) { if(error) NSLog(@"Folgender Fehler ist aufgetreten: %@",error.userInfo); }]; } // Listing 4: Services eines Geräts interpretieren - (void)home:(HMHome *)home didAddAccessory:(HMAccessory *)accessory{ NSLog(@"Gerät ergänzt."); // Interpretation der Services for(HMService* s in acessories.services){ NSLog(@"\n-Service: %@ - Type: %@\n",s.name,s.serviceType); for(HMCharacteristic* c in s.characteristics){ NSLog(@"\n---Wert: %@ - Type: %@\n",c.value,c.characteristicType); if(c.characteristicType == HMCharacteristicTypeSaturation){ NSLog(@"\n\Saturation: %@\n\n",c.value); } } NSLog(@"\n--Assoziierter Service: %@\n",s.associatedServiceType); if(s.associatedServiceType == HMServiceTypeLightbulb){ NSLog(@"\n\n\nLampenservice"); // Interpretatiom der Characteristics abhängig vom ServiceType } NSLog(@"\n\n\nDebug: %@\n\n\n",s.debugDescription); } } // Listing 5: Ausführen einer Action - (void) lichtAus{ HMActionSet* actionSet = [HMActionSet alloc]; HMAction* actionAn = [[HMCharacteristicWriteAction alloc] initWithCharacteristic:myC targetValue:@"1"]; [actionSet addAction:actionAn completionHandler:^(NSError *error) { if(error) NSLog(@"eingeschaltet %@",error.userInfo); }]; [mUnserHome executeActionSet:act completionHandler:^(NSError *error) { if(error) NSLog(@"Fehlermeldung: %@",error.userinfo); }]; } // Protokollimplementierung - (void)home:(HMHome *)home didStartExecutingActionSet:(HMActionSet *)actionSet forTrigger:(HMTrigger *)trigger{ NSLog(@"didStartActionSet"); } // Protokollimplementierung - (void) home:(HMHome *)home didStopExecutingActionSet:(HMActionSet *)actionSet error:(NSError *)error{ NSLog(@"didStopExecutingActionSet"); }