Interacting with Smart Environments: Users, Interfaces, and Devices