Initial accessory setup
By setting up components between the controller and accessories to establish relationships and using different communication protocols to provide security and privacy, the problem of inefficient setting up electronic devices in the prior art is solved, and a more efficient and secure setup process is achieved.
Patent Information
- Application Number
- CN202380073672.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-09-19
- Filing Date
- 2023-09-20
- Publication Date
- 2025-05-30
AI Technical Summary
The prior art is inefficient and ineffective when configuring electronic devices, especially when the connection configuration between the controller and the accessory becomes complicated.
Establish initial settings by setting the relationship between components and accessories, facilitating relationships between controllers and applications, providing different levels of security and privacy using different communication protocols, and making the settings components act as bridges for applications to achieve all or most communications.
Achieve more efficient and efficient electronic device setup, simplify user operations, and provide greater security and privacy through different communication protocols.
Smart Images

Figure CN120077376A_ABST
Abstract
Description
[0001] Cross - Reference to Related Applications
[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 418,440, filed on Oct. 21, 2022, entitled “INITIAL ACCESSORY SETUP”, which is hereby incorporated by reference in its entirety for all purposes. BACKGROUND OF THE DISCLOSURE
[0003] Interconnectivity of electronic devices has become increasingly strong. For example, a controller (e.g., a user device and / or a computer system) is typically connected to accessories (e.g., speakers, fans, and thermostats) in a home or office. As the configurations of those connections have become more complex, setting up such electronic devices has become more difficult. Accordingly, there is a need for improved techniques for setting up different electronic devices. SUMMARY OF THE DISCLOSURE
[0004] 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 a user to manually enter a code into a user interface of one electronic device to set up a connection with another electronic device. For another example, different applications associated with one electronic device are set up separately to connect to another electronic device. The present disclosure provides more effective and / or efficient techniques for setting up electronic devices using examples of applications of a controller connected to an accessory. It should be appreciated that other types of electronic devices may be used with the techniques described herein. For example, a smart phone may use the techniques described herein to connect to a laptop computer. Additionally, the techniques optionally supplement or replace other techniques for connecting electronic devices.
[0005] Some techniques for initially setting up an accessory having a controller are described herein. Such techniques cause a setup component of the controller to establish a relationship with the accessory and facilitate the establishment of a relationship between the controller and an application of the accessory. In some examples, the setup component causes accessory management credentials to be provisioned on the accessory such that the accessory can be configured by the setup component to establish a relationship with an application that communicates with the setup component. In some examples, this communication between the application and the accessory occurs without further interaction with the setup component.
[0006] Modifications to the techniques described above include using different communication protocols for communication with or from a setup component as compared to communication with or from an application. In some examples, this modification provides different levels of security and / or privacy based on the different communication protocols used.
[0007] Another modification to such technology includes making the settings component act as a bridge for the application such that all or most communication from the application to the accessory occurs through the settings component. In some examples, this another modification allows the application to control the accessory regardless of whether the application is configured to communicate using a communication protocol compatible with the accessory.
[0008] In some examples, a method is performed at a settings component of a computer system. In some examples, the method includes: receiving an indication of an accessory, where the accessory is different from the computer system; in response to receiving the indication, transmitting a first credential to the accessory to grant one or more first permissions to the settings component relative to the accessory; and after transmitting the first credential: using the first credential to transmit to the accessory a request to add a second credential to grant one or more second permissions relative to the accessory, where the second credential is different from the first credential; and transmitting settings information of the accessory to an application of the computer system, where the settings information is intended to be used by the application to communicate with the accessory to grant the application the one or more second permissions relative to the accessory, and where the application is different from the settings component.
[0009] In some examples, a non-transitory computer-readable storage medium is described that stores 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: receiving an indication of an accessory, where the accessory is different from the computer system; in response to receiving the indication, transmitting a first credential to the accessory to grant one or more first permissions to a settings component of the computer system relative to the accessory; and after transmitting the first credential: using the first credential to transmit to the accessory a request to add a second credential to grant one or more second permissions relative to the accessory, where the second credential is different from the first credential; and transmitting settings information of the accessory to an application of the computer system, where the settings information is intended to be used by the application to communicate with the accessory to grant the application the one or more second permissions relative to the accessory, and where the application is different from the settings component.
[0010] In some examples, a transient computer-readable storage medium is described that stores 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: receiving an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmitting a first credential to the attachment to grant one or more first permissions to a settings component of the computer system with respect to the attachment; and after transmitting the first credential: using the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmitting the settings information of the attachment to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the one or more second permissions to the application with respect to the attachment, and where the application is different from the settings component.
[0011] In some examples, a computer system is described. In some examples, the computer system includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: receiving an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmitting a first credential to the attachment to grant one or more first permissions to a settings component of the computer system with respect to the attachment; and after transmitting the first credential: using the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmitting the settings information of the attachment to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the one or more second permissions to the application with respect to the attachment, and where the application is different from the settings component.
[0012] In some examples, a computer system is described. In some examples, the computer system includes components for performing each of the following steps: receiving an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmitting a first credential to the attachment to grant one or more first permissions to the computer system's settings component with respect to the attachment; and after transmitting the first credential: using the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmitting the attachment's settings information to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions with respect to the attachment, and where the application is different from the settings component.
[0013] In some examples, a computer program product is described. In some examples, the computer program product includes 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: receiving an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmitting a first credential to the attachment to grant one or more first permissions to the computer system's settings component with respect to the attachment; and after transmitting the first credential: using the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmitting the attachment's settings information to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions with respect to the attachment, and where the application is different from the settings component.
[0014] In some examples, a method is performed at an application of a computer system. In some examples, the method includes: transmitting to the computer system's settings component a request to add an attachment to a first ecosystem, where the settings component is different from the application; after transmitting the request, receiving the attachment's settings information from the settings component; and transmitting to the first attachment a request to add a credential to grant the application one or more first permissions with respect to the first attachment, where the request to add the credential includes at least a portion of the settings information.
[0015] In some examples, a non-transitory computer-readable storage medium is described that stores 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: transmitting a request to a settings component of the computer system to add an attachment to a first ecosystem, where the settings component is different from an application of the computer system; after transmitting the request, receiving settings information for a first attachment from the settings component; and transmitting a request to the first attachment to add credentials to grant one or more first permissions to the application relative to the first attachment, where the request to add the credentials includes at least a portion of the settings information.
[0016] In some examples, a transitory computer-readable storage medium is described that stores 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: transmitting a request to a settings component of the computer system to add an attachment to a first ecosystem, where the settings component is different from an application of the computer system; after transmitting the request, receiving settings information for a first attachment from the settings component; and transmitting a request to the first attachment to add credentials to grant one or more first permissions to the application relative to the first attachment, where the request to add the credentials includes at least a portion of the settings information.
[0017] In some examples, a computer system is described. In some examples, the computer system includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: transmitting a request to a settings component of the computer system to add an attachment to a first ecosystem, where the settings component is different from an application of the computer system; after transmitting the request, receiving settings information for a first attachment from the settings component; and transmitting a request to the first attachment to add credentials to grant one or more first permissions to the application relative to the first attachment, where the request to add the credentials includes at least a portion of the settings information.
[0018] In some examples, a computer system is described. In some examples, the computer system includes components for performing each of the following steps: transmitting a request to add an attachment to a first ecosystem to a settings component of the computer system, where the settings component is different from an application of the computer system; after transmitting the request, receiving settings information of a first attachment from the settings component; and transmitting a request to add credentials to grant one or more first permissions to the application with respect to the first attachment to the first attachment, where the request to add the credentials includes at least a portion of the settings information.
[0019] In some examples, a computer program product is described. In some examples, the computer program product includes 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 the following operations: transmitting a request to add an attachment to a first ecosystem to a settings component of the computer system, where the settings component is different from an application of the computer system; after transmitting the request, receiving settings information of a first attachment from the settings component; and transmitting a request to add credentials to grant one or more first permissions to the application with respect to the first attachment to the first attachment, where the request to add the credentials includes at least a portion of the settings information.
[0020] In some examples, a method is performed at an attachment. In some examples, the method includes: receiving a first credential from a settings component of a computer system to grant one or more first permissions to the settings component with respect to the attachment; after receiving the first credential, receiving a request to add a second credential to grant one or more second permissions to the attachment, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving a request to add the second credential from an application of the computer system to grant the one or more second permissions to the application with respect to the attachment, where the application is different from the settings component.
[0021] In some examples, a non-transitory computer-readable storage medium is described that stores 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 a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the accessory; after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the accessory, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the accessory, where the application is different from the settings component.
[0022] In some examples, a transitory computer-readable storage medium is described that stores 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 a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the accessory; after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the accessory, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the accessory, where the application is different from the settings component.
[0023] In some examples, an accessory is described. In some examples, the accessory includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the accessory; after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the accessory, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the accessory, where the application is different from the settings component.
[0024] In some examples, an attachment is described. In some examples, the attachment includes components for performing each of the following steps: receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the attachment; after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the attachment, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application the one or more second permissions relative to the attachment, where the application is different from the settings component.
[0025] In some examples, a computer program product is described. In some examples, the computer program product includes one or more programs configured to be executed by one or more processors of an attachment. In some examples, the one or more programs include instructions for the following operations: receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the attachment; after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the attachment, where the second credential is different from the first credential; and after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application the one or more second permissions relative to the attachment, where the application is different from the settings component. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] To better understand the various described embodiments, reference should be made to the following detailed description in conjunction with the accompanying drawings, in which like reference numerals indicate corresponding parts in all the drawings.
[0027] Figure 1 is a block diagram illustrating a computing system.
[0028] Figure 2 is a block diagram illustrating a device having an interconnected subsystem.
[0029] Figure 3 is a block diagram illustrating a controller communicating with multiple attachments.
[0030] Figure 4 is a flowchart illustrating a technique for initially setting up an attachment using one or more communication protocols.
[0031] Figure 5A is a flowchart illustrating a technique for initially setting up an attachment using a settings component as a bridge.
[0032] Figure 5B is a flowchart illustrating a technique for communicating with a setup component acting as a bridge.
[0033] Figure 6 is a flowchart illustrating a method for initial setup of an accessory from the perspective of a setup component according to some embodiments.
[0034] Figure 7 is a flowchart illustrating a method for initial setup of an accessory from the perspective of an application according to some embodiments.
[0035] Figure 8 is a flowchart illustrating a method for initial setup of an accessory from the perspective of the accessory according to some embodiments. Detailed Description
[0036] The following description sets forth exemplary techniques, methods, parameters, systems, computer-readable storage media, etc. However, it should be recognized that this description is not intended as a limitation on the scope of the present disclosure. Instead, this description is provided as a description of exemplary embodiments.
[0037] The methods described herein may include one or more steps depending on the satisfaction of one or more conditions. It should be understood that a method may occur in multiple iterations of the same process, where different steps of the method are satisfied in different iterations. For example, if a method requires a first step to be performed when it is determined that a set of one or more criteria are satisfied, and a second step to be performed when it is determined that a set of one or more criteria are not satisfied, then one of ordinary skill in the art will understand that the steps of the method are repeated until both conditions are satisfied in no particular order. Thus, a method described as having steps depending on the satisfaction of conditions may be rewritten as a method that repeats until each of the conditions described in the method are satisfied. However, this is not required for system claims or computer-readable medium claims, where the system claims or computer-readable medium claims include instructions for performing one or more steps that depend on the satisfaction of one or more conditions. Because the instructions for system claims or computer-readable medium claims are stored in one or more processors and / or at one or more memory locations, the system claims or computer-readable medium claims include logic that can determine whether one or more conditions have been satisfied without explicitly repeating the steps of the method until all of the conditions upon which the steps of the method are based have been satisfied. One of ordinary skill in the art will also understand that, similar to a method having steps that depend on circumstances, a system or computer-readable storage medium may repeat the steps of the method as needed to ensure that all of the steps that depend on circumstances have been performed.
[0038] Although the following description uses terms such as "first" and "second" to describe various elements, these elements should not be limited by the terms. In some examples, these terms are used to distinguish individual elements. For example, without departing from the scope of the various described embodiments, the first subsystem may be referred to as the second subsystem, and similarly, a subsystem device may be referred to as a subsystem device. In some examples, the first subsystem and the second subsystem are two separate references to the same subsystem. In some embodiments, both the first subsystem and the second subsystem are subsystems, but they are not the same subsystem or the same type of subsystem.
[0039] The terms used in the description of the various described embodiments herein are for the purpose of describing particular embodiments only and are 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 also be understood that the terms "comprises" and / or "comprising" when used in this specification specify the presence of the 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.
[0040] Depending on the context, the term "if" is optionally interpreted to mean "when", "upon", "in response to determining", "in response to detecting", or "in accordance with determining". Similarly, depending on the context, the phrase "if determined..." or "if [stated condition or event] is detected" is optionally interpreted to mean "when determining...", "in response to determining...", "when [stated condition or event] is detected", "in response to detecting [stated condition or event]", or "in accordance with determining [stated condition or event]".
[0041] Turning to Figure 1 , a block diagram of a computing system 100 is illustrated. Computing system 100 is a non-limiting example of a computing system that can be used to perform the functionality described herein. It should be recognized that other computer architectures of computing systems can be used to perform the functionality described herein.
[0042] In the illustrated example, computing system 100 includes a processor subsystem 110 that communicates (e.g., wired or wirelessly) with a memory 120 (e.g., system memory) and an I / O interface 130 via an interconnect 150 (e.g., a system bus, one or more memory locations, or other communication channels for connecting multiple components of computing system 100). Additionally, the I / O interface 130 communicates (e.g., wired or wirelessly) with an I / O device 140. In some examples, the I / O interface 130 and the I / O device 140 are included together such that the two are a single component. It should be recognized that there may be one or more I / O interfaces, where each I / O interface communicates with one or more I / O devices. In some examples, multiple instances of the processor subsystem 110 may communicate via the interconnect 150.
[0043] The computing system 100 can be any type of device among various types of devices, including but not limited to a system on a chip, a server system, a personal computer system (e.g., a smart phone, a smart watch, a wearable device, a tablet computer, a laptop computer, and / or a desktop computer), a sensor, etc. In some examples, for the purpose of modifying physical components in response to instructions, the computing system 100 is included or communicates with the physical components. In some examples, the computing system 100 receives instructions for modifying the physical components, and in response to the instructions, causes the physical components to be modified. In some examples, the physical components are modified via an actuator, an electrical signal, and / or an algorithm. Examples of such physical components include an acceleration control, a brake, a gearbox, 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 the physical environment near (e.g., around) the sensor. In some examples, the hardware components of the sensor include a sensing component (e.g., an image sensor or a temperature sensor), a transmitting component (e.g., a laser or a radio transmitter), a receiving component (e.g., a laser or a 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 sediment sensor, a pressure sensor, a proximity sensor, a radio detection and ranging system, a radiation sensor, a speed sensor (e.g., measuring the speed of an object), a temperature sensor, a time-of-flight sensor, a torque sensor, and an ultrasonic sensor. In some examples, the 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 in Figure 1 a single computing system is shown, the computing system 100 can also be implemented as two or more computing systems operating together.
[0044] In some examples, the processor subsystem 110 includes one or more processors or processing units configured to execute program instructions to perform the functionality described herein. For example, the processor subsystem 110 can execute an operating system, a middleware system, one or more applications, or any combination thereof.
[0045] In some examples, an operating system manages the resources of computing 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 programs, sets of instructions, software components, and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and for facilitating communication between various hardware and software components. In some examples, the operating system uses a priority-based scheduler that assigns priorities to different tasks that the processor subsystem 110 can execute. In such examples, the priority assigned to a task is used to identify the next task to be executed. In some examples, the priority-based scheduler identifies the next task to be executed when a previous task has finished execution. In some examples, the highest-priority task runs to completion unless another higher-priority task is ready.
[0046] In some examples, a middleware system provides one or more services and / or capabilities to applications (e.g., one or more applications running on processor subsystem 110) that are outside of what the operating system provides (e.g., data management, application services, messaging, authentication, API management, etc.). In some examples, the middleware system is designed for a heterogeneous computer cluster to provide hardware abstraction, low-level device control, implementation of common functionality, messaging 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 uses a graph architecture to represent processes and / or operations, where processing occurs in nodes that can receive, publish, and reuse sensor data messages, control messages, status 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.
[0047] In some examples, a publish-subscribe model is used to perform the transfer of messages from a first node in a graph architecture to a second node in the graph architecture, where the first node publishes data on a channel to which the second node can subscribe. In such examples, the first node may store the data in a memory (e.g., memory 120 or some local memory of the 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 transmitting a pointer (e.g., a memory pointer, such as an identification of a memory location) to the second node, such that the second node can access the data from the location where the first node stored the data. In some examples, the first node will directly transmit the data to the second node, such that the second node will not need to access the memory based on the data received from the first node.
[0048] Memory 120 may include a computer-readable medium (e.g., a non-transitory or transitory computer-readable medium) that can be used to store (e.g., is configured to store, is assigned to store, and / or stores) program instructions executable by the processor subsystem 110 to cause the computing system 100 to perform the various operations described herein. For example, memory 120 may store program instructions for implementing the functionality associated with methods 800, 900, 1000, 11000, 12000, 1300, 1400, and 1500 described below.
[0049] Memory 120 can be implemented using different physical non-transitory memory media such as hard disk storage devices, floppy disk storage devices, removable disk storage devices, flash memory, random access memory (RAM - SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, etc.), read-only memory (PROM, EEPROM, etc.), and the like. The memory in the computing system 100 is not limited to the main storage device such as memory 120. The computing system 100 may also include other forms of storage devices such as cache memory in the processor subsystem 110 and auxiliary storage devices (e.g., hard disk drives, storage arrays, etc.) on the I / O device 140. In some examples, these other forms of storage devices may also store program instructions executable by the processor subsystem 110 to perform the operations described herein. In some examples, the processor subsystem 110 (or each processor within the processor subsystem 110) includes a cache or other form of on-board memory.
[0050] The I / O interface 130 can be any one of various types of interfaces configured to communicate with other devices. In some examples, the I / O interface 130 includes a bridge chip (e.g., a south bridge) from a front-side bus to one or more back-side buses. The I / O interface 130 can communicate with one or more I / O devices (e.g., the I / O device 140) via one or more corresponding buses or other interfaces. Examples of I / O devices include storage devices (hard disk drives, optical disk drives, removable flash drives, storage arrays, SANs, or their associated controllers), network interface devices (e.g., to a local area network or a wide area network), sensor devices (e.g., cameras, radars, lidars, ultrasonic sensors, GPS, inertial measurement devices, etc.), and auditory or visual output devices (e.g., speakers, lights, screens, projectors, etc.). In some examples, the computer system 100 communicates with a network via a network interface device (e.g., configured to communicate via Wi-Fi, Bluetooth, Ethernet, etc.). In some examples, the computing system 100 is directly or wired-connected to a network.
[0051] Figure 2 A block diagram of a device 200 having an interconnection subsystem is illustrated. In the illustrated example, the device 200 includes three different subsystems (i.e., a first subsystem 210, a second subsystem 220, and a third subsystem 230) that communicate with each other (e.g., wired or wirelessly) to create a network (e.g., a personal area network, a local area network, a wireless local area network, a metropolitan area network, a wide area network, a storage area network, a virtual private network, a corporate intranet, a campus area network, a system area network, and / or a controller area network). In Figure 1 (i.e., the computing system 100) an example of a possible computer architecture of the subsystems included in Figure 2 is described. Although three subsystems are shown in Figure 2 , the device 200 can include more or fewer subsystems.
[0052] In some examples, some subsystems are not connected to other subsystems (e.g., the first subsystem 210 can be connected to the second subsystem 220 and the third subsystem 230, but the second subsystem 220 cannot be connected to the third subsystem 230). In some examples, some subsystems are connected via one or more wires, while other subsystems are connected wirelessly. In some examples, messages are set between the first subsystem 210, the second subsystem 220, and the third subsystem 230 such that when a corresponding subsystem transmits a message, other subsystems (e.g., via wires and / or buses) receive the message. In some examples, one or more subsystems are wirelessly connected to one or more computing systems external to the device 200, such as server systems. In such examples, the subsystems can be configured to wirelessly communicate with one or more computing systems external to the device 200.
[0053] In some examples, the device 200 includes a housing that completely or partially encloses the subsystems 210 to 230. Examples of the device 200 include household appliances (e.g., a refrigerator or an air conditioning system), robots (e.g., a robotic arm or a robotic vacuum cleaner), and vehicles. In some examples, the device 200 is configured to navigate in a physical environment (with or without user input).
[0054] In some examples, one or more subsystems of the device 200 are used to control, manage, and / or receive data from one or more other subsystems of the device 200 and / or one or more computing systems remote from the device 200. For example, the first subsystem 210 and the second subsystem 220 can each be a camera that captures images, and the third subsystem 230 can use the captured images for decision-making. In some examples, at least a portion of the device 200 serves as a distributed computing system. For example, a task can be split into different parts, where the first part is executed by the first subsystem 210 and the second part is executed by the second subsystem 220.
[0055] Attention is now directed to techniques for setting up an electronic device. Such techniques are described in the context of the application of a controller connected to an accessory. It should be recognized that other types of electronic devices can be used with the techniques described herein. For example, an accessory can use the techniques described herein to connect to another accessory. Additionally, the techniques optionally supplement or replace other techniques for connecting devices.
[0056] Figure 3FIG. is a block diagram of a controller (e.g., controller 300) that communicates with multiple attachments (e.g., first attachment 340 and second attachment 350). Controller 300 is a non-limiting example of a controller that can be used to perform the functionality described herein. It should be recognized that other computer architectures of the controller can be used to perform the functionality described herein. In some examples, controller 300 includes one or more features described above with respect to computing system 100 and / or device 200. In some examples, controller 300 is computing system 100 and / or device 200. In some examples, one or more features described with respect to controller 300 can be combined with, replaced by, and / or substituted for one or more features described with respect to computing system 100 and / or device 200. In some examples, controller 300 is a mobile device, a personal computing device, a multi-user speaker (e.g., including a microphone), a single-user speaker (e.g., including a microphone), a fitness tracking device (e.g., a smartwatch and / or a heart rate monitor), and / or a head-mounted display device.
[0057] As Figure 3 shown, controller 300 includes operating system 310, first application 320, and second application 330. In other words, operating system 310, first application 320, and second application 330 are installed on controller 300. In some examples, first application 320 and / or second application 330 communicate with controller 300 but are not installed on the controller (e.g., first application 320 and / or second application 330 are installed on a remote device that communicates with controller 300). In some examples, operating system 310 manages the resources of controller 300 and can be one or more operating systems as described above with respect to the operating system of computing system 100. For example, operating system 310 can be a LINUX, iOS, or Windows operating system. In some examples, operating system 310 is an operating system for a mobile device, such as an operating system for a tablet and / or a mobile phone. In some examples, operating system 310 includes one or more operations that control a graphical user interface.
[0058] As Figure 3As shown, the operating system 310 includes a settings component 312. The settings component 312 is configured to communicate with one or more different accessories, such as a first accessory 340 and a second accessory 350. In some examples, the settings component 312 may configure the accessories to communicate with the settings component 312 and / or another software component of the controller 300, such as a first application 320 or a second application 330. In some examples, all or most of the communication between the controller 310 and the accessories is routed through the settings component 312. In some examples, the first application 320 and the second application 330 do not communicate directly with the accessories, but instead transmit communications to the settings component 312 so that the settings component 312 communicates with the accessories on behalf of the first application 320 and the second application. In some examples, the settings component 312 includes one or more instructions for performing one or more settings operations. In some examples, one or more settings operations include operations that are performed to (or that allow the accessories to be configured to) communicate with the controller 300 (and / or other controllers) and / or a computer system (e.g., having one or more features of the computing system 100 and / or the device 200). In some examples, the settings component 312 includes operations for transmitting and / or receiving one or more identifiers for registering and / or controlling accessories such as the first accessory 340 and the second accessory 350. In some examples, the settings component 312 is an application separate from the operating system 310. In some examples, whether or not the settings component 312 is part of the operating system 310, one or more of the first application 320 and the second application 330 is part of the operating system 310. In some examples, the controller includes one or more applications in addition to the first application 320 and the second application 330.
[0059] In Figure 3Here, the first application 320 and the second application 330 are different applications. In some examples, the first application 320 and the second application 330 correspond to different ecosystems. In some examples, the ecosystem is a smart home ecosystem, a smart office ecosystem, a smart manufacturing ecosystem, and / or a smart company ecosystem. In some examples, one or more accessories can be registered with (and / or controlled within) the ecosystem. Thus, in some examples, the first application 320 and the second application 330 are configured to communicate with one or more accessories. In some examples, the one or more accessories that the first application 320 is configured to communicate with are different from the one or more accessories that the second application 330 is configured to communicate with. In some examples, the first application 320 and the second application 330 communicate with the accessories by transmitting one or more commands (e.g., instructions and / or requests for control) for changing the state of the accessories and / or receiving information about the state of the accessories. In some examples, changing the state of the accessory includes changing the settings of the accessory, turning off the settings, and / or turning on the settings. In some examples, when the corresponding application is configured to communicate with the accessory, the corresponding application receives data about the state of the accessory, such as a value associated with the accessory (e.g., the brightness value of a light, the temperature value of a thermostat, the remaining battery level value, the overheat value, and / or the fan speed of a ceiling fan) or whether the accessory is on or off. In some examples, the corresponding application receives historical data about the accessory. It should be understood that the first application 320 and the second application 330 can be other types of applications, such as applications corresponding to a specific type of accessory and / or manufacturer (e.g., an application for controlling a light bulb), applications corresponding to multiple different ecosystems (e.g., an application corresponding to multiple different smart home ecosystems including Apple Home and Google Home), and / or any other type of application (e.g., a map application, a music application, and / or a communication application).
[0060] In some examples, the communication between the settings component 312 and an application (e.g., the first application 320 and / or the second application 330) is communication within a single computer system, while the communication between one or more components of the controller 300 (e.g., the operating system 310, the settings component 312, the first application 320, and / or the second application 330) and the first accessory 340 and the second accessory 350 is communication between different computer systems. Such communication between different computer systems can be wired communication and / or wireless communication. In some examples, the settings component 312 (or another component of the controller 300) communicates with the first accessory 340 via a communication method such as Bluetooth, Zigbee, near field communication, WiFi, LiFi, 5G, or any other wireless communication technology. In some examples, the settings component 312 (or another component of the controller 300) communicates with the first accessory 340 via one communication method and communicates with the second accessory 350 via another communication method.
[0061] In Figure 3 , the first accessory 340 and the second accessory 350 are different accessory devices. Examples of accessories include air conditioners, air purifiers, bridges, cameras, doorbells, fans, faucets, garage doors, humidifiers, lights, locks, sockets, receivers, routers, security systems, sensors, speakers, sprinklers, switches, thermostats, TVs, and / or windows. In some examples, the first accessory 340 and / or the second accessory 350 is a computer system that operates autonomously and / or in response to user input. In some examples, the first accessory 340 and / or the second accessory 350 autonomously performs one or more operations scheduled by the user within a time interval, performs one or more operations due to the satisfaction of one or more conditions (e.g., a threshold level of light and / or a threshold level of sound in the environment), and / or performs one or more operations in response to user input. In some of these examples, the user input is directed to the physical accessory or an application configured to control the accessory, such as the first application 320, the second application 330, and / or another application. In some examples, the controller communicates with one or more accessories other than the first accessory 340 and the second accessory 350.
[0062] Figure 4 is a flowchart illustrating techniques for initially setting up an accessory 406 using one or more communication protocols. The flowchart includes three different entities that perform operations: an application 402, a settings component 404, and an accessory 406. Figure 4 Some of the operations in the flowchart of
[0063] In some examples, application 402 includes one or more features described above with respect to the first application 320 and / or the second application 330. In some examples, provisioning component 404 includes one or more features described above with respect to provisioning component 312. In some examples, application 402 and provisioning component 404 are included in a controller, and the controller includes one or more features described above with respect to controller 300. In some examples, accessory 406 includes one or more features described above with respect to the first accessory 340 and / or the second accessory 350.
[0064] Figure 4 There will be two traversals: the first illustrates an example using a single communication protocol, and the second illustrates an example using multiple communication protocols.
[0065] At 408, when using a single communication protocol, application 402 transmits a request to provisioning component 404 to add an accessory. In some examples, the request is to add a non-specific (e.g., generic) accessory to an ecosystem corresponding to application 402 (e.g., a smart home ecosystem and / or a smart office ecosystem). In other examples, the request is to add a specific accessory (e.g., accessory 406) to an ecosystem corresponding to application 402. In some examples, the request includes an indication of which ecosystem to add the accessory to.
[0066] In some examples, the request to add an accessory is transmitted in response to detecting user input. In some examples, application 402 detects a selection of a user interface object displayed by application 402, and in response to detecting the selection, causes the request to be transmitted to provisioning component 404. In some examples, application 402 causes a camera application to be displayed, where the camera application can be used to capture an image of a pattern (e.g., a QR code or a light). In some examples, the captured image of the pattern is used to transmit the request to add an accessory. In other examples, the request at 408 when using a single communication protocol is transmitted in response to one or more determinations made by application 402, such as determining that the accessory is within a predetermined distance (e.g., 1 meter to 20 meters) of the controller on which application 402 is installed and / or determining that the accessory is connected to the same communication network as the controller on which application 402 is installed. In such examples, application 402 proactively transmits the request in response to one or more determinations.
[0067] At 410, when using a single communication protocol, the setup component 404 identifies the attachment 406 for setup. In some examples, such identification is performed in response to receiving a request at 408 when using a single communication protocol. For example, the request can include an identifier of the attachment 406 and / or initiate a process for the setup component 404 to identify the attachment 406. In some examples, the process for the setup component to identify the attachment 406 (1) requests the user to input a manual code corresponding to the attachment 406, (2) causes the controller to display a camera application that can capture an image of a pattern (e.g., a QR code, a light pattern, or any other visual pattern) corresponding to the attachment 406, and / or (3) discovers the attachment 406 by monitoring wired and / or wireless communication (e.g., Bluetooth, WiFi, NFC, UWB, probes, beacons, or any other type of communication that will alert the setup component 404 of the attachment 406). In some examples, using any of the techniques described above, such identification of the attachment 406 occurs before receiving the request at 408 (e.g., the identification is performed by the setup component 404 in advance).
[0068] At 412, when using a single communication protocol, a setup session (e.g., a secure session or an insecure session) is established between the setup component 404 and the attachment 406. In some examples, the setup session is established by the setup component 404; in other examples, the setup session is established by the attachment 406.
[0069] In some examples, establishing the setup session requires multiple communications to be exchanged between the setup component 404 and the attachment 406, such as communications for configuring the setup session and / or ensuring the security of the setup session. In some examples, the setup session is established based on the communication protocol supported by the attachment 406. For example, the advertisement received by the setup component 404 when identifying the attachment 406 and / or when establishing the setup session can indicate the specific communication protocol to be used for the subsequent setup session.
[0070] In some examples, establishing the setup session includes establishing a communication channel between the setup component 404 and the attachment 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 setup session is a pairing session for establishing a pairing between the setup component 404 and the attachment 406 (e.g., to register information (e.g., device information) on each side of the pair to enable easy connection).
[0071] At 414, when using a single communication protocol, the setup component 404 and / or the accessory 406 determines that the other is authentic. For example, the setup component 404 may determine that the accessory 406 is the type of accessory protected by the accessory 406 (e.g., by a signature or other credentials provided to the setup component 404 by the accessory 406, by data provided to the setup component 404 by a different device (e.g., a server associated with the setup component 404 or the accessory 406), and / or by receiving an input corresponding to a confirmation that the accessory 406 is authentic (e.g., a user input such as a selection of a user interface element)). For another example, the accessory 406 may determine that the setup component 404 is permitted to connect to the accessory 406 (e.g., by a signature or other credentials provided to the accessory 406 by the setup component 404, by data provided to the accessory 406 by a different device (e.g., a server associated with the setup component 404 or the accessory 406), and / or by receiving an input corresponding to a confirmation that the setup component 404 is authentic (e.g., a user input such as pressing a physical button of the accessory 406)).
[0072] At 416, when using a single communication protocol, the setup component 404 transmits network credentials to the accessory 406. In some examples, the network credentials correspond to the network to which the controller is connected (e.g., a WiFi network or a Thread network). In such examples, the network credentials are transmitted to the accessory 406 such that the accessory 406 can connect to the network. It should be appreciated that the network credentials may also be the network credentials of a network intended to be used only by the setup component 404 and the accessory 406 or any accessory communicating with the setup component 404.
[0073] At 418, when using a single communication protocol, the setup component 404 provisions credentials (sometimes referred to as accessory management credentials) on the accessory 406 such that the setup component 404 can manage, configure, and / or control the accessory 406. Examples of credentials include long-term keys, ecosystem credentials, certificates (e.g., root, intermediate, or other types of certificates), and administrator credentials. In some examples, the credentials are specific to a user (e.g., a user account), an ecosystem, and / or a computer system (e.g., a controller). In some examples, the credentials are added to the accessory 406 using a setup code received in the request at 408 or the communication at 410. In such examples, the setup code is not generated by the setup component 404 but is provided to the setup component 404 corresponding to the accessory 406. In some examples, the setup code is used to establish a two-way secure channel for mutual authentication between the setup component 404 and the accessory 406. Through the secure channel, the credentials (e.g., accessory management credentials) are provisioned. In some examples, the setup component 404 uses the credentials to create a secure session for other (e.g., further) communication with the accessory 406.
[0074] In some examples, a provisioning credential creation attachment 406 is established or added to the management ecosystem. In some examples, the management ecosystem is configured as a lightweight ecosystem with limited permissions and / or authorities with respect to the attachment 406. For example, the lightweight ecosystem may allow the setup component 404 to add additional ecosystems but not control the attachment 406. For another example, the lightweight ecosystem may restrict the resources of the attachment 406 used with respect to that lightweight ecosystem. In such an example, compared to different types of ecosystems, the restricted resources result in a smaller memory allowed for storing code related to the lightweight ecosystem, a smaller memory available for performing operations corresponding to the lightweight ecosystem, and / or a lower priority when performing operations corresponding to the lightweight ecosystem. In other examples, the management ecosystem is configured as an enhanced ecosystem (e.g., a full ecosystem) compared to the lightweight ecosystem, the enhanced ecosystem having an enhanced set of permissions and / or authorities with respect to the attachment 406 (e.g., a full set of permissions and / or authorities). For example, the enhanced ecosystem may allow the setup component 404 to add additional ecosystems and / or control the attachment 406. In some examples, the management ecosystem is different from the ecosystem described above with respect to 408. Specifically, the management ecosystem is the ecosystem established first for the attachment 406, and other ecosystems (e.g., the ecosystem mentioned with respect to 408 when using a single communication protocol) use the management ecosystem to be added.
[0075] At 420, when using a single communication protocol, the setup component 404 transmits a request to add a controller (such as a new computer system, new ecosystem, and / or new administrator for configuring and / or controlling the attachment 406, each of which includes a different set of permissions) to the attachment 406. In some examples, the request to add a controller includes a secret generated by the application 402 or the setup component 404. In such examples, the secret is used by a component (e.g., by the application 402 or the setup component 404, including by the application 402 when generated by the setup component 404) to identify itself when adding credentials to the attachment 406. For example, the secret can be a piece of data known only to devices, computer systems, and / or components in the new ecosystem (e.g., devices, computer systems, and / or components participating in secure communication, such as the application 402 and the attachment 406). In some examples, the secret is provided by the application 402 to the setup component 404. In such examples, the secret can be encrypted in such a way that the setup component 404 cannot identify the secret but the attachment 406 can identify the secret when receiving the encrypted secret from the setup component 404. An example of a secret generated by the setup component 404 is the setup code as described above. In some examples, the secret is used to establish a two-way secure channel for mutual authentication between a component (e.g., the application 402 or the setup component 404) and the attachment 406. Through the secure channel, provisioning credentials (e.g., attachment management credentials or controller credentials as described herein) are established. In some examples, the application 402 or the setup component 404 uses the credentials to create a secure session for other (e.g., further) communication with the attachment 406.
[0076] At 422, when using a single communication protocol, the setup component 404 transmits setup information to the application 402, where the setup information corresponds to the attachment 406. In some examples, the setup information includes an identifier and / or address of the attachment 406 (e.g., the IP address, MAC address, name, and / or any other identification information of the attachment 406) and / or a secret generated by the setup component 404 and transmitted to the attachment 406. In such examples, the setup information is used by the application 402 to communicate with the attachment 406.
[0077] At 424, when using a single communication protocol, a setup session (e.g., a secure session or an unsecured session) is established between the application 402 and the attachment 406. The setup session can be established by the application 402 or the attachment 406. In some examples, the setup session is established through multiple communications between the application 402 and the attachment 406 (such as communications for configuring the setup session and / or ensuring the security of the setup session). In some examples, the setup session is a communication channel between the application 402 and the attachment 406. The communication channel can use any wireless communication technology, such as Bluetooth, Zigbee, near field communication, WiFi, LiFi, or 5G.
[0078] At 426, when using a single communication protocol, the application 402 provisions credentials (e.g., controller credentials) on the accessory 406 such that the application 402 can configure and / or control the accessory 406. Examples of controller credentials include the same examples described above for accessory management credentials. In some examples, the controller credentials have the same level of privilege as the accessory management credentials. In some examples, provisioning the credentials creates the accessory 406 or adds the accessory to a different ecosystem than described above with respect to the setup component 404. In such examples, the ecosystem of the application 402 can be configured as an enhanced ecosystem with enhanced permissions and / or privileges with respect to the accessory 406. For example, the enhanced ecosystem allows the application 402 to add additional ecosystems and / or control the accessory 406. In such an example, the enhanced ecosystem can be permitted to consume more bandwidth of the accessory 406 and / or use more resources (e.g., short-term and / or long-term memory) compared to a lightweight ecosystem.
[0079] At 428, when using a single communication protocol, the application 402 transmits commands (e.g., instructions and / or requests for control) to the accessory 406. In some examples, the commands are to change the state of the accessory 406 and / or receive information about the state of the accessory 406. Examples of changing the state of the accessory 406 include changing the settings of the accessory 406, turning off the settings, turning off the accessory 406, turning on the settings, and / or turning on the accessory 406. In some examples, the commands are transmitted based on the communication protocol used by the application 402 to communicate with the accessory 406 using the credentials provisioned at 426 when using a single communication protocol. In some examples, the commands are not transmitted through the setup component 404 but instead are transmitted directly from the application 402 to the accessory 406.
[0080] At 430, when using a single communication protocol, the accessory 402 attempts to execute the commands received at 428. At 432, when using a single communication protocol, the accessory 402 transmits a response to the attempt to execute the commands. In some examples, the response indicates whether the commands have been successfully executed. In some examples, the response is transmitted based on the communication protocol used by the application 402 to communicate with the accessory 406. In some of these examples, the response is not transmitted through the setup component 404 but instead is transmitted directly from the accessory 406 to the application 402.
[0081] In some examples, application 402 receives data regarding the status of accessory 406, such as a value associated with accessory 406 (e.g., a brightness value of a light, a temperature value of a thermostat, a remaining power value, an overheat value, and / or a fan speed of a ceiling fan) or whether accessory 406 is on or off. In some of these examples, such data is transmitted from accessory 406 to application 402 based on a trigger event occurring on accessory 406 and without a request for such data from application 402. Examples of trigger events include a temperature value reaching a threshold, a remaining power value reaching a threshold, and an error occurring.
[0082] As described above, assume multiple communication protocols, Figure 4 which will be traversed a second time below. For example, accessory 406 supports multiple communication protocols, uses a first communication protocol to communicate with setup component 404, and uses a second communication protocol different from the first communication protocol to communicate with application 402.
[0083] At 408, when using multiple communication protocols, application 402 transmits a request to add an accessory to setup component 404. In some examples, the details of 408 when using multiple communication protocols are the same as the details described above with respect to 408 when using a single communication protocol.
[0084] At 410, when using multiple communication protocols, setup component 404 identifies accessory 406 for setup. In some examples, the details of 410 when using multiple communication protocols are similar to the details of 410 described above when using a single communication protocol, except that setup component 404 identifies the communication protocols supported by accessory 406. Such identification allows setup component 404 to select a communication protocol to use when communicating with accessory 406. In some examples, the communication protocol used by setup component 404 is different from the communication protocol used by application 402 to communicate with accessory 406. Different communication protocols can have different levels of security and / or privacy. Thus, in some examples, the communication transmitted or received by setup component 404 is transmitted via a communication protocol having a specific level of security and / or privacy required by setup component 404. In some examples, setup component 404 supports a first communication protocol not used by application 402 to communicate with accessory 406 and a second communication protocol used by application 402 to communicate with accessory 406. In some examples, setup component 404 can use the first communication protocol when communicating with accessory 406 instead of forcing setup component 404 to use the second communication protocol when communicating with accessory 406. In some examples, the user of the controller selects which communication protocol is used by setup component 404.
[0085] At 412, when multiple communication protocols are used, a setup session (e.g., a secure session or an unsecured session) is established between the setup component 404 and the accessory 406. In some examples, the details of 412 when using multiple communication protocols are similar to the details of 412 when using a single communication protocol described above, except that the communication protocol selected in 410 when using multiple communication protocols is used for the setup session. Similarly, in some examples, the details of 414 and 416 when using multiple communication protocols are similar to the details of 414 and 416 when using a single communication protocol described above, respectively, except that the communication protocol selected in 410 when using multiple communication protocols is used.
[0086] At 418, when multiple communication protocols are used, the setup component 404 provisions credentials (e.g., accessory management credentials) on the accessory 406 such that the setup component 404 can manage, configure, and / or control the accessory 406. In some examples, the details of 418 when using multiple communication protocols are similar to the details of 418 when using a single communication protocol described above, except that the communication protocol selected in 410 when using multiple communication protocols is used to communicate with the accessory 406, as further described below.
[0087] In some examples, a request for provisioning credentials transmitted by the setup component 404 is encapsulated in a message based on the communication protocol selected in 410 when using multiple communication protocols, where the request is based on the communication protocol used by the application 402 to communicate with the accessory 406. In other words, the transmission of the request uses the communication protocol selected in 410 when using multiple communication protocols, and the payload received by the accessory 406 uses the communication protocol used by the application 402.
[0088] In other examples, a request for provisioning credentials transmitted by the setup component 404 is based on the communication protocol selected in 410 when using multiple communication protocols such that the credentials are provisioned using that communication protocol and then communication related to the application 402 (e.g., 420 described below) uses at least in part the communication protocol used by the application 402.
[0089] At 420, when using multiple communication protocols, the settings component 404 transmits a request to the attachment 406 to add a controller (such as a new computer system, a new ecosystem, and / or a new administrator for configuring and / or controlling the attachment 406, each of which includes a different set of permissions). In some examples, the details of 418 when using multiple communication protocols are the same as the details of 418 when using the single communication protocol described above, including the communication protocol used by the application 402 being used at 420 to convey the request when using multiple communication protocols. In other examples, the details of 418 when using multiple communication protocols are similar to the details of 418 when using the single communication protocol described above, except that the communication protocol selected in 410 when using multiple communication protocols is used to communicate with the attachment 406. For example, the request to add a controller is encapsulated in a message based on the communication protocol selected in 410 when using multiple communication protocols, where the request is based on the communication protocol used by the application 402 to communicate with the attachment 406. In other words, the transmission of the request uses the communication protocol selected in 410 when using multiple communication protocols, and the payload received by the attachment 406 uses the communication protocol used by the application 402.
[0090] In some examples, Figure 4 the details of the remainder of the operation when using multiple communication protocols are the same as the details described above when using a single communication protocol with respect to Figure 4 For example, the details of 422, 424, 426, 428, 430, and 432 when using multiple communication protocols can be the same as the details described above for 422, 424, 426, 428, 430, and 432 when using a single communication protocol.
[0091] Figure 5A is a flowchart illustrating a technique for initially setting up the attachment 406 using the settings component 406 as a bridge. In some examples, the settings component 404 acts as a bridge because the application 402 (1) is not configured to communicate using the communication protocol supported by the attachment 406 and / or (2) is not permitted by the computer system (e.g., a controller, such as the controller 300) that includes the application 402. Instead, the application 402 communicates with the settings component 404 such that the settings component 404 communicates with the attachment 406 on behalf of the application 402. Figure 5A Some of the operations in the flowchart of
[0092] are optionally combined, performed by different entities, reordered, and / or omitted. Figure 4 Similar to Figure 5A the application 402 of Figure 5AThe setting component 404 includes one or more features described above with respect to the setting component 312, Figure 5A the application 402 and Figure 5A the setting component 404 of is included in the controller, and the controller includes one or more features described above with respect to the controller 300, and Figure 5A the attachment 406 of includes one or more features described above with respect to the first attachment 340 and / or the second attachment 350.
[0093] In some examples, the details of 508, 510, 512, 514, 516, and 518 are the same as the details described above with respect to 408, 410, 412, 414, 416, and 418, respectively.
[0094] At 520, the setting component 404 activates a bridge (sometimes referred to as an adapter) to facilitate (e.g., translate) communication from the application 402 to the attachment 406. In some examples, the bridge uses attachment management credentials to communicate with the attachment 406 on behalf of the application 402. In such examples, 524 and 526 may be omitted, and the application 402 communicates with the setting component 404 as if the setting component 404 were the attachment 406. In other examples, the bridge adds new credentials on behalf of the application 402 and uses the new credentials to communicate with the attachment 406, as described below.
[0095] At 522, the setting component 404 conveys setting information to the application 402. At 522, the setting information corresponds to the setting component 404 (e.g., rather than the attachment 406 as described above with respect to Figure 4 ). In some examples, the setting information includes an identifier and / or address of the setting component 404, a secret (e.g., a setting code) generated by the setting component 404 (e.g., the secret generated by the setting component 404 at 420), and / or information regarding how to communicate with the setting component 404 using a communication protocol supported by the application 402. In such examples, the setting information is used by the application 402 to communicate with the attachment 406 via the setting component 404.
[0096] At 524, a setting session (e.g., a secure session or an insecure session) is established between the application 402 and the setting component 404. The setting session may be established by the application 402 or the setting component 404. In some examples, the setting session is established through multiple communications between the application 402 and the setting component 404 (such as communications for configuring the setting session and / or securing the setting session). In some examples, the setting session is a communication channel between the application 402 and the setting component 404.
[0097] In some examples, establishing a setup session between the application 402 and the setup component 404 causes the setup component 404 to establish another setup session between the setup component 404 and the attachment 406. Other setup sessions may be established by the setup component 404 or the attachment 406. In some examples, other setup sessions are established through multiple communications between the setup component 404 and the attachment 406, such as communications for configuring the setup session and / or ensuring the security of the setup session. In some examples, the setup session is a communication channel between the setup component 404 and the attachment 406. The communication channel may use any wireless communication technology, such as Bluetooth, Zigbee, Near Field Communication, WiFi, LiFi, or 5G.
[0098] At 526, the application 402 provisions credentials (e.g., controller credentials) on the attachment 406 via the setup component 404 such that the application 402 can configure and / or control the attachment 406 via the setup component 404. Examples of credentials include the same examples as the attachment management credentials described above. In some examples, provisioning the credentials via the setup component 404 includes: the application 402 transmitting a request for provisioning the credentials to the setup component 404, and then the setup component 404 provisions the credentials on the attachment 406, similar to the operations described above with respect to provisioning the attachment management credentials.
[0099] In some examples, provisioning the credentials creates the attachment 406 or adds the attachment to a different ecosystem than that described above with respect to the setup component 404 at 518. In such examples, the ecosystem of the application 402 may be configured as an enhanced ecosystem with enhanced permissions and / or rights with respect to the attachment 406. For example, the enhanced ecosystem may allow the application 402 to add additional ecosystems and / or control the attachment 406. In such an example, the enhanced ecosystem may be permitted to consume more bandwidth and / or use more resources (e.g., short-term and / or long-term memory) of the attachment 406 compared to a lightweight ecosystem.
[0100] Figure 5B is a flowchart illustrating techniques for communicating with a setup component 406 acting as a bridge. In some examples, Figure 5B is Figure 5A a continuation of. In some examples, the setup component 404 acts as a bridge because the application 402 (1) is not configured to communicate using the communication protocol supported by the attachment 406 and / or (2) is not permitted by the computer system (e.g., controller, such as controller 300) including the application 402. Instead, the application 402 communicates with the setup component 404 such that the setup component 404 communicates with the attachment 406 on behalf of the application 402. Figure 5B Some operations in the flowchart of are optionally combined, performed by different entities, reordered, and / or omitted.
[0101] At 528, application 402 transmits a command (e.g., an instruction and / or request for control) to settings component 404 for transmission to attachment 406. In some examples, the command is to change the state of attachment 406 and / or receive information about the state of attachment 406. Examples of changing the state of attachment 406 include changing the settings of the attachment, turning off the settings, and / or turning on the settings. In some examples, the command is transmitted based on the communication protocol used by application 402 to communicate with settings component 404.
[0102] At 530, settings component 404 transmits the command to attachment 406 using credentials provisioned by settings component 404 (e.g., credentials provisioned at 518 or 526). In some examples, settings component 404 transforms the command according to the communication protocol used by settings component 404 to communicate with attachment 406 and then transmits the transformed command to attachment 406.
[0103] At 532, attachment 402 attempts to execute the command received at 530. At 534, attachment 402 transmits a response to the attempt to execute the command. In some examples, the response indicates whether the command has been successfully executed. In some examples, the response is transmitted based on the communication protocol used by attachment 406 to communicate with settings component 404.
[0104] At 536, settings component 404 transmits the response to application 402. In some examples, settings component 404 transforms the response according to the communication protocol used by settings component 404 to communicate with application 402 and transmits the transformed command to application 402.
[0105] At 538, attachment 406 determines that an event that needs to notify application 402 has occurred. For example, a light can be turned off or the amount of remaining power can reach a threshold.
[0106] At 540, attachment 406 transmits an event notification to settings component 404. In some examples, the event notification is transmitted based on the communication protocol used by attachment 406 to communicate with settings component 404.
[0107] At 542, settings component 404 transmits the event notification to application 402. In some examples, settings component 404 transforms the event notification according to the communication protocol used by settings component 404 to communicate with application 402 and then transmits the transformed event notification to application 402.
[0108] Figure 6FIG. 6 is a flow chart illustrating a method for initial setup of an accessory from the perspective of a setup component according to some embodiments. Method 600 is performed at a setup component (e.g., 312, 404) (e.g., an operating system component or an application different from the operating system) of a computer system (e.g., 100, 200, 300). In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (HMD) device, and / or a personal computing device.
[0109] At 610, the setup component receives an indication (e.g., an identifier and / or address of the accessory) (e.g., 408, 410) of an accessory (e.g., 340, 350, 406), 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, a socket, 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.
[0110] In response to receiving the indication, at 620, the setup component transmits a first credential (e.g., an accessory management credential such as a certificate and / or identifier corresponding to the setup component) to the accessory (e.g., via a communication channel (e.g., 412) established between the setup component and the accessory) (e.g., a secure or non-secure communication channel) to grant (e.g., allow, configure, and / or enable) one or more first permissions (e.g., one or more rights, permissions, and / or capabilities) (e.g., establish a first ecosystem and / or manage the accessory) (e.g., 418) with respect to the accessory. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the accessories).
[0111] After transmitting the first credential, at 630, the setup component uses the first credential (e.g., a message transmitted to the accessory may include the first credential and / or an indication of the first credential) to transmit a request to the accessory for adding a second credential to grant one or more second permissions (e.g., one or more second permissions are the same as or different from one or more first permissions (e.g., at least one of the one or more first permissions is a different permission)) (e.g., adding a device for controlling the accessory, a second ecosystem different from the first ecosystem, a credential for controlling the accessory, and / or an administrator different from the setup component), where the second credential is different from the first credential. In some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the accessories).
[0112] At 640, where the first credential is transmitted, the settings component transmits settings information (e.g., 422) of the attachment to an application of the computer system (e.g., 320, 330, 402), where the settings information is intended to be (e.g., can be) used by the application to communicate with the attachment to grant the application one or more second permissions with respect to the attachment, and where the application is different from the settings component. In some examples, the indication is transmitted by the application to the settings component. In some examples, the indication is transmitted by an operating system component of the computer system (e.g., different from the settings component) to the settings component. In some examples, the indication is transmitted by a second application different from the application to the settings component. In some examples, the application communicates with the attachment without going through the settings component. In some examples, the application is an application of an ecosystem that allows a user to control one or more attachments (including, for example, attachments of different types and / or from different manufacturers), an application of an attachment manufacturer that allows a user to control one or more attachments associated with the attachment manufacturer, and / or an application for a specific communication protocol (e.g., the application communicates with an attachment configured for the specific communication protocol according to the specific communication protocol).
[0113] In some examples, one or more first permissions correspond to a first ecosystem rather than a second ecosystem. In some examples, the indication of the attachment is received within a request to add the attachment to the second ecosystem. In some examples, one or more second permissions correspond to a second ecosystem rather than a first ecosystem. In some examples, the first ecosystem is a grouping of one or more attachments and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the attachments). In some examples, the second ecosystem is a grouping of one or more attachments and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the attachments).
[0114] In some examples, the indication of the attachment is determined based on an image captured by a camera communicating with the computer system (e.g., a camera of the computer system (e.g., a telephoto, wide-angle, ultra-wide-angle camera)) (e.g., an image corresponding to a pattern of the attachment (e.g., a QR code or light) and / or data corresponding to an image and / or symbol) (and in some examples, based on a part of the image that does not include text); or received via a communication channel from a device different from the computer system (e.g., a watch, a phone, a tablet computer, a processor, a head-mounted display (HMD) device, an attachment, a component attached to the attachment, a component of the attachment, and / or a personal computing device). In some examples, the communication channel is Bluetooth, Wi-Fi, an Internet protocol communication channel, NFC, or UWB.
[0115] In some examples, the request is received from an application (e.g., before transmitting and / or sending the request).
[0116] In some examples, the setup information includes a setup code or (e.g., and / or) an address of the attachment. In some examples, the address is a name, an Internet Protocol address, a Media Access Control address, and / or a unique identifier of the attachment. In some examples, the setup code is a set of one or more numbers, symbols, images, and / or one or more characters for establishing a link (e.g., pairing) with the attachment. In some examples, the setup information is generated by a computer system. In some examples, the setup information is received from (and / or generated by) the attachment.
[0117] In some examples, the setup component selects a first communication protocol (e.g., a communication protocol supported by the setup component but not by the application (e.g., Bluetooth, Wi-Fi, Internet Protocol communication protocol, NFC, and / or UWB), a communication protocol supported by the application, a communication protocol corresponding to the ecosystem, a communication protocol corresponding to the setup component, and / or a communication protocol supported by multiple different ecosystems) from multiple communication protocols supported by the attachment (e.g., a communication protocol supported by the setup component but not by the application) (e.g., the selection occurs when the attachment supports multiple communication protocols and / or the setup component acts as a bridge). In some examples, the setup information is transmitted to the attachment in a message according to the first communication protocol. In some examples, one or more second permissions correspond to a second communication protocol among the multiple communication protocols (e.g., a communication protocol supported by the application (e.g., Bluetooth, Wi-Fi, Internet Protocol communication protocol, NFC, and / or UWB)). In some examples, the second communication protocol is different from the first communication protocol. In some examples, the selection occurs before or after transmitting the first credential and / or after receiving an indication of the attachment.
[0118] In some examples, a settings component receives, from an application, a command to change a state of an accessory (e.g., turn on or off or set an amount or value). In some examples, the settings component generates, according to (e.g., based on and / or via) a particular communication protocol (e.g., a communication protocol supported by the accessory (e.g., Bluetooth, Wi-Fi, Internet Protocol communication protocol, NFC, and / or UWB)), a message corresponding to the command (e.g., including the command or including a different command having the same effect of changing the state of the accessory as the command). In some examples, the settings component transmits the message to the accessory. In some examples, the accessory does not support the communication protocol supported by the accessory (e.g., even when the accessory supports only a single communication protocol), and the settings component converts the message received from the application to the single communication protocol before transmitting it to the accessory. In some examples, transmitting the message to the accessory causes the accessory to perform an operation based on the content of the message, and in some examples, the operation causes the accessory to change from a first state (e.g., an on state, an off state, a low state, a high state, a state based on a first value (e.g., -100 - 100, 0 - 100%, low, medium, and / or high)) to a second state different from the first state.
[0119] Note that the details of the processes described above with respect to method 600 (e.g., Figure 6 ) also apply, in a similar manner, to the methods described below. For example, method 700 optionally includes one or more of the features of the various methods described above with reference to method 600. For example, Figure 7 the settings component of Figure 6 can be the settings component of
[0120] Figure 7 is a flowchart illustrating a method for initial setup of an accessory from the perspective of an application according to some embodiments. Method 700 is performed at an application (e.g., 320, 330, 402) of a computer system (e.g., 100, 200, 300) (e.g., different from an operating system). In some examples, the application is an application of an ecosystem that allows a user to control one or more accessories (including, e.g., different types and / or from different manufacturers), an accessory manufacturer's application that allows 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 with an accessory configured for the particular communication protocol according to the particular communication protocol). In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (HMD) device, and / or a personal computing device.
[0121] At 710, an application transmits a request to add an accessory to a settings component of a computer system (e.g., an operating system component or an application different from the operating system) for adding an accessory to a first ecosystem (e.g., a request for adding an accessory in general or a request for adding a specific accessory such as via an identifier of the specific accessory), where the settings component is different from the application. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on devices, and / or software processes configured to control accessories). In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on devices, and / or software processes configured to control accessories).
[0122] After transmitting the request (e.g., as a result of or in conjunction with it), at 720, the application receives settings information for a first accessory (e.g., an identifier, address, and / or settings code of the first accessory) from the settings component. 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, a socket, 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.
[0123] At 730, the application transmits a request to the first accessory to add credentials (e.g., a certificate and / or identifier corresponding to the application) to grant (e.g., allow, configure, and / or enable) one or more first permissions (e.g., one or more rights, licenses, and / or capabilities) to the application with respect to the first accessory (e.g., to establish the first ecosystem and / or manage the accessory), where the request to add credentials includes at least a portion of the settings information (e.g., an identifier, address, and / or settings code of the first accessory). In some examples, the application uses the settings information to establish a communication channel with the first accessory. In some examples, the application communicates with the first accessory without going through the settings component.
[0124] In some examples, the request to add an accessory is a request to add the first accessory.
[0125] In some examples, the request to add credentials includes a settings code received from the settings component (e.g., as described above with respect to method 600). In some examples, the settings code is a set of one or more numbers and / or one or more characters for establishing a link (e.g., pairing) with the first accessory. In some examples, the settings information is generated by the settings component. In some examples, the settings information is generated by the first accessory.
[0126] In some examples, a request to add an attachment is transmitted to a setup component in response to a camera (e.g., a camera of a computer system) communicating with the computer system capturing an image (e.g., an image of a pattern (e.g., a QR code or lighting) corresponding to a first attachment), causing a camera user interface (e.g., a capture user interface, a user interface including a shutter button that, when selected, causes the computer system (e.g., via the camera) to capture and store an image) to be displayed; or causing a communication to be transmitted to a computer system different from the computer system (e.g., a first attachment or a different computer system). In some examples, the communication is transmitted via Bluetooth, WiFi, an Internet Protocol communication channel, NFC, or UWB.
[0127] In some examples, the setup information includes a setup code or (e.g., and / or) an address of the first attachment. 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 attachment. In some examples, the setup code is a set of one or more digits and / or one or more characters for establishing a link (e.g., pairing) with the first attachment. In some examples, the setup information is generated by the computer system. In some examples, the setup information is received from the first attachment.
[0128] In some examples, a request to add credentials is transmitted to the first attachment via the setup component.
[0129] In some examples, after transmitting a request to add credentials to the first attachment, the application uses the credentials (e.g., a message transmitted to the attachment may include the credentials and / or an indication of the credentials) to transmit a command to the first attachment to change the state of the attachment (e.g., turn on or off or a set amount or value) (e.g., as described above with respect to method 600).
[0130] In some examples, the command is transmitted to the first attachment via the setup component (e.g., when the setup component acts as a bridge for the application).
[0131] Note that the details of the processes described above with respect to method 700 (e.g., Figure 7 ) also apply in a similar manner to the methods described above and below. For example, method 600 optionally includes one or more of the features of the various methods described above with reference to method 700. For example, Figure 6 the application of Figure 7 can be the application of
[0132] Figure 8FIG. 600 is a flowchart illustrating a method for initial setup of an accessory from the perspective of the accessory according to some embodiments. Method 600 is performed at an accessory (e.g., 340, 350, 406). 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, a socket, 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.
[0133] At 810, the accessory receives a first credential (e.g., an accessory management credential such as a certificate and / or identifier corresponding to the setup component) from a setup component of the computer system (e.g., an operating system component or an application different from the operating system) to grant one or more first permissions (e.g., one or more rights, licenses, and / or capabilities) to the setup component with respect to the accessory (e.g., to establish a first ecosystem and / or manage the accessory). In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (HMD) device, and / or a personal computing device. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on the devices, and / or software processes configured to control the accessory).
[0134] After receiving the first credential, at 820, the accessory receives from the setup component a request to add a second credential to grant one or more second permissions to the setup component with respect to the accessory (e.g., one or more of the second permissions are the same as or different from one or more of the first permissions (e.g., at least one of the one or more first permissions is a different permission)) (e.g., adding a controller, a second ecosystem different from the first ecosystem, a credential for controlling the accessory, and / or an administrator different from the setup component), where the second credential is different from the first credential. In some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on the devices, and / or software processes configured to control the accessory).
[0135] After receiving a request to add a second credential from a settings component, at 830, the accessory receives, from an application of the computer system, a request to add a second credential (e.g., a certificate and / or identifier corresponding to the application) to grant (e.g., allow, configure, and / or implement) one or more second permissions (e.g., one or more rights, licenses, and / or capabilities) with respect to the accessory (e.g., establish a first ecosystem and / or manage the accessory), where the application is different from the settings component. In some examples, the accessory grants one or more first permissions with respect to the accessory to the settings component based on a first credential. In some examples, the accessory grants one or more second permissions with respect to the accessory to the application based on a second credential. In some examples, the application is an application of an ecosystem that allows 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 a user to control one or more accessories associated with the accessory manufacturer, and / or an application for a specific communication protocol (e.g., the application communicates with an accessory configured for the specific communication protocol according to the specific communication protocol). In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on a device, and / or software processes configured to control the accessory).
[0136] In some examples, before receiving the first credential, the accessory (e.g., via Bluetooth, WiFi, Internet Protocol communication channel, NFC, UWB, and / or light) transmits setup information to the computer system (e.g., to a settings component and / or an application of the computer system). In some examples, the first credential is based on the setup information (e.g., the first credential includes at least a portion of the setup information and / or an indication of at least a portion of the setup information).
[0137] In some examples, the setup information includes at least one of a setup code of a first accessory (e.g., as described above with respect to method 600) and an address. 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 digits and / or one or more characters for establishing a link (e.g., pairing) with the first accessory.
[0138] In some examples, the first credential is received in a message formatted according to a first communication protocol (e.g., as described above with respect to method 600). In some examples, a request to add a second credential is received from the application in a message formatted according to a second communication protocol different from the first communication protocol (e.g., as described above with respect to method 600).
[0139] In some examples, a request to add a second credential is received from a settings component in a message formatted according to a third communication protocol (e.g., as described above with respect to method 600). In some examples, a request to add a second credential is received from an application in a message formatted according to a fourth communication protocol different from the third communication protocol (e.g., as described above with respect to method 600).
[0140] In some examples, the request to add a second credential received from the settings component includes a setup code (e.g., as described above with respect to method 600). In some examples, the request to add a second credential received from the application includes a setup code. In some examples, the setup code is a set of one or more digits and / or one or more characters for establishing a link (e.g., pairing) with an accessory.
[0141] In some examples, the accessory receives a command from the application to change the state of the accessory (e.g., turn on or off or set an amount or value) (e.g., as described above with respect to method 600).
[0142] In some examples, the accessory (e.g., when the settings component acts as a bridge from the application) receives a command from the settings component to change the state of the accessory (e.g., turn on or off or set an amount or value) (e.g., as described above with respect to method 600).
[0143] Note that the details of the processes described above with respect to method 800 (e.g., Figure 8 ) also apply in a similar manner to the methods described above. For example, method 600 optionally includes one or more of the features of the various methods described above with reference to method 800. For example, Figure 6 the accessory of Figure 8 can be the accessory of
[0144] For purposes of explanation, the foregoing description has been presented by reference to specific examples. However, the above illustrative discussion is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The examples were chosen and described in order to best explain the principles of the techniques and their practical application. 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.
[0145] While the present disclosure and examples have been described in full with reference to the accompanying drawings, it should be noted that various changes and modifications will become apparent to those skilled in the art. It should be understood that such changes and modifications are considered to be included within the scope of the present disclosure and examples as defined by the claims.
[0146] As described above, one aspect of the technology of the present invention is to collect and use data that can be obtained from various sources to improve the way the device interacts with the user. The present disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to contact or locate a specific person. Such personal information data may include demographic data, location-based data, phone numbers, email addresses, home addresses, or any other identifying information.
[0147] The present disclosure recognizes that the use of such personal information data in the technology of the present invention can be used to benefit the user. For example, personal information data can be used to change the way the device interacts with the user. Therefore, the use of such personal information data enables better user interaction. Additionally, the present disclosure also anticipates other uses of personal information data that are beneficial to the user.
[0148] The present disclosure also contemplates that entities responsible for the collection, analysis, disclosure, transmission, storage, or other uses of such personal information data will comply with established privacy policies and / or privacy practices. Specifically, such entities should implement and adhere to privacy policies and measures that are recognized as meeting or exceeding industry or government requirements for maintaining the privacy and security of personal information data. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of these legitimate uses. Additionally, such collection should only be carried out after receiving the informed consent of the user. Additionally, such entities should take any necessary steps to safeguard and protect access to such personal information data and ensure that others who have access to the personal information data comply with their privacy policies and procedures. Furthermore, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices.
[0149] Notwithstanding the foregoing, the present disclosure also anticipates embodiments in which the user selectively blocks the use or access of personal information data. That is, the present disclosure anticipates hardware elements and / or software elements to prevent or block access to such personal information data. For example, in terms of image capture, the technology of the present invention can be configured to allow the user to select to "opt in" or "opt out" of participating in the collection of personal information data during the registration service.
[0150] Accordingly, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also anticipates that various embodiments can also be implemented without accessing such personal information data. That is, various embodiments of the technology of the present invention will not fail to function properly due to the lack of all or a part of such personal information data. For example, content can be displayed to the user by inferring the location based on non-personal information data or an absolute minimum amount of personal information (such as the content requested by a device associated with the user or other non-personal information).
Claims
1. A method, the method comprises: at a settings component of a computer system: receiving an indication of an attachment, wherein the attachment is different from the computer system; in response to receiving the indication, transmitting a first credential to the attachment to grant one or more first permissions to the settings component with respect to the attachment; and after transmitting the first credential: using the first credential to transmit to the attachment a request for adding a second credential to grant one or more second permissions with respect to the attachment, wherein the second credential is different from the first credential; and transmitting settings information of the attachment to an application of the computer system, wherein the settings information is intended to be used by the application to communicate with the attachment to grant the one or more second permissions to the application with respect to the attachment, and wherein the application is different from the settings component.
2. The method according to claim 1, wherein the one or more first permissions correspond to a first ecosystem rather than a second ecosystem, wherein the indication of the attachment is received within a request for adding the attachment to the second ecosystem, and wherein the one or more second permissions correspond to the second ecosystem rather than the first ecosystem.
3. The method according to claim 2, wherein the indication of the attachment is: determined based on an image captured by a camera communicating with the computer system; or received via a communication channel from a device different from the computer system.
4. The method according to claim 2, wherein the request is received from the application.
5. The method according to any one of claims 1 to 4, wherein the settings information includes a settings code or address of the attachment.
6. The method according to any one of claims 1 to 5, the method further comprises: selecting a first communication protocol from a plurality of communication protocols supported by the attachment, wherein the settings information is transmitted to the attachment in a message according to the first communication protocol, and wherein the one or more second permissions correspond to a second communication protocol among the plurality of communication protocols, and wherein the second communication protocol is different from the first communication protocol.
7. The method according to any one of claims 1 to 6, the method further comprises: receiving from the application a command for changing a state of the attachment; generating a message corresponding to the command according to a specific communication protocol; and transmitting the message to the attachment.
8. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 1 to 7.
9. A computer system, the computer system comprises: one or more processors; and a memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 1 to 7.
10. A computer system, the computer system comprising: components for performing the method according to any one of claims 1 to 7.
11. A computer program product, the computer program product comprising one or more programs configured to be executed by one or more processors of a computer system, the one or more programs comprising instructions for performing the method according to any one of claims 1 to 7.
12. 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, the one or more programs comprising instructions for a setup component to: receive an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmit a first credential to the attachment to grant the setup component one or more first permissions with respect to the attachment ; and after transmitting the first credential: use the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmit setup information of the attachment to an application of the computer system, where the setup information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions with respect to the attachment, and where the application is different from the setup component.
13. A system, the system comprising: one or more processors; and a memory storing one or more programs configured to be executed by the one or more processors, the one or more programs comprising instructions for a setup component to: receive an indication of an attachment, where the attachment is different from the computer system; in response to receiving the indication, transmit a first credential to the attachment to grant the setup component one or more first permissions with respect to the attachment; and after transmitting the first credential: use the first credential to transmit to the attachment a request to add a second credential to grant one or more second permissions with respect to the attachment, where the second credential is different from the first credential; and transmit setup information of the attachment to an application of the computer system, where the setup information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions with respect to the attachment, and where the application is different from the setup component.
14. A computer system, the computer system comprising: components for receiving an indication of an attachment, where the attachment is different from the computer system; components for transmitting a first credential to the attachment in response to receiving the indication to grant a setup component one or more first permissions with respect to the attachment; and after transmitting the first credential: A component for using the first credential to transmit to the attachment a request for adding a second credential to grant one or more second permissions relative to the attachment, wherein the second credential is different from the first credential; and A component for transmitting to an application of the computer system the setting information of the attachment, wherein the setting information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and wherein the application is different from the setting component.
15. A computer program product, the computer program product comprising one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for a setting component to perform the following operations: Receiving an indication of an attachment, wherein the attachment is different from the computer system; In response to receiving the indication, transmitting a first credential to the attachment to grant the setting component one or more first permissions relative to the attachment ; and After transmitting the first credential: Using the first credential to transmit to the attachment a request for adding a second credential to grant one or more second permissions relative to the attachment, wherein the second credential is different from the first credential; and Transmitting to an application of the computer system the setting information of the attachment, wherein the setting information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and wherein the application is different from the setting component.
16. A method, the method comprising: At an application of a computer system: Transmitting to a setting component of the computer system a request for adding an attachment to a first ecosystem, wherein the setting component is different from the application; After transmitting the request, receiving from the setting component the setting information of a first attachment; and Transmitting to the first attachment a request for adding a credential to grant the application one or more first permissions relative to the first attachment, wherein the request for adding the credential includes at least a portion of the setting information.
17. The method according to claim 16, wherein the request for adding an attachment is a request for adding the first attachment.
18. The method according to any one of claims 16 to 17, wherein the request for adding the credential includes a setting code received from the setting component.
19. The method according to any one of claims 16 to 18, wherein the request for adding an attachment: Is transmitted to the setting component in response to the capture of an image by a camera communicating with the computer system; Causes the display of a camera user interface; or Causes communication to be transmitted to a computer system different from the computer system.
20. The method according to any one of claims 16 to 19, wherein the setting information includes a setting code or address of the first attachment.
21. The method according to any one of claims 16 to 20, wherein the request for adding the credential is transmitted to the first attachment via the setting component.
22. The method according to any one of claims 16 to 21, the method further comprises: After transmitting the request for adding the credential to the first attachment, using the credential to transmit a command for changing the state of the first attachment to the first attachment.
23. The method according to claim 22, wherein the command is transmitted to the first attachment via the setting component.
24. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 16 to 23.
25. A computer system, the computer system comprises: One or more processors; and A memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 16 to 23.
26. A computer system, the computer system comprises: Components for performing the method according to any one of claims 16 to 23.
27. A computer program product including one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 16 to 23.
28. 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, the one or more programs including instructions for the following operations of an application: Transmitting a request for adding an attachment to a first ecosystem to a setting component of the computer system, wherein the setting component is different from the application; After transmitting the request, receiving setting information of a first attachment from the setting component; and Transmitting a request for adding a credential to grant one or more first permissions to the application with respect to the first attachment to the first attachment, wherein the request for adding the credential includes at least a portion of the setting information.
29. A computer system, the computer system comprises: One or more processors; and A memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for the following operations of an application: Transmitting a request for adding an attachment to a first ecosystem to a setting component of the computer system, wherein the setting component is different from the application; After transmitting the request, receiving setting information of a first attachment from the setting component; and Transmit a request to the first attachment for adding credentials to grant one or more first permissions to the application with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.
30. A computer system, the computer system comprising: means for transmitting a request to add an attachment to a first ecosystem to a settings component of the computer system, wherein the settings component is different from the application; means for receiving, after transmitting the request, setting information of a first attachment from the settings component; and means for transmitting a request to the first attachment for adding credentials to grant one or more first permissions to the application with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.
31. A computer program product, the computer program product comprising one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for an application to: transmit a request to add an attachment to a first ecosystem to a settings component of the computer system, wherein the settings component is different from the application; after transmitting the request, receive setting information of a first attachment from the settings component; and transmit a request to the first attachment for adding credentials to grant one or more first permissions to the application with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.
32. A method, the method comprising: at an attachment: receive a first credential from a settings component of a computer system to grant one or more first permissions to the settings component with respect to the attachment; after receiving the first credential, receive a request from the settings component for adding a second credential to grant one or more second permissions with respect to the attachment, wherein the second credential is different from the first credential; and after receiving the request from the settings component for adding the second credential, receive a request from an application of the computer system for adding the second credential to grant the one or more second permissions to the application with respect to the attachment, wherein the application is different from the settings component.
33. The method according to claim 32, the method further comprising: before receiving the first certificate, transmit setting information to the computer system, wherein the first certificate is based on the setting information.
34. The method according to claim 33, wherein the setting information includes at least one of a setting code and an address of the first attachment.
35. The method according to any one of claims 32 to 34, wherein the first credential is received in a message formatted according to a first communication protocol, and wherein the request for adding the second credential is received from the application in a message formatted according to a second communication protocol different from the first communication protocol.
36. The method according to any one of claims 32 to 35, wherein the request for adding the second credential is received from the setting component in a message formatted according to a third communication protocol, and wherein the request for adding the second credential is received from the application in a message formatted according to a fourth communication protocol with respect to the third communication protocol.
37. The method according to any one of claims 32 to 36, wherein the request for adding the second credential received from the setting component includes a setting code, and wherein the request for adding the second credential received from the application includes the setting code.
38. The method according to any one of claims 32 to 37, the method further comprises: Receiving a command from the application for changing the status of the attachment.
39. The method according to any one of claims 32 to 37, the method further comprises: Receiving a command from the setting component for changing the status of the attachment.
40. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for performing the method according to any one of claims 32 to 39.
41. An attachment, the attachment comprises: One or more processors; and A memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 32 to 39.
42. An attachment, the attachment comprises: Components for performing the method according to any one of claims 32 to 39.
43. A computer program product including one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for performing the method according to any one of claims 32 to 39.
44. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for: Receiving a first credential from a setting component of a computer system to grant the setting component one or more first permissions with respect to the attachment; After receiving the first credential, receiving from the setting component a request for adding a second credential to grant one or more second permissions with respect to the attachment, wherein the second credential is different from the first credential; and After receiving the request for adding the second credential from the setting component, receiving from an application of the computer system a request for adding the second credential to grant the application the one or more second permissions with respect to the attachment, wherein the application is different from the setting component.
45. An attachment, the attachment comprises: One or more processors; and A memory that stores one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the following operations: Receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the attachment; After receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the attachment, wherein the second credential is different from the first credential; And After receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the attachment, wherein the application is different from the settings component.
46. An attachment, the attachment Comprising: Means for receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the attachment; Means for, after receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the attachment, wherein the second credential is different from the first credential; And Means for, after receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the attachment, wherein the application is different from the settings component.
47. A computer program product comprising one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for the following operations: Receiving a first credential from a settings component of a computer system to grant the settings component one or more first permissions relative to the attachment; After receiving the first credential, receiving from the settings component a request to add a second credential to grant one or more second permissions relative to the attachment, wherein The second credential is different from the first credential; And After receiving the request to add the second credential from the settings component, receiving from an application of the computer system a request to add the second credential to grant the application one or more second permissions relative to the attachment, wherein The application is different from the settings component.