CN1607776A - 用于管理设备的方法和系统 - Google Patents

用于管理设备的方法和系统 Download PDF

Info

Publication number
CN1607776A
CN1607776A CN200410071345.2A CN200410071345A CN1607776A CN 1607776 A CN1607776 A CN 1607776A CN 200410071345 A CN200410071345 A CN 200410071345A CN 1607776 A CN1607776 A CN 1607776A
Authority
CN
China
Prior art keywords
user
tolerance
action
metric
relation
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.)
Granted
Application number
CN200410071345.2A
Other languages
English (en)
Other versions
CN100420198C (zh
Inventor
威廉·克里斯·伯丁
迈克尔·约翰·伯克哈特
丹尼尔·G·艾森豪尔
丹尼尔·马克·舒马彻
托马斯·J·沃森
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.)
Lenovo Singapore Pte Ltd
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1607776A publication Critical patent/CN1607776A/zh
Application granted granted Critical
Publication of CN100420198C publication Critical patent/CN100420198C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/2816Controlling appliance services of a home automation network by calling their functionalities
    • H04L12/282Controlling appliance services of a home automation network by calling their functionalities based on user interaction within the home
    • 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/2823Reporting information sensed by appliance or service execution status of appliance services in a home automation network
    • H04L12/2827Reporting to a device within the home network; wherein the reception of the information reported automatically triggers the execution of a home appliance functionality
    • H04L12/2829Reporting to a device within the home network; wherein the reception of the information reported automatically triggers the execution of a home appliance functionality involving user profiles according to which the execution of a home appliance functionality is automatically triggered
    • 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/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Abstract

本发明的多个示例性实施例包括一种用于管理设备的方法。这些示例性方法包括接收多个用户度量,根据该多个用户度量创建关系度量,创建包括至少一个用户度量和至少一个关系度量的用户度量向量,创建包括多个度量范围的用户度量空间,并且确定用户度量向量是否超出用户度量空间。如果用户度量向量超出用户度量空间,则示例性实施例包括识别动作,并且执行该动作。

Description

用于管理设备的方法和系统
技术领域
本发明的领域是数据处理,或者更具体地说是用于管理设备的方法、系统和产品。
背景技术
传统网络包含各种设备。用户经常使用各种设备,或者根据用户的当前状态调整这些设备的特定设置。也就是,用户的当前状态经常促使用户改变设备设置,以便这些设备以更有利于用户当前状态的方式工作。例如,患有头痛的用户可能受到强光灯的干扰。该用户可以将灯光调弱,或者关闭该灯,从而使该灯不再干扰此用户。然而,传统连网设备需要用户介入以响应用户状态单独管理特定设备。如果存在不需要用户介入的根据用户状态管理设备的方法,将是有利的。
发明内容
本发明的多个示例性实施例包括一种用于管理设备的方法。这些示例性方法包括接收多个用户度量(metric),根据该多个用户度量创建关系度量,创建包括至少一个用户度量和至少一个关系度量的用户度量向量,创建包括多个度量范围的用户度量空间,并且确定用户度量向量是否超出用户度量空间。如果用户度量向量超出用户度量空间,则示例性实施例包括识别动作,并且执行该动作。
在很多示例性实施例中,根据多个用户度量创建关系度量包括对用户度量进行过滤。在一些示例性实施例中,根据多个用户度量创建关系度量包括确定第一过滤用户度量与第二过滤用户度量之间的关系。在一些实施例中,确定第一过滤用户度量与第二过滤用户度量之间的关系包括比较第一过滤用户度量与第二过滤用户度量。在很多示例性实施例中,根据多个用户度量创建关系度量包括确定第一过滤用户度量与第二过滤用户度量之间的关系的量值。
在一些示例性实施例中,根据多个用户度量创建关系度量包括确定该多个用户度量是否匹配预定度量模式。这些实施例中的很多实施例包括如果该多个用户度量匹配预定度量模式,则检索关系度量。在一些示例性实施例中,创建包括至少一个用户度量和至少一个关系度量的用户度量向量包括关联至少一个用户度量与用户度量向量,并且关联至少一个关系度量与用户度量向量。
在一些示例性实施例中,识别动作包括确定用户位置,并且根据用户位置选择动作ID。在很多这样的实施例中,识别动作还包括确定用户移动;并且根据用户移动选择动作ID。
通过下面对如附图所示的本发明的示例性实施例进行更具体的描述,本发明的前述和其他目的、特征和优点将会变得清楚,其中,相同的标号一般表示本发明示例性实施例的相同部分。
附图说明
图1是示出有用于实现根据本发明的用于管理设备的方法的示例性架构的方框图。
图2是示出示例性服务网关的方框图。
图3是示出有用于实现根据本发明的用于管理设备的方法的示例性类的方框图。
图4是示出图3的示例性类中的一些类之间的示例性关系的类关系图。
图5是示出图3的示例性类中的一些类之间的示例性关系的另一个类关系图。
图6是示出根据本发明的用于管理设备的示例性方法的数据流图。
图7是示出执行动作的示例性方法的数据流图。
图8是示出根据本发明的确定用户度量是否超出用户的预定度量范围的示例性方法的数据流图。
图9是示出根据本发明的用于管理设备的示例性方法的数据流图。
图10是示出根据本发明的创建关系度量的示例性方法的数据流图。
图11是示出根据本发明的创建关系度量的示例性方法的数据流图。
图12是示出根据本发明的创建用户度量向量的示例性方法和创建度量空间的示例性方法的数据流图。
图13是示出根据本发明的确定用户度量向量是否超出用户度量空间的示例性方法的数据流图。
图14是示出根据本发明的创建动态动作列表的示例性方法的数据流图。
图15是示出根据本发明的识别动作的示例性方法的数据流图。
具体实施方式
引言
在本说明书中,本发明在很大程度上是按照用于管理设备的方法来描述的。然而,本领域的技术人员应该认识到包括用于根据所公开的方法操作的适当编程装置的任何计算机系统也落在本发明的范围内。
适当编程装置包括用于引导计算机系统执行本发明的方法步骤的任何装置,例如包括由耦合于计算机存储器的处理单元和算术逻辑电路组成的系统,这些系统具有在计算机存储器中存储的能力,该计算机存储器包括配置成存储本发明的数据和程序指令,程序化方法步骤以由处理单元执行的电子电路。本发明还可以实施在适于与任何适当数据处理系统一起使用的计算机程序产品如磁盘或其他记录介质中。
计算机程序产品的实施例可以利用用于可机读信息的任何记录介质包括磁性介质、光学介质或任何适当介质来实现。本领域的技术人员应该立即认识到,任何具有适当编程装置的计算机系统将能够执行在程序产品中实施的本发明的方法步骤。虽然在本说明书中所述的大部分示例性实施例面向安装在计算机硬件上并在其上执行的软件,但是本领域的技术人员应该立即认识到,作为固件或硬件实现的替代实施例也处于本发明的范围内。
定义
“802.11”是指由IEEE制定的用于无线LAN技术的规范族。802.11指定无线客户端与基站之间或者两个无线客户端之间的空中接口。
“API”是“应用编程接口”的缩写。API是一组用于构建软件应用的例程、协议和工具。
“蓝牙”是指用于客户端设备之间以及客户端设备与LAN或其他网络上的资源之间的RF耦合的短距离无线技术的工业规范。称作“蓝牙特别兴趣组”的管理组织测试和评定设备是否是兼容蓝牙的。蓝牙规范包括提供设计规范的‘基础核心(Foundation Core)’和提供互操作性准则的‘基础协议子集(Foundation Profile)’。
‘被耦合以进行数据通信’是指任何形式的数据通信,即无线、802.11b、蓝牙、红外线、无线电、网际协议、HTTP协议、电子邮件协议、网络化、直接连接、专用电话线、拨号、采用RS-232(EIA232)或通用串行总线的串行连接、硬连线并行端口连接、根据电力线协议的网络连接和为本领域的技术人员所公知的其他形式的数据通信连接。用于数据通信的耦合包括用于数据通信的连网耦合。可与本发明的各实施例一起使用的网络的例子包括有线网络、内部网、外部网、互联网、局域网、广域网和为本领域的技术人员所公知的其他网络结构。使用电视频道、有线频道、视频提供商、电信源等之间的任何连网耦合也处于本发明的范围内。
“驱动程序”是指控制设备的程序。设备(打印机、盘驱动器、键盘)典型地具有驱动程序。驱动程序担当设备与使用设备的软件之间的翻译器。每个设备具有其驱动程序所知道的一组专用命令。软件程序一般通过使用一般性命令来访问设备。因此,驱动程序从程序接受一般性命令,然后将它们翻译成设备的专用命令。
“ESN”是“电子序列号”的缩写。ESN是编程到设备例如咖啡壶中以唯一标识该设备的序列号。
“字段”-在本说明书中,除非上下文特别指明,否则术语“字段”和“数据元素”一般用作是同义的,它们都是指数字数据的单独元素。数据元素的聚合称作“记录”或“数据结构”。记录的聚合称作“表”或“文件”。文件或表的聚合称作“数据库”。包括成员方法、函数或者软件例程以及数据元素的复杂数据结构称作“类”。类的实例称作“对象”或“类对象”。
“HAVi”代表‘家庭音频视频互操作性’,特别用于家庭娱乐系统的厂商无关音频视频标准的名称。HAVi允许不同的家庭娱乐和通信设备(如VCR、电视、立体声装置、安全系统和视频监视器)一起连网并且从一个主设备如服务网关、PC或电视进行控制。使用IEEE 1394即‘Firewire(火线)’规范作为互连介质,HAVi允许来自不同厂商的产品根据既定连接和通信协议和API相互兼容。由HAVi分布式应用系统提供的服务包括寻址方案和消息传输,用于发现资源的查询、投递和接收本地或远程事件并且流化和控制同步数据流。
“HomePlug”代表HomePlug电力线联盟。HomePlug是为提供用于创建高速家庭电力线网络化产品和服务开放规范的论坛而形成的非盈利性团体。HomePlug规范被设计用于采用电力线网络化标准通过家庭电源插座将因特网通信和多媒体传送到家庭。
HomePlug协议允许支持HomePlug的设备使用射频信号(RF)跨越电力线通信。HomePlug协议采用正交频分多路复用(OFDM)将RF信号分裂成多个较小的子信号,然后,这些子信号跨越电力线以不同频率从一个支持HomePlug的设备传输到另一个支持HomePlug的设备。
“HTTP”代表‘超文本传输协议’,万维网的标准数据通信协议。
“ID”是“标识”的缩写,它在本说明书中按照惯例与在数据元素中表示的名词一起使用,从而‘用户ID’表示用户标识并且‘userID’是其中存储用户标识的数据元素的名称。作为使用‘ID’的另一个例子:‘度量ID’表示度量标识,并且‘metricID’是其中存储度量标识的数据元素的名称。
“IEEE 1394”是支持高达400Mbps(每秒400百万位)的数据传输速率的外部总线标准。最早开发IEEE 1394的苹果公司使用商标名称“FireWire”。其他公司使用其他名称如i.link和Lynx来描述它们的1394产品。
单个1394端口可以用来连接高达63个外部设备。除了高速之外,1394还支持同步数据传输-以有保证的速率传送数据。这使得它对于需要实时传输高级别数据如视频的设备是理想的。
“因特网(Internet)”是连接利用‘网际协议’或‘IP’作为其网络化协议栈的网络层的数百万台计算机的全球网络。因特网通过设计而分散。因特网上的每台计算机是独立的。因特网上每台计算机的操作员可以选择使用哪些因特网服务以及使哪些本地服务可用于全球因特网社区。存在多种方式来访问因特网。很多在线服务如美国在线提供对一些因特网服务的访问。通过商业因特网服务提供商(ISP)获得访问也是可能的。“互联网(internet)”(首字母未大写)是在其网络协议栈中使用IP作为网络层的任何网络。
“JAR”是“Java归档”的缩写。JAR是用来捆绑由Java应用使用的多个组件的文件格式。JAR文件简化了下载小应用程序,因为很多组件(.class文件、图像、声音等)可以打包到单个文件中。JAR还支持数据压缩,这进一步减少了下载次数。按照惯例,JAR文件以‘jar’扩展名结束。
“JES”代表Java嵌入式服务器。JES是OSGi的商业实现,其中OSGi为嵌入式设备提供用于开发、部署和安装应用和服务的框架。
“LAN”是“局域网”的缩写。LAN是跨越较小区域的计算机网络。很多LAN局限于单个建筑物或者建造物群。然而,一个LAN可以通过电话线或无线电波跨越任何距离连接到其他LAN。多个这样连接的LAN的系统称作广域网(WAN)。因特网是WAN的一个例子。
“LonWorks”是可从Echelon获得的网络化平台。LonWorks目前用于诸如家电控制和照明控制的各种网络应用中。LonWorks网络化平台使用称作“LonTalk”的协议,其中该协议嵌入在安装于支持LonWorks的设备内的“神经元芯片(Neuron Chip)”内。
神经元芯片是带有多个处理器、读写和只读存储器(RAM和ROM)以及通信和I/O子系统的单芯片系统。只读存储器包含操作系统、LonTalk协议和I/O函数库。该芯片具有用于配置数据和应用程序的非易失性存储器,其中配置数据和应用程序可以通过Lon Works网络下载到设备。神经元芯片提供标准OSI网络模型的前6层。也就是,神经元芯片提供物理层、数据链路层、网络层、传输层、会话层和表现层。
神经元芯片不提供应用层编程。LonWorks网络的应用以称作“Neuron C”的编程语言编写。以Neuron C编写的应用典型地是事件驱动的,因此导致较低的网络通信量。
“OSGI”是指开放服务网关倡仪,开发服务网关规范包括用于传送服务软件包(bundle)、通过服务网关提供兼容数据通信和服务的软件中间件的规范的工业组织。开放服务网关规范是一种基于java的应用层框架,该框架提供服务提供商、网络运营商、设备制造商和家电制造商的厂商无关应用和设备层API和函数。
“OSI模型”或开放系统互连模型定义用于以七层实现协议的网络化框架。控制从一层传到另一层,在一个网络站中以应用层开始,继续到底层,通过信道至下一个网络站,并且支持分层结构。
OSI模型的第七层是应用层。应用层支持应用和最终用户进程。应用层提供文件传输、电子邮件的应用服务和其他网络软件服务。
OSI模型的第六层是表现层。表现层提供与数据表示差异的无关性。表现层从应用数据格式翻译成网络数据格式以及相反。表现层有时称作“语法层”。
OSI模型的第五层是会话层。会话层建立、管理和终止连网应用之间的连接。会话层建立、协调和终止连网应用之间的交谈、交换和对话。
OSI模型的第四层是传输层。传输层提供连网系统或主机之间的透明数据传输。传输层也负责流控制并且确保完整的数据传输。
OSI模型的第三层是网络层。网络层创建称作虚拟电路的逻辑路径,用于将数据从一个网络节点传输到另一个网络节点。路由选择、转发、寻址和分组顺序化是网络层的功能。
OSI模型的第二层是数据链路层。数据链路层将数据分组解码成位串,并且将位串编程成数据分组。数据链路层提供传输协议,并且管理物理层中的数据流传输。
数据链路层分成两个子层。数据链路层的第一子层是介质访问控制(MAC)层。MAC子层控制网络上计算机传输数据的访问和权限。数据链路层的第二子层是逻辑链路控制(LLC)层。LLC层控制物理层中的数据流传输。
OSI模型的第一层是物理层。物理层以电气和机械级别通过物理网络传输位流(电气脉冲、光或无线电信号)。物理层提供用于发送和接收数据的硬件。
“SMF”代表可从IBM获得的“服务管理框架TM”。SMF是用于管理服务网关上的网络传送应用的OSGi的商业实现。
“USB”是“通用串行总线”的缩写。USB是支持12Mbps的数据传输速率的外部总线标准。单个USB端口可以用来连接高达127个外围设备,例如鼠标、调制解调器和键盘。USB还支持即插即用安装和热插拔。
“WAP”是指无线应用协议,一种供手持无线设备使用的协议。可与WAP一起使用的无线设备的例子包括移动电话、寻呼机、双向无线电设备和手持计算机。WAP支持很多无线网络,并且WAP由很多操作系统支持。为手持设备特制的操作系统包括PalmOS、EPOC、WindowsCE、FLEXOS、OS/9和JavaOS。使用显示器并访问因特网的WAP设备运行“微浏览器”。微浏览器使用可以适应手持设备的低存储器约束和无线网络的低带宽约束的小文件大小。
“X-10”是指X-10协议。典型的X-10允许设备使用X-10发送器和X-10接收器跨越AC电力线布线如家庭中的现有AC布线通信。X-10发送器和X-10接收器使用射频(RF)信号来交换数字信息。X-10发送器和X-10接收器采用表示数字信息的短RF突发通信。二进制1以120KHz的1毫秒突发来表示,并且二进制0以没有120KHz突发并且其后跟有一个突发来表示。
采用X-10协议,在称作帧的数据串中发送数据。该帧开始于指定为“1110”的4位开始代码。在开始代码之后,该帧以4位“房屋代码”标识诸如房屋的特定域,并且以4位“设备代码”标识该域内的设备。该帧还包括8位命令串,该命令串标识特定预设命令如“接通”、“关断”、“减光”、“加光”、“状态接通”、“状态关断”和“状态请求”。
示例性架构
图1是示出有用于实现根据本发明多个实施例的管理设备的方法的示例性架构的方框图。图1的架构包括域(118)。本说明书中的术语“域”是指特定连网环境。各种域的例子包括家庭网络、轿车网络、办公室网络和为本领域的技术人员所公知的其他网络。
图1的域(118)包括服务网关(106)。在一些示例性架构中,服务网关(106)是OSGi兼容服务网关(106)。虽然用于管理设备的方法的示例性实施例在本说明书中是采用OSGi来描述的,但是很多其他应用和框架也可以用来实现根据本发明的设备管理方法,因此也处于本发明的范围内。OSGi的商业实现如JES和SMF还有用于实现用于管理设备的方法。
在图1的示例性架构中,服务网关(126)包括服务框架(126)。图1的服务框架(126)是用于运行‘服务’的托管(hosting)平台。服务是用于在OSGi中创建应用的主构建块。OSGi服务框架(126)采用Java编写,因此典型地运行在Java虚拟机(JVM)(150)上。
图1的示例性架构包括DML(108)。“DML”(108)是域中介层的缩写。在图1的架构的很多实施例中,DML(108)是有用于实现根据本发明的设备管理方法的应用软件。在本发明的一些实施例中,DML是OSGi兼容应用软件,因此实现为作为安装在服务框架(126)上的软件包(bundle)打包的一个服务或一组服务。在本说明书中,DML经常是在OSGi的上下文中讨论的。然而,OSGi的讨论是用于说明的目的而不是用于限制的目的。实际上,根据本发明各个实施例的DML可以采用任何编程语言C、C++、COBOL、FORTRAN、BASIC等来实现,这对于本领域的技术人员而言是公知的,并且采用不同于Java的语言开发的DML直接安装在操作系统上,或者安装在不同于JVM的操作环境上。
在图1的示例性架构中,服务网关(106)被耦合以与度量传感器(406)进行数据通信。度量传感器(406)是读取用户状态指示并且响应用户状态指示创建用户度量的设备。“用户状态指示”是用户状态的可量化方面和测量这一方面的数量。例如,用户状态的可量化方面为华氏温度99.2度的体温。用户状态的可量化方面的例子包括体温、心率、血压、位置、皮肤电反应以及为本领域的技术人员所公知的其他方面。
“用户度量”是表示用户状态指示的数据结构。在根据本发明的设备管理方法的很多例子中,用户度量实现为包括用户ID字段、度量ID字段以及度量值字段的数据结构、类或对象。典型的用户ID字段标识其状态指示以该度量表示的用户。典型的度量ID字段标识该度量所表示的用户状态的可量化方面,例如血压、心率、位置或皮肤电反应。典型的度量值字段存储测量该用户状态方面的数量。
可用作或者可容易地改造以用作度量传感器的可佩戴和无线心率监测器、皮肤电反应监测器、眼睛反应监测器和呼吸监测器目前可从Quibit System,Inc.获得。来自Body Trends,Inc.的心率监测器的‘Polar’系列和来自Sentec Corporation的磁致弹性胃部PH传感器是容易获得的可用作或者可容易地改造以用作度量传感器的生物医学传感器的其他例子。
为了让传统传感器如生物医学传感器可用作在包含多个用户的域中发送多种度量类型的度量传感器,该传感器最好不仅发送它所测量的每一方面的值,而且发送用户ID和度量ID。用户ID是有用的,因为本发明的典型实施例包括能够同时代表多个用户管理设备的DML。度量ID是有用的,因为单个用户可以同时采用多个度量传感器,或者采用能够监测和发送关于用户状态多个方面的数据的度量传感器。所有无线传感器根据某无线数据通信协议至少发送度量值。就现有的任何特定传感器不发送用户ID或度量ID而言,仅通过对该传感器的控制软件进行小的修改,就可容易地改造该传感器以在其发送中包括用户ID和度量ID。
虽然预期大多数DML将支持度量ID和用户ID,但是在本发明范围内的一些环境下,即使现有传感器不在其输出遥测中提供度量ID和用户ID,也有可能使用该传感器。考虑只有一个人存在于具有由仅跟踪单个度量例如心率的DML控制或管理的设备的域的例子。当然,由于仅接收一种度量,因此跟踪仅一个用户的仅一个度量的DML可以工作而无需在从度量传感器接收的遥测中包括度量类型代码。在本例中,严格地说,现有支持蓝牙的心率传感器如来自Body Trends的‘Polar’传感器将有可能用作度量传感器。本例仅为了说明的目的而给出的,因为在实际情况下预期根据本发明实施例的大多数DML将有用且有利地代表多个用户(因此需要在其遥测中包括用户ID)管理多种度量(因此需要在其遥测中包括度量ID代码)。
在本发明的很多实施例中,度量传感器最好是无线耦合的以与服务网关(106)进行数据通信。在很多替代实施例中,度量传感器采用各种协议如蓝牙、802.11、HTTP、WAP或者为本领域的技术人员所公知的任何其他协议通过服务网关将用户度量发送到DML。
在图1的示例性架构中,域(118)包括被耦合以跨越LAN(105)与服务网关(106)进行数据通信的设备(316)。在本发明的很多实施例中,域(118)将包括很多设备。例如,家庭域可以包括具有电视、众多灯、电冰箱、冷冻机、咖啡壶、洗碗机、烘干机、CD播放器、DVD播放器、个人录像机或者为本领域的技术人员所公知的任何其他可连网设备的家庭网络。为便于说明起见,图1的示例性结构仅示出三个设备(316),但是使用任意数目的设备都将处于本发明的范围内。
为了管理设备(316),DML必须具有用于设备的设备类,该类包含获得和设置关于该设备的各属性的访问方法(accessor method),并且在一些情况下,DML还具有提供与设备进行通信所需的协议的通信类。在图1的架构的一些例子中,DML在其上预安装了用于DML所支持的很多设备的设备类和通信类。
就DML没有用于特定设备的预安装设备类和通信类而言,DML可以采用多种方法获得设备类和通信类。DML获得用于设备的设备类和通信类的一种方法是通过从设备读取设备类和通信类。这要求设备具有足够的安装存储器以存储设备类和通信类。DML还可以从不包含安装在其上的设备类或通信类的设备获得设备类和通信类。DML获得设备类和通信类的一种方法是通过从设备读取设备ID,在因特网上搜索设备类和通信类,并且下载它们。DML获得设备类和通信类的另一种方法是通过从设备读取网络位置从而从该网络位置下载设备类和通信类。描述了三种方法来获得根据本发明管理设备所需的设备类和通信类。其他方法对于本领域的技术人员而言也将是公知的。
图1的示例性架构包括非域实体(102),它被耦合以跨越WAN(104)与服务网关(106)进行数据通信。“非域实体”是被耦合以与域进行数据通信但是不位于该域内的任何计算设备或网络位置。短语“非域实体”是广泛的,并且在图1的架构中包括它表示在有用于实现根据本发明的设备管理方法的架构的很多实施例中,给定域被耦合以与外界非域实体进行数据通信。
非域实体的一个例子是安装在域内的设备(316)的制造商的web(万维网)服务器(域外)。该制造商可能运行可用于下载设备驱动程序、设备更新或者用于设备的任何其他信息或软件的网站。设备的驱动程序、更新或者信息或软件可跨越WAN并且通过服务网关下载到设备。
图2是有用于实现根据本发明的设备管理方法的示例性服务网关(106)的方框图。在有用于本发明各实施例的一些示例性架构中,图2的服务网关(106)是OSGi兼容服务网关(106)。虽然用于管理设备的方法的示例性实施例在本说明书中是采用OSGi来描述的,但是很多不同于OSGi的其他应用和框架也可以用来实现根据本发明的设备管理方法,因此也处于本发明的范围内。OSGi的商业实现如JES和SMF也有用于实现本发明的各方法。
OSGi代表“开放服务网关倡仪”。OSGi规范是一种基于Java的应用层框架,其使用在家庭、轿车和其他环境下的网络中工作的任意通信协议提供用于各种设备的厂商无关应用和设备层API和函数。OSGi与各种网络化技术如以太网、蓝牙、‘家庭音频和视频互操作性标准’(HAVi)、IEEE 1394、通用串行总线(USB)、WAP、X-10、LonWorks、HomePlug和各种其他网络化技术一起工作。OSGi规范可从网址为www.osgi.org的OSGi网站免费下载来获得。
图2的服务网关(130)包括服务框架(126)。在很多示例性实施例中,服务框架是OSGj服务框架(126)。OSGi服务框架(126)采用Java编写,因此典型地运行在Java虚拟机(JVM)上。在OSGi中,图1的服务框架(126)是用于运行‘服务’(124)的托管平台。在本文中,术语‘服务’或‘多个服务’依赖于上下文一般是指OSGi兼容服务。
服务(124)是用于根据OSGi创建应用的主构建块。服务(124)是实现特定特性的一组Java类和接口。OSGi规范提供大量标准服务。例如,OSGi提供创建可以响应来自HTTP客户端的请求的web服务器的标准HTTP服务。
OSGi还提供称作“设备访问规范”的一组标准服务。设备访问规范(“DAS”)提供识别连接到服务网关的设备、搜索用于该设备的驱动程序,并且安装该设备的驱动程序的服务。
OSGi中的服务(124)与执行服务(124)所需的其他文件、图像和资源一起打包到‘软件包’(121)中。软件包(121)是包括一个或多个服务实现(124)、激活器类(127)和清单文件(125)的Java归档或‘JAR’文件。激活器类(127)是服务框架(126)用来启动和停止软件包的Java类。清单文件(125)是描述软件包(121)内容的标准文本文件。
在图2的示例性架构中包括DML(108)。在本发明的很多实施例中,DML是执行设备管理方法的OSGi服务。图2的DML(108)打包在软件包(121)内,并且安装在服务框架(126)上。
OSGi中的服务框架(126)还包括服务注册中心(128)。服务注册中心(128)为安装在框架(126)上并且向服务注册中心(128)作过注册的每个软件包(121)包括服务注册(129),其中包括服务名称和实现该服务的类的实例。软件包(121)可以请求没有包括在软件包(121)中但是在框架服务注册中心(128)上作过注册的服务。为了查找服务,软件包(121)对框架的服务注册中心(128)执行查询。
示例性类和类协作
图3是示出有用于实现根据本发明的用于管理设备的方法的示例性类的方框图。图3的示例性类是为了帮助理解本发明而提出的,而不是用于限制的目的。虽然根据本发明的设备管理方法在本说明书中一般是按照Java来描述的,但是使用Java仅为了说明的目的,而不为了限制的目的。实际上,根据本发明的设备管理方法可以采用包括C++、Smalltalk、C、Pascal、Basic、COBOL、Fortran等在内的很多编程语言来实现,这对于本领域的技术人员而言将是公知的。
图3的类图包括示例性DML类(202)。图3的示例性DML类(202)的实例提供执行有用于根据本发明管理设备的各步骤的成员方法。图3的示例性DML类被示出具有Activator.start()方法,从而DML可以启动为OSGi框架中的服务。虽然对于该DML仅示出一个成员方法,但是实际上DML根据特定实施例的需要而将经常具有多个成员方法。图3的DML类还包括用于存储对常常由DML的构造器创建的服务类的引用的成员数据元素。在本例中,DML提供用于引用度量服务(552)、度量范围服务(558)、通信服务(554)、动作服务(560)、设备服务(556)、度量向量服务(559)和度量空间服务(561)以及动态动作列表服务(563)的存储字段。
图3的度量服务类(204)提供从DML接收用户度量并且响应从DML接收用户度量而创建度量类的实例的成员方法。图3的度量服务类(204)包括createMetric(UserID,MetricID,MetricValue)成员方法(562)。在一些实施例中,createMetric()成员方法是以度量ID作为参数的工厂方法,该方法根据度量ID创建并返回度量对象。响应从DML获得用户度量,图3的度量服务类(204)的示例性实例创建度量类的实例,并且向DML返回对新度量对象的引用。
严格地说,本发明并不限制要求DML通过工厂方法创建度量对象。例如,DML可以如下面伪代码段所示进行:
    //在输入流上接收度量消息
    //从度量消息提取用户ID
        <!-- SIPO <DP n="14"> -->
        <dp n="d14"/>
    //度量ID和度量向量,从而:

    int userID=//来自度量消息的用户ID

    int metricID=//来自度量消息的度量ID

    int metricValue=//来自度量消息的度量值

    Metric aMetric=new Metric();

    aMetric.setUserID(userID);

    aMetric.setMetricID(metricID);

    aMetric.setMetricValue(metricValue);

    aMetric.start();
本例创建度量对象,并且使用访问方法来装载其成员数据。该方案为每个度量提供完全相同类的度量对象,然而,存在度量最好是利用不同具体类结构的情形。在心率和血压的度量的情况下,例如,这两个度量值可以编码为整数,而来自GPS收发器的地球表面极坐标的度量值例如可能最好以更复杂的数据结构来编码,甚至例如具有其自己的位置类。使用工厂方法易于使用多个度量类。使用工厂方法来创建度量对象的DML可以如下面示例性伪代码段所示进行:
//在输入流上接收度量消息
//从度量消息提取用户ID
//度量ID和度量向量,从而:
int userID=//来自度量消息的用户ID
int metricID=//来自度量消息的度量ID
int metricValue=//来自度量消息的度量值
Metric aMetric=MetricService.createMetricObject(userID,
                                    metricID,metricValue);
aMetric.start();
本例依赖于工厂方法createMetric()来将参数值设入新度量对象。度量服务和用于度量对象的工厂方法可以如下面伪代码段所示实现:
    //

    //度量服务类
        <!-- SIPO <DP n="15"> -->
        <dp n="d15"/>
    //

    class MetricService

    {

      public static Metric createMetricObject(userID,metricID,

                                              metricValue)

    {

        Metric aMetric;

        switch(metricID)

        {
          case 1:aMetric=new HeartRateMetric(userID,metricID,

                                              metricValue);

                   break;

          case 2:aMetric

                  =new BloodPressureMetric(userID,metricID,

                                            metricValue);

                   break;

          case 3:aMetric=new GPSMetric(userID,metricID,

                                         metricValue);

                    break;

        }//switch()结束

        return aMetric;

      }// createMetric()结束

    }//class MetricService结束
MetricService在本例中实现所谓的参数化工厂设计模式,其中包括一个工厂方法。在本例中,该工厂方法是名称为‘createMetricObject()’的成员方法。createMetricObject()接受三个参数即用户ID、度量ID和度量值。createMetricObject()根据度量ID实现switch语句,以选择和实例化特定具体度量类。在本例中,具体度量类为HeartRateMetric、BloodPressureMetric和GPSMetric,其中每一个都扩展Metric基类。createMetricObject()向调用DML返回对新度量对象的引用。来自DML的调用:
Metric aMetric=MetricService.createMetricObject(userID,
       metricID,metrievalue);是多态的,其利用对基类Metric的引用,从而调用DML既不知道也不关心实际上是哪一个类的度量对象被实例化和返回。下面是扩展Metric基类以定义扩展Metric基类的表示用户在地球表面上的位置的具体度量类的例子:
    Class GPSMetric extends Metric{

     int myUserID;

     int myMetricID;

     class GPSLocation{

         Latitude myLatitude;

         Longitude myLongitude;

    }

    Class Latitude{

       String direction;

       int degrees;

       int minutes;

       int seconds;

    }

    Class Longitude{

       String direction;

       int degrees;

       int minutes;

      int seconds;

    }

    GPSLocation myLocation;
        <!-- SIPO <DP n="17"> -->
        <dp n="d17"/>
       GPSMetric(int userID,int metricID,GPSLocation metricValue){

         myUserID=userID;

     myMetricID=metricID;

         myLocation=metricValue;

       }

    }
本示例具体类GPSMetric为纬度和经度提供存储。GPSMetric提供构造器GPSMetric(),该构造器采取整数参数来设置userID和metricID,但是期望其metricValue参数为对GPSLocation对象的引用,GPSLocation对象又为纬度和经度提供成员数据存储。
图3的类图包括示例性度量类(206)。图3的示例性度量类(206)表示用户度量。用户度量包括描述用户状态指示的数据。用户状态指示是用户状态的可量化方面以及测量这一方面的数量。用户状态的可量化方面的例子包括体温、心率、血压、位置、皮肤电反应以及为本领域的技术人员所公知的用户状态的任何其他方面。
图3的示例性度量类(206)包括用户ID字段(486)、度量ID字段(488)和值字段(490)。用户ID字段(486)标识用户。度量ID字段(488)标识度量类的实例所表示的用户度量。也就是,用户度量的类型。值字段(490)包括用户度量的值。
图3的示例性度量类还包括用于度量动作列表(622)的数据存储。度量动作列表是包含多个动作ID的数据结构,其中这些动作ID标识当执行时以影响由该度量表示的用户状态同一方面的方式管理设备的动作。例如,体温度量可以具有关联度量动作列表,其中包括当执行时导致接通吊扇的动作ID。在用于管理设备的方法的很多例子中,度量动作列表中的动作ID用来标识要包括在动态动作列表中的动作ID。
该示例性度量类(206)是可以在不同实施例中作为一般类使用的类的例子,其实例可以用来存储或表示如上所述具有相同或类似成员数据元素的多种度量。或者在其他实施例中,诸如该示例度量类(206)的类可以用作基类以由具体派生类扩展,其中每一个派生类可以具有也如上所述相差很大的成员数据类型。
图3的类图包括示例性关系度量服务类(684)。该示例性关系度量服务类包括成员方法createRelationalMetric()(686)。在很多实施例中,createRelationalMetric()(686)确定度量高速缓存中的用户度量之间的关系,并且实例化表示所确定的度量高速缓存中的用户度量之间的关系的关系度量。在其他实施例中,createRelationalMetric()比较度量高速缓存中的用户度量与一起构成预定度量模式的一组预定度量。如果度量高速缓存中的用户度量匹配构成预定度量模式的预定度量,则createRelationalMetric检索表示由预定度量模式定义的关系的预创建关系度量。
图3的类关系图包括关系度量。关系度量是根据度量高速缓存中的用户度量而创建或者预期到达于高速缓存中的用户度量而创建的度量。也就是,在一些情况下,关系度量通过确定度量高速缓存中的用户度量之间的关系来创建。在其他情况下,关系度量是根据预定度量的预定模式而创建的度量。然后,经常地根据度量高速缓存中的用户度量从关系型数据库中选择该预定关系度量。
图3的示例性关系度量包括标识用户的用户ID字段。图3的关系度量包括度量ID。关系度量还包括值字段(490)。在很多情况下,值字段典型地表示由关系度量表示的特定关系的量值。在一些例子中,关系记录可以具有表示关系度量不同方面的多个值字段。例如,‘移动’的关系度量可以具有一个表示方向的值字段和另一个表示速度的值字段。
图3的类图包括度量向量服务(207)。图3的度量向量服务(207)提供响应从度量服务接收用户度量和从关系度量服务接收关系度量而创建度量向量类的实例的成员方法。在很多示例实施例中,createMetricVectorObject()成员方法(565)根据用户ID以及用户度量和关系度量的度量ID从度量向量列表中识别用户度量向量的度量向量ID。如果在度量向量服务的度量向量列表中没有度量向量,则度量向量服务实例化一个,并且在以关联的用户ID和度量ID为索引的度量向量表中存储其度量向量ID。创建度量向量对象可以如下面伪代码段所示
实现:
    //在输入流上接收度量

    //作为整数提取其用户ID

    //实例化度量对象

    Metric newMetric=metricService.createMetricObject(metricID);

    int MetricVectorID=0;

    if((MetricVectorID=MetricVectorList.get(userID,metricID))==null){

       MetricVector newMetricVector=

       MetricVectorService.createMetricVectorObject(userID,metricID);

       MetricVectorID=newMetricVector.MetricVectorID;

       MetricVectorList.add(MetricVectorID,newMetricVector)

       }
在上面伪代码例子中,如果度量向量服务接收到对于其用户ID在度量向量服务的度量向量表中找不到度量向量的度量或关系度量,则度量向量服务为该用户创建具有新度量向量ID的新度量向量,并且将该度量向量加到度量向量列表。
图3的类图包括度量向量类(606)。度量向量类的对象表示复杂的用户状态指示。用户度量向量典型地包括各自表示用户状态的单个可量化方面和测量这一方面的数量的用户度量和根据或者预期度量高速缓存中的用户度量而创建的关系度量的集合。由多个不同用户度量组成的用户度量向量因此表示具有用户状态的多个可量化方面和测量这些方面的多个数量的复杂用户状态指示。度量向量类(606)包括用于存储用户ID(486)和度量列表(652)的数据元素,其中用户ID(486)标识用户,并且度量列表(652)用于存储对多个不同度量对象的引用。
图3的示例性度量向量(606)还包括用于动态动作列表(626)的数据存储。动态动作列表是根据与用户度量向量中超出用户度量空间的其对应度量范围的特定度量相关联的度量动作列表而创建的动作ID列表。也就是,度量向量中超出其对应度量范围的每个度量具有关联度量动作列表。动态动作列表包括根据与用户度量向量中超出用户度量空间的其对应度量范围的特定度量相关联的那些度量动作列表而识别的动作ID。动态动作列表最好提供根据用户的当前状态而剪裁的动作ID列表。
示例性度量向量类的对象典型地还包括用于确定度量向量是否超出用户度量空间的成员方法。该示例性度量向量类是可以在不同实施例中用作一般类的类的例子,其实例可以用来存储或表示具有相同或类似成员数据元素的多种向量。或者在其他实施例中,可以使用诸如该示例度量向量类的类作为基类来由具体派生类扩展,其中每一个可以具有不同的成员数据类型。
图3的类图包括度量范围服务类(208)。度量范围服务类(208)提供实例化度量范围类的实例的成员方法。图3的度量范围服务类(208)包括createRangeObject(UserID,MetricID)成员方法(572)。createRangeObject()成员方法是以用户ID和度量ID作为参数的工厂方法,其根据用户ID和度量ID创建度量范围对象。createRangeObject()工厂方法向度量向量返回对度量范围对象的引用。createRangeObject()是可以使用由在createMetricObject()工厂方法的描述中所提供的示例性伪代码概述的相同设计模式来实现的参数化工厂方法。
图3的类图包括示例性度量范围类(210)。示例性度量范围类的实例表示对应于用户且对应于度量或关系度量的预定度量范围。将度量范围对象中的最大值和最小值与度量值进行比较,以确定度量对象的度量值是否超出预定度量范围。图3的示例性度量范围类(210)包括标识度量范围的范围ID字段(463)以及标识用户度量的度量ID字段(462)。图3的示例性度量范围类(210)包括标识用户的用户ID字段(464)。度量范围类还包括Max(最大)字段(468)和Min(最小)字段(470),这两个字段包含定义度量范围的最大值和最小值。
图3的示例性度量范围类(210)是所谓数据对象的例子,也就是,仅作为数据容器的类,其中没有或者几乎没有由该类的成员方法对该数据执行的处理。在本例中,度量范围类的对象主要用来在其他对象之间传输度量范围的最小和最大值。图3的度量范围类包括缺省构造器(未示出),但是严格地说,将不需要其他成员方法。如果提供不带其他成员方法的度量范围类,则协作对象可以通过例如:
“someMetricRange.max”或“someMetricRange.min”的编码来访问其成员数据元素。然而,本例中的特定例子(210)被示出为包含用于其范围的最小和最大值的访问方法(471、473),这不是本发明所要求的做法,但是符合于采用面向对象范例的编程。
图3的类图包括度量空间服务类(209)。度量空间服务类(209)包括搜索度量空间列表或其他数据结构以识别用户的度量空间的成员方法createMetricSpace()。如果不存在该度量空间,则createMetricSpace()实例化一个,并且在度量空间列表中存储度量空间ID。创建度量空间对象可以通过下面示例性伪代码来实现:
    //作为整数提取其用户ID和度量向量ID

    //实例化度量空间对象

    MetricVector newMetricVector

       =MetricVectorService.createMetricVectorObject(userID,

                                                  MetricVectorID);

    if((spaceID=MetricSpaceList.get(userID,MetricVectorID))==null){

       MetricSpace newMetricSpace=

       MetricSpaceService.createMetricSpace(userID,MetricVectorID);

       MetricSpaceID=newMetricSpace.SpaceID;

       MetricSpaceList.add(SpaceID,newMetricSpace)

       }
在上面伪代码例子中,度量空间服务对度量空间列表搜索度量空间。如果该列表没有包含对应于用户ID和度量向量ID的度量空间,则MetricSpaceService.createMetricSpace(userID,MetricVectorID)以新度量空间ID创建新度量空间。
图3的类图包括度量空间类。用户度量空间由用于不同用户度量和关系度量的多个用户度量范围组成。该示例性度量空间包括用于存储标识用户的用户ID(405)和标识度量空间的空间ID(908)的数据元素。图3的度量空间(610)还为对用于用户度量和关系度量的不同度量范围的引用的列表包括数据存储(655)。度量空间的不同度量范围在类型上对应于用户度量向量中的度量。也就是,在典型实施例中,用户度量向量包括一组不同的当前用户度量和关系度量,并且用户度量空间包括该用户的一组对应度量范围。
图3的类图包括动作服务类(217)。动作服务类包括实例化用于用户度量或关系度量的度量动作列表、实例化动作对象、存储对动作列表中的动作对象的引用、以及向调用度量返回对动作列表的引用的成员方法,其中所有这些成员方法可以如下面示例性伪代码ActionService类所示实现:
    //

    //动作服务类

    //

    class ActionService

    {

      public static Action createActionList(userID,MetricID)

      {

         ActionList anActionList=new ActionList();

         int actionID;

         //查找存储动作描述数据的数据库动作记录

         for(/*匹配userID和metricID的每个动作记录*/){

            //从每个匹配动作记录获得动作ID

            actionID=//来自匹配数据库记录的动作ID

            //*下面动作构造器从设备服务获得由动作对象管理的设备

            //列表

            switch(actionID)

            {

              case 1:Action anAction1=new Action1(DeviceService,

                                                   actionID);

                      anActionList.add(anAction1);
        <!-- SIPO <DP n="23"> -->
        <dp n="d23"/>
                          break;

                 case 2:Action anAction2=new Action2(DeviceService,

                                                      actionID);

                          anActionList.add(anAction2);

                          break;

                 case 3:Action anAction3=new Action3(DeviceService,

                                                      actionID);

                          anActionList.add(anAction3);

                          break;

                 case 4:Action anAction4=new Action4(DeviceService,

                                                      actionID);

                          anActionList.add(anAction4);

                          break;

                 case 5:Action anAction5=new Action5(DeviceService,

                                                      actionID);

                          anActionList.add(anAction5);

                          break;

             }//switch()结束

          }//for()结束

          return anActionList;

       }//createActionListObject()结束

    }//class ActionService结束
ActionService类中的createActionList()方法以“ActionListanActionList=new ActionList()”实例化用户度量的度量动作列表。
CreateActionList()然后在数据库的动作记录表中搜索其用户ID和度量ID匹配调用参数的记录。对于表中的每一个匹配记录,createActionList()通过其switch语句实例化一个动作对象。该switch语句为从动作记录表检索的每个动作ID选择特定具体派生动作类。createActionList()采用“anActionList.add()”在动作列表中存储对每个动作对象的引用。createActionList()以“return anActionList”返回对动作列表的引用。
图3的类图包括示例性动作类(216)。动作类的实例表示当执行时导致设备管理的动作。图3的示例性动作类包括动作ID字段(450)。示例性动作类(216)中的doAction()方法(456)编程为根据例如对DeviceService.createDeviceList()的调用获得设备列表(458)。然后,Action.doAction()(456)典型地还编程为调用其设备列表的每个设备中的接口方法以执行设备控制动作。
图3的类图包括动态动作列表服务。图3的动态动作列表服务包括成员方法createDynamicList()(569)。在很多实施例中,createDynamicList由用户度量向量内的成员方法调用,并且采用从与超出其对应度量范围的特定度量相关联的度量动作列表检索的动作ID作为参数。createDynamicList创建动态动作列表,其中该列表包括根据从度量动作列表检索的度量ID而识别的动作ID,并且向其调用者返回对动态动作列表的引用。
图3的类图包括设备服务类(218)。设备服务类提供名称为createDeviceList(actionID)的工厂方法,该工厂方法创建一个设备列表,并且返回对该列表的引用。在本例中,createDeviceList()以类似于上述ActionService.createActionList()的方式工作,即实例化设备列表,在设备表中搜索以从具有匹配动作ID条目的设备记录获得设备ID,为每一个设备ID实例化具体派生类的设备对象,将对每个新设备对象的引用加到设备列表,并且向调用动作对象返回对该设备列表的引用。然而,在本例中,工厂方法createDeviceList()不仅从其支持数据表检索设备ID,而且检索要由所实例化的每个设备对象控制的物理设备的网络地址或通信位置,如下面示例性伪代码所示:
    //

    //设备服务类

    //

    class DeviceService
        <!-- SIPO <DP n="25"> -->
        <dp n="d25"/>
    {

      public static Device createDeviceList(actionID)

      {

         DeviceList aDeviceList=new DeviceList();

         int deviceID;

    //查找存储设备描述数据的数据库设备记录

    for(/*匹配actionID的每个设备记录*/){

       //从每个匹配设备记录获得设备ID和设备地址

       deviceID=//来自匹配数据库记录的设备ID

       deviceAddress=//来自匹配数据库记录的设备ID

       //注意:下面设备构造器从设备服务获得由设备对象

       //管理的设备列表

       switch(deviceID)

       {

          case 1:Device aDevice=new Device1(CommsService,

                                    deviceAddress,deviceID);

                   break;

          case 2:Device aDevice=new Device2(CommsService,

                                    deviceAddress,deviceID);

                  break;

          case 3:Device aDevice=new Device3(CommsService,

                                    deviceAddress,deviceID);

                   break;

          case 4:Device aDevice=new Device4(CommsService,

                                    deviceAddress,deviceID);

                   break;

          case 5:Device aDevice=new Device5(CommsService,

                                    deviceAddress,deviceID);

                   break;
        <!-- SIPO <DP n="26"> -->
        <dp n="d26"/>
            }//switch()结束

            aDeviceList.add(aDevice);

         }//for()结束

         return aDeviceList;

      }//createDeviceListObject()结束

    }//class DeviceService结束
DeviceService类中的createDeviceList()方法以“DeviceListaDeviceList=new DeviceList()”实例化度量的设备列表。createDeviceList()然后在数据库的设备记录表中搜索其动作ID匹配调用参数的记录。对于表中的每一个匹配记录,createDeviceList()通过其switch语句实例化一个设备对象,其中传递三个参数CommsService,deviceAddress,和deviceID。CommsService是对通信服务的引用,设备对象可以从该通信服务获得对用于与由设备对象控制的物理设备进行通信的通信对象的引用。deviceAddress是如上所述从设备表中获得的要由特定设备对象控制的物理设备的网络地址。该switch语句为从设备表检索的每个设备ID选择特定具体派生设备类。createDeviceList()采用“aDeviceList.add()”在设备列表中存储对每个设备对象的引用。createDeviceList()以“return aDeviceList”返回对设备列表的引用。
图3的类图包括示例性设备类(214)。图3的示例性设备类(214)包括唯一标识要通过动作的执行管理的物理设备的设备ID字段(472)。图3的示例性设备类(214)包括标识物理设备在数据通信网络上的位置的地址字段(480)。图3的示例性设备类(214)提供通信字段(478),用于引用实现数据通信协议以在设备类的实例与物理设备之间进行通信的通信类的实例。
图3的设备类包括属性字段(481),该字段包含设备的当前属性值。设备的当前属性的例子是设备处于“接通”或“关断”的指示。当前属性的其他例子包括表示设备特定设置的值。图3的设备类还包括用于获得和设置物理设置属性的访问方法(474,476)。虽然图3的示例性设备类仅包括一个属性字段和用于获得和设置该属性的访问方法,但是有用于实现本发明的方法的很多设备类可以支持多个属性。这些类还可以包括属性ID字段和用于获得和设置设备类所支持的每个属性的访问方法。
图3的示例性类图包括通信服务类(219)。通信服务类(219)提供名称为createCommsObject(deviceID,networkAddress)(574)的工厂方法,该工厂方法实例化实现数据通信协议以在设备类实例与物理设备之间进行通信的通信对象。createCommsObject()方法(574)在通信类表中查找其设备ID匹配调用参数的通信类记录中的通信类ID。在很多实施例中,createCommsObject()方法(574)然后实例化如上所述通过switch语句识别的特定具体派生通信类,其中将来自其参数列表的networkAddress传给构造器,从而新通信对象知道新对象要进行数据通信的网络地址。每个具体派生通信类设计成根据特定数据通信协议即蓝牙、802.11b、Lonworks、X-10等等实现数据通信。
图3的类图包括示例性通信基类(215)。在典型实施例中,针对要由特定DML支持的每个数据通信协议,从该基类派生至少一个具体通信类。每个具体通信类实现用于在设备对象与物理设备之间进行通信的特定数据通信协议。每个具体通信类通过覆盖接口方法(482,484)来根据一种协议实现实际数据通信,从而实现特定数据通信协议。
通信类允许设备类(214)独立于与各种物理设备进行通信所需的特定协议工作。例如,用户家庭中的一个灯可能使用LonWorks协议通信,而用户家庭中的另一个灯可能使用X-10协议通信。这两个灯可以使用不同通信类的通信对象,其中一个实现LonWorks,另一个实现X-10,由相同设备类的设备对象控制。这两个设备对象通过调用相同的通信类接口方法send()(482)和receive()(484)来控制灯,它们既不知道也不关心实际上它们的通信对象使用不同协议。
图4是示出图3的示例性类之间的示例性关系的类关系图。在图4的类关系图中,实箭头表示实例化。实箭头从实例化类指向被实例化类。在图4的类关系图中,虚箭头表示引用。该箭头从被引用类指向其对象拥有对被引用类的引用的类。也就是,组合的面向对象关系,类间“具有一个(has-a)”关系,以带虚线的箭头表示。
图4的示例性类关系图包括DML类(202)。DML类(202)的DML对象实例化度量服务类(204)的对象、度量向量服务类(207)的对象、以及度量空间服务类(209)的对象。DML对象还实例化度量范围服务类(208)的对象、动作服务类(217)的对象、以及动态动作列表服务类(211)的对象。DML对象还实例化设备服务类(218)的对象和通信服务类(219)的对象。
当DML从度量传感器接收到度量(200)时,DML使用如下调用:
Metric aMetric=MetricService.createMetricObject(userID,
                            metricID,metricValue)
从而使度量服务(204)实例化度量类(206)的对象。度量服务将对度量对象(206)的引用传给度量向量服务对象(207)。度量对象包含对动作服务类(217)的对象和度量动作列表(622)的引用。
如图4的类关系图所示,度量向量服务(207)实例化度量向量类(606)的对象。在很多实施例中,度量向量服务类接收对度量对象的引用,并且使用诸如createMetricVectorObject()的参数化工厂方法,实例化度量向量对象。如图4的类关系图所示,度量向量类(606)的对象包含对度量类(206)的对象、度量空间服务类(209)的对象、度量空间类(610)的对象、动态动作列表服务类(211)的对象和动态动作列表(212)的引用。
如图4的类关系图所示,度量空间服务(209)实例化度量空间类(610)的对象。在很多示例性实施例中,度量空间服务使用诸如createMetricSpace()的参数化工厂方法来实例化度量空间对象。度量空间服务将对度量空间对象(610)的引用传给度量向量对象。度量空间对象(610)包含对度量范围类(210)的对象的引用。
如图4的类关系图所示,度量范围服务(208))实例化度量范围类(210)的对象。在本发明的很多示例性实施例中,度量范围服务(208)使用诸如createRangeObject()的参数化工厂方法来实例化度量范围(210)。度量范围服务(208)将对度量范围(210)的引用传给度量空间服务(209)。
如图4的类关系图所示,动作服务(217)实例化度量动作列表(622)和动作类(216)的对象。度量动作列表(622)采用对被实例化动作(216)的每一个的引用来实例化。每个动作(216)采用对设备服务(218)的引用来实例化。在根据本发明的方法的典型例子中,动作服务(217)使用诸如createActionList()的参数化工厂方法来实例化度量动作列表(622)和实例化动作(216)。动作服务(217)将对度量动作列表(622)的引用传给度量(206)。
如图4所示,动态动作列表服务(211)实例化动态动作列表(626),并且将对动态动作列表(626)的引用传给度量向量(606)中的调用方法。在根据本发明的方法的典型例子中,动态动作列表服务(211)使用诸如createDynamicActionList()的方法来实例化动态动作列表。在很多实施例中,createDynamicActionList()采用与超出其对应度量范围的用户度量相关联的度量动作列表的动作ID作为参数。动态动作列表(626)拥有对动作类(216)的对象的引用。
在图4的例子中,设备服务(218)实例化设备列表类(222)的设备列表,并且实例化设备类(214)的设备对象。设备列表(222)采用对设备对象(214)的引用来实例化。设备对象(214)采用对通信服务(219)的引用来实例化。在根据本发明的方法的典型例子中,设备服务(218)使用诸如createDeviceList()的参数化工厂方法来实例化设备列表(222)和实例化设备对象(216)。设备服务(218)将对设备列表(222)的引用传给动作(216)。
在图4的例子中,通信服务(219)实例化通信类(215)的通信对象。在根据本发明的方法的典型例子中,通信服务(219)使用诸如createCommsObject()的参数化工厂方法来实例化通信对象(215)。通信服务(219)将对通信对象(215)的引用传给设备对象(214)。
图5是示出图3的一些类之间的示例性关系的类关系图。在图5的例子中,DML类(202)的对象实例化关系度量服务类(684)的对象。关系度量服务类具有对可在度量高速缓存中获得的用户度量(206)的引用。
关系度量服务类(684)根据度量高速缓存中的用户度量实例化关系度量类(664)的对象,或者根据度量高速缓存中的用户度量选择预创建的关系度量。关系度量具有对度量动作列表(622)的引用。度量向量从关系度量服务接收对关系度量(664)的引用。
根据用户度量管理设备
图6是示出用于管理设备的示例性方法的数据流图。图6的方法包括接收(302)用户度量(206)。如上所述,“用户度量”包括描述用户状态指示的数据。“用户状态指示”是用户状态的可量化方面以及测量这一方面的数量。用户状态的可量化方面的例子包括体温、心率、血压、位置、皮肤电反应以及为本领域的技术人员所公知的用户状态的任何其他方面。
在本发明的典型实施例中,用户度量实现为用户度量数据结构或记录(206),例如图6的示例性用户度量(206)。图6的用户度量包括用户ID字段(405),该字段标识其状态指示以该度量表示的用户。图6的用户度量(206)还包括度量ID字段(407),该字段标识该度量所表示的用户状态方面,例如血压、心率、位置或皮肤电反应。用户度量(206)还包括值字段(409),该字段包含该度量所表示的用户状态方面的值。度量值的一个例子是华氏温度100度的体温。
在图6的方法的很多实施例中,接收(302)用户度量包括从度量传感器(406)接收用户度量。在图6的方法的一些例子中,度量传感器(406)读取用户状态指示,根据用户状态指示创建用户度量,并且将用户度量发送到DML。在很多实施例中,度量传感器以预定数据结构将用户度量发送到DML,例如,使用诸如蓝牙、802.11、HTTP、WAP或为本领域的技术人员所公知的任何其他协议将图6的度量(206)发送到DML。
在图6的方法中,接收(302)用户度量包括将用户度量接收到度量高速缓存(305)中。也就是,用户度量由DML接收,然后存储在高速缓存中。在图6的方法的很多实施例中,度量高速缓存(305)是可用于DML以帮助执行根据本发明管理设备的步骤的高速缓存。
图6的方法包括确定(306)用户度量的值是否超出(309)预定度量范围。预定度量范围包括对应于特定用户和给定度量ID的预定值范围。在图6的方法的很多实施例中,预定度量范围设计为用户的典型或正常度量值的范围。预定度量范围的一个例子是表示静止心率为每分钟65-85次心跳的度量值范围。
在图6的方法的很多例子中,用户的预定度量范围实现为诸如图6的度量范围(210)的数据结构或记录。图6的度量范围包括度量ID字段(462),该字段标识用户度量的类型。图6的度量范围包括用户ID字段(464),该字段标识对于其该度量范围标识一个度量值范围的用户。图6的度量范围例如包括表示度量范围最大度量值的Max字段(468)和表示度量范围最小度量值的Min字段(470)。也就是,在典型实施例中,采用一个范围内的最大和最小度量值来定义度量的值范围。
在很多实施例中,确定(306)用户度量(206)的值是否超出(309)预定度量范围包括比较用户度量的度量值与对应于那个度量和同一用户的度量范围的最大和最小值。在图6的方法的很多例子中,确定用户度量超出预定度量范围还包括确定用户度量(206)的度量值(409)大于度量范围(210)的最大值(468)或者小于度量范围(210)中范围的最小值(470)。例如,标识度量为“心率”的度量ID的用户度量在其度量值为每分钟100次心跳的情况下则超出静止心率为每分钟65-85次心跳的示例性度量范围。
如果用户度量值超出度量范围,则图6的方法包括根据用户度量识别(310)动作。动作包括当执行时控制一个或多个设备的一个或多个计算机程序、子例程或成员方法。动作典型地作为面向对象的类来实现,并且作为对象或对象引用来操纵。实际上,在本说明书中,除非上下文特别指明,术语“动作”、“动作对象”和“对动作对象的引用”视作是差不多同义的。在图6的方法的很多实施例中,动作对象调用设备类中的成员方法以影响物理设备的当前属性。在图6的方法的很多实施例中,动作类或动作对象在OSGi软件包中部署到服务网关上的DML。
在图6的方法中,识别(310)动作包括从由用户ID和度量ID组织的度量动作列表(622)中检索动作ID(315)。在图6的方法中,从度量动作列表中检索动作ID包括从列表中检索当对应于特定用户和特定度量ID的度量值超出用户的预定度量范围时所要执行的动作标识(‘动作ID’)。动作列表可以例如实现为Java列表容器,随机存取存储器中的表、存储在硬盘驱动器或CD ROM上的SQL数据库表以及为本领域的技术人员所公知的其他方式。
如上所述,动作本身包括软件,从而可以实现为例如在编译时候导入到DML中的Java包内实施因此在DML运行时候总是可用的具体动作类。因此,执行(314)动作(312)在这些实施例中经常地通过在DML中使用switch()语句来执行。该switch()语句可以根据动作ID操作,并且例如下面伪代码段所示实现:
switch(actionID){
  Case 1:actionNumber1.take_action();break;
  Case 2:actionNumber2.take_action();break;
  Case 3:actionNumber3.take_action();break;
  Case 4:actionNumber4.take_action();break;
  Case 5:actionNumber5.take_action();break;
  //等等
}//switch()结束
该示例性switch语句根据动作ID选择所要执行的特定设备控制对象。在本例中,由switch()管理的设备控制对象是名称为actionNumber1、actionNumber2等等的具体动作类,其中每一个具体动作类均具有名称为‘take_action()’的可执行成员方法,该方法执行由每个动作类实现的实际工作。
执行(314)动作(312)在这些实施例中还经常地通过在DML中使用哈希表来执行。该哈希表可以存储以动作ID为关键字的对动作对象的引用,如下面伪代码例子所示。本例开始于动作服务使用动作ID作为关键字创建动作哈希表,即对与特定度量ID相关联的具体动作类的对象的引用的哈希表。在很多实施例中,是动作服务创建该哈希表,向其填充对与特定度量ID有关的动作对象的引用,并且将对哈希表的引用返回给调用度量对象。
Hashtable ActionHashTable=new Hashtable();
ActionHashTable.put(″1″,new Action1());
ActionHashTable.put(″2″,new Action2());
ActionHashTable.put(″3″,new Action3());
然后,执行特定动作可以根据下面伪代码来执行:
Action anAction=(Action)ActionHashTable.get(″2″);
if(anAction!=null)anAction.take_action();
本说明书中的很多例子描述为采用列表并且经常地采用例如从动作服务以列表引用返回的动作列表实现。列表经常以类似于哈希表的方式工作。执行特定动作例如可以根据下面伪代码来执行:
List ActionList=new List();
ActionList.add(1,new Action1());
ActionList.add(2,new Action2());
ActionList.add(3,new Action3());
然后,执行特定操作可以根据下面伪代码来执行:
Action anAction=(Action)ActionList.get(2);
if(anAction!=null)anAction.take_action();
上述三个例子使用switch语句、哈希表和列表对象来说明根据本发明的多个实施例执行动作。在这些例子中使用switch语句、哈希表和列表对象仅用于说明的目的,而不用于限制的目的。实际上,存在根据本发明实施例的多种动作执行方式,这对于本领域的技术人员而言是公知的,并且所有这些方式也都处于本发明的范围内。
图7阐述了示出执行动作的示例性方法的数据流图。在图7的方法中,执行动作包括识别(380)表示由动作管理的物理设备(316)的设备类(214)。典型的设备类包括用于管理设备的成员方法。典型的用于管理设备的成员方法包括用于获得和设置物理设备中的设备属性值的成员方法。例如,在支持多个光强度设置的灯的情况下,设备类中的成员方法get()可以从灯获得灯强度值,并且设备类中的成员方法set()可以设置灯的光强度。
在图7的方法中,执行动作包括识别(384)物理设备(316)的通信类(215)。为了使设备类的成员方法与物理设备通信,通信类实现用于与物理设备进行通信的协议。典型的通信类包括根据由通信类实现的协议构造、发送和接收数据通信消息的成员方法。通信类中的成员方法向物理设备发送数据通信消息和从其接收数据通信消息。通信类最好将用来与物理设备通信的协议与要在设备上执行的动作分离,从而包括get()和set()方法的设备类接口例如可以有效地通过使用任何数据通信协议来与物理设备通信而无需对设备类进行重新编程并且无需为物理设备和协议的每一种组合提供一个设备类。
作为进一步的说明,考虑下面简单用例。用户的度量传感器读取每分钟100次心跳的用户心率,并且创建用户度量,其中该度量具有标识该用户的用户ID,标识该度量为“心率”的度量ID,以及100的度量值。度量传感器通过服务网关将用户度量发送到DML。DML接收用户度量,并且将用户度量与范围为65-85的静止心率的用户度量范围进行比较。DML确定用户度量超出预定度量范围。DML使用用户ID和度量ID从一个列表中检索响应用户的心率度量值超出用户的心率度量范围的确定结果所要执行的预定动作的动作ID。DML查找设备控制动作ID,该设备控制动作ID标识具有例如为‘someAction’的类名而且具有为DML所知的接口成员方法例如上面在switch()语句中所述的take_action()方法的动作对象。
在本例中,DML通过调用someAction.take_action()来执行所识别的动作。take_action()方法在本例中编程为调用对表示其属性要被该动作影响的物理设备的设备对象的引用列表中的设备服务。设备服务采用switch()语句编程以根据动作ID创建对设备对象的引用的列表,并且将该设备列表返回给调用动作对象,或者返回给动作对象中的调用take_action()方法。
在创建设备列表中,设备服务编程为实例化具有进入到列表中的引用的每个设备,其中传递对通信服务的引用作为构造器参数。所实例化的每个设备具有一个构造器,其编程为调用通信服务中的参数化工厂方法,其中传递调用设备对象的标识作为参数。然后,通信服务实例化并向设备返回对让那个设备对象与其对应物理设备进行通信所需的通信协议所对应的通信对象的引用。
在本发明的多个实施例中,用于执行动作的主要控制逻辑典型地驻留在动作类以及从其实例化的对象的主要接口方法中。在本例中,take_action()方法编程为执行控制方法调用序列以执行该动作类被开发首要完成的对物理设备的改变。take_action()方法采用对设备列表内设备对象的访问方法(set()和get()方法)的一系列调用执行该工作。
图8是示出确定(306)用户度量(206)超出预定度量范围(210)的示例性方法的数据流图。在用于管理设备的方法的很多实施例中,用户度量(206)在数据上采用数据结构或记录表示,例如图8的用户度量记录。用户度量(206)包括用户ID字段(405)、度量ID字段(407)以及值字段(409)。
在图8的例子中,度量的预定度量范围在数据上采用度量范围表示,例如图8的度量范围(210)。示例性度量范围(210)设置对应于特定用户和特定度量的最大范围值(468)和最小范围值(470)。示例性范围的特定用户和特定度量分别在用户ID字段(464)和度量ID字段(462)中标识。
在图8的方法中,确定(306)用户度量(206)的值超出(309)预定度量范围(210)包括测量(502)用户度量(206)超出(309)预定度量范围(210)的程度(504)。在本发明的很多实施例中,测量(502)用户度量(206)超出(309)度量范围(210)的程度(504)包括识别用户度量值大于度量范围最大度量值的量值或者用户度量值的值小于预定度量范围的最小值的量值。就测量度量超出范围的程度包括识别测量是大于最大范围值或小于最小范围值而言,测量经常地最好包括量值和方向指示例如正负号(+或-)、例如‘上’或‘下’的枚举指示或者诸如对应于高的真和对应于低的假的布尔指示。
在图8的方法中,根据用户度量识别(310)动作包括根据用户度量(206)的值超出(309)度量范围的程度(504)并且还经常地根据度量超出范围的方向,识别(512)动作。在图8的方法的很多实施例中,根据用户度量超出预定度量范围的程度(504)识别(512)动作包括从由度量ID、用户ID、程度和方向组织的度量动作列表(622)检索动作ID。
在根据本发明的很多DML中,预安装了DML所支持的所有设备的设备类。新获取的物理设备标识它们位于网络上,并且DML关联设备ID与已经安装在DML上的设备类。在该示例实施例中,DML通过关联设备ID与预安装的设备类来识别该设备。
根据包括关系度量的用户度量向量和基于位置的设备控制来管理设
图9是示出根据本发明的用于管理设备的方法的数据流图。图9的方法包括接收(660)多个用户度量(206)。在图9的方法的很多实施例中,接收(660)多个不同用户度量(206)包括从一个或多个度量传感器(406)接收不同用户度量。术语‘不同’用户度量是指不同类型的用户度量。也就是,典型地还具有不同度量值的不同类型的用户度量。
在图9的方法的一些例子中,度量传感器(406)读取用户状态指示,根据用户状态指示创建用户度量,并且将用户度量发送到DML。在很多例子中,度量传感器以预定数据结构将用户度量发送到DML,例如使用诸如蓝牙、802.11、HTTP、WAP或为本领域的技术人员所公知的任何其他协议将图3的度量(206)发送到DML。
图9的方法包括根据多个用户度量(206)创建(662)关系度量(664)。在图9的方法的很多例子中,关系度量(664)是根据多个用户度量而获得或者预期将来将要接收的用户度量而创建的表示特定用户状态指示的数据结构。也就是,在图9的方法的一些例子中,关系度量是根据度量高速缓存中的多个用户度量而创建的度量。例如,“移动”关系度量可以从至少两个其他的位置度量创建。在图9的方法的其他例子中,关系度量是预期在度量高速缓存中将要接收的的用户度量来预先创建的。在很多这些例子中,当度量高速缓存中的用户度量匹配一组构成预定度量模式的预定度量时,为该用户选择预创建的关系度量。关系度量的例子包括表示用户移动、没有用户移动、转动、行驶速度、生物量度值升高、生物量度值降低、生物量度值的变化速率或者为本领域的技术人员所公知的任何其他关系的度量。
关系度量经常提供在单个所接收的用户度量中不可获得的用户状态信息。具有度量值的单个所接收用户度量经常仅表示那个度量的当前值。换言之,单个用户度量经常提供用户状态单个方面的快照。另一方面,关系度量经常提供有关用户状态的进一步信息,例如响应所执行的动作用户度量如何变化,或者为本领域的技术人员所公知的其他信息。
在图9的方法的很多例子中,根据多个用户度量(206)创建关系度量(664)包括调用关系度量服务中的成员方法,例如createRelationalMetric()(图3上的686)。在图9的方法的一些例子中,createRelationalMetric()(686)确定度量高速缓存中的用户度量之间的关系,并且实例化适当的关系度量。在其他实施例中,createRelationalMetric()比较度量高速缓存中的用户度量与一起构成预定度量模式的一组预定度量。如果度量高速缓存中的用户度量匹配构成预定度量模式的预定度量,则createRelationalMetric()从关系度量数据库中检索适当的预创建关系度量。
图9的方法包括创建包括至少一个用户度量(206)和至少一个关系度量(664)的用户度量向量(606)。由至少一个用户度量(206)和至少一个关系度量(664)组成的用户度量向量表示具有用户状态的多个可量化方面和测量这些方面的多个数量的复杂用户状态指示。也就是,用户度量向量典型地是各自表示用户状态的单个可量化方面和测量这一方面的数量的用户度量的集合。在图9的方法中,用户度量向量还包括至少一个标识至少两个所接收用户度量之间的关系的关系度量。
在本发明的典型实施例中,用户度量向量实现为用户度量向量数据结构或记录,例如上面参照图3所述的示例性用户度量向量(606)。用户度量向量(606)包括标识用户的用户ID(图3上的405)和唯一标识用户度量向量的度量向量ID(图3上的408)。用户度量向量(606)还包括用于度量列表(图3上的652)的数据存储,其中该列表包含对多个用户度量的引用。用户度量向量(606)还包括用于关系度量列表(图3上的653)的数据存储,其中该列表包含对多个关系度量的引用。
图9的方法包括创建(605)包括多个度量范围(210)的用户度量空间(610)。用户度量空间(610)由用户的多个不同度量范围组成。也就是,度量空间由多个不同度量ID的多个不同度量范围定义。在图9的方法的很多例子中,用户度量空间的度量范围表示对应于给定用户和给定用户度量的正常或适当度量值范围。在图9的方法的很多例子中,用户度量空间还包括用户度量向量的关系度量的度量范围。在本发明的很多示例性实施例中,度量空间实现为诸如图3的示例性用户度量空间(610)的度量空间数据结构,其包括用户ID和用于对用户不同度量范围的引用的列表的数据存储(655)。
图9的方法包括确定(608)用户度量向量(606)是否超出(309)用户度量空间(610)。在各种替代示例实施例中,确定(608)用户度量向量(606)是否超出(309)用户度量空间(610)采用不同方法来执行。确定用户度量向量(606)是否超出(309)用户度量空间(610)的方法在复杂性上的范围从相对直接地比较度量向量的用户度量和关系度量与度量空间的其对应度量范围到较复杂的算法。下面参照图13更详细地描述确定(608)用户度量向量(606)是否超出(309)用户度量空间(610)的示例性方法。
如果用户度量向量(606)超出(309)用户度量空间(610),则图9的方法包括识别(630)动作(315)。动作典型地包括当执行时控制一个或多个设备的一个或多个计算机程序、子例程或成员方法。动作典型地作为面向对象的类来实现,并且作为对象或对象引用来操纵。实际上,在本说明书中,除非上下文特别指明,术语“动作”、“动作对象”和“对动作对象的引用”视作是差不多同义的。在图9的方法的很多例子中,动作对象调用设备类中的成员方法以影响物理设备的当前属性。在图9的方法的很多例子中,动作类或动作对象在OSGi软件包中部署到服务网关上的DML。
在图9的方法的很多例子中,识别(630)动作(315)包括根据用户度量向量(606)创建(624)动态动作列表(626)。在图9的方法的很多例子中,动态动作列表是根据与用户度量向量中超出用户度量空间的其对应度量范围的特定度量相关联的度量动作列表而创建的动作ID列表。也就是,度量向量中超出其对应度量范围的每个度量具有关联度量动作列表。关联度量动作列表包括当其关联度量超出其对应度量范围时执行的动作ID。动态动作列表是包括根据与用户度量向量中超出用户度量空间的其对应度量范围的特定度量相关联的那些度量动作列表而识别的动作ID的动作列表。动态动作列表最好提供根据用户的当前状态而剪裁的动作ID列表。
在本发明的很多示例性实施例中,创建动态动作列表包括调用动态动作服务对象中的成员方法。在图9的方法的很多例子中,创建动态动作列表包括采用从与用户度量向量中超出用户度量空间的其对应度量范围的特定用户度量相关联的动作列表中检索的动作ID作为诸如createDynamicActionList()的成员方法的参数。在图9的方法的很多例子中,createDynamicActionList()向用户度量向量中的其调用者返回包括根据包含在度量动作列表中的动作ID而识别的动作ID的动态动作列表。在图9的方法的各种替代例子中,动态动作列表可以例如实现为哈希表、Java列表容器,随机存取存储器中的表、存储在硬盘驱动器或CD ROM上的SQL数据库表以及为本领域的技术人员所公知的其他方式。
图9的方法包括执行动作(614)。因此,执行动作在这些实施例中经常地通过在DML中使用switch()语句来执行。该switch()语句可以根据动作ID操作,并且例如下面伪代码段所示实现:
switch(actionID){
  Case 1:actionNumber1.take_action();break;
  Case 2:actionNumber2.take_action();break;
  Case 3:actionNumber3.take_action();break;
  Case 4:actionNumber4.take_action();break;
  Case 5:actionNumber5.take_action();break;
  //等等
}//switch()结束
该示例性switch语句根据动作ID选择所要执行的特定设备控制对象。在本例中由switch()管理的设备控制对象是名称为actionNumber1、actionNumber2等等的具体动作类,其中每一个具体动作类均具有名称为‘take_action()’的可执行成员方法,该方法执行由每个动作类实现的实际工作。
在图9的方法的很多例子中,执行动作通过在DML中使用哈希表来执行。该哈希表存储以动作ID为关键字的对动作对象的引用,如下面伪代码例子所示。本例开始于动态动作列表服务使用动作ID作为关键字创建动作哈希表,即对与特定度量ID相关联的具体动作类的对象的引用的哈希表。在很多实施例中,是动态动作列表服务创建该哈希表,向其填充与用户度量向量中超出用户度量空间的其对应度量范围的特定度量ID有关的对动作对象的引用,并且将对哈希表的引用返回给调用向量对象。
Hashtable DynamicActionHashTable=new Hashtable();
DynamicActionHashTable.put(″1″,new Action1());
DynamicActionHashTable.put(″2″,new Action2());
DynamicActionHashTable.put(″3″,new Action3());
然后,执行特定操作可以根据下面伪代码来执行:
Action anAction=DynamicActionHashTable.get(″2″);
if(anAction!=null)anAction.take_action();
图9的方法的很多例子还通过使用列表来实现。列表经常以类似于哈希表的方式工作。构建该列表可以根据下面伪代码来执行:
List DynamicActionList=new List();
DynamicActionList.add(1,new Action1());
DynamicActionList.add(2,new Action2());
DynamicActionList.add(3,new Action3());
然后,执行特定操作可以根据下面伪代码来执行:
Action anAction=DynamicActionList.get(2);
if(anAction!=null)anAction.take_action();
上述三个例子使用switch语句、哈希表和列表对象来说明根据本发明的多个实施例执行动作。在这些例子中使用switch语句、哈希表和列表对象仅用于说明的目的,而不用于限制的目的。实际上,存在根据本发明实施例的多种动作执行方式,这对于本领域的技术人员而言是公知的,并且所有这些方式也都处于本发明的范围内。
在图9的方法的一些例子中,执行动作包括识别设备的设备类。典型的设备类包括用于管理设备的成员方法。典型的用于管理设备的成员方法包括用于获得和设置物理设备中的设备属性值的成员方法。例如,在支持多个光强度设置的灯的情况下,设备类中的成员方法get()可以从灯获得灯强度值,并且设备类中的成员方法set()可以设置灯的光强度。
在图9的方法的很多例子中,执行动作包括识别设备的通信类。为了使设备类的成员方法与物理设备通信,通信类实现用于与物理设备进行通信的协议。典型的通信类包括根据由通信类实现的协议构造、发送和接收数据通信消息的成员方法。通信类中的成员方法向物理设备发送数据通信消息和从其接收数据通信消息。通信类最好将用来与物理设备通信的协议与影响设备的动作分离,从而包括get()和set()方法的设备类接口例如可以有效地通过使用任何数据通信协议来与物理设备通信而无需对设备类进行重新编程并且无需为物理设备和协议的每一种组合提供一个设备类。
图10是根据多个用户度量(206)创建(662)关系度量(664)的示例性方法的数据流图。如上所述,在图10的方法的一些例子中,关系度量是根据度量高速缓存中的所接收用户度量而创建的度量。在图10的方法中,根据多个用户度量(206)创建(662)关系度量(664)包括对用户度量进行过滤(665)。在图10的方法的很多例子中,对用户度量进行过滤包括识别度量高速缓存中的所接收用户度量的度量ID,并且采用度量ID对用户度量进行分类。
图10仅示出两个所得到的过滤用户度量(206A、206B)。然而,在图10的方法的很多例子中,对用户度量进行过滤产生多个存储在高速缓存中且用来创建关系度量的过滤用户度量。在图10的方法的不同例子中,在度量高速缓存中维护多少过滤用户度量将根据诸如过滤用户度量的度量ID、根据过滤用户度量而创建的关系度量的类型的因素或者为本领域的技术人员所公知的任何其他因素而不同。例如,对应于“用户移动”的关系度量可以仅根据两个过滤用户度量来创建,而对应于“用户在圆圈中移动”的关系度量可能要求在度量高速缓存中有两个以上对应于位置的过滤用户度量。
在图10的方法中,根据多个用户度量(206A、206B)创建(662)关系度量(664)包括确定(666)第一过滤用户度量(206A)和第二过滤用户度量(206B)之间的关系(668)。在图10的方法中,确定(666)第一过滤用户度量(206A)和第二过滤用户度量(206B)之间的关系(668)包括比较(670)第一过滤用户度量(206A)与第二过滤用户度量(206B)。在图11的方法的很多例子中,比较第一过滤用户度量与第二过滤用户度量以确定关系通过算法来执行。也就是,例如,在计算机程序编码方面,确定用户度量之间的关系通过使用switch语句或if-then-else语句序列来执行,从而实现类似于例如如下所述的逻辑:
如果第一用户度量表示位置1
  如果第二用户度量表示位置2
    如果位置1不等于位置2
      则创建表示“正在运动”的关系的关系度量对象或者
如果第一用户度量在时间t1表示位置L1
  如果第二用户度量在时间t2表示位置L2
    如果位置L1不等于位置L2
      则
        计算速度S和方向D
      并且
        创建表示“正在运动”的关系的关系度量对象,其中
        速度字段的值设为S,并且方向字段的值设为D
在图11的方法的很多例子中,根据用户度量确定关系不限于仅比较两个用户度量。作为比较两个以上用户度量的例子,考虑下面用于确定‘向右转’关系的算法逻辑例子。
如果第一用户度量在时间t1表示位置L1
  如果第二用户度量在时间t2表示位置L2
    如果第三用户度量在时间t3表示位置L3
      如果L1<>L2<>L3
      则
        根据L1和L2计算方向D1
        根据L2和L3计算方向D2
        如果D1-D2为近似90度
        则
          创建表示‘向右转’的关系的关系度量。
在图10的方法中,根据多个用户度量(206A、206B)创建(662)关系度量(664)包括确定(672)第一过滤用户度量(206A)与第二过滤用户度量(206B)之间的关系(668)的量值(674)。在图10的方法的很多例子中,包括所确定的幅值作为所创建关系度量的值。在图10的方法的一些例子中,确定(672)第一过滤用户度量(206A)与第二过滤用户度量(206B)之间的关系(668)的量值(674)包括从第一过滤用户度量(206A)的值中减去(676)第二过滤用户度量(206B)的值。在图10的方法的其他替代例子中,确定(672)第一过滤用户度量(206A)与第二过滤用户度量(206B)之间的关系(668)的量值(674)包括相加第一过滤用户度量和第二过滤用户度量,或者对第一过滤用户度量和第二过滤用户度量施加为本领域的技术人员所公知的任何其他函数或算法。
图11是示出根据多个用户度量(206)创建(662)关系度量(664)的示例性方法的数据流图。在图11的方法中,根据多个用户度量(206)创建(662)关系度量(664)包括确定(678)多个用户度量(206)是否匹配(681)预定度量模式(663)。在图11的方法的很多例子中,预定度量模式包括预定为构成表示预定关系的特定度量模式的一组预创建用户度量。
在图11的方法的很多例子中,确定(678)多个用户度量(206)是否匹配(681)预定度量模式(663)包括比较(679)度量高速缓存中的多个用户度量与构成预定度量模式(663)的一组预定度量。在图11的方法的很多例子中,比较度量高速缓存中的用户度量与关系度量数据库中的预定度量模式包括比较用户度量的值与包括在预定度量模式内的各个预定度量的值,并且比较度量高速缓存中用户度量的度量ID与包括在预定度量模式内的各个预定模式的度量ID。在图11的方法的很多例子中,预定度量模式可以包括一起标识度量模式的不同类型的预定度量。
度量高速缓存中的多个用户度量不必与构成预定度量模式的一组预定度量完全相同才被认为匹配。度量高速缓存中的用户度量必须与预定度量模式的预定度量相同才被认为匹配的程度取决于诸如用于比较的方法的容限、包含在用户度量和预定度量中的信息的类型、用于生成用户度量和预定度量中的准确度和精度的各种因素,以及为本领域的技术人员所公知的其他因素。
在图11的方法中,预定度量模式存储在度量模式表(680)中。在图11的方法的很多例子中,度量模式表包括多组构成预定度量模式的预定度量,其中例如以标识关系度量的度量ID为索引。在图11的方法的很多例子中,将度量高速缓存中的用户度量与多组构成预定度量模式的预定度量进行比较。如果用户度量匹配一组构成预定度量模式的预定度量,则识别关系度量的度量ID。
在图11的方法中,根据多个用户度量(206)创建(662)关系度量(664)包括检索(683)关系度量(664)。在图11的方法的很多例子中,根据通过比较度量高速缓存中的用户度量与存储在度量模式表的预定度量模式而识别的度量ID从关系度量表(665)中检索关系度量。
图12是示出创建(604)用户度量向量(606)的示例性方法和创建(605)用户度量空间(610)的示例性方法的数据流图。在图12的方法中,创建(604)包括至少一个用户度量(206)和至少一个关系度量(664)的用户度量向量(606)包括关联(603)至少一个用户度量与用户度量向量,并且关联(682)至少一个关系度量(664)与用户度量向量(606)。本文内的‘关联’根据上下文一般是指通过引用关联。也就是,提及关联一个类的对象与另一个对象是指第二对象拥有对第一对象的引用。对象可以是相互关联的,各自拥有对对方的引用。对象间的其他关系即聚合、组合等等通常是关联类型,并且使用它们中的任一种以及为本领域的技术人员所公知的其他类型也处于本发明的范围内。在图12的示例性方法中,关联(603)多个不同用户度量(206)与用户度量向量(606)通过提供对用户度量向量(606)中的多个不同度量对象的引用来执行。
在图12的方法中,创建(604)包括多个不同用户度量(206)的用户度量向量(606)包括关联(620)至少一个度量动作列表(622)与每个用户度量(206)。在图12的方法的很多例子中,多个度量动作列表与用户向量的每个用户度量关联。与特定度量关联的度量动作列表中所包括的动作ID标识设计成根据由该度量表示的用户状态特定方面管理设备的动作。也就是,对度量动作列表进行剪裁以影响由用户度量或关系度量表示的用户状态。例如,与体温度量关联的度量列表可以包括管理诸如空调、风扇、取暖器、自动遮光窗帘等的动作。
在图12的方法的很多例子中,创建用户度量向量包括关联多个度量动作列表与单个用户度量。图12的方法的一些这样的例子包括关联一个度量动作列表与用户度量,其中该列表包括当用户度量值高于其对应度量范围时所要执行的动作ID,并且关联另一个度量动作列表与用户度量,其中该列表包括当用户度量值低于其对应度量范围时所要执行的动作ID。
图12的方法的一些例子还包括关联多个度量动作列表与用户度量,其中这些度量动作列表包括根据用户度量超出其对应度量范围的程度和方向而执行的动作ID。
在图12的方法中,创建(604)包括多个不同用户度量(206)的用户度量向量(606)包括关联(683)至少一个度量动作列表(622)与每个关系度量(664)。在图12的方法的很多例子中,多个度量动作列表与用户向量的每个关系度量关联。与特定关系度量关联的度量动作列表中所包括的动作ID标识设计成根据由那个关系度量表示的用户状态特定方面管理设备的动作。也就是,对度量动作列表进行剪裁以影响由关系度量表示的用户状态。例如,与体温度量关联的度量列表可以包括管理诸如空调、风扇、取暖器、自动遮光窗帘等的动作。
在图12的方法的很多例子中,创建用户度量向量包括关联多个度量动作列表与单个关系度量。图12的方法的一些这样的例子包括关联一个度量动作列表与关系度量,其中该列表包括当关系度量的值高于其对应度量范围时所要执行的动作ID,并且关联另一个度量动作列表与关系度量,其中该列表包括当关系度量值低于其对应度量范围时所要执行的动作ID。图12的方法的一些例子还包括关联多个度量动作列表与关系度量,其中这些度量动作列表包括根据关系度量超出其对应度量范围的程度和方向而执行的动作ID。
图12的方法包括创建(605)包括多个度量范围的用户度量空间(610)。在图12的方法的很多例子中,用户度量空间(610)由在类型上对应于包含在用户度量向量中的用户度量和关系度量的多个不同度量范围组成。在图12的方法的很多例子中,用户度量空间的度量范围表示用户的正常或适当度量范围。在图12的方法中,创建(602)用户度量空间(610)包括识别(601)多个不同度量(206)的多个度量范围(210),并且关联(607)多个不同度量(206)的多个不同度量范围(210)与用户度量空间(610)。
在图12的方法的很多例子中,识别(601)多个度量范围(210)并且关联(607)多个度量范围(210)与用户度量空间(610)由DML所实例化的度量空间服务执行。度量空间服务从用户度量向量接收用户度量向量ID,并且对由度量向量ID标识的度量空间列表搜索度量空间并且向用户度量向量返回标识要与该用户度量向量进行比较的度量空间的度量空间ID。如果不存在对应于度量向量ID的度量空间,则度量空间服务实例化一个,并且在度量空间表中存储度量空间ID。
图13是示出确定(608)用户度量向量(606)是否超出(309)用户度量空间(610)的两个示例性方法的数据流图。确定(608)用户度量向量(606)是否超出(309)用户度量空间(610)的第一所示方法包括比较(806)用户度量向量(606)的用户度量(206)和关系度量(664)的度量值与度量空间(610)的度量范围(210)。在本发明的一些例子中,比较用户度量的度量值或者关系度量的值与其对应度量范围包括测量该值超出预定度量范围的程度并且识别是否该值高于预定度量范围或低于预定度量范围。
在本发明的很多示例性实施例中,确定用户度量向量是否超出度量空间是度量值与度量范围之间的多个单独比较的函数。在本发明的不同替代实施例中,使用不同标准来识别必须超出其对应度量范围的度量值的数目,或者任何度量值超出其对应度量范围的程度,以确定用户度量向量超出度量空间。在使用严格标准来确定用户度量向量是否超出用户度量空间的一些实施例中,只要有一个度量值超出其对应度量范围,就确定用户度量向量超出度量空间。在其他实施例中,使用较不严格的标准来确定用户度量向量是否超出用户度量空间,如果用户度量向量的所有度量值都超出其对应度量范围一定程度,则确定用户度量向量超出用户度量空间。在不同实施例中,为确定用户度量向量超出度量空间而必须超出其对应度量范围的度量值的数目,或者度量值必须超出其对应度量范围的程度将不同,所有这些确定用户度量向量是否超出度量空间的方法都处于本发明的范围内。
图13所示的确定(608)用户度量向量(606)是否超出用户度量空间(610)的第二所示方法包括计算(810)度量向量值(812)和计算(814)度量空间值(816),并且比较(818)度量向量值(812)与度量空间值(816)。计算度量向量值的一种方法是通过使用预定公式来识别作为用户度量向量的用户度量和关系度量的度量值的函数的单个值。在本发明的一个示例性实施例中,计算度量向量值包括平均用户度量向量的度量值。在另一个示例实施例中,计算度量向量值包括确定特定类型的度量或关系度量的优先级并且使用基于度量优先级的加权平均值来计算度量向量值。
在一些示例性实施例中,计算(814)度量空间值(818)包括使用预定公式来确定作为用户度量空间的每个度量范围的最小和最大值的函数的度量空间值。在一个示例实施例中,计算度量空间值包括求得每个度量范围的最小和最大值的中点,然后平均这些中点。
所示方法包括比较(818)度量空间值(816)与度量向量值(812)。在本发明的不同实施例中,如何比较度量向量值与度量空间值以确定度量向量是否超出度量空间将不同。在一个示例实施例中,从度量空间值中减去度量向量值。如果相减结果在预定范围内,则确定用户度量向量处于度量空间之内。在相同例子中,如果相减结果不在预定范围内,则不确定度量向量值处于度量空间之内。
图13的所示方法是为了说明的目的而不是为了限制的目的提供的。存在可以比较、组合、操纵度量范围和度量值或者使用它们来确定用户度量向量超出度量空间的很多其他方法。所有这些比较、组合、操纵度量值和度量范围或者使用它们来确定用户度量向量超出度量空间的方法都包括在本发明的范围内。
图14是示出识别(630)动作(315)的示例性方法的数据流图。在图14的方法中,识别动作包括根据用户度量向量(606)创建(624)动态动作列表(626)。典型的动态动作列表包括根据与用户度量向量中超出用户度量空间的其对应度量范围的特定度量和超出其对应一个或多个度量范围的特定关系度量相关联的度量动作列表内所包括的动作ID而动态识别的动作ID。创建该动态动作列表最好提供为响应用户的当前状态管理设备而剪裁的一组动作ID。
在图14的方法中,根据用户度量向量(606)创建(624)动态动作列表(626)包括识别(752)其值超出用户度量空间的度量范围的用户度量向量(606)的每个用户度量(206)和每个关系度量的度量动作列表(622)。在图14的方法的很多例子中,识别(752)超出其对应度量范围的每个用户度量(206)和关系度量(664)以及超出其对应度量范围的每个关系度量的度量动作列表(622)包括当确定用户度量向量超出用户度量空间时从先前识别为超出其对应度量范围的度量对象检索对度量动作列表的引用,并且从先前识别为超出其度量范围的关系度量中检索对度量动作列表的引用。在很多例子中,当比较度量对象与其度量范围以确定用户度量向量是否超出度量空间时,识别超出其度量范围的度量对象。
在图14的方法的很多例子中,一个度量具有多个关联度量动作列表。每个关联度量动作列表包括根据度量值超出度量范围的程度和方向而执行的一组动作ID。因此,在图14的方法的一些例子中,识别(752)其值超出用户度量空间的度量范围的用户度量向量(606)的每个用户度量(206)的度量动作列表(622)包括根据用户度量向量的每个用户度量超出用户度量空间的度量范围的程度识别度量列表。在图14的方法的另一个例子中,识别(752)其值超出用户度量空间的度量范围的用户度量向量(606)的每个用户度量(206)的度量动作列表(622)包括根据用户度量向量的每个用户度量的值超出用户度量空间的度量范围的方向识别度量列表。
在图14的方法中,根据用户度量向量(606)创建(624)动态动作列表(626)包括从每个度量动作列表(622)检索(754)至少一个动作ID(315)。一些度量动作列表包括多个动作ID,因此图14的方法的很多例子包括从与其值超出其对应度量范围的每个度量相关联的度量动作列表检索多个动作ID。
在图14的方法中,根据用户度量向量(606)创建(624)动态动作列表(626)包括根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中。在图14的方法的很多例子中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括识别从度量动作列表本身直接检索的动作ID以包括在动态动作列表中。也就是,在图14的方法的一些例子中,从度量动作列表检索的相同动作ID包括在动态动作列表中。
在图14的方法中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括比较(758)度量动作列表(622)的动作ID(315),并且省略重复动作。在图14的方法的一些例子中,省略重复动作包括确定相同动作ID包括在多个度量动作列表中。在这些例子中,创建动态动作列表包括识别具有相同动作ID的度量动作列表,并且在动态动作列表中仅包括该动作ID一次。
在图14的方法中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括根据度量动作列表的至少一个动作ID从动态动作表(762)检索(760)动作ID(315)。在图14的方法的很多例子中,动态动作表(762)是包括由其他动作ID索引的动作ID的数据结构。也就是,动态动作表是设计成根据从度量动作列表检索的动作ID索引预定动作ID以包括在动态动作列表中的数据结构。
因此,在图14的方法的很多例子中,该动态动作表设计成识别从度量动作列表检索的冲突动作,识别从度量动作列表检索的取代(superseding)动作,以及识别不包括在度量动作列表中的另外动作。在图14的方法的一些例子中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括省略冲突动作。在图14的方法的很多例子中,使用动态动作表来识别预定为发生冲突的动作ID。例如,包括在一个度量动作列表中的标识接通吊扇的设备控制动作的动作ID与标识关断同一吊扇的设备控制动作的动作ID发生冲突。从动态动作列表中省略这些冲突动作ID。
在图14的方法的一些例子中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括省略被取代动作。被取代动作是当执行时在与另一个取代操作相同的方向上管理同一设备但是以比该另一个取代操作更小的程度管理设备的动作。也就是,当另一个动作以较大程度管理同一设备使得取代动作的执行湮没了被取代动作的执行时,动作被取代。例如,导致将吊扇的当前属性值从“5”变至“4”的动作ID的执行被导致将同一吊扇的当前属性值从“5”变至“2”的动作ID的执行所取代。在图14的方法的很多例子中,使用动态动作表来识别预定为取代其他动作ID的动作ID。图14的方法的很多例子包括省略来自动态动作列表的被取代动作ID,并且包括取代动作ID。
在图14的方法中,根据从度量动作列表(622)检索的动作ID(315)识别(756)至少一个动作ID(315)以包括在动态动作列表(626)中包括识别不包括在被识别度量动作列表(622)的任一个中的动作ID以包括在动态动作列表中。在图14的方法的很多例子中,通过在动态动作表(762)中查询而识别的动作ID不包括在被识别度量动作的任一个中。在这些例子的其中一些中,动态动作表填充了预定为当执行时与其他动作ID影响相同用户状态的动作ID。对该动态动作表进行索引,以识别当从度量动作列表检索一个或多个其他动作ID时所要执行的动作ID。这样,动态动作表有利地提供了一种用于识别和执行更多动作以影响用户当前状态的手段。
为了进一步说明识别不包括在与超出其对应范围的用户度量相关联的任何度量动作列表中的动作ID,提供下面例子。用户度量向量的两个用户度量高于用户度量空间的其对应度量范围。第一度量表示体温,并且在其关联度量动作列表中具有当执行时导致接通吊扇的第一动作ID。第二度量表示心率,并且在其关联度量动作列表中具有当执行时导致接通空调的第二动作ID。根据第一动作ID和第二动作ID在动态动作表中查询检索出不包括在任一度量的任一度量动作列表中的第三动作ID。执行第三动作ID导致接通吊扇、接通空调,并且拉自动窗帘。拉自动窗帘的增加动作预定为与接通空调和吊扇一样影响相同用户状态。根据第一和第二动作ID在动态动作表上查询识别第三动作ID以包括在动态动作列表中。
图15是识别(630)动作的示例性方法的数据流图。在图15的方法中,识别动作包括确定(970)用户位置(972)。在图15的方法的很多例子中,确定用户位置包括从用户度量向量检索对位置的用户度量(206)的引用,并且检索位置的用户度量的值。在图15的方法的其他例子中,确定用户位置包括例如通过根据其他度量推断用户位置或者通过识别由于用户直接管理设备而导致的设备属性变化或者为本领域的技术人员所公知的任何其他用户位置推断方法来推断用户位置。
在图15的方法中,识别动作包括确定(971)用户移动(974)。在图15的方法的一些例子中,确定用户移动包括从用户度量向量检索表示用户移动的关系度量(664)并且检索该关系度量的值。在图15的方法的一些例子中,确定用户移动包括从用户度量向量检索表示用户移动各方面的多个关系度量(664)并且检索该多个关系度量的值。
在图15的方法中,识别动作(630)包括根据用户位置(972)和用户移动(974)选择(975)动作ID(315)。在图15的方法中,根据用户位置和用户移动选择(975)动作ID包括根据用户位置和用户移动从动作表检索动作ID。
在图15的方法的很多例子中,动作表(975)包括以位置和特定用户移动为索引的动作ID。在图15的方法的典型例子中,动作表的动作ID标识设计成管理其有效范围覆盖用户当前位置的特定设备并且设计成以与用户的当前移动一致的方式管理设备的动作。例如,用户可能处于其中有一个无线电设备的起居室内,该无线电设备的有效范围覆盖该起居室。而且,动作可以设计成当用户接近无线电设备的位置时缓慢降低无线电设备的音量。根据用户位置和用户移动从动作表选择的特定动作ID可以有利地提供基于位置的设备控制。
考虑下面例子。用户的度量向量指示用户的心率超过其对应度量范围。DML识别并执行标识接通用户的音乐播放器并且将该播放器设成播放指定为安抚该用户的音乐的动作的动作ID。DML还确定用户处于起居室内,并且DML确定用户正在向音乐播放器移动。识别并执行设计为以适于用户的速度和方向的速率降低音量的另一个动作ID。降低音量的效果是音量对于用户而言似乎未发生变化一样。
图15的方法的一些例子包括通过根据用户位置(972)和用户移动(974)选择(975)动作ID(315)并且通过创建动作列表来识别动作,从而识别动作(630)。也就是,可以结合实现多种动作识别方法,并且在很多情况下,识别并执行很多动作。在其他例子中,识别动作通过根据用户位置(972)和用户移动(974)选择(975)动作ID(315),或者通过创建动态动作列表来识别动作,或者通过使用为本领域的技术人员所公知的任何其他动作识别方法来执行。
从前面描述可以理解,在不脱离本发明的真实精神的情况下可以对本发明的各个实施例进行各种修改和变更。本说明书中的描述仅为了示例说明的目的,而不解释为起限制作用。本发明的范围仅由所附权利要求的语言限定。

Claims (30)

1.一种用于管理设备的方法,所述方法包括:
接收多个用户度量;
根据所述多个用户度量创建关系度量;
创建包括至少一个用户度量和至少一个关系度量的用户度量向量;
创建包括多个度量范围的用户度量空间;
确定所述用户度量向量是否超出所述用户度量空间;
如果所述用户度量向量超出所述用户度量空间,则识别动作;以及
执行所述动作。
2.如权利要求1所述的方法,其中,根据所述多个用户度量创建关系度量包括对所述用户度量进行过滤。
3.如权利要求2所述的方法,其中,根据所述多个用户度量创建关系度量包括确定第一过滤用户度量与第二过滤用户度量之间的关系。
4.如权利要求3所述的方法,其中,确定第一过滤用户度量与第二过滤用户度量之间的关系包括比较第一过滤用户度量与第二过滤用户度量。
5.如权利要求3所述的方法,其中,根据所述多个用户度量创建关系度量包括确定第一过滤用户度量与第二过滤用户度量之间的关系的量值。
6.如权利要求1所述的方法,其中,根据所述多个用户度量创建关系度量包括确定所述多个用户度量是否匹配预定度量模式。
7.如权利要求6所述的方法,包括如果所述多个用户度量匹配所述预定度量模式,则检索关系度量。
8.如权利要求1所述的方法,其中,创建包括至少一个用户度量和至少一个关系度量的用户度量向量包括关联至少一个用户度量与所述用户度量向量,并且关联至少一个关系度量与所述用户度量向量。
9.如权利要求1所述的方法,其中,识别动作包括:
确定用户位置;以及
根据所述用户位置,选择动作ID。
10.如权利要求9所述的方法,其中,识别动作包括:
确定用户移动;以及
根据所述用户移动,选择动作ID。
11.一种用于管理设备的系统,所述系统包括:
用于接收多个用户度量的装置;
用于根据所述多个用户度量创建关系度量的装置;
用于创建包括至少一个用户度量和至少一个关系度量的用户度量向量的装置;
用于创建包括多个度量范围的用户度量空间的装置;
用于确定所述用户度量向量是否超出所述用户度量空间的装置;
用于如果所述用户度量向量超出所述用户度量空间则识别动作的装置;以及
用于执行所述动作的装置。
12.如权利要求11所述的系统,其中,用于根据所述多个用户度量创建关系度量的装置包括用于对所述用户度量进行过滤的装置。
13.如权利要求12所述的系统,其中,用于根据所述多个用户度量创建关系度量的装置包括用于确定第一过滤用户度量与第二过滤用户度量之间的关系的装置。
14.如权利要求13所述的系统,其中,用于确定第一过滤用户度量与第二过滤用户度量之间的关系的装置包括用于比较第一过滤用户度量与第二过滤用户度量的装置。
15.如权利要求13所述的系统,其中,用于根据所述多个用户度量创建关系度量的装置包括用于确定第一过滤用户度量与第二过滤用户度量之间的关系的量值的装置。
16.如权利要求11所述的系统,其中,用于根据所述多个用户度量创建关系度量的装置包括用于确定所述多个用户度量是否匹配预定度量模式的装置。
17.如权利要求16所述的系统,包括用于如果所述多个用户度量匹配所述预定度量模式,则检索关系度量的装置。
18.如权利要求11所述的系统,其中,用于创建包括至少一个用户度量和至少一个关系度量的用户度量向量的装置包括用于关联至少一个用户度量与所述用户度量向量的装置,以及用于关联至少一个关系度量与所述用户度量向量的装置。
19.如权利要求11所述的系统,其中,用于识别动作的装置包括:
用于确定用户位置的装置;以及
用于根据所述用户位置选择动作ID的装置。
20.如权利要求19所述的系统,其中,用于识别动作的装置包括:
用于确定用户移动的装置;以及
用于根据所述用户移动选择动作ID的装置。
21.一种用于管理设备的计算机程序产品,所述计算机程序产品包括:
记录介质;
用于接收多个用户度量的记录在所述记录介质上的单元;
用于根据所述多个用户度量创建关系度量的记录在所述记录介质上的单元;
用于创建包括至少一个用户度量和至少一个关系度量的用户度量向量的记录在所述记录介质上的单元;
用于创建包括多个度量范围的用户度量空间的记录在所述记录介质上的单元;
用于确定所述用户度量向量是否超出所述用户度量空间的记录在所述记录介质上的单元;
用于如果所述用户度量向量超出所述用户度量空间则识别动作的记录在所述记录介质上的单元;以及
用于执行所述动作的记录在所述记录介质上的单元。
22.如权利要求21所述的计算机程序产品,其中,用于根据所述多个用户度量创建关系度量的记录在所述记录介质上的单元包括用于对所述用户度量进行过滤的记录在所述记录介质上的单元。
23.如权利要求22所述的计算机程序产品,其中,用于根据所述多个用户度量创建关系度量的记录在所述记录介质上的单元包括用于确定第一过滤用户度量与第二过滤用户度量之间的关系的记录在所述记录介质上的单元。
24.如权利要求23所述的计算机程序产品,其中,用于确定第一过滤用户度量与第二过滤用户度量之间的关系的记录在所述记录介质上的单元包括用于比较第一过滤用户度量与第二过滤用户度量的记录在所述记录介质上的单元。
25.如权利要求23所述的计算机程序产品,其中,用于根据所述多个用户度量创建关系度量的记录在所述记录介质上的单元包括用于确定第一过滤用户度量与第二过滤用户度量之间的关系的量值的记录在所述记录介质上的单元。
26.如权利要求25所述的计算机程序产品,其中,用于根据所述多个用户度量创建关系度量的记录在所述记录介质上的单元包括用于确定所述多个用户度量是否匹配预定度量模式的记录在所述记录介质上的单元。
27.如权利要求26所述的计算机程序产品,包括用于如果所述多个用户度量匹配所述预定度量模式则检索关系度量的记录在所述记录介质上的单元。
28.如权利要求21所述的计算机程序产品,其中,用于创建包括至少一个用户度量和至少一个关系度量的用户度量向量的记录在所述记录介质上的单元包括用于关联至少一个用户度量与所述用户度量向量的记录在所述记录介质上的单元,以及用于关联至少一个关系度量与所述用户度量向量的记录在所述记录介质上的单元。
29.如权利要求21所述的计算机程序产品,其中,用于识别动作的记录在所述记录介质上的单元包括:
用于确定用户位置的记录在所述记录介质上的单元;以及
用于根据所述用户位置选择动作ID的记录在所述记录介质上的单元。
30.如权利要求29所述的计算机程序产品,其中,用于识别动作的记录在所述记录介质上的单元包括:
用于确定用户移动的记录在所述记录介质上的单元;以及
用于根据所述用户移动选择动作ID的记录在所述记录介质上的单元。
CNB2004100713452A 2003-07-25 2004-07-20 用于管理设备的方法和系统 Expired - Fee Related CN100420198C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/627,011 US7165056B2 (en) 2003-07-25 2003-07-25 Administering devices in dependence upon user metric vectors including relational metrics and location based device control
US10/627,011 2003-07-25

Publications (2)

Publication Number Publication Date
CN1607776A true CN1607776A (zh) 2005-04-20
CN100420198C CN100420198C (zh) 2008-09-17

Family

ID=34080538

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100713452A Expired - Fee Related CN100420198C (zh) 2003-07-25 2004-07-20 用于管理设备的方法和系统

Country Status (2)

Country Link
US (1) US7165056B2 (zh)
CN (1) CN100420198C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325223A (zh) * 2015-06-17 2017-01-11 派斡信息技术(上海)有限公司 控管电子装置的方法以及应用该方法的控制系统
CN106657208A (zh) * 2016-07-26 2017-05-10 安徽聚润互联信息技术有限公司 一种基于计算机的网络办公系统

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7151969B2 (en) * 2003-06-26 2006-12-19 International Business Machines Corporation Administering devices in dependence upon user metric vectors with optimizing metric action lists
US9811603B2 (en) 2003-09-03 2017-11-07 International Business Machines Corporation Transport and administration model for offline browsing
US6961668B2 (en) * 2003-10-23 2005-11-01 International Business Machines Corporation Evaluating test actions
US7263511B2 (en) * 2003-10-23 2007-08-28 International Business Machines Corporation Creating user metric patterns including user notification
US7206786B2 (en) * 2003-11-03 2007-04-17 Hewlett-Packard Development Company, L.P. Method and system for adapting memory-resident database in flexible service logic execution environment
US7698448B2 (en) * 2005-11-04 2010-04-13 Intermatic Incorporated Proxy commands and devices for a home automation data transfer system
US7640351B2 (en) * 2005-11-04 2009-12-29 Intermatic Incorporated Application updating in a home automation data transfer system
US7694005B2 (en) * 2005-11-04 2010-04-06 Intermatic Incorporated Remote device management in a home automation data transfer system
US7870232B2 (en) 2005-11-04 2011-01-11 Intermatic Incorporated Messaging in a home automation data transfer system
US20070121653A1 (en) * 2005-11-04 2007-05-31 Reckamp Steven R Protocol independent application layer for an automation network
US20070256085A1 (en) * 2005-11-04 2007-11-01 Reckamp Steven R Device types and units for a home automation data transfer system
US20070261055A1 (en) * 2006-05-04 2007-11-08 Samsung Electronics Co., Ltd. Method and system for the generic and flexible access of available tasks through a user interface
DE602007001022D1 (de) * 2007-01-09 2009-06-10 Ind Tech Res Inst System und Verfahren zur Steuerung von an eine Steuerungsschnittstelle angeschlossenen Geräten
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
EP2099199A1 (en) * 2008-03-06 2009-09-09 Fifthplay NV Plug-and-play coupling of sensors to an embedded device
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
CN102609293B (zh) * 2012-01-17 2015-03-04 深圳天源迪科信息技术股份有限公司 对c/c++进行动态实例化的方法
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
CN104216743B (zh) * 2014-08-27 2017-08-25 中国船舶重工集团公司第七0九研究所 可配置的虚拟机启动完整性维护的方法及系统
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
DE102015208510A1 (de) * 2015-05-07 2016-11-10 Robert Bosch Gmbh Verfahren zum Ausführen einer sicherheitskritischen Funktion einer Recheneinheit in einem cyber-physischen System
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4461301A (en) * 1981-10-15 1984-07-24 Self Regulation Systems, Inc. Self adjusting bio-feedback method and apparatus
US6418424B1 (en) * 1991-12-23 2002-07-09 Steven M. Hoffberg Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5761083A (en) * 1992-03-25 1998-06-02 Brown, Jr.; Robert J. Energy management and home automation system
US6345264B1 (en) * 1998-01-22 2002-02-05 Microsoft Corporation Methods and apparatus, using expansion attributes having default, values, for matching entities and predicting an attribute of an entity
JP4093669B2 (ja) * 1999-02-23 2008-06-04 富士通株式会社 加入者試験システム
US6611863B1 (en) * 2000-06-05 2003-08-26 Intel Corporation Automatic device assignment through programmable device discovery for policy based network management
KR20020032164A (ko) * 2000-10-26 2002-05-03 김대위 인터넷을 이용한 주택의 원격감시제어 장치
US6816058B2 (en) * 2001-04-26 2004-11-09 Mcgregor Christopher M Bio-metric smart card, bio-metric smart card reader and method of use
ITBO20010550A1 (it) * 2001-09-14 2003-03-14 Den Di De Nora Paolo Dispositivo e metodo di irrigazione automatica
US20030145128A1 (en) * 2002-01-25 2003-07-31 Baird Roger T. Mapping managing devices to managed devices
US6645153B2 (en) * 2002-02-07 2003-11-11 Pacesetter, Inc. System and method for evaluating risk of mortality due to congestive heart failure using physiologic sensors
US6980090B2 (en) * 2002-12-10 2005-12-27 Current Technologies, Llc Device and method for coupling with electrical distribution network infrastructure to provide communications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325223A (zh) * 2015-06-17 2017-01-11 派斡信息技术(上海)有限公司 控管电子装置的方法以及应用该方法的控制系统
CN106657208A (zh) * 2016-07-26 2017-05-10 安徽聚润互联信息技术有限公司 一种基于计算机的网络办公系统

Also Published As

Publication number Publication date
CN100420198C (zh) 2008-09-17
US7165056B2 (en) 2007-01-16
US20050021484A1 (en) 2005-01-27

Similar Documents

Publication Publication Date Title
CN1607776A (zh) 用于管理设备的方法和系统
CN1282934C (zh) 信息处理方法、内容分配装置及方法
CN1183717C (zh) 桥连HAVi子网络和UPnP子网络的方法及实施所述方法的装置
CN1255972C (zh) 家庭设置的电子装置的远程控制方法和管理设备
CN1768373A (zh) 信息处理装置、信息处理方法、及计算机程序
CN1256824C (zh) 利用秘密-公开因特网协议地址/通用资源定位地址映射的环球网上家用网络的结构
CN1842782A (zh) 网络资源信息路由的服务器结构
CN1214330C (zh) 网络连接设备及采用该设备的网络系统
CN1738274A (zh) 无线通信系统
CN1599344A (zh) 一种家庭网络系统体系结构和实现方法
CN1684423A (zh) 信息提供控制方法和信息再现系统
CN1906604A (zh) 网络中资源信息的路由
CN1947106A (zh) 通知方法、连接装置、通信方法以及程序
CN1510875A (zh) 用于控制信息处理设备的系统和方法
CN1599331A (zh) 根据度量模式管理设备的系统和方法
CN1771712A (zh) 个性化的服务发现
CN1858817A (zh) 一种远程控制网关设备构成的系统及实现方法
CN1745369A (zh) 信息处理装置、信息处理方法及计算机程序
CN1788258A (zh) 用于执行协议转换处理的装置、方法和程序
CN1757020A (zh) 信息处理装置、信息处理方法以及计算机程序
CN1463521A (zh) 信息处理设备
CN1801743A (zh) 终端设备的管理方法
CN1423201A (zh) 地址变换装置、消息处理方法及装置
CN1497898A (zh) 资源管理系统
CN1596531A (zh) 条件访问系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: LIAN XIANG(SINGAPORE)PRIVATE LTD.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINE CORP.

Effective date: 20061027

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20061027

Address after: Singapore Changi

Applicant after: Lenovo (Singapore) Pte. Ltd.

Address before: New York, USA

Applicant before: International Business Machines Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080917

Termination date: 20200720

CF01 Termination of patent right due to non-payment of annual fee