Skip to content

hansemannn/titanium-homekit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏡 iOS HomeKit in Appcelerator Titanium

Ti.HomeKit is an open-source project to support the HomeKit API in Appcelerator's Titanium.

Requirements

  • Titanium Mobile SDK 5.5.1.GA+
  • iOS 8.0+
  • Xcode 7.3+

Download + Setup

Download

Setup

Unpack the module and place it inside the modules/iphone/ folder of your project. Edit the modules section of your tiapp.xml file to include this module:

<modules>
    <module platform="iphone">ti.homekit</module>
</modules>

Ensure that the HomeKit- and Wireless Configuration capabilities are added to your entitlements (example):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.homekit</key>
    <true/>
    <key>com.apple.external-accessory.wireless-configuration</key>
    <true/>
</dict>
</plist>

Also ensure that the HomeKit- and location usage permissions are set in the tiapp.xml

<key>NSLocationWhenInUseUsageDescription</key>
<string>HMCatalog needs your location to search for relevant places in your area.</string>
<key>NSHomeKitUsageDescription</key>
<string>HMCatalog needs access top your HomeKit devices.</string>

Example

  • app.js - Adding new homes, making a home primary
  • accessoryBrowser - Browsing accessories already added to your home
  • Feel free to provide more examples!

Supported API's

Top-Module

Methods

  • addHome
  • removeHome
  • updatePrimaryHome
  • createAccessoryBrowser

Properties

  • homes

Events

  • didAddHome
  • didRemoveHome
  • didUpdateHomes
  • didUpdatePrimaryHome

Home

Properties

  • uniqueIdentifier
  • name

Methods

  • updateName
  • addAccessory
  • removeAccessory
  • assignAccessory
  • addAndSetupAccessories
  • manageUsers
  • addUser
  • removeUser
  • currentUser
  • homeAccessControlForUser
  • addRoom
  • removeRoom

Events

  • homeDidUpdateName
  • didAddAccessory
  • didRemoveAccessory
  • didAddUser
  • didRemoveUser
  • didAddRoom
  • didUpdateRoom
  • didUpdateNameForRoom
  • didRemoveRoom
  • didAddZone
  • didUpdateNameForZone
  • didRemoveZone
  • didAddRoomToZone
  • didRemoveRoomFromZone
  • didAddServiceGroup
  • didUpdateNameForServiceGroup
  • didRemoveServiceGroup
  • didAddServiceToServiceGroup
  • didRemoveServiceFromServiceGroup
  • didAddActionSet
  • didUpdateNameForActionSet
  • didUpdateActionsForActionSet
  • didAddActionSet
  • didAddTrigger
  • didUpdateTrigger
  • didUpdateNameForTrigger
  • didRemoveTrigger
  • didUnblockAccessory
  • didEncounterErrorForAccessory

AccessoryBrowser

Methods

  • startSearchingForNewAccessories
  • stopSearchingForNewAccessories

Properties

  • discoveredAccessories

Events

  • didFindNewAccessory
  • didRemoveNewAccessory

Accessory

Properties

  • uniqueIdentifier
  • name
  • isReachable
  • isBridged
  • isBlocked
  • room
  • services

Events

  • didUpdateName
  • didUpdateNameForService
  • didUpdateAssociatedServiceTypeForService
  • didUpdateServices
  • didUpdateReachability
  • didUpdateValueForCharacteristic

Service

Properties

  • uniqueIdentifier
  • name
  • serviceType
  • localizedDescription

Room

Properties

  • uniqueIdentifier
  • name
  • accessories

User

Properties

  • uniqueIdentifier
  • name

Author

Hans Knoechel (@hansemannnn / Web)

License

Apache 2.0

Contributing

Code contributions are greatly appreciated, please submit a new pull request!