Electronic devices are becoming increasingly interconnected. For example, controllers (e.g., user devices and/or computer systems) are often connected to accessories (e.g., a speaker, a fan, and a thermostat) in the home or office. Setting up such electronic devices has become more difficult as the configurations of those connections have become more complicated. Accordingly, there is a need to improve techniques for setting up different electronic devices.
Current techniques for setting up electronic devices (e.g., controllers, accessories, user devices, and/or computer systems) are generally ineffective and/or inefficient. For example, some techniques require users to open an application of an electronic device and set up a connection with a different electronic device through communications between the application and the different electronic device. This disclosure provides more effective and/or efficient techniques for setting up electronic devices using examples of applications of a controller connecting with accessories. It should be recognized that other types of electronic devices can be used with techniques described herein. For example, a smartphone can connect with a laptop using techniques described herein. In addition, techniques optionally complement or replace other techniques for connecting electronic devices.
Some techniques are described herein for a setup component of a controller to add accessories to a new ecosystem (e.g., a grouping of one or more accessories and one or more controllers and/or a grouping of one or more accessories to an application) that are already added to another ecosystem. Such techniques can include the setup component maintaining a list of accessories for which the setup component has added to the other ecosystem. Using the list, the setup component adds the accessories in the list to the new ecosystem through communications with the accessories and an application corresponding to the new ecosystem.
A modification to the techniques described above includes using different communication protocols for communications with or from the setup component as compared to communications with or from the application. In some examples, this modification provides different levels of security and/or privacy based on the different communication protocols that are used.
Another modification to such techniques includes having the setup component act as a bridge for the application such that all or most communications from the application to the accessory occur through the setup component. In some examples, this other modification allows for an application to control the accessory, regardless of whether the application is configured to communicate using a communication protocol that is compatible with the accessory.
In some examples, a method is described that is performed at a setup component of a computer system. In some examples, the method comprises: identifying an accessory for which the setup component has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory, wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and wherein the application is different from the setup component.
In some examples, a non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system is described. In some examples, the one or more programs includes instructions for: identifying an accessory for which a setup component of the computer system has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory, wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and wherein the application is different from the setup component.
In some examples, a transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system is described. In some examples, the one or more programs includes instructions for: identifying an accessory for which a setup component of the computer system has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory, wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and wherein the application is different from the setup component.
In some examples, a computer system is described. In some examples, the computer system comprises one or more processors and memory storing one or more program configured to be executed by the one or more processors. In some examples, the one or more programs includes instructions for: identifying an accessory for which a setup component of the computer system has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory; wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and wherein the application is different from the setup component.
In some examples, a computer system is described. In some examples, the computer system comprises means for performing each of the following steps: identifying an accessory for which a setup component of the computer system has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory, wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and wherein the application is different from the setup component.
In some examples, a computer program product is described. In some examples, the computer program product comprises one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: identifying an accessory for which a setup component of the computer system has been granted one or more first entitlements with respect to the accessory, wherein the accessory is different from the computer system; sending, to the accessory, a request to add a first credential to grant one or more second entitlements with respect to the accessory; and sending, to an application of the computer system, setup information for the accessory, wherein the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and Wherein the application is different from the setup component.
In some examples, a method is described that is performed at an application of a computer system. In some examples, the method comprises: sending, to a setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant the application one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system is described. In some examples, the one or more programs includes instructions for: sending, to a, setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant an application of the computer system one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system is described. In some examples, the one or more programs includes instructions for: sending, to a setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant an application of the computer system one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a computer system is described. In some examples, the computer system comprises one or more processors and memory storing one or more program configured to be executed by the one or more processors. In some examples, the one or more programs includes instructions for: sending, to a setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant an application of the computer system one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a computer system is described. In some examples, the computer system comprises means for performing each of the following steps: sending, to a setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant an application of the computer system one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a computer program product is described. In some examples, the computer program product comprises one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: sending, to a setup component of the computer system, a request for identification of one or more accessories for which the setup component has been granted one or more first entitlements, wherein the one or more accessories are different from the computer system; after sending the request for the identification of one or more accessories, receiving, from the setup component, setup information for a first accessory; and sending, to the first accessory, a request to add a credential to grant an application of the computer system one or more first entitlements with respect to the first accessory, wherein the request to add the credential includes at least a portion of the setup information.
In some examples, a method is described that is performed at an accessory. In some examples, the method comprises: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
In some examples, a non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an accessory is described. In some examples, the one or more programs includes instructions for: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
In some examples, a transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an accessory is described. In some examples, the one or more programs includes instructions for: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
In some examples, an accessory is described. In some examples, the accessory comprises one or more processors and memory storing one or more program configured to be executed by the one or more processors. In some examples, the one or more programs includes instructions for: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
In some examples, an accessory is described. In some examples, the accessory comprises means for performing each of the following steps: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
In some examples, a computer program product is described. In some examples, the computer program product comprises one or more programs configured to be executed by one or more processors of an accessory. In some examples, the one or more programs include instructions for: receiving, from a setup component of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, wherein the accessory is different from the computer system; receiving, via the first communication channel, a request to add a credential to grant one or more entitlements with respect to the accessory; and after receiving the request to add the credential from the setup component, receiving, from an application of the computer system, a request to add the credential to grant the application the one or more entitlements with respect to the accessory, wherein the application is different from the setup component.
For a better understanding of the various described embodiments, reference should be made to the Detailed Description below, in conjunction with the following drawings in which like reference numerals refer to corresponding parts throughout the figures.
The following description sets forth exemplary techniques, methods, parameters, systems, computer-readable storage mediums, and the like. It should be recognized, however, that such description is not intended as a limitation on the scope of the present disclosure. Instead, such description is provided as a description of exemplary embodiments.
Methods described herein can include one or more steps that are contingent upon one or more conditions being satisfied. It should be understood that a method can occur over multiple iterations of the same process with different steps of the method being satisfied in different iterations. For example, if a method requires performing a first step upon a determination that a set of one or more criteria is met and a second step upon a determination that the set of one or more criteria is not met, a person of ordinary skill in the art would appreciate that the steps of the method are repeated until both conditions, in no particular order, are satisfied. Thus, a method described with steps that are contingent upon a condition being satisfied can be rewritten as a method that is repeated until each of the conditions described in the method are satisfied. This, however, is not required of system or computer readable medium claims where the system or computer readable medium claims include instructions for performing one or more steps that are contingent upon one or more conditions being satisfied. Because the instructions for the system or computer readable medium claims are stored in one or more processors and/or at one or more memory locations, the system or computer readable medium claims include logic that can determine whether the one or more conditions have been satisfied without explicitly repeating steps of a method until all of the conditions upon which steps in the method are contingent have been satisfied. A person having ordinary skill in the art would also understand that, similar to a method with contingent steps, a system or computer readable storage medium can repeat the steps of a method as many times as needed to ensure that all of the contingent steps have been performed.
Although the following description uses terms “first,” “second,” etc. to describe various elements, these elements should not be limited by the terms. In some examples, these terms are used to distinguish one element from another. For example, a first subsystem could be termed a second subsystem, and, similarly, a subsystem device could be termed a subsystem device, without departing from the scope of the various described embodiments. In some examples, the first subsystem and the second subsystem are two separate references to the same subsystem. In some embodiments, the first subsystem and the second subsystem are both subsystems, but they are not the same subsystem or the same type of subsystem.
The terminology used in the description of the various described embodiments herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used in the description of the various described embodiments and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The term “if” is, optionally, construed to mean “when,” “upon,” “in response to determining,” “in response to detecting,” or “in accordance with a determination that” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” is, optionally, construed to mean “upon determining,” “in response to determining,” “upon detecting [the stated condition or event],” “in response to detecting [the stated condition or event],” or “in accordance with a determination that [the stated condition or event]” depending on the context.
Turning to
In the illustrated example, compute system 100 includes processor subsystem 110 communicating with (e.g., wired or wirelessly) memory 120 (e.g., a system memory) and I/O interface 130 via interconnect 150 (e.g., a system bus, one or more memory locations, or other communication channel for connecting multiple components of compute system 100). In addition, I/O interface 130 is communicating with (e.g., wired or wirelessly) to I/O device 140. In some examples, I/O interface 130 is included with I/O device 140 such that the two are a single component. It should be recognized that there can be one or more I/O interfaces, with each I/O interface communicating with one or more I/O devices. In some examples, multiple instances of processor subsystem 110 can be communicating via interconnect 150.
Compute system 100 can be any of various types of devices, including, but not limited to, a system on a chip, a server system, a personal computer system (e.g., a smartphone, a smartwatch, a wearable device, a tablet, a laptop computer, and/or a desktop computer), a sensor, or the like. In some examples, compute system 100 is included or communicating with a physical component for the purpose of modifying the physical component in response to an instruction. In some examples, compute system 100 receives an instruction to modify a physical component and, in response to the instruction, causes the physical component to be modified. In some examples, the physical component is modified via an actuator, an electric signal, and/or algorithm. Examples of such physical components include an acceleration control, a break, a gear box, a hinge, a motor, a pump, a refrigeration system, a spring, a suspension system, a steering control, a pump, a vacuum system, and/or a valve. In some examples, a sensor includes one or more hardware components that detect information about a physical environment in proximity to (e.g., surrounding) the sensor. In some examples, a hardware component of a sensor includes a sensing component (e.g., an image sensor or temperature sensor), a transmitting component (e.g., a laser or radio transmitter), a receiving component (e.g., a laser or radio receiver), or any combination thereof. Examples of sensors include an angle sensor, a chemical sensor, a brake pressure sensor, a contact sensor, a non-contact sensor, an electrical sensor, a flow sensor, a force sensor, a gas sensor, a humidity sensor, an image sensor (e.g., a camera sensor, a radar sensor, and/or a LiDAR sensor), an inertial measurement unit, a leak sensor, a level sensor, a light detection and ranging system, a metal sensor, a motion sensor, a particle sensor, a photoelectric sensor, a position sensor (e.g., a global positioning system), a precipitation sensor, a pressure sensor, a proximity sensor, a radio detection and ranging system, a radiation sensor, a speed sensor (e.g., measures the speed of an object), a temperature sensor, a time-of-flight sensor, a torque sensor, and an ultrasonic sensor. In some examples, a sensor includes a combination of multiple sensors. In some examples, sensor data is captured by fusing data from one sensor with data from one or more other sensors. Although a single compute system is shown in
In some examples, processor subsystem 110 includes one or more processors or processing units configured to execute program instructions to perform functionality described herein. For example, processor subsystem 110 can execute an operating system, a middleware system, one or more applications, or any combination thereof.
In some examples, the operating system manages resources of compute system 100. Examples of types of operating systems covered herein include batch operating systems (e.g., Multiple Virtual Storage (MVS)), time-sharing operating systems (e.g., Unix), distributed operating systems (e.g., Advanced Interactive eXecutive (AIX), network operating systems (e.g., Microsoft Windows Server), and real-time operating systems (e.g., QNX). In some examples, the operating system includes various procedures, sets of instructions, software components, and/or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, or the like) and for facilitating communication between various hardware and software components. In some examples, the operating system uses a priority-based scheduler that assigns a priority to different tasks that processor subsystem 110 can execute. In such examples, the priority assigned to a task is used to identify a next task to execute. In some examples, the priority-based scheduler identifies a next task to execute when a previous task finishes executing. In some examples, the highest priority task runs to completion unless another higher priority task is made ready.
In some examples, the middleware system provides one or more services and/or capabilities to applications (e.g., the one or more applications running on processor subsystem 110) outside of what the operating system offers (e.g., data management, application services, messaging, authentication, API management, or the like). In some examples, the middleware system is designed for a heterogeneous computer cluster to provide hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, package management, or any combination thereof. Examples of middleware systems include Lightweight Communications and Marshalling (LCM), PX4, Robot Operating System (ROS), and ZeroMQ. In some examples, the middleware system represents processes and/or operations using a graph architecture, where processing takes place in nodes that can receive, post, and multiplex sensor data messages, control messages, state messages, planning messages, actuator messages, and other messages. In such examples, the graph architecture can define an application (e.g., an application executing on processor subsystem 110 as described above) such that different operations of the application are included with different nodes in the graph architecture.
In some examples, a message sent from a first node in a graph architecture to a second node in the graph architecture is performed using a publish-subscribe model, where the first node publishes data on a channel in which the second node can subscribe. In such examples, the first node can store data in memory (e.g., memory 120 or some local memory of processor subsystem 110) and notify the second node that the data has been stored in the memory. In some examples, the first node notifies the second node that the data has been stored in the memory by sending a pointer (e.g., a memory pointer, such as an identification of a memory location) to the second node so that the second node can access the data from where the first node stored the data. In some examples, the first node would send the data directly to the second node so that the second node would not need to access a memory based on data received from the first node.
Memory 120 can include a computer readable medium (e.g., non-transitory or transitory computer readable medium) usable to store (e.g., configured to store, assigned to store, and/or that stores) program instructions executable by processor subsystem 110 to cause compute system 100 to perform various operations described herein. For example, memory 120 can store program instructions to implement the functionality associated with methods 800, 900, 1000, 11000, 12000, 1300, 1400, and 1500 described below.
Memory 120 can be implemented using different physical, non-transitory memory media, such as hard disk storage, floppy disk storage, removable disk storage, flash memory, random access memory (RAM SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, or the like), read only memory (PROM. EEPROM, or the like), or the like. Memory in compute system 100 is not limited to primary storage such as memory 120. Compute system 100 can also include other forms of storage such as cache memory in processor subsystem 110 and secondary storage on 110 device 140 (e.g., a hard drive, storage array, etc.). In some examples, these other forms of storage can also store program instructions executable by processor subsystem 110 to perform operations described herein. In some examples, processor subsystem 110 (or each processor within processor subsystem 110) contains a cache or other form of on-board memory.
I/O interface 130 can be any of various types of interfaces configured to communicate with other devices. In some examples, I/O interface 130 includes a bridge chip (e.g., Southbridge) from a front-side bus to one or more back-side buses. I/O interface 130 can communicate with one or more I/O devices (e.g., I/O device 140) via one or more corresponding buses or other interfaces. Examples of I/O devices include storage devices (hard drive, optical drive, removable flash drive, storage array, SAN, or their associated controller), network interface devices (e.g., to a local or wide-area network), sensor devices (e.g., camera, radar, LiDAR, ultrasonic sensor, GPS, inertial measurement device, or the like), and auditory or visual output devices (e.g., speaker, light, screen, projector, or the like). In some examples, compute system 100 is communicating with a network via a network interface device (e.g., configured to communicate over Wi-Fi, Bluetooth, Ethernet, or the like). In some examples, compute system 100 is directly or wired to the network.
In some examples, some subsystems are not connected to other subsystem (e.g., first subsystem 210 can be connected to second subsystem 220 and third subsystem 230 but second subsystem 220 cannot be connected to third subsystem 230). In some examples, some subsystems are connected via one or more wires while other subsystems are wirelessly connected. In some examples, messages are set between the first subsystem 210, second subsystem 220, and third subsystem 230, such that when a respective subsystem sends a message the other subsystems receive the message (e.g., via a wire and/or a bus). In some examples, one or more subsystems are wirelessly connected to one or more compute systems outside of device 200, such as a server system. In such examples, the subsystem can be configured to communicate wirelessly to the one or more compute systems outside of device 200.
In some examples, device 200 includes a housing that fully or partially encloses subsystems 210-230. Examples of device 200 include a home-appliance device (e.g., a refrigerator or an air conditioning system), a robot (e.g., a robotic arm or a robotic vacuum), and a vehicle. In some examples, device 200 is configured to navigate (with or without user input) in a physical environment.
In some examples, one or more subsystems of device 200 are used to control, manage, and/or receive data from one or more other subsystems of device 200 and/or one or more compute systems remote from device 200. For example, first subsystem 210 and second subsystem 220 can each be a camera that captures images, and third subsystem 230 can use the captured images for decision making. In some examples, at least a portion of device 200 functions as a distributed compute system. For example, a task can be split into different portions, where a first portion is executed by first subsystem 210 and a second portion is executed by second subsystem 220.
Attention is now directed towards techniques for setting up electronic devices. Such techniques are described in the context of applications of a controller connecting with accessories. It should be recognized that other types of electronic devices can be used with techniques described herein. For example, an accessory can connect with another accessory using techniques described herein. In addition, techniques optionally complement or replace other techniques for connecting devices.
As illustrated in
As illustrated in
At
In some examples, communications between setup component 312 and an application (e.g., first application 320 and/or second application 330) are communications within a single computer system while communications between one or more components of controller 300 (e.g., operating system 310, setup component 312, first application 320, and/or second application 330) and first accessory 340 and second accessory 350 are communications between different computer systems. Such communications between different computer systems can be wired communication and/or wireless communication. In some examples, setup component 312 (or another component of controller 300) communicates with first accessory 340 through a communication method, such as Bluetooth, Zigbee, near-field communication, WiFi, LiFi, 5G, or any other wireless communication technology. In some examples, setup component 312 (or another component of controller 300) communicates with first accessory 340 via one communication method and communicates with second accessory 350 via another communication method.
At
In some examples, application 402 includes one or more features described above in relation to first application 320 and/or second application 330 of
In some examples, setup component 404 has added a credential (sometimes referred to as an accessory management credential) to accessory 406, the adding causing accessory 406 to be added to a first ecosystem that includes setup component 404 and accessory 406. In some examples, adding the accessory management credential to accessory 406 allows setup component 404 to manage, configure, and/or control accessory 406, including to add additional ecosystems. Examples of the accessory management credential include a long-term key, an ecosystem credential, a certificate (e.g., a root, intermediate, or other type of certificate), and an administrator credential. In some examples, the accessory management credential is specific to a user (e.g., a user account), an ecosystem, and/or a computer system (e.g., a controller and/or controller 300). In some examples, the accessory management credential is added to accessory 406 using a setup code received by setup component 404 In such examples, the setup code is not generated by setup component 404 and instead is provided to setup component 404 as corresponding to accessory 406. In some examples, the setup code is used to establish a mutually authenticated bidirectional secure channel between setup component 404 and accessory 406, Over the secure channel, the credential (e.g., the accessory management credential) is installed. In some examples, setup component 404 uses the credential to create secure sessions for other (e.g., further) communication with accessory 406.
In some examples, application 402 corresponds to second application 330, where first application 320 of
In some examples, the first ecosystem (e.g., the ecosystem corresponding to setup component 404) is an administrative ecosystem that is configured to be a lightweight ecosystem having limited permissions and/or entitlements with respect to accessory 406. For example, the lightweight ecosystem can allow for setup component 404 to add additional ecosystems but not control accessory 406. For another example, the lightweight ecosystem can restrict resources of accessory 406 used with respect to the lightweight ecosystem. In such an example, the restricted resources result in less memory allowed for storing code related to the lightweight ecosystem, less memory made available for execution of operations corresponding to the lightweight ecosystem, and/or less priority when executing operations corresponding to the lightweight ecosystem, as compared to a different type of ecosystem. In other examples, the administrative ecosystem is configured to be an enhanced ecosystem (e.g., a full ecosystem) that has an enhanced set of permissions and/or entitlements (e.g., full set of permissions and/or entitlements) with respect to accessory 406, as compared to the lightweight ecosystem. In some examples, the enhanced ecosystem can be allowed to take up more bandwidth of accessory 406 than a lightweight ecosystem and/or use more resources (e.g., short-term and/or long-term memory).
In some examples, the administrative ecosystem is an ecosystem that is first established for accessory 406 and other ecosystems (e.g., the second ecosystem discussed above with respect to application 402) are added using the administrative ecosystem. The second ecosystem can be an enhanced or lightweight ecosystem, as discussed above.
At 408 when using a single communication protocol, application 402 determines to add an accessory. The determination to add an accessory can be based on different criteria. In some examples, the determination to add an accessory is based on particular user input being detected. For example, application 402 detects selection of a user-interface object displayed by application 402 and, in response to detecting the selection, determines to add an accessory. In some examples, the determination to add an accessory is based on detection of an accessory being within a predetermined distance (e.g., 1-20 meters) from a controller associated with application 402 (e.g., a controller that is executing and/or displaying a user interface of application 402), For example, application 402 detects that an accessory is within a predetermined distance from the controller and, in response, determines to add an accessory. In some examples, the determination to add an accessory is based on determining that the accessory is connected to the same communication network as a controller associated with application 402. In some examples, the determination to add an accessory is based on application 402 being initialized. For example, application 402 can log into a user account (and/or execute for a first time on a controller) and, in response, determine to add an accessory (e.g., based on a setting of application 402 and/or a controller associated with application 402).
In some examples, the determination to add an accessory is to add a non-specific (e.g., general) accessory to an ecosystem (e.g., a smart home ecosystem and/or smart office ecosystem) corresponding to application 402. In other examples, the determination to add an accessory is to add a particular accessory (e.g., accessory 406) to the ecosystem corresponding to application 402. In some examples, the determination to add an accessory includes a determination for which ecosystem to add an accessory to.
At 410 when using a single communication protocol, application 402 sends a request to setup component 404 for a list of available accessories. In some examples, an available accessory corresponds to an accessory for which setup component 404 has already added a credential. (e.g., an accessory management credential and/or a controller credential, as discussed above) on accessory 406.
At 412 when using a single communication protocol, setup component 404 sends the list of available accessories to application 402. In some examples, setup component 404 maintains the list of available accessories (e.g., adds to the list as setup component 404 adds credentials to accessories). In other examples, setup component 404 sends a request to accessories within range to determine whether the accessories are available. In other examples, setup component 404 sends one or more requests to one or more other devices and/or applications (e.g., first application 320 or second application 330 of
At 414 when using a single communication protocol, application 402 sends a list of selected accessories to setup component 404. In some examples, the list is a subset of the list of available accessories, the subset selected via user input. For example, application 402 receives the list of available accessories at 412 when using a single communication protocol and displays a representation of the list for selection of all or part of the list via user input. In other examples, application 402 does not receive the list of available accessories and instead application 402 generates the list of selected accessories based on information determined by application 402 outside of setup component 404. For example, application 402 detects one or more accessories in proximity to the controller and displays a representation of a list of the one or more accessories for selection of all or part of the list via user input. For another example, application 402 receives a list of available accessories from a device remote from the controller (e.g., a server corresponding to an ecosystem or a different electronic device associated with the same user account as the controller) and displays a representation of the list for selection of all or part of the list via user input. For another example, application 402 obtains a list of available accessories from another application of the controller (e.g., an application corresponding to a different ecosystem, such as first application 320 of
In some examples, when the list of selected accessories is not selected from a list received from setup component 404, some accessories in the list of selected accessories might have not been added to any ecosystem yet (e.g., by setup component 404 and/or by any component or application) and those accessories will be added as described above with respect to setup component 404 adding an accessory management credential (e.g., without performing operations 416-430 when using a single communication protocol) while other accessories might have already been added to at least one ecosystem by setup component 404 and those accessories will be added as described below with respect to operations 416-430 when using a single communication protocol.
At 416 when using a single communication protocol, setup component 404 iterates through the list of selected accessories received from application 402. In some examples, setup component 404 performs 418-422 when using a single communication protocol for each accessory in the list of selected accessories. In some examples, setup component 404 does not receive a request of available accessories (e.g., 410 when using a single communication protocol) and does not receive a list of selected accessories (e.g., 414 when using a single communication protocol) and instead performs 418-422 when using a single communication protocol for each available accessory identified by setup component 404. Such operations can be performed at any time, such as before or after the request to add an accessory is received by application 402 at 408 when using a single communication protocol.
At 418 when using a single communication protocol, a setup session (e.g., a secure session or an unsecure session) is established between setup component 404 and accessory 406. In some examples, the setup session is established by setup component 404; in other examples, the setup session is established by accessory 406.
In some examples, establishing the setup session requires multiple communications to be sent back and forth between setup component 404 and accessory 406, such as communications to configure the setup session and/or to ensure that the setup session is secure. In some examples, the setup session is established based on a communication protocol supported by accessory 406. For example, an advertisement received by setup component 404 when identifying accessory 406 and/or when establishing the setup session can indicate a particular communication protocol that is then used for the setup session.
In some examples, establishing the setup session includes establishing a communication channel between setup component 404 and accessory 406. The communication channel can use any wireless communication technology, such as Bluetooth, Zigbee, near-field communication, WiFi, LiFi, or 5G. In some examples, the communication channel is a re-establishment of a previous communication channel between setup component 404 and accessory 406. For example, setup component 404 and accessory 406 have already established a pairing between setup component 404 and accessory 406 and the communication channel uses information from the pairing to be established.
At 420 when using a single communication protocol, setup component 404 sends a request to accessory 406 to add a controller, such as a new computer system to configure and/or control accessory 406, a new ecosystem, and/or a new administrator (each of which can include a different set of entitlements). In some examples, the request to add the controller includes a secret that is generated by application 402 or setup component 404. In such examples, the secret is used by a component (e.g., application 402 or setup component 404, including by application 402 when generated by setup component 404) to identify itself when adding a credential to accessory 406. For example, the secret can be a piece of data known only by devices, computer systems, and/or components in which are in the new ecosystem (e.g., devices, computer systems, and/or components for which are participating in a secure communication, such as application 402 and accessory 406). In some examples, the secret is provided to setup component 404 by application 402. In such examples, the secret can be encrypted in a manner that setup component 404 is unable to identify the secret but accessory 406 is able to identify the secret when receiving the encrypted secret from setup component 404. An example of the secret is a setup code as discussed above. In some examples, the secret is used to establish a mutually authenticated bidirectional secure channel between a component (e.g., application 402 or setup component 404) and accessory 406. Over the secure channel, a credential (e.g., an accessory management credential or a controller credential as described herein) is installed. In some examples, application 402 or setup component 404 uses the credential to create secure sessions for other (e.g., further) communication with accessory 406. The secret can be the same or different for each accessory being iterated through in 416.
At 422 when using a single communication protocol, setup component 404 adds accessory 406 to a staging list to be sent to application 402. In some examples, the staging list includes an identifier of accessory 406 and/or the setup code sent to accessory in the request at 420.
At 424 when using a single communication protocol, setup component 404 sends the staging list to application 402. In some examples, the staging list includes identifiers (a name or indication of an accessory), addresses (e.g., an IP address or a MAC address), and/or secrets (e.g., sent at 420 when using a single communication protocol) for each accessory for which setup component 404 performed operations 418-422.
At 426 when using a single communication protocol, application 402 iterates through selected accessories in the staging list received from setup component 404. In some examples, application 402 performs 428-430 when using a single communication protocol for each accessory in the staging list. In other examples, application 402 detects user input corresponding to selection of one or more accessories within the staging list (e.g., all or not all of the accessories within the staging list) and performs 428-430 when using a single communication protocol for each selected accessory.
At 428 when using a single communication protocol, a setup session (e.g., a secure session or an unsecure session) is established between application 402 and accessory 406. The setup session can be established by either application 402 or accessory 406. In some examples, the setup session is established through multiple communications between application 402 and accessory 406, such as communications to configure the setup session and/or to ensure that the setup session is secure. In some examples, the setup session is a communication channel between application 402 and accessory 406. The communication channel can use any wireless communication technology, such as Bluetooth, Zigbee, near-field communication, WiFi, LiFi, or 5G.
At 430 when using a single communication protocol, application 402 installs a credential (e.g., a controller credential, as described above) on accessory 406 so that application 402 can configure and/or control accessory 406. In some examples, installing the credential creates or adds accessory 406 to a different ecosystem than described above with respect to setup component 404. In such examples, the ecosystem for application 402 can be configured to be an enhanced ecosystem that has enhanced permissions and/or entitlements with respect to accessory 406. For example, the enhanced ecosystem allows for application 402 to add additional ecosystems and/or control accessory 406. In such an example, the enhanced ecosystem can be allowed to take up more bandwidth of accessory 406 than a lightweight ecosystem and/or use more resources e.g., short-term and/or long-term memory). In some examples, each iteration of 426 when using a single communication protocol adds each accessory in the staging list to the same ecosystem (e.g., an ecosystem corresponding to application 402).
In some examples, after adding a credential to an accessory, application 402 can send a command (e.g., an instruction and/or a request to control) to the accessory. For example, application 402 can send a command to accessory 406. In some examples, the command is to change a state of accessory 406 and/or receive information about a state of accessory 406. Examples of changing a state of accessory 406 include changing a setting for accessory 406, turning the setting off, turning accessory 406 off, turning the setting on, and/or turning accessory 406 on. In some examples, the command is sent based on the communication protocol used by application 402 to communicate with accessory 406 using the credential installed in 426 when using a single communication protocol. In some examples, the command is not sent through setup component 404 and, instead, is sent directly from application 402 to accessory 406.
In some examples, in response to receiving the command from application 402, accessory 406 attempts to perform the command and sends a response to the attempt to perform the command. In some examples, the response indicates whether the command was successfully performed. In some examples, the response is sent based on the communication protocol used by application 402 to communicate with accessory 406. In some of these examples, the response is not sent through setup component 404 and, instead, is sent directly from accessory 406 to application 402.
In some examples, application 402 receives data concerning a state of accessory 406 such as a value (e.g., brightness value of a light, temperature value of a thermostat, remaining battery value, overheating value, and/or fan speed of a ceiling fan) associated with accessory 406 or whether accessory 406 is on or off. In some of these examples, such data is sent from accessory 406 to application 402 based on a triggering event occurring on accessory 406 and without a request for such data from application 402. Examples of the triggering event include a temperature value reaching a threshold, a remaining battery value reaching a threshold, and an error occurring.
As mentioned above,
In some examples, operations when using multiple communication protocols occurring on application 402 are similar to operations when using a single communication protocol described above with
At 416 when using multiple communication protocols, setup component 404 iterates through the list of selected accessories received from application 402. In some examples, details of 416 when using multiple communication protocols are similar to as described above when using a single communication protocol with respect to 416 except that setup component 404 identifies communication protocols supported by each accessory and selects a particular communication protocol to use for each accessory. In some examples, the communication protocol used by setup component 404 is different from a communication protocol used by application 402 to communicate with an accessory. The different communication protocol can have different levels of security and/or privacy. Thus, in some examples, communications sent or received by setup component 404 are sent via a communication protocol that has a particular level of security and/or privacy required by setup component 404. In some examples, setup component 404 supports a first communication protocol that is not used by application 402 to communicate with an accessory and a second communication protocol that is used by application 402 to communicate with the accessory. In some examples, instead of forcing setup component 404 to use the second communication protocol when communicating with an accessory, setup component 404 can use the first communication protocol when communicating with the accessory. In some examples, a user of the controller selects which communication protocol is used by setup component 404.
At 418 when using multiple communication protocols, a setup session (e.g., a secure session or an unsecure session) is established between setup component 404 and accessory 406. In some examples, details of 418 when using multiple communication protocols are similar to details of 418 when using a single communication protocol described above except that the selected communication protocol described above is used for the setup session.
At 420 when using multiple communication protocols, setup component 404 sends a request to accessory 406 to add a controller, such as a new computer system to configure and/or control accessory 406, a new ecosystem, and/or a new administrator (each of which includes a different set of entitlements). In some examples, details of 420 when using multiple communication protocols are the same as details of 420 when using a single communication protocol described above, including that the communication protocol used by application 402 is used to communicate the request at 420 when using multiple communication protocols. In other examples, details of 420 when using multiple communication protocols are similar to details of 420 when using a single communication protocol described above except that the selected communication protocol described above is used to communicate with accessory 406. For example, the request to add a controller is encapsulated in a message based on the selected communication protocol, where the request is based on the communication protocol used by application 402 to communicate with accessory 406. In other words, the transport of the request uses the selected communication protocol and the payload that is received by accessory 406 uses the communication protocol used by application 402.
In some examples, details of the rest of the operations in
Similar to
In some examples, details of 508, 510, 512, and 514 are the same as similar to details described above with respect to 408, 410, 412, and 414, respectively.
At 516, setup component 404 iterates through the list of selected accessories received from application 402. In some examples, details of 516 are similar to details described above with respect to 416. For example, setup component 404 can (1) use a predefined communication protocol for each accessory or (2) identify communication protocols supported by each accessory and select a particular communication protocol to use for each accessory. In some examples, the communication protocol used by setup component 404 is different from a communication protocol used and/or supported by application 402. The different communication protocol can have different levels of security and/or privacy. Thus, in some examples, communications sent or received by setup component 404 are sent via a communication protocol that has a particular level of security and/or privacy required by setup component 404. In some examples, setup component 404 supports a first communication protocol that is not used by application 402 to communicate with an accessory and a second communication protocol that is used by application 402 to communicate with the accessory. In some examples, instead of forcing setup component 404 to use the second communication protocol when communicating with an accessory, setup component 404 can use the first communication protocol when communicating with the accessory. In some examples, a user of the controller selects which communication protocol is used by setup component 404.
At 518, setup component 404 activates a bridge (sometimes referred to as an adapter) facilitate (e.g., translate) communications from application 402 to one or more accessories in the list of selected accessories. In some examples, setup component 404 activates multiple bridges, each bridge for one or more accessories in the list of selected accessories. In other examples, setup component 404 activates a single bridge to use with all of the accessories in the list of selected accessories. In some examples, the bridge uses the accessory management credential described above to communicate with accessory 406 on behalf of application 402. In such examples, 524, 526, and 528 can be omitted and application 402 communicates with setup component 404 as if setup component 404 is accessory 406. In other examples, setup component 404 adds a new credential on behalf of application 402 and uses the new credential to communicate with accessory 406, as described below.
At 520, setup component 404 adds accessory 406 to a staging list to be sent to application 402. In some examples, the staging list includes an identifier of accessory 406, an address of setup component 404, and/or setup information for communicating with accessory 406 through setup component 404. In some examples, the setup information includes a secret (e.g., a setup code) generated by setup component 404 (e.g., the secret generated by setup component 404 at 520), and/or information for how to communicate with setup component 404 using a communication protocol supported by application 402. In such examples, the setup information is used by application 402 to communicate with accessory 406 through setup component 404.
At 522, setup component 404 sends the staging list to application 402. In some examples, the staging list includes identifiers (a name or indication of an accessory), addresses (e.g., an IP address or a MAC address), and/or setup information for each accessory for which setup component 404 performed operations 518. In some examples, the setup information corresponds to setup component 404 (e.g., instead of accessory 406 as described above with respect to
At 524, application 402 iterates through selected accessories in the staging list received from setup component 404. In some examples, application 402 performs 526-528 for each accessory in the staging list. In other examples, application 402 detects user input corresponding to selection of one or more accessories within the staging list (e.g., all or not all of the accessories within the staging list) and performs 526-528 for each selected accessory.
At 526, a setup session (e.g., a secure session or an unsecure session) is established between application 402 and setup component 404. In some examples, details of 524 are the same as details described above with respect to 424.
At 528, application 402 sends a request to setup component 404 to install a credential (e.g., a controller credential) for accessory 406 so that application 402 can configure and/or control accessory 406 through setup component 404. Examples of the credential include the same examples as the accessory management credential described above. In some examples, installing the credential through setup component 404 includes application 402 sending a request to setup component 404 to install the credential and then setup component 404 installing the credential on accessory 406, similar to as described above with respect to installing the accessory management credential. In other examples, the credential is not installed on accessory 406 and instead setup component uses a credential previously installed by setup component 404 for setup component 404 to communicate with accessory 406.
In some examples, installing the credential creates or adds accessory 406 to a different ecosystem than described above with respect to setup component 404 at 518. In such examples, the ecosystem for application 402 can be configured to be an enhanced ecosystem that has enhanced permissions and/or entitlements with respect to accessory 406. For example, the enhanced ecosystem can allow for application 402 to add additional ecosystems and/or control accessory 406. In such an example, the enhanced ecosystem can be allowed to take up more bandwidth of accessory 406 than a lightweight ecosystem and/or use more resources (e.g., short-term and/or long-term memory).
At 530, application 402 sends a command (e.g., an instruction and/or a request to control) to setup component 404 to be sent to accessory 406. In some examples, the command is to change a state of accessory 406 and/or receive information about a state of accessory 406. Examples of changing a state of accessory 406 include changing a setting for the accessory, turning the setting off, and/or turning the setting on. In some examples, the command is sent based on the communication protocol used by application 402 to communicate with setup component 404.
At 532, setup component 404 sends the command to accessory 406 using a credential installed by setup component 404. In some examples, setup component 404 converts the command according to the communication protocol used by setup component 404 to communicate with accessory 406 and then sends the converted command to accessory 406.
At 534, accessory 402 attempts to perform the command received at 532. At 536, accessory 402 sends a response to the attempt to perform the command. In some examples, the response indicates whether the command was successfully performed. In some examples, the response is sent based on the communication protocol used by accessory 406 to communicate with setup component 404.
At 538, setup component 404 sends the response to application 402. In some examples, setup component 404 converts the response according to the communication protocol used by setup component 404 to communicate with application 402 and sends the converted command to application 402.
At 540, accessory 406 determines that an event occurred that requires notifying application 402. For example, a light can be turned off or an amount of remaining battery can reach a threshold.
At 542, accessory 406 sends an event notification to setup component 404. In some examples, the event notification is sent based on the communication protocol used by accessory 406 to communicate with setup component 404.
At 544, setup component 404 sends the event notification to application 402. In some examples, setup component 404 converts the event notification according to the communication protocol used by setup component 404 to communicate with application 402 and then sends the converted event notification to application 402.
At 610, the setup component identifies an accessory for which the setup component has been granted one or more first entitlements (e.g., one or more rights, permissions, and/or abilities) with respect to the accessory (e.g., establish a first ecosystem, manage the accessory, and/or previously paired with the accessory), where the accessory is different from the computer system; In some examples, the accessory is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, an outlet, a receiver, a router, a security system, a sensor, a speaker, a sprinkler, a switch, a thermostat, a television, an actuator, and/or a window. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory).
At 620, the setup component sends, to the accessory, a request to add a first credential to grant one or more second entitlements (e.g., the one or more second entitlements are the same as the one or more first entitlements or are different from the one or more first entitlements (e.g., at least one different entitlement of the one or more first entitlements)) with respect to the accessory (e.g., add a controller, a second ecosystem different from the first ecosystem, a credential to control the accessory, and/or an administrator different from the setup component); and In some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory).
At 630, the setup component sends, to an application of the computer system, setup information for the accessory, where the setup information is intended to be used by the application to communicate with the accessory to grant the application the one or more second entitlements with respect to the accessory, and where the application is different from the setup component. In some examples, the application communicates with the accessory without going through the setup component. In some examples, the application is an application of an ecosystem that allows for a user to control one or more accessories (including, for example, accessories of different types and/or from different manufacturers), an application of an accessory manufacturer that allows for a user to control one or more accessories associated with the accessory manufacturer, and/or an application for a particular communication protocol (e.g., the application communicates according to the particular communication protocol to accessories that are configured for the particular communication protocol).
In some examples, before sending the request to add the first credential, the setup component receives, from the application, first identification (e.g., one or more identifications) of one or more accessories (e.g., a list of one or more accessories). In some examples, an identification of the accessory is included in the first identification of one or more accessories. In some examples, the identification of one or more accessories are accessories selected by the application or user via the application.
In some examples, the setup component sends, to the application, second identification of one or more accessories. In some examples, the second identification of one or more accessories is sent before receiving the first identification of one or more accessories from the application. In some examples, the first identification of one or more accessories received from the application are accessories selected by the application or user via the application from the second identification of one or more accessories sent to the application.
In some examples, the setup component receives, from the application, identification of one or more selected accessories. In some examples, the identification of one or more selected accessories includes less accessories than the identification of one or more accessories sent to the application. In some examples, a request to add a credential to grant the one or more second entitlements is sent to each accessory identified in the identification of one or more selected accessories.
In some examples, the setup component generates the setup information. In some examples, the setup component generates second setup information for a second accessory and sends the second setup information to the application. In some examples, the setup information is intended to be used by the application to communicate with the second accessory to grant the application the one or more second entitlements with respect to the second accessory.
In some examples, the setup information is sent with an identifier of the accessory.
In some examples, the setup component selects a first communication protocol (e.g., a communication protocol supported by the setup component but not supported by the application (e.g., Bluetooth, WiFi, an internet protocol communication protocol, NFC, and/or UWB)) from a plurality of communication protocols (e.g., a communication protocol supported by the setup component but not supported by the application, a communication protocol supported by the application, a communication protocol corresponding to an ecosystem, a communication protocol corresponding to the setup component, and/or a communication protocol supported by a plurality of different ecosystems) supported by the accessory. In some examples, the setup information is sent to the accessory in a message according to the first communication protocol. In some examples, the one or more second entitlements correspond to a second communication protocol (e.g., a communication protocol supported by the application) (e.g., Bluetooth, WiFi, an internet protocol communication protocol, NEC, and/or UWB) of the plurality of communication protocols. In some examples, the second communication protocol is different from the first communication protocol.
In some examples, the setup component receives, from the application, a command to change a state (e.g., on or off or an amount or value of a setting) of the accessory. In some examples, the setup component generates, according to (e.g., based on and/or via) a particular communication protocol (e.g., a communication protocol supported by the accessory), a message corresponding to the command (e.g., including the command or including a different command that has the effect of changing the state of the accessory the same as the command). In some examples, the setup component sends, to the accessory, the message. In some examples, the accessory does not support a communication protocol supported by the accessory (e.g., even when the accessory only supports a single communication protocol) and the setup component converts a message received from the application to the single communication protocol before sending to the accessory. In some examples, sending the message to the accessory causes the accessory to perform an operation based on the content of the message, and in some embodiments, the operation causes the accessory to change from a first state (e.g., on state, off state, low state, high state, state that is based on a first value (e.g., −100-100, 0100%, low, medium, and/or high)) to a second state that is different from the first state.
Note that details of the processes described above with respect to method 600 (e.g.,
At 710, the application sends, to a setup component (e.g., an operating-system component or an application different from an operating system) of the computer system, a request for identification of one or more accessories (e.g., a list of one or more accessories) for which the setup component has been granted one or more first entitlements (e.g., one or more rights, permissions, and/or abilities) (e.g., establish a first ecosystem, manage the one or more accessories, and/or previously paired with the one or more accessories), where the one or more accessories are different from the computer system; In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory).
After (e.g., as a result of or in conjunction with) sending the request for the identification of one or more accessories, at 720, the application receives, from the setup component, setup information for a first accessory e.g., an identifier, an address, and/or a setup code for the first accessory); and In some examples, the first accessory is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, an outlet, a receiver, a router, a security system, a sensor, a speaker, a sprinkler, a switch, a thermostat, a television, an actuator, and/or a window.
At 730, the application sends, to the first accessory, a request to add a credential certificate and/or identifier corresponding to the application) to grant (e.g., allow, configure, and/or enable) the application one or more first entitlements (e.g., one or more rights, permissions, and/or abilities) with respect to the first accessory (e.g., establish a first ecosystem and/or manage the first accessory), where the request to add the credential includes at least a portion of the setup information (e.g., an identifier, an address, and/or a setup code for the first accessory). In some examples, the application establishes a communication channel with the first accessory using the setup information. In some examples, the application communicates with the first accessory without going through the setup component. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory).
In some examples, before receiving the setup information for the first accessory, the application receives identification of one or more available accessories (e.g., accessories for which the setup component has been granted one or more first entitlements). In some examples, the application receives user input corresponding to selection of at least one of the one or more available accessories. In some examples, the at least one of the one or more available accessories includes the first accessory. In some examples, the application sends, to the setup component, identification (e.g., the second identification as described above in relation to method 600) of the at least one of the one or more available accessories.
In some examples, the application receives identification of one or more accessories. In some examples, the identification of one or more accessories includes setup information for each of the one or more accessories.
In some examples, the request for identification of one or more accessories is sent in response to receiving a request to add an accessory to an ecosystem.
In some examples, the setup information includes a setup code or (e.g., and/or) an address of the first accessory. In some examples, the address is a name, an internet protocol address, a media access control address, and/or a unique identifier of the first accessory. In some examples, the setup code is a set of one or more numbers and/or one or more characters used to establish a link (e.g., a pairing) with the first accessory.
In some examples, the request to add the credential is sent to the accessory via the setup component.
In some examples, after sending the request to add the credential to the accessory, the application sends, to the accessory using the credential (e.g., a message sent to the accessory can include the credential and/or an indication of the credential), a command to change a state (e.g., on or off or an amount or value of a setting)) of the accessory (e.g., as described above in relation to method 600).
In some examples, the command is sent to the first accessory via the setup component.
Note that details of the processes described above with respect to method 700 (e.g.,
At 810, the accessory receives, from a setup component (e.g., an operating-system component or an application different from an operating system) of a computer system, a request to re-establish a first communication channel between the setup component and the accessory, where the accessory is different from the computer system; In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (LAID) device, and/or a personal computing device.
At 820, the accessory receives, via the first communication channel, a request to add a credential to grant one or more entitlements (e.g., one or more rights, permissions, and/or abilities) (e.g., establish a first ecosystem, manage the one or more accessories, and/or previously paired with the one or more accessories) with respect to the accessory (e.g., add a controller, a second ecosystem different from the first ecosystem, a credential to control the accessory, and/or an administrator different from the setup component); and In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory). In some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., a device, a computer system, an application executing on a device, and/or a software process configured to control an accessory).
After receiving the request to add the credential from the setup component, at 830, the accessory receives, from an application of the computer system, a request to add the credential (e.g., a certificate and/or identifier corresponding to the application) to grant (e.g., allow, configure, and/or enable) the application the one or more entitlements (e.g., one or more rights, permissions, and/or abilities) with respect to the accessory (e.g., establish a first ecosystem and/or manage the accessory), where the application is different from the setup component. In some examples, the accessory grants, to the setup component based on the first credential, the one or more first entitlements with respect to the accessory. In some examples, the accessory grants, to the application based on the second credential, the one or more second entitlements with respect to the accessory. In some examples, the application is an application of an ecosystem that al lows for a user to control one or more accessories (including, for example, accessories of different types and/or from different manufacturers), an application of an accessory manufacturer that allows for a user to control one or more accessories associated with the accessory manufacturer, and/or an application for a particular communication protocol (e.g., the application communicates according to the particular communication protocol to accessories that are configured for the particular communication protocol).
In some examples, the request received via the first communication channel is included in a message formatted according to a first communication protocol (e.g., as described above in relation to method 600). In some examples, the request to add the credential received from the application is included in a message formatted according to a second communication protocol (e.g., as described above in relation to method 600) different from the first communication protocol. In some examples, the request received via the first communication channel includes a setup code (e.g., as described above in relation to method 600). In some examples, the request to add the credential received from the application includes the setup code.
In some examples, the accessory receives, from the application, a command to change a state (e.g., on or off or an amount or value of a setting) of the accessory (e.g., as described above in relation to method 600). In some examples, in response to receiving the command, the accessory changes a state of the accessory (e.g., as described above in relation to method 600).
In some examples, the accessory receives, from the setup component, a command to change a state (e.g., on or off or an amount or value of a setting) of the accessory (e.g., as described above in relation to method 600). In some examples, in response to receiving the command, the accessory changes a state of the accessory (e.g., as described above in relation to method 600).
In some examples, after receiving the request via the first communication channel, the accessory receives, from the application, a request to establish a second communication channel between the application and the accessory. In some examples, the second communication channel is different from (e.g., a different type of communication channel and/or a communication channel that has a different medium of communication) the first communication channel. In some examples, in response to receiving the request to establish the second communication channel, the accessory establishes the second communication channel. In some examples, the request to add the credential that is received from the application is received via the second communication channel.
Note that details of the processes described above with respect to method 800 (e.g.,
The foregoing description, for purpose of explanation, has been described with reference to specific examples. However, the illustrative discussions above are not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The examples were chosen and described in order to best explain the principles of the techniques and their practical applications. Others skilled in the art are thereby enabled to best utilize the techniques and various examples with various modifications as are suited to the particular use contemplated.
Although the disclosure and examples have been fully described with reference to the accompanying drawings, it is to be noted that various changes and modifications will become apparent to those skilled in the art. Such changes and modifications are to be understood as being included within the scope of the disclosure and examples as defined by the claims.
As described above, one aspect of the present technology is the gathering and use of data available from various sources to improve how a device interacts with a user. The present disclosure contemplates that in some instances, this gathered data can include personal information data that uniquely identifies or can be used to contact or locate a specific person. Such personal information data can include demographic data, location-based data, telephone numbers, email addresses, home addresses, or any other identifying information.
The present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used to change how a device interacts with a user. Accordingly, use of such personal information data enables better user interactions. Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure.
The present disclosure further contemplates that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. In particular, such entities should implement and consistently use privacy policies and practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining personal information data private and secure. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Further, such collection should occur only after receiving the informed consent of the users. Additionally, such entities would take any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices.
Despite the foregoing, the present disclosure also contemplates embodiments in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of image capture, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services.
Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the need for accessing such personal information data. That is, the various embodiments of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data. For example, content can be displayed to users by inferring location based on non-personal information data or a bare minimum amount of personal information, such as the content being requested by the device associated with a user or other non-personal information.
The present application claims benefit of U.S. Provisional Application Ser. No. 63/418,441, entitled “SUBSEQUENT ACCESSORY SETUP” filed Oct. 21, 2022, which is hereby incorporated by reference in its entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
20240134953 A1 | Apr 2024 | US |
Number | Date | Country | |
---|---|---|---|
63418441 | Oct 2022 | US |