CN107851046B - 自动化环境中触发器执行的委托 - Google Patents

自动化环境中触发器执行的委托 Download PDF

Info

Publication number
CN107851046B
CN107851046B CN201680043833.3A CN201680043833A CN107851046B CN 107851046 B CN107851046 B CN 107851046B CN 201680043833 A CN201680043833 A CN 201680043833A CN 107851046 B CN107851046 B CN 107851046B
Authority
CN
China
Prior art keywords
trigger
electronic device
accessory
controller
coordinator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680043833.3A
Other languages
English (en)
Other versions
CN107851046A (zh
Inventor
A·G·纳达瑟尔
K·P·麦克劳克林
N·E·卡罗尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/180,046 external-priority patent/US10985937B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN107851046A publication Critical patent/CN107851046A/zh
Application granted granted Critical
Publication of CN107851046B publication Critical patent/CN107851046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2816Controlling appliance services of a home automation network by calling their functionalities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2814Exchanging control software or macros for controlling appliance services in a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/283Processing of data at an internetworking point of a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0681Configuration of triggering conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0695Management of faults, events, alarms or notifications the faulty arrangement being the maintenance, administration or management system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Selective Calling Equipment (AREA)
  • Telephonic Communication Services (AREA)

Abstract

触发器(或触发动作集)的执行可由所有者设备委托给委托设备。所述委托设备可承担执行所述触发器的责任,而无需来自所述所有者设备的进一步通信。所述所有者设备可监视所述委托设备的状态;如果所述委托设备进入其中其被推定为不可用以执行所述触发器的状态,则所述所有者设备可恢复执行所述触发器的所述责任。

Description

自动化环境中触发器执行的委托
相关专利申请的交叉引用
本申请要求于2015年7月31日提交的美国临时申请62/199,892和于 2016年6月12日提交的美国申请15/180,046的权益,其公开内容以引用方式并入本文。
本公开涉及以下美国专利申请:2015年2月5日提交的申请 14/614,914;2015年5月29日提交的申请14/725,891;以及2015年5月29 日提交的申请14/725,912。这些申请的公开内容全文以引用方式并入本文。
背景技术
本公开一般涉及自动化环境,并且具体地涉及在这样的环境中委托执行触发动作集。
电子设备在多种应用中变得越来越普及。移动电话、平板电脑、家庭娱乐系统等仅仅是用户经常与之互动的电子设备中的一些。
另一类日益普及的电子设备包括各种电子可控设备,诸如恒温器、照明设备、家用电器等。用户希望使用移动设备等轻松和方便地控制这些设备,并使其操作自动化。
发明内容
目前,用户可能难以管理多个电子可控设备或系统。例如,用户的家可能有恒温器、电子可控照明系统、家庭安全系统等等。每个这样的系统可由不同的制造商制造,并且每个制造商可提供专用控制器设备(例如,基于IR的远程控制设备)或控制器应用程序(或者“app”),其可供用户安装在通用设备诸如智能电话、平板电脑或家庭电脑系统上并在其上运行。每个控制器设备或控制器应用程序通常针对特定制造商的系统进行定制,并且可能不能与来自其他制造商的系统或甚至来自同一制造商的其他系统进行互操作。这种零碎的方法不容易扩展。寻求创建具有可以集中控制或管理的不同设备的阵列的“智能家庭”环境等的用户面临需要积累大量控制器设备和/或控制器应用程序。
本发明的某些方面可在用于控制器设备(或“控制器”)与任何数量的将被控制的其他电子设备(本文中被称为“附件设备”或简称为“附件”)之间通信的协议的环境下操作。例如,通过提供具有合适的可执行程序代码的通用计算设备,可在通用计算设备诸如台式计算机、膝上型计算机、平板电脑、智能电话、其他移动电话或其他手持或可穿戴计算设备上实现控制器;或者,控制器可以是专用计算设备。附件可包括可由控制器控制的任何设备。附件的示例包括灯具、恒温器、门锁、自动开门器 (例如,车库开门器)、照相机或摄像机等等。附件和控制器可使用标准传输协议诸如Wi-Fi、Bluetooth、Bluetooth LE等通过有线或无线信道相互通信。应当理解,可使用其他通信协议和传输手段。
在一些实施方案中,可提供“统一的”附件协议,控制器可通过该协议将命令控制消息发送到附件,并且以统一的格式接收来自附件的响应,而不管附件的类型或功能如何。例如,附件可被定义为服务的集合,其中每个服务被定义为一组特征,每个特征在任何给定时间具有一个定义值。这些特征可表示附件状态的各个方面。该协议可以定义消息格式,控制器可通过该消息格式询问(例如,通过读取)和更新(例如,通过写入)附件的特征(单独或成组),由此允许控制器确定和/或改变附件的状态。因此,不管附件的功能是怎样的,都可通过一致的方式来控制任何类型的附件。
在一些实施方案中,该协议可以定义可用于防止未经授权的控制器操作附件的安全措施。例如,附件可被配置为仅接受来自之前已与附件建立配对并且因此被该附件识别的控制器的请求。该协议可以指定配对程序,以便在未经附件的合法所有者/运营商批准的情况下将发生配对的风险降至最低。此外,协议可以指定端到端的消息加密,使得只有特定的控制器和附件可以解密在它们之间交换的消息。
用户可能希望使附件的某些动作自动化,使得响应于特定事件或条件的发生而自动执行动作,诸如当用户到达家中时打开某些灯或在就寝时关闭电器。在一些实施方案中,附件动作的自动化可通过定义触发动作集 (本文中也被称为“触发器”)来实现。触发动作集可例如通过向控制器指定触发事件(其可以是可由控制器检测到的任何事件)和在控制器检测到触发事件时要执行的一个或多个结果动作(包括在自动化环境中的附件设备上的一个或多个操作)来定义。触发动作集可由控制器例如通过如下方式执行:检测触发事件的发生,并且响应于检测到触发事件的发生,向附件发送命令控制消息以执行一个或多个结果动作。在一些实施方案中,触发器的定义还可包括一个或多个触发条件;当检测到触发事件的发生时,控制器可确定是否满足触发条件,并且可根据满足触发条件来向附件发送命令控制消息以执行一个或多个结果动作。
本发明的某些实施方案涉及将由一个控制器设备(也称为“自有设备”)对触发动作集的执行委托给另一个控制器设备。在一些实施方案中,自有设备可以是由用户操作的移动设备诸如智能电话或平板电脑,用户在其上定义触发动作集。自有设备可与另一个控制器设备(“受托者”)通信,该控制器设备可以是例如驻留在自动化环境中并且能够协调从多个控制器设备发起的操作的协调器设备。例如,自有设备可向受托者发送委托消息,在这种情况下委托消息可包括触发器的定义(例如,触发事件和要执行的结果动作)。又如,自有设备可更新定义触发器的触发器数据对象以指示委托状态;触发器数据对象可以是在与特定自动化环境相关联的所有控制器之间共享(例如,通过本地或基于云的同步)的环境模型的一部分,并且受托者可通过自动化同步操作来接收更新的触发器数据对象。不管委托的特定机制如何,受托者都可以承担执行触发器的责任 (即,检测触发事件并执行结果动作),而无需来自所述自有设备的进一步通信。在一些实施方案中,自有设备也可指示受托者启用或禁用委托的触发器。
在某些情况下,受托者有可能变得不可用。例如,受托者可能会脱机或从具有与附件通信的授权的用户账户注销。在一些实施方案中,触发器的自有设备(或者一些其他指定的“后备”控制器)可监视受托者的状态;如果受托者变为“不可用”,则监视受托者状态的控制器可承担执行触发器的责任。
在一些实施方案中,协调器设备(或其他受托者)可接收多个委托的触发器,包括由不同控制器所拥有的触发器。在协调器接收到多个委托的触发器的情况下,协调器可执行一致性检查操作来检测不同触发事件和动作之间的冲突。例如,两个触发器可响应于相同的触发事件来指定不兼容的动作(例如,一个触发器可指定打开特定的灯,而另一个触发器指定关闭此灯)。冲突的另一个示例可以是“循环”,其中一个触发器的结果动作是另一个触发器的触发事件,并且反之亦然。(更长的循环也是可能的。)协调器可例如通过比较触发事件和不同触发器的结果动作检测冲突,并且可提醒一个或多个用户冲突以便于解决。协调器还可以禁用一个或多个冲突触发器的执行,直到冲突得到解决(例如,由用户修改至少一个触发器的定义)的时间为止。在一些实施方案中,协调器或其他控制器能够自动解决某些类型的冲突和/或合并重叠但不冲突的触发器。
在一些实施方案中,自动化环境可包括可以彼此通信以优化操作的多个协调器。例如,每个控制器可被分配给特定的协调器,并且可以将委托消息发送到其所分配的协调器。但是,所分配的协调器可能不是检测触发事件或执行结果动作的最有效的设备。例如,如果所分配的协调器位于家中的楼下房间中,并且结果动作包括在楼上房间中打开灯,则楼上房间中的协调器可能能够更好地执行该动作。因此,在一些实施方案中,成为特定触发器的受托者的协调器(或任何其他控制器)可将触发器重新委托给第二协调器(或其他控制器)。这种重新委托可对用户透明地执行。
以下具体实施方式连同附图将提供对本发明的实质和优点的更好理解。
附图说明
图1示出了根据本发明的实施方案的家庭环境。
图2示出了根据本发明的实施方案的网络配置。
图3示出了根据本发明的实施方案的表格,其列出了用于定义触发动作集的选项。
图4示出了根据本发明的实施方案的表格,其列出了可定义的触发动作集的示例。
图5示出了根据本发明的实施方案的网络配置,其中触发器从控制器委托给协调器。
图6示出了根据本发明实施方案的用于委托触发器的过程的流程图。
图7示出了根据本发明实施方案的用于执行所委托触发器的过程的流程图。
图8示出了根据本发明实施方案的用于执行所委托触发器的另一个过程的流程图。
图9示出了根据本发明的实施方案的具有两个协调器的网络配置。
图10示出了根据本发明实施方案的用于重新委托所委托触发器的过程的流程图。
图11A和图11B示出了根据本发明实施方案的用于确定是否执行触发器的过程的流程图。
图12示出了根据本发明的实施方案的控制器的简化框图。
图13示出了根据本发明的实施方案的附件的简化框图。
具体实施方式
示例性环境
图1示出了根据本发明的实施方案的家庭环境100。家庭环境100包括控制器102,该控制器可与位于该环境中的各种附件设备(也称为附件)通信。控制器102可包括例如台式计算机、膝上型计算机、平板电脑、智能电话、可穿戴计算设备、个人数字助理,或能够向附件传送命令控制消息 (例如,如上文提及的美国申请14/614,914中所描述)并且呈现用户界面以允许用户指示出对附件的期望操作的任何其他计算设备或设备组。在一些实施方案中,控制器102可使用多个分立的设备来实现。例如,可以存在一个基站以及一个或多个移动遥控站(例如,手持式或可穿戴设备诸如移动电话、平板电脑、智能手表、眼镜等),其中基站与附件通信,并且可安装在环境100中的固定位置处,而移动遥控站提供了用户界面,并且与基站通信以实现对附件的控制。在一些实施方案中,基站可如下所述充当协调器或代理。
可对任何类型的附件设备进行控制。附件设备的示例包括门锁104、车库门系统106、灯具108、安保摄像机110和恒温器112。在某些情况下,控制器102可与附件直接通信;例如,控制器102被示出为直接与门锁104和车库门系统106通信。在其他情况下,控制器102可经由中间体进行通信。例如,图中示出控制器102经由无线网络接入点114与位于由接入点114提供的无线网络上的附件108,110,112通信。如上所述,在一些实施方案中,控制器102可包括基站,并且基站功能可集成到接入点114 中,或集成到待控制的附件之一(例如,恒温器112)中。另一种类型的中介可以是协调器116,其除了作为控制器操作之外,还可以在其他控制器和附件之间中继消息。在一些实施方案中,协调器116还可以实现各种控制逻辑,以自动化或优化与附件的交互;下文描述了示例。
可使用各种通信传输手段以及传输手段的组合,并且不同的传输手段可用于不同的设备。例如,一些无线传输手段诸如由Bluetooth SIG发布的
Figure BDA0001559325750000061
经典或
Figure BDA0001559325750000062
智能通信协议和标准(本文中称为“Bluetooth”和“Bluetooth LE”)可支持设备之间在有限范围内的点对点直接通信。由Wi-Fi联盟(Wi-Fi Alliance)发布的遵从
Figure BDA0001559325750000063
网络标准和协议的其他无线传输手段,诸如无线网络(本文中称为“Wi-Fi网络”),可定义具有在网络上的不同设备之间路由通信的中央接入点的无线网络。另外,虽然示出了无线通信传输手段,但也可为一些或所有附件提供有线传输手段。例如,灯泡108可通过有线连接而连接到接入点114,并且控制器 102可通过向接入点114无线地发送消息而与灯泡108通信,该接入点可经由有线连接将消息递送到灯泡108。又如,协调器116可如图所示经由有线连接(如果需要,该连接可以是无线的)而连接到接入点114,并且控制器 102可经由接入点114通过向协调器116发送消息而与附件诸如灯泡108通信;协调器116可经由接入点114,或经由另一信道诸如Bluetooth LE信道而与灯泡108通信。有线通信和无线通信的其他组合也是可能的。
另外,虽然示出了一个控制器102,但家庭环境中可存在多个控制器设备。例如,该家庭中所居住的每个人可拥有他或她自己的一个或多个便携式设备,这些便携式设备可充当附件104至112中的一些或全部的控制器。不同的控制器设备可被配置为与附件的不同子集通信;例如,可阻止子女的控制器修改恒温器112上的设置,而允许父母的控制器设备修改该设置。此类许可或权限可使用例如下文所述的和上文引用的美国申请 14/725,891中所述的技术来配置和控制。
在一些实施方案中,统一附件协议可有助于控制器102与一个或多个附件104至112的通信。该协议可提供一种简单且可扩展的框架,该框架可将附件作为服务的集合来建模,其中每个服务被定义为一组特征,每个特征在任何给定时间具有一个定义值。各种特征可表示附件状态的各个方面。例如,就恒温器112而言,特征可包括电力(接通或断开)、当前温度和目标温度。在一些实施方案中,消息格式可以是依赖于传输的,同时符合相同的附件模型。基于服务和特征的附件模型的示例描述于上文引用的美国申请14/614,914中。
协议还可定义控制器102的消息格式,以向附件112(或其他附件) 发送命令控制消息(请求),并且可定义附件112的消息格式,以向控制器102发送响应消息。命令控制消息可允许控制器102询问附件特征的当前状态,并且在某些情况下修改该特征(例如,修改电力特征可将附件断开或接通)。因此,不管附件的功能或制造商是怎样的,都可通过发送适当的消息来控制任何类型的附件。各种附件的格式可以相同。消息格式的示例描述于上文引用的美国申请No.14/614,914中。
协议还可提供通知机制,该通知机制允许附件112(或其他附件)在发生状态变化的情况下选择性地通知控制器102。可实现多个机制,并且控制器102可针对给定目的,对最适当的通知机制进行注册或订阅。通知机制的示例描述于上文引用的美国申请No.14/614,914中。
在一些实施方案中,与给定附件的通信可限于授权控制器。在用户希望控制器102能够控制附件104这一事件具有较高置信度的情况下,协议可指定用于在控制器102与给定附件(例如,门锁附件104)之间建立“配对”的一个或多个机制(包括本文中称为“配对设置”和“配对添加”的机制)。配对设置可包括带外信息交换(例如,用户可将附件104提供的数字或字母数字PIN或密码输入由控制器102提供的界面中)以建立共享秘密。这个共享秘密可用于支持“长期”公共密钥在控制器102和附件104 之间的安全交换,并且每个设备可存储从另一个设备接收的长期公共密钥,以使得所建立的配对可以是持久性的。在建立了配对后,则认为控制器102已被授权,随后,控制器102和附件104可根据需要进入和退出通信,而不会失去所建立的配对。当控制器102尝试与附件104通信或控制该附件时,可首先执行“配对验证”过程,以验证存在已建立的配对(例如,控制器102先前已完成与附件104的配对设置的情况也是如此)。配对验证过程可包括每个设备证明其拥有与在配对建立期间交换的长期公共密钥对应的长期私有密钥,并且还可包括建立新的共享秘密或会话密钥以加密在“配对验证”会话(在本文中也称为验证会话)期间的所有通信。在配对验证会话期间,具有适当特权的控制器可执行“配对添加”过程,以便代表另一个控制器与附件建立另一个配对。任一设备均可仅通过使会话密钥的副本破坏或无效而在任何时间结束配对验证会话。
在一些实施方案中,多个控制器可与同一附件建立配对(例如,通过与附件执行配对设置,或通过由先前已与附件建立配对设置的控制器添加配对),并且附件可接受并响应来自其配对控制器中的任一者的通信,同时拒绝或忽略来自未配对控制器的通信。配对设置、配对添加和对验证过程的示例以及安全相关操作的其他示例描述于上文引用的美国申请No. 14/614,914中。
在一些实施方案中,控制器(或其用户)可被分配关于附件的各种许可或权限。例如,管理员(或“admin”)权限可以是最高级别的权限,并且具有管理员权限的控制器可与附件建立配对并控制附件状态的任何可控特征。在一些实施方案中,管理员权限可被授予第一控制器以执行与特定附件的配对设置,并且在管理员控制器执行配对设置之后,附件可拒绝执行与任何其他控制器的配对设置;相反,管理员控制器可以通过执行配对添加来授予对其他控制器(或其他用户)的访问。在一些实施方案中,管理员控制器可为每个添加的控制器指定权限(包括管理员权限)。
应当理解,家庭环境100是例示性的,并且变型形式和修改形式是可能的。本发明的实施方案可以在用户希望使用控制器设备来控制一个或多个附件设备的任何环境中实施,所述控制器设备包括但不限于房屋、汽车或其他车辆、办公楼、具有多个建筑物的园区(例如,大学校园或公司园区)等等。可以控制任何类型的附件设备,包括但不限于门锁、开门器、灯具或照明系统、开关、电源插座、照相机、环境控制系统(例如,恒温器和HVAC系统)、厨房电器(例如,冰箱、微波炉、炉灶、洗碗机)、其他家用电器(例如,洗衣机、干衣机、吸尘器)、娱乐系统(例如,电视机、立体声系统)、窗户、窗帘、安全系统(例如,警报器)、传感器系统等等。单个控制器可与任何数量的附件建立配对,并且可与不同的附件在不同时间选择性地通信。类似地,单个附件可由已与其建立配对的多个控制器控制。可通过将功能建模为具有一个或多个特征的服务,并且允许控制器与该服务和/或其特征发生交互作用(例如,读取、修改、接收更新的通知)来控制附件的任何功能。因此,不管附件功能或控制器形状因数或具体界面如何,本发明的实施方案中所使用的协议和通信均可在任何情况下统一地用于一个或多个控制器和一个或多个附件。
图2示出了根据本发明的实施方案的网络配置200。配置200允许控制器202经由协调器210与位于本地环境206(例如,家庭环境)中的附件 204通信。各个控制器202可以是经常出入于环境206的用户(例如,家庭住户或家庭固定访问者)所拥有和/或操作的电子设备。各个控制器202可类似于图1所示控制器102,附件204可类似于图1所示的各种附件。
附件204可各自与可位于本地环境206中的协调器设备(或“协调器”)210通信。如本文所使用,“协调器”可以是能够作为附件204的控制器来操作、并将其他控制器(例如,控制器202)的消息中继到附件204 的电子设备。在一些实施方案中,协调器210可以是可在多个控制器和/或附件间协调操作、并且不限于被动地中继消息的“智能”设备。协调器210 可包括能够将其自身作为控制器呈现给附件204、并且能够与控制器202安全地通信的任何设备。在一些实施方案中,协调器210可将其自身作为控制器呈现给附件204,或作为附件(所述附件提供了用于与其他附件,例如附件204进行通信的服务)呈现给控制器202;其示例在上文引用的美国申请14/725,891中有所描述。在一些实施方案中,协调器210可以是预期留在本地环境206中,并且预期在大部分或所有时间被接通且可用于通信的设备。(应当理解,协调器210可能会偶尔不可用,例如,在软件或固件升级、电力中断或出现其他间歇时)。例如,协调器210可实现于以下各项设备中:台式计算机、Wi-Fi或接入点单元、专用附件控制基站、电视或其他器具的机顶盒(除了与电视或其他电器发生交互作用外,还可实现协调器功能),或根据需要任何其他电子设备。
在一些实施方案中,协调器210和附件204可使用局域网(LAN)诸如 Wi-Fi网络和/或点对点通信媒介诸如Bluetooth LE来通信。应当理解,可使用其他通信协议。在一些实施方案中,控制器202、附件204和协调器210 可如上所述支持统一附件协议,该统一附件协议可使用Wi-Fi和Bluetooth LE两者作为传输手段来支持。
在图2的示例中,控制器202(1)和202(4)当前与附件204和协调器210 一起位于本地环境206中。例如,控制器202(1)可与附件204和协调器210 位于同一LAN上。控制器202(2)和202(3)当前位于本地环境206之外,但是连接到通信网络208(例如,互联网)。这样的控制器被称为“远离”附件204和协调器210。应当理解,控制器202可以是有时位于本地环境206 内、而有时位于本地环境206外的移动设备。附件204无需是移动的,并且不需要连接到通信网络208(虽然如果需要,它们也可连接到通信网络)。在一些实施方案中,协调器210可连接到通信网络208,并且可便于通过远程控制器202(2)和202(3)访问附件204。
在所示示例中,控制器202可经由协调器210与附件204通信,并且协调器210据称可充当附件204的“代理”。协调器210可与附件204(1)和 204(2)直接通信。就附件204(3)的情况而言,协调器210可经由“桥接器” 212来通信。桥接器212可操作以在控制器和附件之间中继命令;在一些实施方案中,桥接器212和/或协调器210也可以在由协调器210或控制器 202和附件204(3)使用的不同通信协议之间进行转换。此外,在一些实施方案中,桥接器212可实现为“隧道”,该隧道在协调器210与附件204(3) 之间提供安全的端对端通信。代理、桥接器和隧道的示例描述于上文引用的美国申请14/725,891中。
在网络配置200的一些具体实施中,控制器202可被配置为每当可能时就经由协调器210与附件204通信。因此,如图所示,位于本地环境206 中的控制器202(1)与位于远程的控制器202(2)和202(3)一样,与协调器210 通信而不是直接与附件204通信。控制器202和附件204中的任一个之间的直接通信可被限制为例如协调器210不可用的情况。在其他实施方案中,控制器202可与附件204直接通信,无论二者何时恰好处于彼此的范围内(例如,在相同的Wi-Fi网络上或在蓝牙范围内)。例如,如图所示,控制器202(4)可与附件204(2)直接通信。
在一些实施方案中,协调器210可用于协调多个控制器202对多个附件204的访问。例如,不是在每个控制器202和每个附件204之间建立配对,而是控制器202可各自与协调器210建立配对,并且协调器210可与每个附件204建立配对。用于建立控制器-附件配对的相同配对设置和/或配对添加过程,也可用于建立控制器-协调器配对,其中协调器充当附件的角色。为了进行协调器-附件配对,协调器可承担控制器的角色。因此,协调器210可在与控制器(例如,控制器202中的任一个)通信时将其自身作为附件呈现,并且当与附件(例如附件204)通信时将其自身作为控制器呈现。
协调器210可促进包括附件204在内的附件网络的操作。例如,协调器210可维护用于附件网络的环境模型,并且可将模型(或其部分)提供给各种控制器202;下文对环境模型的示例进行了描述。控制器202可通过与协调器210交互来操作附件204。
在一些实施方案中,协调器210可管理与附件网络或环境模型相关联的许可,以限制特定控制器202对一些或所有附件204的访问。在一些实施方案中,控制器202可通过协调器210优先将所有请求路由到附件204,并且在一些实施方案中,附件204可被配置为仅与协调器210直接通信并忽略直接来自控制器202的请求。这可允许协调器210对访问附件204执行许可和其他限制。
通过协调器210与附件集中通信可以简化对控制器网络和/或附件网络 (例如,本地环境206中的控制器202和附件204)的管理。例如,如果获得新的附件,则新的附件只需要建立与协调器210的配对,以便允许所有的控制器202访问新的附件。类似地,如果获得新的控制器202,则新的控制器202仅需要建立与协调器210的配对,以允许新的控制器访问所有附件204。在具有多个控制器(例如,成员各自具有多个设备的家庭)以及可能有数十个附件的环境中,可显著节省时间。
应该注意的是,在配置200中,一个或多个控制器(例如,控制器 202(1))可能被允许与一个或多个附件(例如,附件204(1))间接地(经由协调器210)而不是直接地通信,而无论控制器202(1)是否位于本地环境 206中。例如,如果控制器202(1)已经与协调器210建立配对,但不是与附件204(1)直接建立配对,则这可能发生。在某些情况下,这可提供增强的安全性;例如,具有与协调器210建立的配对的附件可拒绝建立任何其他配对。然而,可能存在需要直接访问的情况,并且可允许在某个附件(例如,附件204(1))和一个或多个控制器202之间建立直接配对。例如,假定附件204(1)是门锁并且控制器202(1)是移动电话。如果在附件204(1)和控制器202(1)之间建立了直接配对,则用户可使用控制器202(1)经由直接通信来锁定或解锁附件204(1),从而锁定或解锁门。例如,在协调器210暂时不可用的情况下,这可能是有用的。在一些实施方案中,协调器210可用于向附件204(1)指示哪些控制器202被授权直接访问,并且附件204(1)可与已授权控制器202建立配对。在一些实施方案中,附件204(1)可被配置为只有当协调器210不可用时,接受来自已授权控制器202的直接通信。因此,一般规则可为:与附件204的所有通信都通过协调器210,而以每个附件和每个控制器为基础进行例外处理。
协调器210可作为智能代理来操作,以允许控制器操作附件,而不是简单地中继消息。例如,协调器210可建立与每个控制器202的配对以及与每个附件204的配对。当控制器202(1)例如接收到与特定附件(例如,附件204(1))交互的用户请求时,控制器202(1)可与协调器210建立第一配对验证会话,并且经由第一配对验证会话将附件204的指令提供给协调器 210。协调器210可接收指令,与附件204建立第二配对验证会话,并且经由第二配对验证会话向附件204发送适当的控制消息。在一些实施方案中,协调器210可知道指令的内容,并且在一些实施方案中,发送到附件 204的消息不必对应于由控制器202(1)提供的指令。例如,在与控制器 202(1)通信时,协调器210也可与另一个控制器(例如,控制器202(2))通信。控制器202(1)和202(2)可各自将附件204的指令提供给协调器210。协调器210可分析所接收到的指令,例如以检测和解决冲突,诸如在控制器 202(1)指示协调器210打开附件204的同时控制器202(2)指示协调器210关闭附件204。协调器210可以用优先级规则或用于解决冲突的其他规则来编程(例如,“开”优先于“关”;来自具有管理员权限的控制器的指令优先于来自没有管理员权限的控制器的指令;等等)。协调器210可应用优先级规则来解决任何冲突,并且可以基于这种解决将指令传送给附件204。当从附件204接收到响应时,协调器210可以确定是否向控制器202(1)和/ 或向控制器202(2)发送对应的消息(或不同的消息)。又如,协调器210 可执行为各种控制器202和/或附件204建立的权限。例如,当控制器202 中的一个发送请求时,协调器210可以应用判定逻辑来确定发送请求的控制器202是否具有适当的许可;如果不是,则协调器210可拒绝该请求。判定逻辑可以根据需要为简单的或复杂的;例如,属于子女的控制器可能受限于一天中的哪些小时或者其可以操作特定附件(例如,电视机)多长时间,而父母的控制器可具有不受限的访问,或者与一个客人(例如,保姆)相关联的控制器可被限制为操作附件的某个子集。因此,协调器210 不限于充当控制器和附件之间的消息的被动中继器,而是可以主动干预以解决冲突指令,执行被授予特定控制器或用户的权限或许可上可能存在的任何限制,等等。
应当理解,网络配置200是例示性的,并且变型形式和修改形式是可能的。可将任何数量的控制器和任何数量的附件纳入在网络配置中。在一些实施方案中,协调器210可以替换为代理,该代理无需读取消息内容即可在控制器与附件之间中继消息。在一些实施方案中,可完全省去协调器 210。一些或全部附件204可能仅在本地环境内可访问。此外,如下所述,不同的控制器202可具有关于访问附件204的不同级别的许可;例如,经由网络208的远程访问可被允许用于一些控制器202,但不允许用于其他控制器202。
如上所述,协调器210可在具有可被控制的多个附件的自动化环境的情况下特别有用。示例包括房屋、汽车或其他车辆、办公楼、具有多个建筑物的园区等等。出于举例说明的目的,将描述房屋的附件网络具体实施的示例;接触本公开的本领域技术人员将会理解,可以在其他自动化环境中实现类似的附件网络。
在附件网络的一个示例中,每个附件连接到一个或多个控制器,并且附件可以通过发送消息来控制,例如,如在上文引用的美国申请14/725,912 和美国申请14/614,914中所述。对于只有少数附件的小型网络来说,这是完全可供使用的。然而,在某些情况下,特别是随着附件数量的增加,建立对于可以协调的方式进行管理的(对用户而言)有意义的附件组可为有帮助的。因此,本发明的某些实施方案结合了可用于协调跨附件网络中的多个附件的控制的环境模型。
如本文所用,环境模型可提供环境中的附件的各种逻辑分组。例如,家庭环境可通过定义可以表示家中的房间(例如,厨房、客厅、主卧室等)的“房间”来建模。在某些情况下,模型中的房间不一定对应于家中的房间;例如,可以有“前院”房间或“任何地方”房间(其可用于指存在于家中的附件,但其在家中的位置可以改变或者没有被定义为房间)。家中的每个附件可例如基于附件的实际物理位置分配给环境模型中的房间。可基于物理和/或逻辑相似性将房间分组成区域。例如,两层楼房的环境模型可具有“楼上”区域和“楼下”区域。又如,环境模型可具有“卧室”区域,其包括所有的卧室而不管它们在哪里。该模型可以根据需要 (例如,取决于环境的大小和复杂性)为简单的或复杂的。
在定义环境模型的情况下,环境模型中表示的附件可以单独控制,也可以在房间、区域或整个模型的层面进行控制。例如,用户可以指示控制器或协调器打开所有的外部灯或关闭特定房间中的所有附件。
还可以定义其他附件分组。例如,在一些实施方案中,用户可通过将各种附件分组成“服务组”来扩充环境模型,所述“服务组”可包括用户可能希望在至少一些时间一起控制的任一组附件。服务组可包括房间或区域的任何组合中的附件,并且服务组中的附件可以是同类的(例如,所有楼上的灯)或者异类的(例如,灯、风扇和电视机)。在一些实施方案中,用户可以向控制器提供单个指令以设置整个服务组的状态(例如,打开或关闭该组)。虽然不是必需的,但是服务组的使用可以提供在协调对多个附件的控制方面的另一种程度的灵活性。
在一些实施方案中,给定环境的环境模型可被表示为数据对象(或数据对象的集合)。环境模型可以在与环境相关联的控制器(例如,具有管理员权限的控制器)上创建,并且可通过同步操作与其他控制器共享。例如,图2的控制器202可与由协调器210(其可以从控制器202接收更新) 维护的环境模型的“主”副本同步,或者可使用基于云的同步(其中主副本存储在经由网络208可访问的位置,该位置和与环境相关联的控制器和一个或多个协调器自动同步)。因此,与给定环境相关联的所有控制器和协调器可以共享对相同环境模型的访问。
在上文引用的美国申请14/725,912中描述了与定义和使用环境模型有关的另外的示例。应当理解,环境模型不需要利用下文所述的至少一些特征。
触发动作集
协调控制多个附件的一个模型可基于“触发动作集”或“触发器”。触发动作集可定义在发生某些事件或条件时要采取的一组动作。在一些实施方案中,触发动作集的执行(也被称为“执行触发器”)可以分阶段进行。在第一阶段,在控制器(例如,上述控制器202中的任一个)或协调器(例如,上述协调器210)处检测“触发事件”。响应于检测到触发事件,检测到该事件的控制器202(或协调器210)可测试是否满足“触发条件”。如果满足,那么可执行一个或多个“结果动作”。因此,用户可以通过指定触发事件、触发条件以及一个或多个结果动作来定义触发动作集。
图3示出了根据本发明的实施方案的表格300,其列出了用于定义触发动作集的选项。列302列出了触发事件的示例。如本文所用,触发事件可以是可由控制器(例如,上述控制器202中的任何一个)或协调器(例如,上述协调器210)检测到的任何情形。列302列出了可检测的触发事件类别的示例。可以相对于本地环境206的位置来定义“地理围栏”,例如在半英里内、在1000英尺内等。具有确定其位置(例如,使用全球定位服务(GPS)接收器、RF指纹等)的能力的控制器202(或其他用户设备)可以检测其何时进入或离开地理围栏,并且可以将该事件报告给其他控制器202 和/或协调器210。在一些实施方案中,控制器202可以响应于检测到其自身或另一个控制器202已经进入或离开地理围栏,来测试触发条件;另外地或相反地,控制器202可以将事件报告给协调器210,该协调器可以测试触发条件。因此,可以基于任何控制器(或特定控制器)进入或离开地理围栏这一情况来定义触发事件。在一些实施方案中,可以支持更细粒度的地理触发事件,诸如检测用户(或设备)何时进入或离开家中的特定房间。
当控制器或协调器从附件接收到状态改变的通知时,可以检测附件状态改变事件。由附件向控制器发出的状态改变通知可按统一的附件协议来实现,例如,如在上文引用的美国申请14/614,914中所述。(应当理解,由于协调器210可以作为与附件204相关的控制器来操作,所以协调器210 可按与其他控制器相同的方式从附件接收状态改变通知。)对附件状态的任何方面的任何改变都可以用作触发事件。例如,如果附件具有检测附件附近的移动的运动传感器,则当运动传感器开始检测移动时可发生状态改变,并且该状态改变可以是触发事件。类似地,可由附件的传感器检测到的附件环境中的任何其他变化可用于定义触发事件。
时间/日期事件可以是参考时钟和/或日历所定义的事件。时间/日期事件的示例可以包括“每天晚上10点”,“星期六上午8点”等等。具有对时钟和/或日历数据的访问权限以确定当前时间和/或日期的任何控制器或协调器,可以检测何时发生时间/日期事件。
“天气”事件可能与这样的外部条件相联:其可能以不规律的时间间隔发生改变,并且可能难以预测或无法预测。天气事件的示例包括日出和日落,这可根据日期和地点而在不同的时间发生。其他示例包括室外温度超过或低于阈值、开始或停止降雨、气压变化、风速达到阈值、环境光线水平高于或低于阈值、地震活动等。控制器或协调器可以使用各种技术来检测天气事件。例如,控制器或协调器可以周期性地轮询在线天气服务等来检索天气数据。另选地,天气传感器(例如,温度计、风速计、气压计、光传感器)可以安装在屋外,并且可以从传感器检索天气数据。日出和日落时间可根据位置和日期而变化,但其变化比大多数天气事件更可预测,因此可根据家的位置和日历日期来计算。
“通知”事件可以包括任何类型的这样的电子消息信号:其在信号源处生成,并且无论采用何种信号源,该信号都可由协调器或控制器接收。例如,协调器或控制者能够接收紧急广播消息(例如,龙卷风警报、海啸警报、地震活动警报)。又如,协调器可以接收来自与家庭相关联的控制器之一的通知(例如,控制器用户的日程安排已改变的通知);在一些实施方案中,此类通知可以由暂未处于本地环境中的控制器生成。又如,协调器可以从不同本地环境(例如,邻居家中,假设邻居已经授权共享通知)中的协调器接收通知;此类通知可以包括,例如基于邻居已安装的天气传感器而得的与天气相关的信息、安全信息(诸如检测可能的入侵或可疑活动)等。
用户的存在与否可以使用家中的现有传感器来确定,并且/或者通过每个用户通常在他或她身上携带的特定用户设备的存在与否来确定。例如,协调器210可以检测本地环境206中存在哪些控制器202,并且可以相应地推断控制器202的用户的存在与否。
可以基于控制器接收或发起与某个其他用户设备的通信,来检测“通信事件”。例如,通信事件可以对应于接收或拨打电话(任何号码或指定号码或用户联系人)、接收或发送(任何人或用户的指定联系人)文本消息,等等。
“应用事件”可以由在控制器上执行的应用程序(“应用”)来发起。在一些实施方案中,控制器设备的操作系统可以提供可由应用调用以指示触发事件的应用程序界面(API)函数调用。应用可以被编程为在各种条件下调用该函数调用,诸如当应用启动或退出时、当应用内发生错误时、或者当用户执行与执行中应用的特定交互时。接收来自应用的触发事件指示的控制器,可以继续进行触发器执行或者向一个或多个其他控制器和/或协调器通知该事件,从而允许其他设备执行相关联的触发器。
“控制器事件”可以基于控制器本身的状态改变。例如,控制器可能连接到充电器或与充电器断开连接。在一些实施方案中,控制器可以与用户所穿戴的可穿戴设备通信,并且可穿戴设备的状态变化(例如,可穿戴设备被戴上或者取下,可穿戴设备被连接到充电器或与充电器断开连接) 可由控制器检测,并作为可触发器的控制器事件来处理。在一些实施方案中,控制器可以进入或者退出与其他设备(包括既非控制器也非附件的设备)的通信,并且此类情形可以被定义为控制器事件。例如,当携带或穿戴控制器的用户进入配有适当装备的车辆时,用户的控制器可以与车辆建立通信;建立或终止与车辆的通信可视为控制器事件。
在一些实施方案中,不存在预期事件本身可被检测为触发事件。例如,如果用户通常在晚上6点到家,则用户在更晚时候(例如,晚上8点或晚上10点)一直不在家的这一情况可被检测为触发事件。
在一些实施方案中,可以使用机器学习来定义触发事件,例如,基于对用户随时间所进行的行动的分析。此类分析可以例如由协调器210来执行,并且可以是任意复杂的程度。例如,协调器210可以观测用户与各种附件的交互并检测模式,诸如“如果下雨超过10分钟,则用户关闭自动洒水器”。基于这种模式,协调器210可以将“下雨超过10分钟”定义为触发事件。
手动用户输入也可以是触发事件。例如,用户可以明确地指示控制器发起特定动作集。
当检测到触发事件时,检测该触发事件的控制器或协调器可以测试与该触发事件所属的触发器相关联的一个或多个触发条件。在一些实施方案中,检测触发事件的控制器可以将事件报告给协调器,并且协调器可以测试触发条件。列304列出了可测试的触发条件类别的示例。
在一些实施方案中,“始终”条件指示出,无论何时检测到触发事件都应该执行结果动作。例如,对于以手动触发事件定义的动作集,触发条件可被定义为“始终”,其结果是用户可以随时手动调用该动作集。基于时间/日期、天气条件以及用户存在与否的触发条件可被类似地定义成触发事件的相应类别。因此,例如,检测天气事件可引起对时间/日期条件的测试,以确定是否执行结果动作。
附件状态触发条件可以基于附件在触发事件之时的当前状态和/或附件状态在触发事件之后的演变。例如,响应于检测到触发事件,检测该触发事件的控制器或协调器可以向特定附件发送读取请求以确定其状态。在一些实施方案中,触发事件可以是一个附件的状态改变(例如,前门从未锁定状态变为锁定状态),而触发条件可以基于另一附件的状态(例如,车库门是否锁定)。又如,触发事件可以是附件的状态改变(例如,附件的运动传感器检测附近的移动),并且触发条件可以基于该状态是否持续最小时间量(例如,是否持续检测都运动达1分钟、5分钟或某个其他时间间隔)。
位置条件可以基于检测到事件的控制器位置和/或另一用户(或另一用户的设备)的位置。例如,触发事件可能是日落,并且触发条件可能是用户不在家;则结果行动可为打开门廊灯。
机器学习可以用来检测历史趋势和行为模式。例如,如果用户在抵达家中时通常打开某些灯,则触发条件可以基于用户进入家附近的地理围栏这一触发事件发生时这些灯的打开情况。又如,机器学习算法可以确定用户在离家时通常关闭车库门;触发条件可以基于用户离开家附近的地理围栏这一触发事件发生时车库门是否关闭。
列306列出了可以响应于满足触发条件而实施的“结果动作”类别的示例。一个类别有关于改变附件的状态。例如,检测触发事件的控制器或协调器可以测试与该触发事件相关联的触发条件。如果满足该条件,则控制器或协调器可以向一个或多个附件发出一个或多个写入请求以改变其状态。因此,例如,可以将触发器定义为:“当前门从未锁定状态变为锁定状态(触发事件)时,检查车库门的状态;如果车库门未锁定(触发条件),则锁定车库门。”检测前门的状态改变可以基于来自前门附件的通知。可以通过向车库门附件发送读取请求来完成对车库门状态的检查,并且可以通过向车库门附件发送写入请求来完成车库门的锁定。
另一类结果动作涉及读取和报告附件的状态。例如,如果满足触发条件,则控制器或协调器可以向一个或多个附件发出一个或多个读取请求以确定其状态,并且可以将其状态通知给用户(例如,通过用户控制器设备上的弹出通知或推送通知)。因此,例如,假设家中的窗户可以作为附件来操作,则可将触发器定义为“当开始下雨时(触发事件),确定用户是否在家;如果用户不在家(触发条件),读取窗户的状态并向用户报告该状态。”用户然后能够远程关闭窗户。
在一些实施方案中,结果动作可以包括除了与附件进行交互之外的动作。例如,如上所述,可以在智能手机或可以支持除了与附件通信之外的其他功能的其他设备上实施控制器。在一些实施方案中,响应于检测到触发条件,控制器可以调用设备的其他功能。例如,控制器可以调用设备的消息收发功能(例如,电子邮件、SMS)来向某人发送消息。控制器也可以启动设备上的应用程序(例如,音乐播放程序)。因此,例如,可以将触发器定义为“当用户到家时(触发事件),如果扬声器系统未在播放音乐(触发条件),则启动音乐应用并将其连接到扬声器系统(结果动作)”。
如这些示例所示,触发器或触发动作集的一般形式可以是“当(触发事件)发生时,检查(触发条件);如果(触发条件)为真,则执行(结果动作)。”用户可以通过根据需要从表300的类别或其他类别中指定触发事件、触发条件和结果动作来定义触发器。在各种实施方案中,触发事件和/或触发条件可按任何复杂度来定义(例如,“如果天黑之后且不是星期二,并且没有用户在家,则...”)。由相同的触发事件和/或触发条件可以触发任何数量的结果动作。
作为进一步的例示,图4示出了根据本发明的实施方案的表格400,其列出了可以定义的触发器或触发动作集的示例。每个触发动作集可以具有用户分配的(或系统分配的)名称402、触发事件404、触发条件406,以及要采取的一个或多个结果动作408(例如,通过向附件发送控制消息)。虽然图中仅示出了三个示例,但可以定义任意数量的触发动作集。在一些情况下,一些触发动作集可以由附件管理系统的提供者预定义,并且用户可以根据需要自定义预定义的动作集或者添加其他集。
例如,可以基于地理围栏触发事件,诸如控制器(例如,图2的控制器202(2))进入家的特定半径(例如,半英里或1000英尺等)内,来触发“回家”触发动作集410。控制器202(2)的位置可以使用车载GPS系统等来确定,并且当控制器202(2)的位置穿过所定义的地理围栏时,该控制器可以向协调器210发送消息,通知协调器210该触发事件已经满足。触发条件可为,时间处于日落之后。“回家”动作可以包括,例如在门厅打开灯、将恒温器设置到期望的温度,和/或所需的其他动作。在接收到控制器 202(2)已穿过进入地理围栏的消息时,协调器210可确定当前时间是否在日落之后,如果是这样,则协调器210可发送控制消息,以实现该动作。在一些实施方案中,控制器202(2)可以根据需要直接或者通过代理或其他中介将控制消息发送给附件,并且不需要使用协调器210。
“看电影”触发动作集412可被手动触发,即通过明确的用户指令来触发。例如,用户可以从控制器所呈现的活动列表中选择“看电影”,或者向控制器的语音控制界面说出指定短语诸如“开始看电影”。在这种情况下,触发条件是“始终”,使得每当用户输入适当的指令时,看电影动作得到执行。响应于触发事件而要执行的动作可以包括,关闭厨房的灯、调暗家庭房里的灯、打开家庭房里的电视机、以及调用电视机的电影选择界面。电影选择界面可以提供例如一组菜单或搜索界面,用户可以通过该菜单或界面来选择本地存储的电影、或可得自电视机所连接的流媒体源的电影。(在一些实施方案中,电视机可以连接到机顶盒、或者能够从本地和/或远程源向TV提供流媒体的其他设备)。在后一种情况下,调用电影选择界面可以包括,指示电视机连接到流媒体源并获取关于可用电影的信息。(应当理解,在这种情况下,任何类型的视频内容都可以被视为“电影”)。
“睡眠”触发动作集414可以在每天的特定时间被触发,例如晚上10 点或当家中住户通常上床睡觉时的某个其他时间。在该实施例中,触发事件设置为晚上10点,触发条件设置为“工作日夜晚”(可以定义为周日晚至周四晚)。因此,在周五或周六晚上10点,“睡眠”动作集不会自动触发。睡眠动作的示例可以包括,关闭楼下区域和儿童卧室内的所有灯;关掉家里的电视机;调暗主卧室的灯;并开始在卧室的音乐播放器上回放“睡前”音乐播放列表。
在一些实施方案中,具有自动触发器的触发动作集也可以手动触发,例如通过用户向控制器的语音控制界面说出命令、从控制器的图形用户界面选择触发器、执行由基于手势的控制器所检测的手势,等等。在一些实施方案中,一些或全部触发动作集可以具有定义的“口语”语音命令;例如,用户可能可以说出类似于“晚安,家”的内容来调用睡眠动作集414。在用户手动调用触发器的情况下,不需要测试触发事件和条件。
图4的实施例仅仅是示例性的。其他触发动作集(或触发器)是可能的。如上所述,在一些情况下,触发事件可以基于某些附件中的状态改变。例如,假设一户人家具有洒水器系统和洗碗机,则期望在洗碗机工作完成之后运行洒水器。可以通过洗碗机从“循环进行中”到“循环完成”的状态改变等来触发启动喷洒器的动作集。协调器或其他控制器可以监视一个附件以检测状态改变(通知过程和控制器检测附件状态改变的其他示例在上文引用的美国申请14/614,914中有所描述),并且可以检测到特定状态变化的情况下自动向另一附件发送消息。
触发器可以包括任何数量的结果动作,并且在一些情况下,同一组结果动作可以具有多个不同的触发事件和/或触发条件。此外,尽管本文描述的实施例可以指代单个触发事件和单个触发条件,但是应当理解,可以定义多个触发事件和/或条件的各种组合,用以触发动作集的执行。可以使用逻辑运算(例如与(AND)、或(OR)、异或(XOR)、与非(AND NOT)等)来形成组合,触发逻辑可以根据需要为简单或复杂的。例如,触发器可以被定义为:“当前门被解锁或当车库门被打开时[多个触发事件的OR],并且如果时间在日落之后且为工作日[触发条件的AND],则向用户呈现可能存在未经授权的进入这一通知”。许多其他的示例是可能的。
应当理解,在用户正在控制一组协调的附件(例如,在房间、区域、或服务组、或触发器内)的任何情况下,附件控制可以通过在控制器和该附件之间使用经配对验证的会话,向组中的每个附件发送单独的消息来实现。附件不需要相互通信,甚至不需要获知彼此的存在。取决于具体实施,控制器可以是由用户操作的控制器(如果它与被控制的附件直接通信),或者它可以是协调器,例如图2的协调器210。在后一种情况下,用户的控制器能够以受控组的粒度向协调器发出指令(例如,“打开安全灯组”),并且协调器可以使用表400或类似的数据结构来确定哪些附件应该接收控制消息。类似地,用户的控制器可以向协调器发出诸如“执行看电影触发器”的指令,并且协调器可以使用表400或类似的数据结构来确定哪些附件应该接收控制消息。
在一些实施方案中,用户可以定义具有各种触发事件和/或触发条件的多个触发动作集。在附件状态改变可以是触发动作集的触发事件的情况下,可能的是,执行一个触发动作集可能导致发生用于另一触发动作集的触发事件。这可导致触发操作集相冲突或“不一致”。例如,第一触发动作集可以包括触发第二动作集的结果动作,其可以撤销第一触发动作集的效果,或者执行第二动作集可以重新触发第一动作集(潜在地导致了重复执行动作集的回环)。又如,两个不同的触发动作集可以响应于同一触发事件而指定不兼容的结果动作。例如,一个触发动作集可以指定在晚上10 点打开客厅中的电视机,而另一个触发动作集指定在晚上10点关闭同一电视机。
为了避免冲突,一些实施方案可以提供“一致性检查”逻辑(例如,在控制器或协调器内),用于确定新定义的触发动作集是否与任何先前定义的触发动作集相冲突。例如,作为环境模型的一部分,控制器设备可以访问现有触发动作集的列表。当用户操作控制器设备的界面以定义新的触发动作集时,控制器设备可以对新触发动作集与现有触发动作集进行一致性检查。如果一致性检查失败,则控制器设备可以拒绝将新触发动作集添加到现有触发动作集的列表中。用户可以被告知拒绝的具体原因并且可以纠正该问题,从而允许新触发动作集得到添加。
可以执行各种一致性检查。例如,控制器设备可以确定用于新触发动作集的触发事件或触发条件是否对应于现有触发动作集的结果动作。若非如此,那么新动作集可被认为符合一致性,并被添加到现有触发动作集列表中。如果新触发动作集的触发事件或触发条件确实对应于现有触发动作集的结果动作,则控制器设备可以确定执行新触发动作集的结果动作是否将触发任何现有动作集。基于该确定,控制器设备可追踪那些结果动作对其他现有触发动作集的影响,从而构建触发动作集链;当控制器识别到其中结果动作不会触发任何其他触发动作集的触发动作集时,链可以结束。通过例如确定新触发动作集的结果动作是否对应于现有触发动作集的触发事件或触发条件,也可以沿相反方向构建链。当构建起触发动作集链时,可以在链中的任意数量的链接上检测到不一致(例如,执行动作集A触发动作集B,动作集B触发动作集C,动作集C又触发动作集A)。在一些实施方案中,控制器设备还可以确定新触发动作集是否“内部不一致”,例如,结果动作是否包括触发事件。为了进行一致性检查,可以忽略手动触发的操作集,这是因为用户可以通过不执行手动触发器来中断“链”。
在上文引用的美国申请14/725,912中描述了触发动作集和用于定义触发动作集的用户界面的附加示例。
触发器的委托执行
以上述方式,可以在任何控制器设备上定义触发动作集或触发器。然而,其上定义有触发器的控制器设备可能并不总为能够最有效或者有效执行触发器的设备。例如,参见图2,可以在控制器设备202(2)上定义触发器,该控制器设备可以在各种时间远离本地环境206。这可以使控制器 202(2)更难执行触发器。例如,触发事件可以是在本地环境206内发生的事件(例如,特定附件204开始或停止操作或以其他方式改变其状态)。控制器202(2)可以通过从相关附件204接收状态改变通知来检测触发事件。如果由于某种原因,控制器202(2)在给定时间不能连接到网络208,则控制器202(2)可能无法接收通知或将控制消息发送到一个或多个附件204,来在触发事件发生时执行与触发相关联的动作集。
因此,本发明的某些实施方案提供了一种机制,由此控制器可以将触发器的执行委托给另一个控制器,例如图2的协调器210。
图5示出了根据本发明的实施方案的网络配置500,其中触发器从控制器委托给协调器。配置500可以大致类似于图2的网络配置200。控制器 502(其可以与图2的控制器202相似或相同)可以经由协调器510(其可以与图2的协调器210相似或相同)与位于本地环境506(其可以与图2中的本地环境206相似或相同)中的附件504(其可以与图2的附件204相似或相同)通信。
在图5的实施例中,控制器502(1)当前与附件504和协调器510一起位于本地环境506中。例如,控制器202(1)可与附件204和协调器210位于同一LAN上。控制器502(2)当前位于本地环境206之外,但连接到通信网络508(例如因特网)。在一些实施方案中,协调器510可连接到通信网络 508,并且可便于通过远程控制器502(2)访问附件504。
在该实施例中,用户可以与控制器502(2)进行交互以定义触发器(或触发动作集)。在一些实施方案中,用户可以输入要执行的触发事件、触发条件和动作集(例如,如上文参考图3和图4所述,以及上文参考美国申请14/725,912所述)。在一些实施方案中,控制器502(2)可以例如作为对自动化环境进行模式分析的结果而生成所提议的触发器,并向用户呈现所提议的触发器以供用户接受或拒绝。
在一些实施方案中,触发器可以使用触发数据对象520来表示。触发数据对象520可以包括名称或其他标识符522(例如,类似于图4的列 402)和触发器定义524(例如,如图4所示的触发事件、触发条件和结果动作)。触发器数据对象520还可以包括所有者字段526,其可以包括“自有设备”标识符(例如,控制器标识符“C2”),其标识出其上创建有触发器的控制器(或者触发器的所有权随后被重新分配到的控制器)和/或“持有用户”标识符(例如“UID1”),其标识出自有设备所属的用户。在一些实施方案中,触发器的所有权可以被重新指定;下文描述了示例。启用字段528可以指示触发器是启用还是禁用,即,执行设备是否应该监视触发事件和触发条件,并采取结果动作。这允许触发器得到定义,但被禁用。例如,如果用户偏离了正常的日常例程(例如,由于休假),则与睡觉或起床相关的触发器可能被禁用。委托字段530可以指示触发器的执行是否已经被委托给除自有设备以外的控制器(例如,委托给协调器 510);如果是这样,那么委托给字段532可以识别出已被委托有该执行的设备。
为了委托触发器,控制器502(2)可以向协调器510(或其他委托设备)发送“委托”消息。在一些实施方案中,委托消息可以包括触发数据对象520。在发送委托消息之前,控制器502(2)可以使用值“真”来填充委托字段530,并且使用协调器510的标识符来填充委托给字段532。授权消息可通过各种方式进行发送。例如,如上所述,协调器510可以将其自身呈现为控制器502(2)的附件,并且其附件定义可以包括授权消息可以指向的“授权”服务。也可以使用其他具体实施。例如,一些实施方案可以支持控制器和/或协调器之间的触发器数据对象的同步(例如,作为上述环境模型的一部分),并且可以经由同步操作传送触发器的委托;下文描述了示例。在使用自动同步的情况下,可能不需要明确的委托消息。
在委托触发器之后,控制器502(2)可以保留触发器数据对象520的副本。如下所述,如果协调器510(或其他受托者)不能执行触发器,则保留触发器数据对象520的副本可允许控制器502(2)恢复执行触发器的职责。
图6示出了根据本发明的实施方案的用于委托触发器的过程600的流程图。过程600可以例如由图5的控制器502(2)(或任何其他控制器)执行并且可以例如使用由处理器执行的合适的程序代码来实现。
在框602处,控制器502(2)可以接收定义触发器的用户输入。例如,用户输入可以指定待执行的触发事件、触发条件和动作集(例如,如上文参考图3和图4所述以及上文引用的美国专利申请14/725,912所述)。在一些实施方案中,控制器502(2)可以例如作为对自动化环境进行模式分析的结果而自动生成所提议的触发器,并向用户呈现所提议的触发器以供用户接受或拒绝。在这种情况下,定义触发器的用户输入可以包括接受所提议的触发器的用户输入。
在框604处,控制器502(2)可以创建表示触发器的数据对象,例如,类似于图5的触发器数据对象520。在一些实施方案中,可以在接收到用户输入时创建数据对象。所有者字段526可以填入控制器502(2)的控制器标识符和操作控制器502(2)以定义触发器的用户的用户标识符。最初,启用字段528可以被设置为假,直到用户完成定义触发器为止,此时默认情况下它可以被自动地设置为真。在一些实施方案中,可以提供用户界面以允许用户启用或禁用触发器,并且可以基于通过用户界面所接收的输入来更新启用字段528。委托字段530最初可以被设置为假,并且委托给字段532 可以为空(或者存储空值)。
在框606处,控制器502(2)可以确定是否将触发器委托给另一个控制器(例如,委托给图5的协调器510)。在一些实施方案中,可以提示用户指示是否委托触发器。在其他实施方案中,委托的判定可以与用户输入无关。例如,控制器502(2)可以确定协调器在触发器所属的自动化环境中是否可用,以及是否可以实现始终将触发器委托给协调器的逻辑(如果协调器可用的话)。又如,控制器502(2)可以根据具体情况确定是否委托触发器。例如,如果触发事件基于控制器502(2)进入或离开地理围栏(例如,如上所述),则控制器502(2)检测触发事件可能比协调器510检测触发事件更容易。在这种情况下,可能不希望委托触发器。也可以使用其他判定逻辑,例如,基于控制器502(2)或协调器510是否可以更有效地或可靠地执行触发器(即,检测触发事件和触发条件并在适当时执行结果动作)。
如果确定不委托触发器,则在框620处,控制器502(2)可以本地执行触发器。例如,根据特定的触发事件,控制器502(2)可以注册或订阅以被通知对应于触发事件的附件状态改变,或者激活其他逻辑以检测触发事件 (或视情况而定的触发事件)。当检测到触发事件时,控制器502(2)可以继续测试触发条件(其可以包括如上所述的“始终”条件或其他条件或多个条件),并且如果满足触发条件,控制器例如通过向一个或多个附件504 发送控制消息来执行结果动作。
在框606处,如果确定委托触发器,则在框608处,控制器502(2)可以将委托消息发送至协调器510(或在框606处选择的其他委托设备)。例如,协调器510可以将其自身呈现给控制器502(2)作为提供“委托”服务的附件,并且控制器502(2)可以将委托消息作为写入请求发送至委托服务。其他具体实施也是可能的。委托消息可以包括触发器数据对象520的副本,其中委托字段530被设置为真并且委托给字段532包括所选择的受托者(例如,协调器510)的标识符。在一些实施方案中,协调器510可以向控制器502(2)发送确认收到委托消息并且/或者以其他方式指示协调器 510已经接受执行触发器的职责的响应;如果未收到确认响应,则委托失败,并且控制器502(2)可以本地执行触发器。在一些实施方案中,控制器502(2)可以通过更新委托字段530和委托给字段532,然后同步更新的触发器数据对象520作为环境模型的一部分来委托触发器;不需要从控制器 502(2)到所选择的受托者的明确委托消息。
在框610处,在委托触发器之后,控制器502(2)可以监视协调器510 (或其他受托者)的状态。例如,控制器502(2)可以周期性地查验协调器 510以验证其仍处于开机状态,正在进行通信,并且能够与本地环境506中的附件504进行通信。可能发生各种情况使得协调器510无法执行已被委托的触发器。例如,协调器510可能断电或者可能失去它的通信连接。在一些实施方案中,只有当具有访问自动化环境权限的用户通过协调器510 登录到账户时,协调器510才作为自动化环境的一部分进行操作(例如,能够与附件504进行通信)。如果协调器510进入“登出”状态(即,没有具有访问权限的用户登录),则协调器510可能变得不能执行触发器。在一些实施方案中,控制器502(2)可以在框610处例如通过周期性地轮询协调器510的状态和/或通过注册来自协调器510的状态更新的通知(或周期性“心跳”通知)来检测这种状况。
在框612处,只要控制器502(2)确定协调器510仍然可用(例如,通信地耦接到附件并登录(如果需要的话)),触发器可以保持委托状态,并且在框614处,控制器502(2)可以继续信任正在执行触发器的协调器 510。然而,如果在框612处确定协调器510不可用,则在框620处,控制器502(2)可以开始执行触发器。在一些实施方案中,当控制器502(2)确定协调器510不可用时,控制器502(2)可以例如通过更新触发器数据对象520 以反映触发器不再被委托(例如,向委托字段530写入“假”)并且/或者向协调器510发送指示先前的委托已被撤销的消息来明确地撤销委托。应该指出的是,协调器510可能对控制器502(2)是未知的,在这一点上仍然在执行触发器;然而,这种重复执行不会对用户或附件造成问题。例如,由于两个控制器设备(例如,控制器502(2)和协调器510)执行相同的触发器,附件可能从两个不同的控制器接收相同的控制消息(例如,打开指令,以向功率特性写入“开”值的消息的形式)。这种冗余通信不必导致不期望的附件行为,因为两个控制器将提供相同的指令。
过程600可以无限期地继续下去。例如,在委托触发器之后,只要触发器保持启用和委托,控制器502(2)就可以在框610处继续监视。在一些实施方案中,在恢复执行触发器的职责之后,控制器502(2)可以监视情况以确定协调器510(或另一个潜在的受托者)是否再次变得可用。如果发生这种情况,则控制器502(2)可以返回至框606以确定是否委托触发器。
在一些实施方案中,用户可以例如通过用户界面随时启用和禁用触发器。当已被委托的触发器被禁用时,控制器502(2)可以例如通过向受托者的委托服务发送消息或者通过更新的触发器数据对象520的同步将通知消息发送至受托者。在一些实施方案中,禁用触发器可以导致控制器502(2) 撤销委托;当触发器被重新启用时,控制器502(2)可以做出关于是否委托触发器的新确定。在其他实施方案中,控制器502(2)可以指示受托者实现任何所接收的启用或禁用指令而不撤销委托。
应该指出的是,委托过程600对用户来说可以是透明的。用户可以简单地与控制器502(2)进行交互以定义和启用触发器。控制器502(2)可以确定是否(以及向什么设备)委托触发器的执行,并且可以在不通知用户的情况下进行委托并且/或者撤销委托。在一些实施方案中,控制器502(2)可以向用户通知委托判定或请求用户确认,但这是可选的。在一些实施方案中,用户能够查看与触发器相关的状态信息,该状态信息可包括关于触发器当前是否被委托(以及向什么设备委托)的指示。
协调器510(或触发器委托到的任何其他控制器)可以执行所委托的触发器。图7示出了根据本发明的实施方案的用于执行所委托的触发器的过程700的流程图。过程700可以例如由图5的协调器510(或触发器委托到的任何其他协调器或控制器)执行并且可以例如使用由处理器执行的合适的程序代码来实现。
当协调器510从触发器的所有者接收到委托消息时,过程700可以在框702处开始。例如,委托消息可以是在上述过程600的框608处由控制器502(2)(触发器的所有者)发送的消息。委托消息可以包括触发器数据对象(例如,上述数据对象520)。如上所述,在一些实施方案中,协调器 510可以实现委托服务,并且可以将委托消息作为对委托服务的写入请求来接收,并且在一些实施方案中,协调器510可以通过环境模型的同步接收更新的触发器数据对象520并且读取更新的触发器数据对象520以确定其现在是受托者。
在框704处,协调器510可以向触发器的所有者发送确认消息或其他响应,从而确认协调器510将负责执行触发器。在一些实施方案中,在发送确认消息之前,协调器510可以执行验证操作以确认其执行触发器的能力。例如,协调器510可以确定它是否能够检测触发事件。检测触发事件的能力可以取决于特定事件。例如,如果触发事件是附件504中的状态改变,则协调器510可以与附件504进行通信以注册相关状态改变的通知。如果由于某些原因无法实现该过程,则协调器510可以响应于指示控制器 510不能执行触发器的所有者,并且过程700可以结束(未明确示出)。又如,协调器510可以确定它是否能够执行结果动作,例如,向相关附件 (或多个附件)504发送控制消息。同样,如果由于某些原因无法实现该过程,则协调器510可以响应于指示控制器510不能执行触发器的所有者,并且过程700可以结束。
在框706处,协调器510可以开始执行触发器。这可类似于上述由控制器502(2)对触发器的执行。例如,根据特定的触发事件,协调器510可以注册或订阅以被通知对应于触发事件的附件状态改变,或者激活其他逻辑以检测触发事件。当检测到触发事件时,协调器510可以继续测试触发条件(其可以是如上所述的“始终”条件或其他条件),并且如果满足触发条件,协调器例如通过向一个或多个附件504发送控制消息来执行结果动作。
在框708处,协调器510可以报告执行信息,该执行信息可以包括创建触发器的执行记录的任何动作。例如,协调器510可以在用于本地环境 506的内部或基于云端的日志文件中创建条目,该条目指示了何时检测到触发事件,是否响应于触发事件的发生而检测到触发条件,然后执行结果动作集(假设满足触发条件)或者当尝试执行结果动作集时发生错误(例如,如果附件没有响应于控制消息或者响应于错误)。除此之外或作为替代,协调器510可以向触发器的所有者(例如,控制器502(2))发送指示何时检测到触发事件以及是否发生了与执行结果动作集有关的任何错误的报告消息。除此之外或作为替代,报告消息可以被发送至已经被用户指定为应该接收报告消息的设备的一个或多个其他控制器502或其他设备。例如,用户的所有设备都可被指定接收报告消息,即使只有其中一个设备是触发器的所有者,或者一个用户的设备可接收与属于不同用户的控制器所拥有的触发器的执行有关的报告消息。在一些实施方案中,控制器502(2) (或触发器的其他所有者)可以使用接收报告消息作为监视协调器的状态的一部分,如在上述过程600的框610处所述。
触发器的执行以及执行信息的报告可以持续进行。因此,一旦委托了触发器,则该委托可以无限期地保持有效,并且触发器委托到的设备(例如,协调器510)可以执行检测触发事件、测试触发条件以及执行结果动作的多个实例。
在某些情况下,期望在不撤销委托的情况下禁用触发器。例如,在框 710处,协调器510可以接收禁用消息。在一些实施方案中,禁用消息可由触发器的所有者发送,例如,通过将更新的触发器数据对象520写入到协调器510的委托服务,其中启用字段528被设置为“假”。在一些实施方案中,禁用消息可以包括触发器数据对象520的名称522以及将启用字段 528改变为假的指令。一些具体实施可以允许任何控制器禁用委托的触发器;在其他具体实施中,只有委托的触发器的所有者可以禁用它。因此,在框710处接收禁用消息可以包括验证消息的源是被允许禁用所考虑的触发器的控制器。在框712处,响应于禁用消息,协调器510可以中断触发器的执行。例如,协调器510可以取消订阅用于检测触发事件的附件通知;另选地,协调器510可以继续接收附件通知,但是不执行检查触发条件和执行结果动作集的后续活动。
尽管在图7中没有明确地示出,已被禁用的委托的触发器稍后可以重新启用。例如,所有者(或另一个控制器)可以例如通过将更新的触发器对象520发布到协调器510的委托服务或者通过在自动同步的环境模型中更新触发器对象520来发送启用消息。在一些实施方案中,启用消息可以包括触发器数据对象520的名称522以及将启用字段528改变为真的指令。响应于启用消息,协调器510可以在过程700的框706处恢复触发器的执行。
在某些情况下,协调器510可能变得不可用于委托的触发器的执行。例如,可基于用户账户控制对附件的访问,并且协调器510可仅在授权用户登录时才能访问。如果用户登出,则登出过程可以包括协调器510在框 714处确定它变得不可用。其他情况例如由协调器510执行的断电过程也可以导致这种确定。当协调器510确定其变得不可用时,它可以在框716处例如使用类似于上述附件状态通知的机制来通知委托的触发器的所有者。该通知可以由所有者接收,例如,作为在过程600的框610处监视协调器的状态的一部分。发送不可用的通知可以允许所有者撤销触发器的委托或采取其他动作。应当理解,也可能存在协调器510在不发送发生通知的情况下变得不可用的情况(例如,如果发生停电或其他事故),并且触发器的所有者可以通过各种监视操作来检测这种情况,例如,如上所述。只要触发器的所有者可以检测委托变得不可用,该所有者就可以收回执行触发器的职责。
在某些情况下,协调器510可能变得不可用,并且稍后再次变得可用。根据具体实施,协调器510可以在变得可用时自动恢复委托的触发器的执行,或者等待来自触发器的所有者(或另一个控制器)的指令来恢复委托。自动恢复委托的触发器的执行可导致所有者和协调器510两者响应于触发事件的相同发生而执行相同的动作集;如上所述,这种重复执行不会对用户或附件造成问题。
过程600和700是例示性的,并且变型形式和修改形式是可能的。顺序描述的框和操作可并行执行,操作顺序可更改,并且操作可被组合、修改、添加或省略。使用过程600和700,控制器(例如,控制器502(2))可以将触发器的执行委托给另一个控制器(例如,协调器510)。受托者负责检测触发事件(以及适用的触发条件),并且在检测到触发事件时负责执行相关联的动作集。委托的触发器的执行的职责可以归于受托者,直到委托被明确地撤销为止。如果受托者变得不能执行触发器,则所有者可以暂时(例如,通过执行触发器直到受托者变得再次可用为止)或永久(例如,通过撤销委托)恢复职责。
在一些实施方案中,是否委托触发器的判定(例如,过程600的框 606)可以在任何时间再次访问。例如,如果控制器502(2)最初确定协调器 510不可用,则控制器502(2)可以如上所述的执行触发器。在一段时间后,如果控制器502(2)检测到协调器510已变得可用,则控制器502(2)可以重新执行过程600的部分以将触发器委托给协调器510。
可以将任何数量的触发器委托给给定的委托设备(例如,协调器 510)。例如,参考图5,控制器502(1)和502(2)中的每一个都可以将一个或多个触发器委托给协调器510。在某些情况下,不同的触发器可能会发生冲突。例如,如上所述,响应于第一触发事件而执行的动作集可包括产生第二动作集的触发事件的动作,执行该动作可撤销第一动作集的影响,或者第二动作集的执行可重新触发第一动作集(潜在地导致一个循环,其中由于每个动作集触发下一个动作集,使得两个或更多个触发的动作集被重复执行)。
在一些实施方案中,诸如协调器510的受托者可以包括一致性检查逻辑(例如,类似于上述一致性检查逻辑)。当触发器被委托给协调器510 时,协调器510可以应用一致性检查逻辑来检测新委托的触发器与任何先前委托的触发器之间的冲突。如果检测到冲突,则协调器510可以通知控制器(或其他所有者设备)委托了引起冲突的触发器。
图8示出了根据本发明的实施方案的用于执行委托的触发器的包括一致性检查逻辑的过程800的流程图。过程800可以例如由图5的协调器510 (或任何其他协调器或控制器)执行并且可以例如使用由处理器执行的合适的程序代码来实现。过程800的一些方面可类似于图7的过程700,并且过程800可以结合执行上述过程600的控制器(或多个控制器)使用。
当协调器510从触发器的所有者接收到委托消息时,过程800可以在框802处开始。这可与过程700的框702类似或相同。
在框804处,过程800可以调用一致性检查逻辑来检测新委托的触发器与已经委托给协调器510的任何其他触发器之间的冲突。如上所述,一致性检查逻辑可以检测不一致性(例如,两个触发器具有相同的触发事件但是具有不一致的结果动作)或循环(例如,第一触发动作集的执行导致满足第二触发动作集的触发条件,这继而导致再次触发第一动作集)。也可以调用其他类型的一致性检查逻辑。
在框806处,如果一致性检查逻辑检测到冲突(例如,不一致或循环),则在框808处,过程800可以确定协调器510是否能够自动采取纠正措施。例如,协调器510可以实现新触发器取代与新触发器冲突的任何先前定义的触发器的规则,具有管理权限的用户拥有的触发器优先于非管理员用户拥有的触发器的规则或者所需的其他冲突解决规则。在循环的情况下,自动纠正措施的另一个示例可以包括协调器510中断循环。例如,如果第一触发器包括触发第二触发器继而触发第一触发器的动作,则协调器510可以检测到该事件并且可以确定在执行第二触发器之后不再重新执行第一触发器,由此避免循环行为。在一些实施方案中,如果结果动作不冲突的话,协调器510还可以“合并”具有相同的触发事件和触发条件的触发器。例如,如果第一触发器被定义为“在晚上10点,如果每个人都在家,关闭门廊灯并锁定前门”,并且第二触发器被定义为“在晚上10点,如果每个人都在家,关闭车库门并锁定前门”,则这些触发器可以合并。在框808处,如果可以自动采取纠正措施,则在框810处,过程800可以采取纠正措施。在框812处,类似于上述的触发器执行,过程800可以开始执行触发器(其可以通过纠正措施来修改),并且在框814处,过程800 可以向触发器的所有者(例如,自有设备或持有用户)发起检测到冲突并采取纠正措施的通知。该通知可包括所采取的具体纠正措施的指示。用户可选择修改触发器以不同的方式解决冲突。
在框808处,如果不能自动采取纠正措施,则在框816处,过程800 可以禁用新委托的触发器的执行,并且在框818处,过程800可以通知触发器的所有者(例如,自有设备或持有用户)触发器由于冲突已被禁用。在一些实施方案中,接收通知的控制器可以向用户提供报告并提示用户采取纠正措施(例如,修改一个或多个触发器的定义以解决冲突)。
在框806处,如果一致性检查逻辑未检测到冲突,则在框820处,过程800可以向所有者发送确认消息或其他响应,确认协调器510将负责执行触发器,类似于过程700的框704。协调器510能够执行触发器的验证也可以在该阶段执行,类似于过程700。在框822处,协调器510可以执行触发器,类似于过程700。在一些实施方案中,过程800还可以包括上述过程 700的其他框,诸如报告执行信息,响应于禁用消息禁用触发器,将即将发生的不可用性的通知消息发送到控制器等等。
过程800是示例性的,并且变型形式和修改形式是可能的。顺序描述的框和操作可并行执行,操作顺序可更改,并且操作可被组合、修改、添加或省略。协调器510可以执行一致性检查,而不管哪个控制器是特定触发器的所有者。因此,例如,如果两个用户无意中使用不同的控制器定义了不一致的触发器,则协调器510可以检测到该事件并警告一个或两个用户。在一些实施方案中,用于自动化环境的控制器可以被配置为将所有触发器委托给协调器510,并且这可有助于检测和解决冲突触发器。
一些实施方案可以包括多个协调器。例如,可以将协调器设备内置于驻留在家庭中的设备中,诸如能够通过网络以及通过该网络的流媒体内容进行通信的电视机的机顶盒等;诸如Wi-Fi基站、DSL或电缆调制解调器之类的无线路由器。在一些实施方案中,协调器可以是在家庭中驻留(物理存在)并且具有足够的通信能力来执行如本文所述的由协调器执行的操作的任何设备。一个家庭可拥有多个这种设备,所有这些设备都可以作为协调器。例如,拥有多台电视机的家庭可以为每台电视机配置一个机顶盒,或者一个家庭可拥有多个Wi-Fi基站,其中的一些可作为Wi-Fi网络扩展器以支持家庭范围内的Wi-Fi网络。在一些实施方案中,家庭中的不同协调器可以在不同类型的设备(例如,机顶盒、Wi-Fi基站、平板电脑、台式机或膝上型计算机等)中实现。根据它们所在的位置,不同的协调器可具有来自特定附件的相对较强或较弱的信号。例如,家庭可能在楼上的卧室里拥有一个驻留设备,并且在楼下的家庭房里拥有另一个驻留设备。楼上的驻留设备到位于楼上的附件可能比楼下的驻留设备到该附件在物理上更接近,因此可具有到楼上的附件的更强、更可靠的无线通信路径。相反地,楼下的驻留设备到位于楼下的附件可能比楼上的驻留设备到该附件在物理上更接近,因此可具有到楼下的附件的更强、更可靠的无线通信路径。期望拥有由驻留设备(或其他协调器或其他控制器)执行的与相关附件具有最可靠连接的触发器。
因此,一些实施方案可以允许协调器(或触发器委托到的其他设备) 将触发器重新委托给另一个协调器(或其他设备)。图9示出了根据本发明的实施方案的具有两个协调器的网络配置900。配置900可以大致类似于图5的网络配置500和/或图2的网络配置200。控制器902(其可以与图2 的控制器202类似或相同)可以与位于本地环境906(其可以与图2的本地环境206类似或相同)中的附件904(其可以与图2的附件204类似或相同)通过协调器910(其可以与图2的协调器210类似或相同)进行通信。协调器910(1),910(2)可以形成分布式环境管理系统920。
每个控制器902可具有与之优先通信的指定协调器910,并且不同的控制器可具有不同的指定协调器。例如,控制器902(1)可具有协调器910(1) 作为指定协调器,而控制器902(3)具有协调器910(2)作为指定协调器。在一些实施方案中,例如,基于哪个协调器910在控制器位置处具有最强的接收信号,存在于本地环境906中的每个控制器902可以在需要进行通信时动态地选择协调器910。位于本地环境906之外的控制器(诸如控制器 902(2))可以与其指定的协调器(其可以是例如协调器910(1))进行通信。在一些实施方案中,如果指定的协调器910不可用,则控制器可以回退至另一个协调器。因此,根据情况,协调器910(1)或协调器910(2)之一可以从控制器902接收委托消息,将触发器委托给分布式环境管理系统920。
在有多个协调器的情况下,接收特定触发器的协调器可能不是执行委托的触发器的最佳设备。例如,协调器910(1)可以接收委托触发器的委托消息,该触发器包括要在附件904(2)上执行的动作。在所示的示例中,协调器910(2)具有到附件904(2)的直接通信路径,而协调器910(1)可以经由协调器910(2)与附件904(2)通信。因此,由协调器910(2)来执行委托的触发器可能比由协调器910(1)来执行更有效。本发明的某些实施方案可以提供将触发器从一个协调器重新委托给另一个的方式。
根据包括重新委托方式的本发明的实施方案,图10示出了用于执行委托的触发器的过程1000的流程图。过程1000可以例如由图9的协调器 910(1)(或协调器910(2)或任何其他被委托了触发器的协调器)执行并且可以例如使用由处理器执行的合适的程序代码来实现。过程1000的一些方面可以类似于图7的过程700和/或图8的过程800,并且过程1000可以结合执行上述过程600的控制器(或多个控制器)来使用。
当协调器910(1)从触发器的所有者接收到委托消息时,过程1000可以在框1002处开始。这可类似于过程700的框702。
在框1004处,过程1000可以调用一致性检查逻辑,以检测新委托的触发器与已经委托给协调器910(1)的任何其他触发器之间的冲突。这可类似于过程800的框804。
如果在框1006处一致性检查逻辑检测到冲突(例如,不一致或循环),则过程1000在框1008处可采取动作来解决冲突,与上述过程800 的框808至818类似。在某些情况下,框1008可导致解决冲突,在这种情况下,过程1000可继续(可能具有修改的触发器),并且在一些情况下,框1008可导致过程1000终止。
如果在框1006处一致性检查逻辑未检测到冲突,或者如果在框1006 处检测到的冲突在框1008处被解决,则在框1012处,过程1000可向所有者发送确认消息或其他响应,确认协调器910(1)将负责执行触发器,类似于过程700的框704。
在框1014处,假定至少一个其他协调器(或其他潜在的受托者)可用,则协调器910(1)可识别执行新委托的触发器的最有效的协调器(或潜在的受托者)。例如,如上文所述,协调器910(1)可以确定另一个协调器 (例如协调器910(2))对涉及触发器的一个(或多个)附件的访问是否更直接,所述附件包括作为触发事件源的附件以及响应触发事件而将被采取动作的任何附件。在一些实施方案中,协调器910(1)可以基于诸如协调器检测触发事件的能力以及协调器的通信信道对任何将被采取动作集中的动作附件的可靠性或直接性的考虑因素,来确定每个协调器(包括其自身) 的“有效性”分数,并且具有最高有效性分数的协调器可被识别为“最有效的”。也可以使用其他考虑因素,例如特定协调器可能随时间执行触发器的可能性(例如,出于某种原因只能间歇性地通电或连接到本地网络的协调器可能无法成为有效的受托者)。
在框1016处,可做出是否重新委托该触发器的决定。例如,如果在框 1014处协调器910(1)(执行过程1000的协调器)被识别为最有效,则不会发生重新委托。如果在框1014处任何其他协调器被识别为最有效,则可将触发器重新委托给该协调器。如果确定不重新委托该触发器,则在框1018 处,协调器910(1)可以执行该触发器,类似于上述过程700。在一些实施方案中,过程1000还可包括上述过程700的其他框,诸如报告执行信息,响应于禁用消息禁用触发器,将即将发生的不可用性的通知消息发送到控制器等等。
如果在框1014处确定将重新委托触发器,则在框1020处,协调器 910(1)可将委托消息发送到被识别为最有效的协调器(例如,协调器 910(2))。委托消息可类似于在框1002处接收到的消息,并且可识别触发器的所有者。在一些实施方案中,协调器910(1)可等待来自协调器910(2) 的确认响应,此后协调器910(2)可以执行该触发。在一些实施方案中,协调器910(1)可通知触发器的所有者该触发器已经被重新委托,使得所有者可以监视正确的受托者(例如,在过程600的框610)。在一些实施方案中,可经由触发器数据对象520的更新来处理关于重新委托的通信,该触发器数据对象在协调器910和其他控制器902之间同步。
从协调器910(2)的角度来看,委托过程可以与上述过程700或过程800 类似或相同,除了委托消息是从另一个协调器而不是从所有者处接收的。当协调器910(2)执行触发器时,执行信息的任何报告可以根据需要直接发送给所有者或经由协调器910(1)发送。
在一些实施方案中,可由协调器910(2)自行对重新委托的触发器执行一致性检查。在其它实施例中,给定本地环境906中的所有协调器910可在不委托触发器的情况下共享关于其正在执行的触发器的信息(例如,经由环境模型的同步,该环境模型包括与环境相关联的每个定义的触发器的触发器数据对象),在这种情况下,可以省略重新委托时的一致性检查。
在一些实施方案中,重新委托对于所有者可以是透明的。例如,在确定是否重新委托触发器之前,协调器910(1)可在框1012处发送响应,并且协调器910(1)不需要(但是可以)通知所有者是否发生重新委托。此外,即使触发器被重新委托,也可经由协调器910(1)处理执行报告。
过程1000是示例性的,并且变型形式和修改形式是可能的。顺序描述的框和操作可并行执行,操作顺序可更改,并且操作可被组合、修改、添加或省略。重新委托可提供增强的能力以优化触发器执行,因为设备可彼此协商来识别每个触发器的最有效的受托者。
跨控制器同步触发器数据对象
在上述示例中,假定了特定触发器对于所有者(例如,最初定义触发器的控制器设备)以及负责执行触发器的任何受托者(例如,上述的协调器910(1)和/或910(2))而言是已知的。其他设备(例如,可以与本地环境 906中的附件交互的其他控制器和/或协调器)可不知道触发器的存在。
在一些实施方案中,触发器数据对象(例如,图5的数据对象520) 可在可访问本地环境906的控制器和协调器之间同步。例如,已经定义的每个触发器的触发器数据对象(不管最初由哪个设备定义)可被包括在在控制器和/或协调器之间同步的环境模型中。在上文引用的专利申请 14/725,912中描述了用于环境模型的本地和基于云的同步过程的具体示例,并且同步的环境模型可包括触发器数据对象。
在触发器数据对象在控制器和/或协调器之间同步的实施方案中,特定控制器(或协调器)不需要执行在环境模型中表示的所有触发器。相反,控制器可读取触发器数据对象520以确定是否应执行该触发器。图11A和图11B示出了根据本发明实施方案的用于确定是否执行触发器的过程1100 的流程图。过程1100可例如在上述控制器或协调器设备中的任何一个中执行,并且可例如使用由处理器执行的合适的程序代码来实现。假定与环境相关联的每个触发器数据对象具有如上定义的自有设备和持有用户。还假定每个控制器设备都“属于”一个具体用户;也就是说,在任何给定时间,都存在与控制器设备相关联的特定用户ID。
首先参考图11A,在框1102处,过程1100可以读取触发器数据对象 (例如,图5的数据对象520)。只要将触发器数据对象添加到环境模型中和/或每当更新环境模型中的触发器数据对象时,都可进行读取。例如,在环境模型同步之后,特定的控制器可以确定作为同步的结果,该模型是否包括任何新的或更新的触发器数据对象。在一些实施方案中,所有触发器数据对象的读取可以在同步操作之后发生,而不管特定的触发器数据对象是否已经改变。在框1104处,过程1100可确定(例如基于数据对象520 的启用数据字段528)是否启用由触发器数据对象表示的触发器。如果触发器未被启用,则在框1106处可忽略该触发器。
如果触发器被启用,则在框1108处,过程1100可确定是否委托该触发器,例如委托数据字段530是否具有值“真”。如果该触发器没有被委托,该触发器应由其所有者执行。在该示例中,优选让持有设备执行未委托的触发器,但是如果自有设备不可用,可能需要有一个“回退”选项,其中触发器可以由另一个属于持有用户的设备。因此,如果在框1108处,触发器未被委托,则在框1110处,过程1100可确定执行过程1100的设备是否是自有设备。例如,过程1100可读取所有者字段526,并确定存储在其中的设备标识符是否匹配执行过程1100的设备的设备标识符。如果执行过程1100的设备是自有设备,则在框1112处,该设备可执行触发器。触发器的执行可类似于上述过程700。在一些实施方案中,执行可包括相关操作,例如响应于禁用消息而禁用触发器,将即将发生的不可用性的通知消息发送到另一控制器等等。(在这种情况下,执行设备是自有设备,并且可能不需要向所有者报告执行信息。)在一些实施例中,可例如通过将执行信息添加到触发器数据对象或与环境模型相关联的活动日志,来将执行信息添加到环境模型。
在框1110处,如果执行过程1100的设备不是自有设备,则在框1114 处,过程1100可确定该设备是否属于持有用户。例如,过程1100可读取所有者字段526,并确定存储在其中的用户标识符是否匹配当前与执行过程 1100的设备相关联的用户标识符。如果执行过程1100的设备属于持有用户,则在框1116处,设备可监视自有设备,以确定自有设备是否可用并且正在执行触发器。如果自有设备变得不可用,则执行过程1100的设备可接管该触发器的执行(例如通过更新数据对象520的字段530和字段532以将自身识别为受托者)。如果执行过程1100的设备既不是自有设备也不是属于持有用户的另一设备,则在框1118处,该设备可忽略触发器。在一些实施方案中,触发器可被忽略,直到触发器数据对象发生改变时为止,此时可再次使用过程1100来处理改变。
在框1108处,如果触发器被委托,则受托者应执行触发器,并且所有者应监视该执行。参考图11B,在框1120处,过程1100可确定该设备 (即,执行过程1100的设备)是否是受托者。例如,过程1100可读取委托给字段532,并确定存储在其中的设备标识符是否匹配执行过程1100的设备的设备标识符。如果执行过程1100的设备是受托者,则在框1122 处,设备可执行触发器。触发器的执行可类似于上述过程700。在一些实施方案中,执行可包括相关的操作,诸如:向所有者(例如,由所有者字段 526所识别的自有设备)报告执行信息、响应于禁用消息而禁用触发器、将即将发生的不可用性的通知消息发送到控制器,等等。
在框1120处,如果执行过程1100的设备不是受托者,则在框1124 处,过程1100可确定该设备是否是自有设备。例如,过程1100可读取所有者字段526,并确定存储在其中的设备标识符是否匹配执行过程1100的设备的设备标识符。如果执行过程1100的设备是所有者,则在框1126 处,设备可监视受托者(例如,由委托给字段532所识别的设备)的状态。这可类似于过程600的框610,并且如果受托者变得不可用,则执行过程1100的设备可承担如上所述的执行触发器的责任。
在框1124处,如果执行过程1100的设备不是所有者(或受托者),则在框1128处,过程1100可确定该设备是否属于持有用户。例如,过程 1100可读取所有者字段526,并确定存储在其中的用户标识符是否匹配当前与执行过程1100的设备相关联的用户标识符。如果执行过程1100的设备属于持有用户,则在框1130处,设备可监视自有设备,以确定自有设备是否可用并正在操作以监视受托者。如果自有设备变得不可用,则执行过程1100的设备可接管对受托者的监视,如果受托者也变得不可用,这可能导致执行过程1100的设备接管触发器的执行。执行过程1100的框1130的设备可接管触发器的执行,例如通过更新数据对象520的字段530和字段 532以将自身识别为受托者。如果执行过程1100的设备既不是自有设备也不是属于持有用户的另一设备,则在框1132处,该设备可忽略触发器。在一些实施方案中,触发器可被忽略,直到触发器数据对象发生改变时为止,此时可再次使用过程1100来处理改变。
过程1100允许管理触发器的执行,使得在任何给定时间,只有一个控制器(或协调器)负责执行给定的触发器。针对委托的触发器,受托者承担执行该触发器的责任,并且自有设备(或属于持有用户的另一设备)可监视受托者的状态,并且在指示受托者不能如此做的条件发生时承担执行该触发器的责任。所有其他设备均可忽略该触发器。针对非委托的触发器,自有设备承担执行触发器的责任,并且所有其他设备均可忽略该触发器。应当指出的是,不同的触发器可被委托给不同的协调器(或控制器),并且不要求所有的触发器(或甚至任何触发器)实际上被委托。触发器数据对象可提供每个控制器(或协调器)执行其被分配的角色(所有者或受托者)(如果有的话)以及忽略任何触发器(针对该触发器其不具有被分配的角色)所需的信息。
过程1100提供“回退”链以减少启用的触发器未被执行的可能性。如上所述,针对非委托的触发器,执行的责任通常由自有设备承担,但是如果自有设备变得不可用,则属于持有用户的另一设备可检测到该条件并承担执行触发器的责任。针对委托的触发器,执行的责任通常由受托者承担,但是自有设备可监视受托者,并在受托者变得不可用时承担责任。通过使属于持有用户的一个或多个其他设备监视自有设备的状态并在自有设备变得不可用时承担监视受托者的责任,可提供另外的回退。(如果自有设备和受托者都变得不可用,则回退设备将检测到自有设备的不可用性,然后检测受托者的不可用性并承担执行触发器的责任。)在一些实施方案中,可提供另外水平的回退。例如,如上所述,一个或多个用户可具有对环境的管理员权限。在一些实施方案中,如果持有用户的设备都不可用,则“管理员控制器”(其可以是属于具有管理员权限的用户的控制器)可承担执行这些触发器的责任。如果没有管理员控制器可用,则一些实施方案可以规定:当没有属于持有用户或管理员的设备可用时,任何可用的控制器(或协调器)均可承担执行启用的触发器的责任。可以定义优先级方案以回退到不同的设备,并且提供一个或多个水平的回退可增加自动的触发器执行的稳健性。在一些实施方案中,无论所有权如何,每当协调器可用时,针对环境定义的所有触发器都被委托给针对该环境的协调器,并且可提供基于所有权的回退链(例如,类似于过程1100)以确保当协调器变得不可用时可继续触发器的执行。
在一些实施方案中,可由任何控制器修改触发器数据对象(包括所有权和/或委托字段)。如果需要,可对此类修改进行限制。例如,可仅授予当前所有者(例如,当前持有用户)修改所有者字段(包括持有用户和/或自有设备标识符)的许可,从而允许触发器的所有者“给予”另一控制器 (或用户)所有权,但不允许非所有者“获取”所有权。又如,可授予当前所有者和当前受托者修改委托状态和/或委托标识符的许可,从而允许受托者(例如以上述方式)重新委托触发器。还可建立用于修改触发器数据对象的其他许可。例如,在一些实施方案中,仅所有者可启用或禁用触发器。在其他实施方案中,无论所有权如何,具有针对环境模型的管理员权限的任何控制器均可启用或禁用触发器。
另外,虽然上述示例假定控制器拥有触发器并将触发器的执行委托给协调器,但这不是必需的。在一些实施方案中,任何控制器或协调器均可以是特定触发器的所有者和/或受托者。例如,用户可能具有两个控制器,诸如移动电话和平板电脑。如果用户离开携带电话的本地环境并留下平板电脑,则电话可检测到该情形并将其负责执行的任何触发器委托给平板电脑。当电话返回到本地环境时,电话可撤消委托。
此外,在触发器数据对象跨访问特定环境的所有控制器和协调器同步的情况下,可由创建触发器的设备执行一致性检查。例如,在定义触发器的过程期间,触发器定义于其上的设备可读取与环境模型相关联的所有触发器数据对象,并执行如上所述的一致性检查。在存在冲突或其他不一致性的情况下,设备可警示用户并提示用户修改定义,或者设备可提议用于解决冲突或不一致性的修改。
示例性设备
本文所述的实施方案可实现在可具有一般常规设计的电子设备中。此类设备可适于符合支持命令与控制操作的统一附件协议,通过这个协议,控制器(第一电子设备)可控制附件(第二电子设备)的操作。在某些情况下,例如在如上所述的协调器或代理的情况下,设备可将控制器和附件的各个特征或方面组合。
图12示出了根据本发明的实施方案的控制器1200的简化框图。控制器1200可实现本文所述的控制器功能、行为和能力中的任何或全部,以及未明确描述的其他功能、行为和能力。控制器1200可包括处理子系统 1210、存储设备1212、用户界面1214、通信接口1216、安全存储模块 1218和密码逻辑模块1220。控制器1200还可包括其他部件(未明确示出),诸如电池、电力控制器和可操作以提供各种增强能力的其他部件。在各种实施方案中,控制器1200可在台式计算机、膝上型计算机、平板电脑、智能电话、其他移动电话、可穿戴计算设备或具有任何期望形状因数的其他系统中实现。此外,如上所述,控制器1200可部分地在基站中实现,并部分地在与基站通信并提供用户接口的移动单元中实现。
存储设备1212可例如使用磁盘、闪存存储器或任何其他非暂态存储介质或介质组合来实现,并且可包括易失性和/或非易失性介质。在一些实施方案中,存储设备1212可存储将由处理子系统1210执行的一个或多个应用程序和/或操作系统程序,包括用于实现如正由控制器执行的上述各种操作的程序。例如,存储设备1212可存储统一的控制器应用程序,所述控制器应用程序可读取附件描述记录并基于其中信息来生成用于控制该附件的图形用户界面(例如,如上文引用的美国申请14/614,914中所述的)。在一些实施方案中,本文所述的控制器功能的部分(或全部)可在操作系统程序而非应用程序中实现。在一些实施方案中,存储设备1212还可存储为特定附件或特定类别的附件(例如,用于管理IP相机附件的IP相机应用程序或用于与门锁附件交互的安全应用程序)设计的应用程序。存储设备 1212还可存储由控制器1200在其操作过程中产生或使用的其他数据,包括触发器数据对象和/或有关环境模型的其他数据。
用户界面1214可包括输入设备诸如触控板、触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。用户可操作用户界面1214的输入设备以调用控制器1200的功能,并且可经由用户界面1214的输出设备来查看和/ 或收听来自控制器1200的输出。
处理子系统1210可以实现为一个或多个集成电路,例如一个或多个单核或多核微处理器或微控制器,这些微处理器或微控制器的示例在本领域中是已知的。在操作中,处理系统1210可控制控制器1200的操作。在各种实施方案中,处理子系统1210可响应于程序代码来执行各种程序,并且可维护多个同时执行的程序或过程。在任何给定时间,待执行的程序代码中的一些或全部程序代码可驻留在处理子系统1210和/或存储介质诸如存储设备1212中。
通过合适的编程,处理子系统1210可为控制器1200提供各种功能。例如,在一些实施方案中,处理子系统1210可实现如由控制器实现的上述各种过程(或其部分)。处理子系统1210还可执行其他程序(包括可存储在存储设备1212中的应用程序)以控制控制器1200的其他功能。在一些实施方案中,这些应用程序可例如通过生成待发送至附件的消息和/或通过从附件接收响应与附件进行交互。这种交互可由附件管理守护进程和/或例如如上所述其他操作系统进程促成。
通信接口1216可为控制器1200提供语音和/或数据通信能力。在一些实施方案中,通信接口1216可包括:用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3G、4G/LTE、Wi-Fi、其他 IEEE 802.11系列标准)或其他移动通信技术,或它们的任何组合)的射频 (RF)收发器部件、用于近程无线通信(例如,使用Bluetooth标准和/或Bluetooth LE标准、NFC等)的部件和/或其他部件。在一些实施方案中,除了无线接口之外或代替无线接口,通信接口1216可提供有线网络连接性 (例如以太网)。通信接口1216可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器,以及其他模拟信号处理电路和/或数字信号处理电路)与软件部件的组合来实现。在一些实施方案中,通信接口1216可使用相同传输手段或不同传输手段同时或在不同时间支持多个通信信道。
安全存储模块1218可以是可安全地存储用于控制器1200的密码信息的集成电路等。可存储在安全存储模块1218内的信息的示例包括控制器的长期公共密钥和私人密钥1222(如上所述的LTPKC、LTSKC)以及配对附件1224列表(例如,将附件ID映射到如上所述已完成配对设置或配对添加过程的附件的附件长期公共密钥LTPKA的查找表)。
在一些实施方案中,密码操作可在与安全存储模块1218通信的密码逻辑模块1220中实现。在物理上,密码逻辑模块1220可根据需要在具有安全存储模块1218的相同集成电路或不同集成电路(例如,处理子系统1210 中的处理器)中实现。密码逻辑模块1220可包括实现或支持控制器1200 的密码操作(包括上述任何或所有的密码操作)的各种逻辑电路(根据需要是固定的或可编程的)。安全存储模块1218和/或密码逻辑模块1220可对控制器1200的其余部分表现为“黑盒”。因此,例如,通信接口1216 可以加密形式接收其不能解密的消息,并且可简单地将消息递送到处理子系统1210。处理子系统1210也可能无法解密消息,但其可将消息识别为加密的并将其递送到密码逻辑模块1220。密码逻辑模块1220可解密消息(例如,使用从安全存储模块1218提取的信息)并确定哪些信息要返回到处理子系统1210。因此,某些信息可仅在安全存储模块1218和密码逻辑模块 1220内可用。如果安全存储模块1218和密码逻辑模块1220在仅执行来自内部安全储存库的代码的单个集成电路上实现,则这可能使信息提取非常困难,从而可提供高度的安全性。其他具体实施也是可能的。
图13示出了根据本发明的实施方案的附件1300的简化框图。附件 1300可实现本文所述的附件功能、行为和能力中的任何或全部,以及未明确描述的其他功能、行为和能力。附件1300可包括存储设备1328、处理子系统1330、用户界面1332、附件专用硬件1334、通信接口1336、安全存储模块1338和密码逻辑模块1340。附件1300还可包括其他部件(未明确示出),诸如电池、电力控制器和可操作以提供各种增强能力的其他部件。
附件1300表示可由控制器诸如控制器1200操作的一大类附件,并且此类附件在能力、复杂性和形状因数方面可能有很大不同。各种附件可包括图13中未明确示出的部件,包括但不限于:具有固定或可移除的存储介质的存储设备(磁盘、闪存存储器等);视频屏幕、扬声器或用于连接至外部音频/视频设备的端口;相机部件,诸如镜头、图像传感器和用于相机部件的控件(例如,光圈、变焦、曝光时间、帧速率等);用于记录音频 (单独或与视频记录结合)的麦克风;等等。
存储设备1328可例如使用磁盘、闪存存储器或任何其他非暂态存储介质或介质组合来实现,并且可包括易失性和/或非易失性介质。在一些实施方案中,存储设备1328可存储将由处理子系统1330执行的一个或多个程序(例如,固件)以及与特定附件行为相关的操作,所述一个或多个程序包括用于实现如正由附件执行的上述各种操作的程序。存储设备1328还可存储可提供给控制器设备的附件对象或附件定义记录,例如在上文引用的美国申请14/614,914中所述的设备发现期间。存储设备1328还可存储附件状态信息和可在附件1300的操作期间使用的任何其他数据。
处理子系统1330可包括例如执行程序代码以便执行与附件1300相关联的各种功能的一个或多个单核或多核微处理器和/或微控制器。例如,处理子系统1330可实现如正由附件实现的上述各种过程(或其部分),例如通过执行存储在存储设备1328中的程序代码。处理子系统1330还可执行其他程序以控制附件1300的其他功能。在某些情况下,由处理子系统1330 执行的程序可例如通过生成要发送到控制器的消息和/或从控制器接收消息来与控制器(例如,控制器1200)交互。
用户界面1332可包括用户可操作的输入设备诸如触控板、触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、麦克风等;以及输出设备诸如视频屏幕、指示灯、扬声器、耳机接口等,连同支持性电子器件(例如,数模转换器或模数转换器、信号处理器等)。根据特定附件1300的具体实施,用户可操作用户界面1332的输入设备以调用附件1300的功能,并且可经由用户界面1332的输出设备来查看和/或收听来自附件1300的输出。一些附件可仅提供最小用户界面或根本不提供用户界面。在附件不具有用户界面的情况下,用户仍可使用控制器(例如,控制器1200)与附件交互。
附件专用硬件1334可包括可存在于附件1300中以启用其功能的任何其他部件。例如,在各种实施方案中,附件专用硬件1334可包括使用固定或可移除的存储介质的一个或多个存储设备;GPS接收器;电源和/或电力管理电路;相机;麦克风;一个或多个致动器;控制开关;环境传感器(例如,温度传感器、压力传感器、加速度计、化学传感器等);等等。应当理解,可通过提供适当的附件专用硬件1334来支持任何类型的附件功能,并且附件专用硬件可包括机械以及电或电子部件。
通信接口1336可为附件1300提供语音和/或数据通信能力。在一些实施方案中,通信接口1336可包括:用于访问无线语音和/或数据网络(例如,使用蜂窝电话技术、数据网络技术诸如3G、4G/LTE、Wi-Fi、其他 IEEE 802.11系列标准)或其他移动通信技术,或它们的任何组合)的射频 (RF)收发器部件、用于近程无线通信(例如,使用Bluetooth标准和/或Bluetooth LE标准、NFC等)的部件和/或其他部件。在一些实施方案中,除了无线接口之外或代替无线接口,通信接口1336可提供有线网络连接性 (例如以太网)。通信接口1336可使用硬件部件(例如,驱动电路、天线、调制器/解调器、编码器/解码器,以及其他模拟信号处理电路和/或数字信号处理电路)与软件部件的组合来实现。在一些实施方案中,通信接口1336可使用相同传输手段或不同传输手段同时或在不同时间支持多个通信信道。
安全存储模块1338可以是可安全地存储用于附件1300的密码信息的集成电路等。可存储在安全存储模块1338内的信息的示例包括附件的长期公共密钥和私人密钥1342(如上所述的LTPKA、LTSKA)以及配对控制器1344列表(例如,将控制器ID映射到如上所述已完成配对设置或配对添加过程的控制器的控制器长期公共密钥LTPKC的查找表)。在一些实施方案中,安全存储模块1338可被省略;配对控制器的密钥和列表可被存储在存储设备1328中。
在一些实施方案中,密码操作可在与安全存储模块1338通信的密码逻辑模块1340中实现。在物理上,密码逻辑模块1340可根据需要在具有安全存储模块1338的相同集成电路或不同集成电路(例如,处理子系统1330 中的处理器)中实现。密码逻辑模块1340可包括实现或支持附件1300的密码操作的各种逻辑电路(根据需要是固定的或可编程的),包括上述任何或所有的密码操作。安全存储模块1338和/或密码逻辑模块1340可对附件1300的其余部分表现为“黑盒”。因此,例如,通信接口1336可以加密形式接收其不能解密的消息,并且可简单地将消息递送到处理子系统 1330。处理子系统1330也可能无法解密消息,但其可将消息识别为加密的并将其递送到密码逻辑模块1340。密码逻辑模块1340可解密消息(例如,使用从安全存储模块1338提取的信息)并确定哪些信息要返回到处理子系统1330。因此,某些信息可仅在安全存储模块1338和密码逻辑模块1340 内可用。如果安全存储模块1338和密码逻辑模块1340在仅执行来自内部安全储存库的代码的单个集成电路上实现,则这可能使信息提取非常困难,从而可提供高度的安全性。其他具体实施也是可能的。
附件1300可以是与控制器1200交互的任何电子装置。在一些实施方案中,控制器1200可通过如上所述的附件1300的操作来提供远程控制。例如,控制器1200可为附件1300提供远程用户界面,该远程用户界面可包括输入控件和输出控件两者(例如,用于显示从附件1300获得的当前状态信息的显示屏和用于允许状态信息的改变的输入控件诸如触摸屏覆盖)。在各种实施方案中,控制器1200可控制附件1300的任何功能并且还可从附件1300接收数据。
应当理解,本文所述的系统配置和部件是示例性的,并且变型和修改是可能的。应当理解,控制器1200的具体实施可执行上述正由控制器执行的所有操作,并且附件1300的具体实施可执行上述正由附件执行的任何或所有操作。代理、网桥、隧道或协调器可根据需要使用相同硬件或不同硬件来组合控制器1200和附件1300的部件。控制器和/或附件可能具有本文并未明确描述的其他能力(例如,移动电话、全球定位系统(GPS)、宽带数据通信、互联网连接等)。根据具体实施,这些设备可以进行互操作,以便提供由任一(或两个)设备支持的任何功能性或提供在每个设备中部分地实现的功能性。在一些实施方案中,特定附件可具有无法经由特定控制器访问或调用但可经由另一控制器或通过直接与附件交互访问的某些功能。
此外,尽管本文参考特定块描述了控制器和附件,但应当理解,定义这些块是为了描述的方便,而并非旨在暗示部件部分的特定物理布置。此外,块不必对应于物理上不同的部件。可以例如通过对处理器进行编程或提供适当的控制电路来配置块以执行各种操作,并且根据初始配置的获得方式,各个块可能是可重新配置的或不可重新配置的。可在包括使用电路和软件的任何组合实现的电子设备在内的各种设备中实现本发明的实施方案。
另外的实施方案
虽然已结合具体实施方案对本发明进行了描述,但本领域的技术人员将认识到,许多修改形式是可能的。控制器网络和/或附件网络可根据需要包括尽可能多或者尽可能少的设备。不需要使用代理或协调器;无论附件数量或控制器数量如何,(至少原则上)始终可能在每个控制器和每个附件之间建立配对,并通过直接控制附件来使所有控制器操作。在提供附件- 网络模型(例如,环境模型)的情况下,每个控制器可获得模型副本(例如,经由同步)并可通过其用户界面提供对模型的访问。
此外,在存在代理或控制器的情况下,可以但不必是所有控制器都被允许经由代理或控制器访问所有附件的情况。某些控制器当不在本地环境内时可能会被限制访问附件,并且某些附件可能要求控制器直接访问它们而不是通过代理或协调器。
本发明的一些实施方案可提供可由定义触发器的第一电子设备(诸如控制器)执行的方法。例如,第一电子设备可定义触发器,该触发器指定触发事件和响应于检测到触发事件而在附件设备上要执行的动作,其中该动作可通过将控制消息发送到附件设备来执行。第一电子设备可将触发器委托给能够与附件设备通信的第二电子设备,例如通过将委托消息发送到第二电子设备和/或通过更新定义触发器的触发器数据对象,以指示触发器被委托给第二电子设备,其中触发器数据对象是在包括第一电子设备和第二电子设备的一组控制器设备之间共享的环境模型的一部分。委托可以 (但不必)对用户透明地执行。在将触发器委托给第二电子设备之后,第一电子设备可监视第二电子设备的状态以检测指示第二电子设备不可用以执行触发器的条件。响应于检测到该条件,第一电子设备可执行触发器;执行触发器可包括检测触发事件并且响应于检测到触发事件而将控制消息发送到附件设备。在一些实施方案中,响应于检测到该条件,第一电子设备可撤销将触发器委托给第二电子设备。
可检测各种条件以指示第二电子设备不可用。例如,第一电子设备可从第二电子设备接收第二电子设备正转变到不可用以执行触发器的状态的通知。又如,第一电子设备可向第二电子设备发送消息并且未能接收到对该消息的预期响应。再如,第一电子设备可确定在至少最小时间段内尚未接收到来自第二电子设备的预期心跳信号。
本发明的一些实施方案可提供可由接收委托的触发器的第一电子设备 (诸如协调器)执行的方法。例如,第一电子设备可接收由第二电子设备创建的触发器数据对象,该触发器数据对象定义触发器,该触发器包括触发事件和响应于检测到触发事件而在附件设备上要执行的动作,其中该动作可通过将控制消息发送到附件设备来执行。接收触发器数据对象可包括接收触发器数据对象被委托给第一电子设备的指示。第一电子设备可相对于一个或多个先前所接收的触发器数据对象来执行对所接收的触发器数据对象的一致性检查,以确定是否存在冲突。响应于确定存在冲突,第一电子设备向第二电子设备发送存在冲突的通知,并且响应于确定不存在冲突,第一电子设备可执行触发器。在一些实施方案中,响应于确定存在冲突,第一电子设备可确定纠正措施是否可用。响应于确定纠正措施可用,第一电子设备可采取纠正措施,这可包括修改触发器,然后执行修改的触发器。响应于确定存在纠正措施不可用的冲突,第一电子设备可禁用触发器的执行。
可执行各种类型的一致性检查。例如,如果所接收的触发器数据对象和先前所接收的触发器数据对象之一具有相同的触发事件和要执行的冲突动作,则第一电子设备可检测不一致性。又如,如果所接收的触发器和一个或多个先前所接收的触发器数据对象将触发彼此的重复执行,则第一电子设备可检测环。
在一些实施方案中,第一电子设备在其正执行委托的触发器时可检测其即将转变到不可用以执行触发器的状态。当该情况发生时,第一电子设备可向第二电子设备发送不可用性的通知。如果第一电子设备随后返回到可用以执行触发器的状态,则第一电子设备可继续执行触发器,例如,响应于来自第二电子设备的指示—第一电子设备应继续执行触发器。
本发明的一些实施方案可提供可由接收委托的触发器的第一电子设备 (诸如协调器)执行的方法。例如,第一电子设备可接收由第二电子设备创建的触发器数据对象,该触发器数据对象定义触发器,该触发器包括触发事件和响应于检测到触发事件而在附件设备上要执行的动作,其中该动作可通过将控制消息发送到附件设备来执行。接收触发器数据对象可包括接收触发器数据对象被委托给第一电子设备的指示。第一电子设备可识别用于执行触发器的最有效设备,该最有效设备可以是第一电子设备或第三电子设备。响应于确定第三电子设备是最有效设备,第一电子设备可将触发器重新委托给第三电子设备。响应于确定第一电子设备是最有效设备,第一设备可执行触发器。如果触发器被重新委托,则第一电子设备可将重新委托的通知消息发送到第二电子设备。
本发明的一些实施方案可提供可由可读取与环境相关联的触发器数据对象的第一电子设备(诸如控制器或协调器)执行的方法。第一电子设备可例如响应于执行同步操作以更新存储在第一设备处的环境模型而读取定义触发器的触发器数据对象,其中环境模型包括触发器数据对象。由触发器数据对象定义的触发器可包括触发事件和响应于检测到该触发事件而在附件设备上要执行的动作,其中该动作可通过将控制消息发送到附件设备来执行。触发器数据对象可进一步指定所有者设备、委托状态和委托设备。在委托状态指示触发器被委托并且委托设备是第一电子设备的情况下,第一电子设备可执行触发器,其中执行触发器包括检测触发事件,并且响应于检测到触发事件,将控制消息发送到附件。在委托状态指示触发器被委托、委托设备被指定为第一电子设备之外的设备,并且所有者设备是第一电子设备的情况下,第一电子设备可监视委托设备的状态以检测指示委托设备不可用以执行触发器的条件,并且响应于检测到该条件而执行触发器。在委托状态指示触发器未被委托并且所有者设备是第一电子设备的情况下,第一电子设备可执行触发器。
在一些实施方案中,环境模型可包括多个触发器数据对象。在这种情况下,第一电子设备可执行触发器数据对象的一致性检查以确定是否存在冲突。响应于确定在触发器数据对象中的两个或更多个之间存在冲突,第一电子设备可例如向用户设备提供通知。在一些实施方案中,第一电子设备可尝试采取纠正措施,例如,如上所述。
可使用专用部件和/或可编程处理器和/或其他可编程设备的任意组合来实现本发明的实施例。本文所述的各种过程可以任何组合方式在同一处理器或不同处理器上实现。在部件被描述为被配置为执行某些操作的情况下,可例如通过设计电子电路以执行操作、通过对可编程电子电路(诸如微处理器)进行编程以执行操作或其任何组合来实现这种配置。此外,虽然上述实施方案可能参考了具体硬件部件和软件部件,但本领域的技术人员应当理解,也可使用硬件部件和/或软件部件的不同组合,并且被描述为正在硬件中实现的特定操作也可能在软件中被实现,反之亦然。
可在各种计算机可读存储介质上编码并存储结合本发明的各种特征的计算机程序。合适的介质包括磁盘或磁带、光学存储介质诸如光盘(CD)或 DVD(数字通用光盘)、闪存存储器,以及其他非暂态介质。(应当理解,数据的“存储”不同于使用暂态介质诸如载波的数据的传播。)可将用程序代码编码的计算机可读介质与兼容的电子设备封装在一起,或者该程序代码可独立于电子设备提供(例如,经由互联网下载或作为单独封装的计算机可读存储介质)。
因此,尽管已相对于具体实施方案描述了本发明,但是应当理解,本发明旨在覆盖以下权利要求书范围内的所有修改形式和等同形式。

Claims (27)

1.一种可由第一电子设备执行的方法,所述方法包括:
定义触发器,所述触发器指定触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行;
将所述触发器委托给能够与所述附件设备通信的第二电子设备;
在将所述触发器委托给所述第二电子设备之后,监视所述第二电子设备的状态以检测指示所述第二电子设备不可用以执行所述触发器的条件;以及
响应于检测到所述条件,在所述第一电子设备处执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件设备。
2.根据权利要求1所述的方法,其中委托所述触发器包括将委托消息发送到所述第二电子设备。
3.根据权利要求1所述的方法,其中委托所述触发器包括更新定义所述触发器的触发器数据对象,以指示所述触发器被委托给所述第二电子设备,其中所述触发器数据对象是在包括所述第一电子设备和所述第二电子设备的一组控制器设备之间共享的环境模型的一部分。
4.根据权利要求1所述的方法,还包括:
响应于检测到所述条件,撤销将所述触发器委托给所述第二电子设备。
5.根据权利要求1所述的方法,其中检测所述条件包括以下的一者或多者:
从所述第二电子设备接收所述第二电子设备正转变到不可用以执行所述触发器的状态的通知;
向所述第二电子设备发送消息并且未能接收到对所述消息的预期响应;以及
确定在至少最小时间段内未接收到来自所述第二电子设备的预期心跳信号。
6.根据权利要求1所述的方法,其中将所述触发器委托给所述第二电子设备是对用户透明地执行的。
7.一种第一电子设备,包括:
通信接口;以及
处理器,所述处理器耦接到所述通信接口,所述处理器被配置为:
定义触发器,所述触发器指定触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行;
将所述触发器委托给能够与所述附件设备通信的第二电子设备;
在将所述触发器委托给所述第二电子设备之后,监视所述第二电子设备的状态以检测指示所述第二电子设备不可用以执行所述触发器的条件;以及
响应于检测到所述条件,在所述第一电子设备处执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件设备。
8.一种可由第一电子设备执行的方法,所述方法包括:
接收由第二电子设备创建的触发器数据对象,所述触发器数据对象定义触发器,所述触发器包括触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行,并且其中接收所述触发器数据对象包括接收所述触发器数据对象被委托给所述第一电子设备的指示;
相对于一个或多个先前所接收的触发器数据对象来执行对所接收的触发器数据对象的一致性检查,以确定是否存在冲突;
响应于确定存在冲突,向所述第二电子设备发送存在所述冲突的通知;以及
响应于确定不存在冲突,执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件。
9.根据权利要求8所述的方法,其中所述触发器数据对象在委托消息中被接收。
10.根据权利要求8所述的方法,其中所述触发器数据对象是在包括所述第一电子设备和所述第二电子设备的一组控制器设备之间共享的环境模型的一部分,并且其中接收所述触发器数据对象包括接收对所述环境模型的更新。
11.根据权利要求8所述的方法,还包括响应于确定存在冲突:
确定纠正措施是否可用;
响应于确定纠正措施可用,采取所述纠正措施,其中采取所述纠正措施包括修改所述触发器;以及
响应于确定纠正措施不可用,禁用所述触发器的执行。
12.根据权利要求8所述的方法,其中执行所述一致性检查包括:
检测所接收的触发器数据对象和所述先前所接收的触发器数据对象中的一个先前所接收的触发器数据对象具有相同的触发事件和要执行的冲突动作这样的不一致性。
13.根据权利要求8所述的方法,其中执行所述一致性检查包括:
检测其中所接收的触发器和一个或多个先前所接收的触发器数据对象将触发彼此的重复执行的环。
14.根据权利要求8所述的方法,还包括:
通过所述第一电子设备检测所述第一电子设备正转变到不可用以执行所述触发器的状态;以及
响应于检测到所述第一电子设备正在进入不可用以执行所述触发器的状态,向所述第二电子设备发送不可用性的通知。
15.根据权利要求14所述的方法,还包括:
通过所述第一电子设备返回到可用以执行触发动作集的状态;以及
响应于返回到可用的状态,继续执行所述触发动作集。
16.根据权利要求14所述的方法,还包括:
通过所述第一电子设备返回到可用以执行所述触发动作集的状态;其后
接收来自所述第二电子设备的用于继续执行所述触发动作集的指令;以及
响应于所述指令,继续执行所述触发动作集。
17.一种电子设备,包括:
通信接口;以及
处理器,所述处理器耦接到所述通信接口,所述处理器被配置为:
接收来自第二电子设备的委托消息,所述委托消息包括定义触发器的触发器数据对象,所述触发器包括触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行;
相对于一个或多个先前所接收的触发器数据对象来执行对所接收的触发器数据对象的一致性检查,以确定是否存在冲突;
响应于确定存在冲突,向所述第二电子设备发送存在所述冲突的通知;以及
响应于确定不存在冲突,执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件。
18.一种可由第一电子设备执行的方法,所述方法包括:
接收由第二电子设备创建的触发器数据对象,所述触发器数据对象定义触发器,所述触发器包括触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行,并且其中接收所述触发器数据对象包括接收所述触发器数据对象被委托给所述第一电子设备的指示;
识别用于执行所述触发器的最有效设备,其中所述最有效设备是所述第一电子设备或第三电子设备;
响应于确定所述第三电子设备是所述最有效设备,将所述触发器重新委托给所述第三电子设备;以及
响应于确定所述第一电子设备是所述最有效设备,执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件。
19.根据权利要求18所述的方法,还包括:
在所述触发器被重新委托的情况下,向所述第二电子设备通知所述触发器已被重新委托给所述第三电子设备。
20.根据权利要求18所述的方法,其中所述第一电子设备和所述第三电子设备均是驻留在所述附件所处的本地环境中的设备。
21.根据权利要求18所述的方法,其中所述第二电子设备是移动设备。
22.一种可由第一电子设备执行的方法,所述方法包括:
读取定义触发器的触发器数据对象,所述触发器包括触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行,所述触发器数据对象还指定所有者设备、委托状态以及委托设备;
在所述委托状态指示所述触发器被委托并且所述委托设备是所述第一电子设备的情况下,执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件;
在所述委托状态指示所述触发器被委托并且所述所有者设备是所述第一电子设备的情况下,监视所述委托设备的状态以检测指示所述委托设备不可用以执行所述触发器的条件,并且响应于检测到所述条件而执行所述触发器;以及
在所述委托状态指示所述触发器未被委托并且所述所有者设备是所述第一电子设备的情况下,执行所述触发器。
23.根据权利要求22所述的方法,还包括:
执行同步操作以更新存储在所述第一电子设备处的环境模型,所述环境模型包括所述触发器数据对象,
其中响应于更新所述环境模型而执行读取所述触发器数据对象。
24.根据权利要求23所述的方法,其中所述环境模型包括多个触发器数据对象,所述方法还包括:
执行所述多个触发器数据对象的一致性检查以确定是否存在冲突;
响应于确定在所述触发器数据对象中的两个或更多个之间存在冲突,向用户设备提供通知。
25.根据权利要求24所述的方法,还包括:
响应于确定在所述触发器数据对象中的两个或更多个之间存在冲突,禁用由所述两个或更多个触发器数据对象中的至少一个定义的触发器。
26.根据权利要求22所述的方法,其中所述触发器数据对象接收自第二电子设备,并且其中响应于接收到所述触发器数据对象而执行读取所述触发器数据对象。
27.一种电子设备,包括:
通信接口;以及
处理器,所述处理器耦接到所述通信接口,所述处理器被配置为:
读取定义触发器的触发器数据对象,所述触发器包括触发事件和响应于检测到所述触发事件而在附件设备上要执行的动作,其中所述动作能够通过将控制消息发送到所述附件设备来执行,所述触发器数据对象还指定所有者设备、委托状态以及委托设备;
在所述委托状态指示所述触发器被委托并且所述委托设备是所述电子设备的情况下,执行所述触发器,其中执行所述触发器包括检测所述触发事件,并且响应于检测到所述触发事件,将所述控制消息发送到所述附件;
在所述委托状态指示所述触发器被委托并且所述所有者设备是所述电子设备的情况下,监视所述委托设备的状态以检测指示所述委托设备不可用以执行所述触发器的条件,并且响应于检测到所述条件而执行所述触发器;
在所述委托状态指示所述触发器未被委托并且所述所有者设备是所述电子设备的情况下,执行所述触发器;以及
在所述电子设备既不是所述所有者设备也不是所述委托设备的情况下,忽略所述触发器。
CN201680043833.3A 2015-07-31 2016-07-26 自动化环境中触发器执行的委托 Active CN107851046B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562199892P 2015-07-31 2015-07-31
US62/199,892 2015-07-31
US15/180,046 US10985937B2 (en) 2015-02-05 2016-06-12 Delegation or revocation of trigger execution in an automated environment
US15/180,046 2016-06-12
PCT/US2016/044118 WO2017023625A1 (en) 2015-07-31 2016-07-26 Delegation of trigger execution in an automated environment

Publications (2)

Publication Number Publication Date
CN107851046A CN107851046A (zh) 2018-03-27
CN107851046B true CN107851046B (zh) 2022-02-25

Family

ID=57944125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680043833.3A Active CN107851046B (zh) 2015-07-31 2016-07-26 自动化环境中触发器执行的委托

Country Status (4)

Country Link
US (1) US20210184881A1 (zh)
EP (3) EP4198733A1 (zh)
CN (1) CN107851046B (zh)
WO (1) WO2017023625A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10764153B2 (en) * 2016-09-24 2020-09-01 Apple Inc. Generating suggestions for scenes and triggers
JP7036106B2 (ja) * 2017-02-22 2022-03-15 日本電気株式会社 情報処理装置、情報処理システム、監視方法、及び、プログラム
CN108430000B (zh) * 2018-04-13 2021-07-23 广东小天才科技有限公司 一种基于电量管控麦克风设备的方法、麦克风设备及系统
WO2020223854A1 (zh) * 2019-05-05 2020-11-12 深圳市欢太科技有限公司 设备配网方法、装置、电子设备及存储介质
WO2021100895A1 (ko) * 2019-11-19 2021-05-27 엘지전자 주식회사 전자 기기
CN113126487B (zh) * 2019-12-31 2023-04-18 钟国诚 用于控制可变物理参数的控制装置及方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658453B1 (en) * 1998-05-28 2003-12-02 America Online, Incorporated Server agent system
JP2002522957A (ja) * 1998-08-03 2002-07-23 ファーストセンス ソフトウェア インコーポレイテッド 診断情報を用いて分散型アプリケーションを監視するためのシステムおよび方法
US6704925B1 (en) * 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
US6910039B2 (en) * 2001-11-14 2005-06-21 Sun Microsystems, Inc. Validation technique for bulk lock delegation
EP1451732A4 (en) * 2001-12-10 2007-08-08 Mentor Graphics Corp AUTOMATED ELECTRONIC DESIGN REALIZED IN PARALLEL: SHARED SIMULTANEOUS MODIFICATION
US9729342B2 (en) * 2010-12-20 2017-08-08 Icontrol Networks, Inc. Defining and implementing sensor triggered response rules
FR2902916B1 (fr) * 2006-06-26 2009-12-25 Somfy Sas Procede de communication dans une installattion domotique.
EP2060143A4 (en) * 2006-08-31 2011-02-16 Lg Electronics Inc COMMUNICATION METHODS IN A WIRELESS NETWORK
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
EP2578061B1 (en) * 2010-06-02 2015-02-25 Koninklijke Philips N.V. Method for controlling a lighting system, and lighting system
US20130279478A1 (en) * 2010-12-22 2013-10-24 Telefonaktiebolaget L M Ericsson (Publ) Methods and Arrangements in a Cellular Communication System
CN103348769B (zh) * 2010-12-30 2015-07-29 皇家飞利浦电子股份有限公司 基于政策的oln光管理系统
US8510807B1 (en) * 2011-08-16 2013-08-13 Edgecast Networks, Inc. Real-time granular statistical reporting for distributed platforms
US20140128994A1 (en) * 2012-11-07 2014-05-08 Microsoft Corporation Logical sensor server for logical sensor platforms
US9141979B1 (en) * 2013-12-11 2015-09-22 Ca, Inc. Virtual stand-in computing service for production computing service
US20150339917A1 (en) * 2014-05-21 2015-11-26 Qualcomm Incorporated Triggering commands on a target device in response to broadcasted event notifications
EP3149548B1 (en) * 2014-05-30 2021-06-23 Apple Inc. Controller networks for an accessory management system
US9729383B2 (en) * 2014-10-15 2017-08-08 Ayla Networks, Inc. Flexible rules engine for managing connected consumer devices
CN104460330A (zh) * 2014-11-04 2015-03-25 宁波工程学院 一种基于室内定位与电子罗盘的增强现实与远程控制方法
CN104653026A (zh) * 2015-01-15 2015-05-27 小米科技有限责任公司 控制门窗的方法及装置

Also Published As

Publication number Publication date
EP3329376A1 (en) 2018-06-06
EP3329376B1 (en) 2022-04-27
WO2017023625A1 (en) 2017-02-09
EP4036731A1 (en) 2022-08-03
CN107851046A (zh) 2018-03-27
EP4036731B1 (en) 2023-04-05
EP4198733A1 (en) 2023-06-21
US20210184881A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
US10985937B2 (en) Delegation or revocation of trigger execution in an automated environment
US20210341888A1 (en) Presence triggered notifications and actions
CN106462123B (zh) 使用环境模型的附件管理系统
US10454783B2 (en) Accessory management system using environment model
CN110691014B (zh) 用于自动化环境的协调器设备的选择
CN109196825B (zh) 用于基于附件状态生成场景的系统、方法和介质
CN107851046B (zh) 自动化环境中触发器执行的委托
US10511456B2 (en) Presenting accessory group controls
US11003147B2 (en) Automatically grouping accessories
US11010416B2 (en) Prefetching accessory data
US11394575B2 (en) Techniques for utilizing a coordinator device
US20230127500A1 (en) Accessory management system using environment model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant