A method of operation of a system for controlling at least one IoT device, the method comprising: identifying each object of a set of objects included in a first location, wherein the set of objects includes the at least one IoT device (310a-e, 310') and at least one other object, identifying of each object of the set of objects included in the first location comprising: obtaining first image data representing the first location; changing a state of the at least one IoT device; obtaining second image data representing the first location after the changing of the state of the at least one IoT device; comparing the first image data to the second image data to identify one or more differences between the second image data and the first image data; and identifying the one or more IoT device based on the identified one or more differences; and determining a first set of attributes for the at least one IoT device, the first set of attributes indicating a first spatial relationship between the at least one IoT device and the at least one other object; storing registration information associated with at least one IoT device, the registration information including a first identifier associated with the at least one IoT device and including the first set of attributes for the at least one IoT device; obtaining an input; determining whether the input corresponds to the at least one IoT device based on the registration information associated with the at least one IoT device; and controlling operation of the at least one IoT device when the input corresponds to the at least one IoT device. identifying each object of a set of objects included in a first location, wherein the set of objects includes the at least one IoT device (310a-e, 310') and at least one other object, identifying of each object of the set of objects included in the first location comprising: obtaining first image data representing the first location; changing a state of the at least one IoT device; obtaining second image data representing the first location after the changing of the state of the at least one IoT device; comparing the first image data to the second image data to identify one or more differences between the second image data and the first image data; and identifying the one or more IoT device based on the identified one or more differences; and obtaining first image data representing the first location; changing a state of the at least one IoT device; obtaining second image data representing the first location after the changing of the state of the at least one IoT device; comparing the first image data to the second image data to identify one or more differences between the second image data and the first image data; and identifying the one or more IoT device based on the identified one or more differences; and determining a first set of attributes for the at least one IoT device, the first set of attributes indicating a first spatial relationship between the at least one IoT device and the at least one other object; storing registration information associated with at least one IoT device, the registration information including a first identifier associated with the at least one IoT device and including the first set of attributes for the at least one IoT device; obtaining an input; determining whether the input corresponds to the at least one IoT device based on the registration information associated with the at least one IoT device; and controlling operation of the at least one IoT device when the input corresponds to the at least one IoT device.