Accessory setup using setup code

By receiving and processing the accessory setting code in the setup component, the problem of complex and inefficient electronic device settings in the prior art is solved, and efficient device connection and configuration is achieved.

CN120077375APending Publication Date: 2025-05-30APPLE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380073659.7
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

Technical Problem

The prior art is inefficient and complex when deploying electronic devices, especially during connection and configuration between multiple electronic devices.

Method used

The setup component receives the attachment's setting code and transmits different credential requests based on whether the credentials have been established with the attachment, so as to establish or update the credentials with the attachment, and realizes efficient setup and connection of the device.

Benefits of technology

It simplifies the setup process of electronic devices, improves setup efficiency, and allows users to connect and configure different devices without memorizing multiple setup codes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120077375A_ABST
    Figure CN120077375A_ABST
Patent Text Reader

Abstract

Some techniques are described herein for a setup component of a controller to add attachments that have been added to another ecosystem to a new ecosystem (e.g., to a packet of one or more attachments and one or more controllers and / or to an application). Such techniques may include the setup component maintaining a list of attachments to which the setup component has added to other ecosystems. Using the list, the setup component adds the attachment to the nascent system through communication with the attachment in the list and an application corresponding to the nascent system.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications

[0002] This application claims the benefit of U.S. Provisional Patent Application Serial No. 63 / 418,445, filed on October 21, 2022, entitled "ACCESSORY SETUP USING A SETUP CODE", which is hereby incorporated by reference in its entirety for all purposes. BACKGROUND OF THE INVENTION

[0003] Interconnectivity of electronic devices is becoming 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 configuration of these connections becomes more complex, setting up such electronic devices becomes more difficult. Therefore, there is a need to improve the technology for setting up different electronic devices. SUMMARY OF THE INVENTION

[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 open an application on an electronic device and set up connections with different electronic devices through communication between the application and the different electronic devices. The present disclosure provides more effective and / or more efficient techniques for setting up electronic devices using an example of an application of a controller connected to an accessory. It should be recognized that other types of electronic devices can also be used with the techniques described herein. For example, a smartphone can 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] This document describes some techniques for a setup component of a controller to add an accessory to a new ecosystem (e.g., grouping one or more accessories and one or more controllers and / or adding a grouping of one or more accessories to an application). Such techniques include the setup component receiving a setup code for an accessory to be added to the new ecosystem. If it is determined that the setup code has not previously established credentials with the accessory (e.g., the accessory is not currently added to any ecosystem), the setup component transmits a request to add a first credential, the request including the first setup code. However, if it is determined that the setup code has previously established credentials with the accessory (e.g., the accessory has been added to another ecosystem using the setup code), the setup component transmits a request to add another credential, the request including a setup code different from the setup code initially received by the setup component. In some examples, identifying that the setup code has been used (e.g., to establish credentials and / or add the accessory to an ecosystem) and initiating the process of establishing credentials with a new setup code (e.g., transmitting a request) enables credentials to be established with the accessory without the user identifying a setup code that has not been previously used.

[0006] In some examples, a method is described that is performed at a setup component of a computer system. In some examples, the method includes: receiving a first setup code for an accessory, where the accessory is different from the computer system; and in response to receiving the first setup code: based on determining that the setup component has not previously established credentials with the accessory, transmitting to the accessory a request to add a first credential to grant one or more first authorizations regarding the accessory, where the request to establish the first credential includes the first setup code; and based on determining that the setup component has previously established credentials with the accessory, transmitting to the accessory a request to add a second credential to grant one or more second authorizations regarding the accessory, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code.

[0007] 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 a first setup code for an attachment, where the attachment is different from the computer system; and in response to receiving the first setup code: based on determining that a setup component of the computer system has not previously established credentials with the attachment, transmitting to the attachment a request to add a first credential to grant one or more first authorizations regarding the attachment, where the request to establish the first credential includes the first setup code; and based on determining that the setup component has previously established credentials with the attachment, transmitting to the attachment a request to add a second credential to grant one or more second authorizations regarding the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code.

[0008] 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: receiving a first setup code for an attachment, where the attachment is different from the computer system; and in response to receiving the first setup code: based on determining that a setup component of the computer system has not previously established credentials with the attachment, transmitting to the attachment a request to add a first credential to grant one or more first authorizations regarding the attachment, where the request to establish the first credential includes the first setup code; and based on determining that the setup component has previously established credentials with the attachment, transmitting to the attachment a request to add a second credential to grant one or more second authorizations regarding the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code.

[0009] 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 a first setup code for an attachment, where the attachment is different from the computer system; and in response to receiving the first setup code: transmitting, based on determining that a setup component of the computer system has not previously established a credential with the attachment, a request to add a first credential to grant one or more first authorizations regarding the attachment, where the request to establish the first credential includes the first setup code; and transmitting, based on determining that the setup component has previously established a credential with the attachment, a request to add a second credential to grant one or more second authorizations regarding the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code.

[0010] In some examples, a computer system is described. In some examples, the computer system includes components for performing each of the following steps: receiving a first setup code for an attachment, where the attachment is different from the computer system; and in response to receiving the first setup code: transmitting, based on determining that a setup component of the computer system has not previously established a credential with the attachment, a request to add a first credential to grant one or more first authorizations regarding the attachment, where the request to establish the first credential includes the first setup code; and transmitting, based on determining that the setup component has previously established a credential with the attachment, a request to add a second credential to grant one or more second authorizations regarding the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code.

[0011] In some examples, a computer program product is described. In some examples, the computer program product includes one or more programs that are 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 a first setup code for an accessory, where the accessory is different from the computer system; and in response to receiving the first setup code: transmitting, to the accessory, a request to add a first credential to grant one or more first authorizations regarding the accessory, based on determining that a setup component of the computer system has not previously established a credential with the accessory, where the request to establish the first credential includes the first setup code; and transmitting, to the accessory, a request to add a second credential to grant one or more second authorizations regarding the accessory, based on determining that the setup component has previously established a credential with the accessory, where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code that is different from the first setup code. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] 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 throughout the drawings.

[0013] Figure 1 is a block diagram illustrating a computing system.

[0014] Figure 2 is a block diagram illustrating a device having an interconnect subsystem.

[0015] Figure 3 is a block diagram illustrating a controller communicating with a plurality of accessories.

[0016] Figure 4 is a flowchart illustrating a method for setting up an accessory according to some embodiments. DETAILED DESCRIPTION

[0017] 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.

[0018] 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 performing a first step when it is determined that a set of one or more criteria is satisfied, and a second step when it is determined that the set of one or more criteria is 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 can be rewritten as a method that repeats until each of the conditions described in the method is 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 with steps that depend on circumstances, a system or computer-readable storage medium may repeat the steps of the method as many times as needed to ensure that all of the steps that depend on circumstances have been performed.

[0019] Although the following description uses terms such as "first", "second", etc. to describe various elements, these elements should not be limited by the terms. In some examples, these terms are used to distinguish between individual elements. For example, without departing from the scope of the various described embodiments, a first subsystem may be referred to as a 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.

[0020] 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 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.

[0021] 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 it is determined that..." or "if [the stated condition or event] is detected" is optionally interpreted to mean "when it is determined that...", "in response to determining...", "when [the stated condition or event] is detected", "in response to detecting [the stated condition or event]", or "in accordance with determining [the stated condition or event]".

[0022] 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.

[0023] 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, I / O interface 130 communicates (e.g., wired or wirelessly) with an I / O device 140. In some examples, I / O interface 130 and I / O device 140 are included together such that the two are a single component. It should be recognized that there can 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 processor subsystem 110 can communicate via interconnect 150.

[0024] The computing system 100 can be any type of device, including but not limited to a system-on-chip, a server system, a personal computer system (e.g., a smart phone, a smart watch, a wearable device, a tablet, a laptop computer, and / or a desktop computer), a sensor, etc. In some examples, the computing system 100 is included or communicates with physical components to modify the physical components in response to instructions. In some examples, the computing system 100 receives instructions to modify 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 acceleration controls, brakes, gearboxes, hinges, motors, pumps, refrigeration systems, springs, suspension systems, steering controls, pumps, vacuum systems, and / or valves. In some examples, a sensor includes one or more hardware components that detect information about the physical environment near (e.g., surrounding) 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 angle sensors, chemical sensors, brake pressure sensors, contact sensors, non-contact sensors, electrical sensors, flow sensors, force sensors, gas sensors, humidity sensors, image sensors (e.g., camera sensors, radar sensors, and / or lidar sensors), inertial measurement units, leak sensors, level sensors, light detection and ranging systems, metal sensors, motion sensors, particle sensors, photoelectric sensors, position sensors (e.g., global positioning system), sediment sensors, pressure sensors, proximity sensors, radio detection and ranging systems, radiation sensors, speed sensors (e.g., measuring the speed of an object), temperature sensors, time-of-flight sensors, torque sensors, and ultrasonic sensors. In some examples, a sensor includes a combination of multiple sensors. In some examples, sensor data is captured by fusing data from one sensor with data from one or more other sensors. Although a single computing system is shown in Figure 1 FIG. 1, the computing system 100 can also be implemented as two or more computing systems operating together.

[0025] 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.

[0026] 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 executable by processor subsystem 110. 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 the previous task has completed execution. In some examples, the highest-priority task runs to completion unless another higher-priority task is ready.

[0027] 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) outside of the applications (e.g., data management, application services, messaging, authentication, API management, etc.) provided by the operating system. In some examples, the middleware system is designed for heterogeneous computer clusters 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.

[0028] 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.

[0029] 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.

[0030] Memory 120 may 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.), etc. The memory in the computing system 100 is not limited to main storage devices 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.

[0031] 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 disc 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.

[0032] 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), which 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, an intranet, a campus local area network, a system local 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.

[0033] 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 may not be connected to the third subsystem 230). In some examples, some subsystems are connected via one or more wires, while other subsystems are wirelessly connected. In some examples, messages are set between the first subsystem 210, the second subsystem 220, and the third subsystem 230 such that when a corresponding subsystem transmits a message, the other subsystems receive the message (e.g., via wires and / or buses). 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 communicate wirelessly with one or more computing systems external to the device 200.

[0034] In some examples, device 200 includes a housing that completely or partially encloses subsystems 210-230. Examples of device 200 include home appliance devices (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, device 200 is configured to navigate in a physical environment (with or without user input).

[0035] In some examples, one or more subsystems of device 200 are used to control, manage, and / or receive data from one or more other subsystems of device 200 and / or one or more computing systems remote from device 200. For example, first subsystem 210 and second subsystem 220 may each be a camera that captures images, and third subsystem 230 may use the captured images to make decisions. In some examples, at least a portion of device 200 serves as a distributed computing system. For example, a task may be split into different parts, where the first part is executed by first subsystem 210 and the second part is executed by second subsystem 220.

[0036] Now attention is turned to techniques for setting up an electronic device. Such techniques are described in the context of an application of a controller connected to an accessory. It should be appreciated that other types of electronic devices may also be used with the techniques described herein. For example, an accessory may use the techniques described herein to connect to another accessory. Additionally, the techniques optionally supplement or replace other techniques for connecting devices.

[0037] Figure 3 is a block diagram illustrating a controller (e.g., controller 300) communicating with multiple accessories (e.g., first accessory 340 and second accessory 350). Controller 300 is a non-limiting example of a controller that may be used to perform the functionality described herein. It should be appreciated that other computer architectures of controllers may 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 may be combined, substituted, and / or replaced with 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.

[0038] As Figure 3As shown, the controller 300 includes an operating system 310, a first application 320, and a second application 330. In other words, the operating system 310, the first application 320, and the second application 330 are installed on the controller 300. In some examples, the first application 320 and / or the second application 330 communicate with the controller 300 but are not installed on the controller (e.g., the first application 320 and / or the second application 330 are installed on a remote device that communicates with the controller 300). In some examples, the operating system 310 manages the resources of the controller 300 and can be one or more operating systems as discussed above with respect to the operating system of the computing system 100. For example, the operating system 310 can be a LINUX, iOS, or Windows operating system. In some examples, the 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, the operating system 310 includes one or more operations that control a graphical user interface.

[0039] 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 such 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 (or allowed) to configure the accessories to communicate with the controller 300 (e.g., a specific application of the controller 300 or generally the controller 400), one or more other controllers, and / or one or more computer systems (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 data 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, one or more of the first application 320 and the second application 330 are part of the operating system 310, regardless of whether the settings component 312 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.

[0040] As Figure 3As illustrated, 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. Examples of ecosystems include smart home ecosystems, smart office ecosystems, smart manufacturing ecosystems, and / or smart company ecosystems. In some examples, one or more accessories can be registered with (and / or controlled within) an 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., control instructions and / or requests) to change the state of the accessories and / or receiving information about the state of the accessories. In some examples, changing the state of an 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 an 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 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).

[0041] 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.

[0042] In Figure 3 some examples, the first accessory 340 and the second accessory 350 are different types of accessories. 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 over 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.

[0043] As discussed above, a computer system (e.g., a controller, an accessory, and / or other electronic device) communicates (e.g., transmits communications to and / or receives communications from) with an accessory (e.g., a first accessory 340 or a second accessory 350). Traditionally, an accessory has required the computer system to register with the accessory to ensure that only specific electronic devices can communicate with the accessory. Examples of such registration include the computer system transmitting a secret (e.g., corresponding to a setup code known to the accessory / accessories, such as one or more alphanumeric characters) along with other information to the accessory to identify the computer system. The accessory then stores the other information to identify the computer system when transmitting and / or receiving communications. Such other information is sometimes referred to as credentials and provides a secure way of communicating. In some examples, the secret is used to establish a two-way secure channel for mutual authentication between the computer system and the accessory. The other information is installed via the secure channel. In some examples, the computer system uses the other information to create a secure session for other (e.g., further and / or future) communications with the accessory.

[0044] In some examples, the accessory limits the number of times a specific secret can be used to register with the accessory. For example, the accessory may only allow a specific secret to be used once, and any subsequent registration would need to be done via a previous registration (e.g., using the previous registration to generate a new secret that is provided to the accessory) or by resetting the accessory. Such limitations make it difficult to configure the accessory, especially when the user desires a more complex configuration. For example, the user may have a computer system (referred to as a controller) that includes different applications that the user wishes to individually configure to communicate with the accessory. Thus, the different applications would need to use different secrets to register with the accessory separately and optionally have different authorizations regarding the accessory. Such different registrations are sometimes referred to as different ecosystems, at least in part due to the fact that such registrations are separately maintained by the accessory.

[0045] In some examples, the techniques described herein help mitigate the problem of secrets being usable only once. For example, an attachment may include a QR code. The QR code may be scanned by a controller to determine the secret corresponding to the QR code. The controller may then use the secret to add the attachment to an ecosystem corresponding to a first application of the controller. At a later point in time, the controller may scan the QR code again to determine the secret corresponding to the QR code. At this time, the controller may attempt to add the attachment to a different ecosystem than before, the different ecosystem corresponding to a second application of the controller. Traditionally, this behavior is not allowed because the QR code and the corresponding secret can only be used to add the attachment to a single ecosystem (e.g., the secret needs to be uniquely linked to a specific relationship). The user would then need to add the attachment through the first application or restart the attachment. However, to provide a better user experience, the settings component of the controller may determine that the QR code and / or the corresponding secret has previously been used to add the attachment to an ecosystem (as described in more detail below), and may generate (e.g., without user involvement) a new secret instead of using the secret, and then use the new secret to add the attachment to a different ecosystem. The new secret will then be different from the secret and will maintain the requirement that the secret is uniquely linked to a specific relationship (e.g., the secret is linked to the ecosystem corresponding to the first application and the new secret is linked to a different ecosystem corresponding to the second application).

[0046] Using the techniques described above, the settings component 312 of the controller 300 receives a first setup code for an attachment. In some examples, the settings component 312 receives the first setup code in response to receiving an indication to connect an application to the attachment. In some examples, the connection indication is received from the attachment (e.g., the first attachment 340 and / or the second attachment 350). In some examples, the connection indication is received from the application (e.g., the first application 320 and / or the second application 330).

[0047] The setting component 312 can receive the first setting code in different ways. In some examples, the setting component 312 receives the setting code through user input such as the user typing or otherwise manually entering the setting code. In other examples, the setting component 312 receives the setting code via one or more cameras in communication with a controller 312 that captures an image corresponding to (e.g., including or linked to) the first setting code. In such examples, the image may include a QR code representing the setting code. In other examples, the image may include a pattern of light output by an accessory. In some examples, when data corresponding to the first setting code is transmitted via a device (e.g., the first accessory 340, the second accessory 350, or another device), the setting component 312 receives the first setting code. For example, the device may include a near field communication (NFC) tag that conveys the setting code to the setting component 312 when the controller 300 is near the device. For another example, the device may include radio components (e.g., Bluetooth, WiFi, or broadcast radio components) using one or more different wireless technologies. In some examples, the wireless technology used is a short-range wireless technology to ensure proximity to the device.

[0048] In some examples, in response to receiving the first setting code for an accessory, a determination is made as to whether a credential corresponding to the first setting code has been added to the accessory. The determination as to whether a credential corresponding to the first setting code has been added to the accessory can be performed in different ways. In some examples, as part of determining whether a credential corresponding to the first setting code has been added to the accessory, the setting component 312 performs a search in a lookup table that includes a list of accessories (e.g., and optionally credentials) and determines that the accessory (or the credential corresponding to the first setting code) is included in the list. In other examples, as part of determining whether a credential corresponding to the first setting code has been added to the accessory, the setting component 312 transmits a request to the accessory to determine whether the accessory has a credential corresponding to the first setting code and determines that the credential corresponding to the first setting code has been added to the accessory based on the response from the accessory to the request. In further examples, as part of determining whether a credential corresponding to the first setting code has been added to the accessory, the setting component 312 transmits one or more requests to one or more other devices and / or applications (e.g., the first application 320 or the second application 330) to determine whether the accessory has a credential corresponding to the first setting code and determines that the credential corresponding to the first setting code has been added to the accessory based on one or more responses from the one or more devices and / or applications to the one or more requests.

[0049] In some examples, if it is determined that the credential corresponding to the first setting code has not been added to the accessory, the setting component 312 transmits a first request to add the credential to the accessory, where the request includes the first setting code.

[0050] In some examples, if it is determined that a credential corresponding to a first setup code has been added to an accessory, the setup component 312 transmits a different request to add the credential to the accessory, where the different request includes a second setup code that is different from the first setup code. Thus, in some examples, the setup component 312 (1) transmits a setup code that is different from the first setup code when a credential corresponding to the first setup code has been added, and (2) transmits the first setup code when a credential corresponding to the first setup code has not been added. In some examples, transmitting the request to the accessory causes the first application 320 or the second application 330 to register (e.g., sometimes referred to as pairing) with the accessory.

[0051] Figure 4 FIG. is a flowchart illustrating a method for setting up an accessory according to some embodiments. Method 400 is performed at a setup component (e.g., 312) of a computer system (e.g., 100, 200, and / or 300) (e.g., an operating system component or an application different from the operating system). 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.

[0052] The setup component receives (410) a first setup code for an accessory, where the accessory is different from the computer system. In some examples, the accessory is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, 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. In some examples, the first setup code is a set of one or more alphanumeric characters.

[0053] In response to receiving the first setup code and based on determining that the setup component has not previously established a credential with the accessory (e.g., has not previously registered / paired and / or has not previously installed a credential), the setup component transmits (420) a request to add a first credential to grant one or more first authorizations (e.g., one or more rights, permissions, and / or capabilities) regarding the accessory (e.g., to establish a first ecosystem and / or manage one or more accessories) (e.g., add a controller, an ecosystem, a credential for controlling the accessory, and / or an administrator different from the setup component), where the request to establish the first credential includes the first setup code. 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 accessories).

[0054] In response to receiving a first setup code and based on determining that the setup component has previously established credentials with the attachment, the setup component transmits (430) to the attachment a request to add a second credential to grant one or more second authorizations regarding the attachment (e.g., the one or more second authorizations are the same as or different from the one or more first authorizations (e.g., at least one different authorization of the one or more first authorizations)), where the second credential is different from the first credential, and where the request to add the second credential includes a second setup code different from the first setup code (e.g., a different value) (e.g., the second setup code includes a set of one or more alphanumeric characters and the first setup code includes a different set of one or more alphanumeric characters) (e.g., the second setup code includes a value for a set of one or more bits and the first setup code includes a different value for a set of one or more corresponding bits).

[0055] In some examples, the first setup code is determined based on an image captured by a camera (e.g., a camera of the computer system) communicating with the computer system (e.g., an image corresponding to a pattern of the attachment (e.g., a QR code or light)); or the first setup code is received via a communication channel from a device different from the computer system. In some examples, the communication channel is Bluetooth, WiFi, an Internet Protocol communication channel, NFC, or UWB.

[0056] In some examples, after transmitting the request to add the first credential, the setup component receives a third setup code for the attachment. In some examples, the third setup code is the same as the first setup code. In some examples, the third setup code is obtained via the same process as the first setup code (e.g., if the first setup code is determined based on an image, the third setup code is determined based on an image) (e.g., if the first setup code is received via a particular type of communication channel, the third setup code is received via the particular type of communication channel). In some examples, in response to receiving the third setup code, the setup component transmits to the attachment a request to add a third credential to grant one or more second authorizations regarding the attachment. In some examples, the request to add the third credential includes a fourth setup code different from the third setup code (e.g., a different value) (e.g., the fourth setup code includes a set of one or more characters and the third setup code includes a different set of one or more characters) (e.g., the fourth setup code includes a value for a set of one or more bits and the third setup code includes a different value for a set of one or more corresponding bits).

[0057] In some examples, after transmitting a request to add a first credential, the setup component transmits a request to add a fourth credential to an attachment using a specific credential (e.g., a credential established between the setup component and the attachment that does not correspond to an application of the computer system) (e.g., a message transmitted to the attachment may include the first credential and / or an indication of the first credential) to grant one or more third authorizations regarding the attachment to a second application of the computer system (e.g., one or more third authorizations are the same as or different from one or more first authorizations (e.g., at least one different authorization of one or more first authorizations)). In some examples, a request to add a first credential is transmitted using a specific credential (e.g., a message transmitted to the attachment may include the first credential and / or an indication of the first credential) to grant one or more first authorizations regarding the attachment to a first application of the computer system. In some examples, the second application is different from the first application and the setup component. In some examples, the first application is different from the setup component. In some examples, the first application and / or the second application is an application of an ecosystem that allows a user to control one or more attachments (including, for example, different types and / or attachments 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). In some examples, the specific credential is different from the first credential, the second credential, the third credential, and the fourth credential.

[0058] In some examples, a setup code is received from an application of the computer system. In some examples, the application is different from the setup 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, different types and / or attachments 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).

[0059] In some examples, a setup component receives an indication of an ecosystem from an application of a computer system. 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, an 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 an accessory). In some examples, in response to receiving the indication of the ecosystem: the setup component transmits a request to add a credential to the accessory based on determining that the ecosystem has not previously established a credential with the accessory; and the setup component abandons transmitting the request to add a credential to the accessory based on determining that the ecosystem has previously established a credential with the accessory.

[0060] In some examples, the first setup code includes one or more characters (e.g., alphanumeric characters, symbols, and / or text). In some examples, the second setup code includes one or more characters (e.g., alphanumeric characters, symbols, and / or text).

[0061] For purposes of explanation, the foregoing description has been described 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 applications. Others skilled in the art are thereby enabled to best utilize the techniques and various examples with various modifications as are suited to the particular use contemplated.

[0062] While the present disclosure and examples have been described in full detail 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.

[0063] As described above, one aspect of the present technology is to collect and use data obtained from various sources to improve the way a device interacts with a 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.

[0064] The present disclosure recognizes that the use of such personal information data in the technology of the present invention can be used to benefit users. For example, personal information data can be used to change the way the device interacts with the user. Thus, the use of such personal information data enables better user interaction. In addition, the present disclosure also anticipates other uses of personal information data that are beneficial to users.

[0065] 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 those legitimate uses. Additionally, such collection should only occur after receiving the informed consent of the user. Additionally, such entities should take any steps necessary 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. Additionally, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices.

[0066] Notwithstanding the foregoing, the present disclosure also anticipates embodiments in which users selectively block the use or access of personal information data. That is, the present disclosure anticipates that hardware elements and / or software elements may be provided to prevent or block access to such personal information data. For example, in the case of image capture, the technology of the present invention may be configured to allow users to select to "opt in" or "opt out" of participating in the collection of personal information data during the registration service.

[0067] Thus, 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 may also be implemented without accessing such personal information data. That is, the various embodiments of the technology of the present invention will not be rendered inoperable due to the absence of all or a portion of such personal information data. For example, content may be displayed to a user by inferring a 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 a first settings code for an accessory, wherein the accessory is different from the computer system; and in response to receiving the first settings code: transmitting, to the accessory, a request to add a first credential to grant one or more first authorizations regarding the accessory, based on determining that the settings component has not previously established a credential with the accessory, wherein the request to establish the first credential includes the first settings code; and based on determining that the settings component has previously established a credential with the accessory, transmitting, to the accessory, a request to add a second credential to grant one or more second authorizations regarding the accessory, wherein the second credential is different from the first credential, and wherein the request to add the second credential includes a second settings code different from the first settings code.

2. The method according to claim 1, wherein the first settings code: is determined based on an image captured by a camera communicating with the computer system; or is received via a communication channel from a device different from the computer system.

3. The method according to any one of claims 1 to 2, the method further comprises: after transmitting the request to add the first credential, receiving a third settings code for the accessory, wherein the third settings code is the same as the first settings code, and wherein the third settings code is obtained via the same process as the first settings code; and in response to receiving the third settings code, transmitting, to the accessory, a request to add a third credential to grant the one or more second authorizations regarding the accessory, wherein the request to add the third credential includes a fourth settings code different from the third settings code.

4. The method according to any one of claims 1 to 3, the method further comprises: after transmitting the request to add the first credential, transmitting, to the accessory, a request to add a fourth credential to grant one or more third authorizations regarding the accessory to a second application of the computer system, using a specific credential, wherein transmitting the request to add the first credential using the specific credential grants the one or more first authorizations regarding the accessory to a first application of the computer system, wherein the second application is different from the first application and the settings component, and wherein the first application is different from the settings component.

5. The method according to any one of claims 1 to 3, wherein the settings code is received from an application of the computer system, and wherein the application is different from the settings component.

6. The method according to any one of claims 1 to 5, the method further comprises: receiving an indication of an ecosystem from an application of the computer system; and in response to receiving the indication of the ecosystem: transmitting, to the accessory, a request to add a credential, based on determining that the ecosystem has not previously established a credential with the accessory; and abandoning transmitting a request to add a credential to the accessory, based on determining that the ecosystem has previously established a credential with the accessory.

7. The method according to any one of claims 1 to 6, wherein the first setting code comprises one or more characters, and wherein the second setting code comprises one or more characters.

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 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 including instructions for performing the method according to any one of claims 1 to 7.

10. A computer system comprising: means for performing the method according to any one of claims 1 to 7.

11. A 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 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 including instructions for: receiving a first setting code for an attachment, wherein the attachment is different from the computer system; and in response to receiving the first setting code: transmitting, based on determining that a setting component of the computer system has not previously established a credential with the attachment, a request to add a first credential to grant one or more first authorizations regarding the attachment, wherein the request to establish the first credential includes the first setting code; and transmitting, based on determining that the setting component has previously established a credential with the attachment, a request to add a second credential to grant one or more second authorizations regarding the attachment, wherein the second credential is different from the first credential, and wherein the request to add the second credential includes a second setting code different from the first setting code.

13. A computer 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 including instructions for: receiving a first setting code for an attachment, wherein the attachment is different from the computer system; and in response to receiving the first setting code: transmitting, based on determining that a setting component of the computer system has not previously established a credential with the attachment, a request to add a first credential to grant one or more first authorizations regarding the attachment, wherein the request to establish the first credential includes the first setting code; and Transmit a request to the attachment to add a second credential to grant one or more second authorizations regarding the attachment, based on determining that the provisioning component of the computer system has previously established a credential with the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second provisioning code different from the first provisioning code.

14. A computer system, the computer system comprises: means for receiving a first provisioning code for an attachment, where the attachment is different from the computer system; and in response to receiving the first provisioning code: means for transmitting to the attachment a request to add a first credential to grant one or more first authorizations regarding the attachment, based on determining that the provisioning component of the computer system has not previously established a credential with the attachment, where the request to establish the first credential includes the first provisioning code; and means for transmitting to the attachment a request to add a second credential to grant one or more second authorizations regarding the attachment, based on determining that the provisioning component has previously established a credential with the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second provisioning code different from the first provisioning code.

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: receiving a first provisioning code for an attachment, where the attachment is different from the computer system; and in response to receiving the first provisioning code: transmitting to the attachment a request to add a first credential to grant one or more first authorizations regarding the attachment, based on determining that the provisioning component of the computer system has not previously established a credential with the attachment, where the request to establish the first credential includes the first provisioning code; and transmitting to the attachment a request to add a second credential to grant one or more second authorizations regarding the attachment, based on determining that the provisioning component has previously established a credential with the attachment, where the second credential is different from the first credential, and where the request to add the second credential includes a second provisioning code different from the first provisioning code.