使能对其它设备的无线网络控制和感测的、光学配置的模块化控制系统的制作方法
【专利摘要】将任意非联网设备与无线计算机网络进行接口连接的系统和方法。本发明提供一种可光学配置的无线通信模块,采取固定或可拆卸形式,具有无线(例如,WiFi)网络连通性。该模块还具有可编程的任意设备控制器、相关联的软件,并且至少任意设备和模块的组合还提供唯一ID码。软件令牌辅助的方法可用于将该唯一ID码与合适的控制软件进行关联,并将该关联存储于网络服务器的存储器中。本发明还使用基于互联网的服务和本地光学编程器来对模块的无线网络配置进行配置。一旦建立起连通性,则该模块可以将其唯一ID码上传到服务器,并且从服务器接收合适的任意设备控制代码。便携式版本的模块可以在任意设备之间随意地交换,并且将自动对自身进行配置。
【专利说明】使能对其它设备的无线网络控制和感测的、光学配置的模块化控制系统
[0001]对相关申请的交叉引用
[0002]本申请是发明人Hugo Fiennes于2012年5月25日提交的美国专利申请13/481,737 “MODULARIZED CONTROL SYSTEM TO ENABLE NETWORKED CONTROL AND SENSINGOF OTHER DEVICES (使能对其他设备的网络控制和感测的模块化控制系统)”的部分接续申请;本申请还要求发明人Hugo Fiennes于2012年5月15日递交的美国临时申请 61/647,476 “MODULARIZED CONTROL SYSTEM TO ENABLE NETWORKED CONTROL ANDSENSING OF OTHER DEVICES(使能对其他设备的网络控制和感测的模块化控制系统)”的优先权权益;本申请还要求发明人Hugo Fiennes于2012年I月5日递交的美国临时申请 61/583, 299 “Method of transferring network setup information using opticalsignaling(利用光学信令传输网络设置信息的方法)”的优先权权益;美国专利申请13/481,737还要求发明人Hugo Fiennes于2011年5月26日提交的美国临时申请61/490, 498 “MODULARIZED CONTROL SYSTEM TO ENABLE NETWORKED CONTROL AND SENSING OFOTHER DEVICES (使能对其他设备的网络控制和感测的模块化控制系统)”的优先权权益;所有这些申请的内容通过弓I用并入本文。
【技术领域】
[0003]本发明属于网络连通性和计算机化设备领域,具体是将计算机网络连通性和可选的网络控制或监测两者施加到非联网设备的方法。
【背景技术】
[0004]许多电气设备可以受益于联网而能够容易地进行控制和监测。例如自动灌溉系统可以由远程计算机鉴于从天气信息提供商获取的天气预报来进行控制。
[0005]传统上,受益于被连接到计算机网络上的设备必须通过相当大的改造才能达到此目的。通常,必须添加通信接口,必须开发大量的软件和固件,并且整个产品在可出售之前必须经过无线批准测试。通常,需要在设备上增加按钮和指示以便于通信接口的配置,在用户体验上,这增加了额外的成本和复杂度。
[0006]传统上,为了在设备上增加这种连接,设备厂商必须在设备上增加硬件,即通信接口和额外的处理能力两者,以应对操作该接口的负担。所涉及的开发工作是艰巨的,并且还为支持软件更新以修复bug和增加新功能辅助用户安装和配置通信接口带来了额外的负担。通常,上述负担均不属于厂商的擅长领域,也不涉及他们的创新领域,因此分散了他们开发自己的核心知识产权的精力。
[0007]由于厂商缺乏经验,并且让任何单个公司去开发基于互联网的服务(使设备与之通信,从而能够检查设备的状态,控制设备的行为)的负担高昂,因此为这些设备提供的大多数服务是严重稀缺、充满bug并且不具有新技术或潜在有用的合作服务的优势。
[0008]由于这些设备的网络部分的实现经常是不完整且充满bug的,因此狗仔这些网络使能设备的客户经常在安装和操作这些设备的网络部分上,具有很差的体验。另外,客户经常发现,没有哪个单一厂商能够提供所有他们所希望控制或监测的设备的网络使能版本。结果,客户经常被迫使用多种不同和不兼容的控制或监测服务,并且经常无法将监测一个设备的结果链接到另一设备的行动上。
[0009]现有的模块化网络接口包括作为Eye-Fi卡出售的美国专利7,702,821。此卡是一种无线使能SD卡,本质上是具有SD外形的标准WiFi卡。其他WiFi卡以及其他类型的网卡(包括以太网卡、蓝牙卡等)也是已知的。这些现有的设备通常在它们被安装到的主机设备上增加网络硬件接口,但在其他方面一般操作为或作为“哑”从属设备。
【发明内容】
[0010]本发明提供一种将任意设备(例如,电气设备)连接到计算机网络的标准化方式,从而允许这些任意设备被用户或者被在位于本地或远程的计算机上执行的算法监测和/或控制。这些算法可以考虑其它传感器的状态,或者可以考虑实际上几乎可以是可通过互联网访问的任何信息源的状态。
[0011]本发明提供一种标准化模块式无线通信接口(通信模块),其使得普通的任意设备制造商(厂商)极大地减轻了接口开发和批准的沉重负担。作为必须基于每个设备辛苦地开发和获取每个设备的常规批准的替代,可以一次性地开发和批准标准化模块式无线通信接口,并且随后将其用于各种各样的不同任意设备。
[0012]在一个实施例中,本发明进一步将可编程任意设备控制器集成到其模块式无线网络接口中,从而免除了针对任意设备的大部分软件开发的负担。本发明还提供一种统一的基于互联网的通信服务,以管理各种各样的不同的通信模块和任意设备。由于本发明的通信模块的硬件和其大多数软件在不同的主机设备(任意设备)之间是通用的,因此,生产大量的通信模块可以使通信模块成本较低,并且能够为任意设备建立和操作极大改进的控制服务。
[0013]本发明的硬件部分由通信模块和处理器构成,该硬件部分通常被封装成很小的易处理模块,通常为用户可拆卸的模块,但是也可以是拟嵌入到硬件中的不可拆卸的模块。.例如,一个实施例可以实现具有标准SD(安全数字)卡外形的通信模块。这种实施例具有以下优点:它们为用户所熟悉,小且不占用任意设备的大量空间,易于处理,并且在某些情况下可以制成与实际SD存储卡相兼容。
[0014]如以上提到的,现有技术的一个重要缺点在于,在新的设备可用于网络之前,大多数通信接口需要进行某种配置。因此,任意设备厂商被迫在其任意设备上增加按钮、指示器、屏幕或者甚至是连接器,以使得计算机能够附接到任意设备上进行配置,所有这些增加了成本、尺寸和额外的支持负担。
[0015]本发明的通信模块部分通过多种手段解决了这个问题。在很多实施例中,外设卡或通信模块,无论是固定的还是可拆卸的,都可以集成光电二极管,并且可使用光学配置方法进行无线网络接入的配置。在其它实施例中,尽管仍然可以经常使用光学配置方法,但通信模块也可以被配置为可拆卸的外设卡,其可在被插入到第一设备中时被进行网络接入的配置,并且在随后被插入到第二设备中时,仍能够保持该网络接入配置。在某些实施例中,当通信模块被配置为具有存储卡(例如,SD卡)类似的尺寸和电输出引脚连接时,该通信模块能够通过现有的存储器接口被插入到计算机中。随后,通信卡能够被计算机配置,并且然后与计算机断开并且插入到待控制或感测的任意设备中。
[0016]作为对以上论述的扩展,在其他实施例中,不一定要插入到计算机中进行配置,相反,设备可被光学地进行网络接入的配置,并且随后使用与远程服务器的WiFi连接被无线编程。在这些实施例中,尽管通信模块仍可以被配置为具有存储卡(例如,SD卡)类似的尺寸和电输出引脚连接,但是通信模块不必为被局限于这种存储卡配置,而是可以出于解决当前问题的方便性考虑,被配置为具有其他尺寸和输出引脚配置、可拆卸或固定配置。无论如何,由于与标准存储卡(例如,SD卡形式)相关联的大的制造基础设施和低成本,使用这种存储卡形式尽管不是严格必需的,但是从成本的角度来看通常仍是有用的。另外,这种形式允许厂商(制造商)从大量的现成插座类型中挑选,并且允许厂商为通信模块提供电气和物理接口。
[0017]在一些实施例中,特别是顺从存储卡尺寸和输出引脚的实施例中,为了便于直接配置和编程,通信模块可将自身配置为对计算机来说呈现为存储设备,例如差不多是标准固态存储卡存储设备。这种类型的配置具有如下优点:其允许将需要在设置的计算机或计算机或设备上执行的任何配置软件存储在通信模块本身中,并且还确保广泛的兼容性。
[0018]涉及将设备连接到计算机网络的更复杂的问题之一是网络环境本身。网络可能被配置得很差,并且网络的所有者往往可能缺乏修复问题的技术知识,例如,如果网络使用NAT (网络地址转换),则位于NAT网关之后的设备可能无法与互联网上的计算机相接触。这对于很多应用来说是个严峻的障碍。另外,试图无线连接到本地WiFi网络的设备经常需要诸如服务设置标识(SSID)信息和密码之类的信息来进行成功的连接。
[0019]作为将校正或改变其网络配置的负担置于用户身上的替代,本发明的通信模块可通过软件进行配置以使用最新的技术(包括来自远程网络服务的协助),以自动检查网络环境,并且相应地对其自身进行配置。
[0020]通信模块的操作软件也可以被配置以维持双向永久式互联网连接,从而允许通信模块恒定地与网络服务保持联系。这允许在任何时候发生异步事件时将该异步事件传递到通信模块。
[0021]根据本发明,通信模块的电气接口进一步被设计为允许模块将其各种输出引脚的功能以多种方式进行配置,以为所附接的设备提供最佳的电气和功能匹配。这具有以下优点:允许在各种不同的任意设备和应用中使用完全相同的通信模块。这样还降低了为任何给定任意设备增加通信模块接口的成本。相反,如早先所提及的,当前技术(现有技术)中的增加网络接口,经常涉及增加通信接口和额外的处理能力(因为设备本身可能不具有处理能力或者具有非常有限的处理能力),并且这种早先的方法可能非常昂贵。
[0022]最后,在某些实施例中,本发明的通信模块可在其处理模块内操作虚拟机环境和/或沙盒环境。该虚拟机环境可执行设备相关代码以控制任意设备本身。这种将通信模块的软件的家务/网络相关功能与设备相关部分离开来是非常有利的,原因如下。一个原因是,通信模块的设备相关代码可以被监测,并且如果出现故障可以被重启。进一步地,通信模块的软件的复杂网络软件部分可以不受通信模块的任意设备相关代码的干扰而操作。因此,本发明的通信模块网络管理软件可以处理家务任务,例如,使设备相关代码与来自任意设备厂商的最新开发保持一致。[0023]虚拟机概念的另一优点在于,模块的硬件可以被改进和更新,而仍保持与厂商的设备相关代码的兼容性,从而允许厂商不必担心通常在其具体关注点和能力范围之外的领域的复杂性。
[0024]可替代地或作为补充地,通信模块可以在沙盒模式下操作,以防止任意设备接口代码的程序崩溃干扰网络控制代码。
[0025]在一个优选的实施例中,本发明可以是将任意非联网设备与无线计算机网络接口连接的系统和方法。本发明提供一种可光学配置的无线通信模块,其采用固定和可拆卸的形式,并具有无线(例如,WiFi)网络连通性。该模块还具有可编程任意设备控制器、相关联的软件,并且至少任意设备与模块的组合还提供唯一 ID码。软件令牌(例如,硬件标识软件令牌)辅助的方法可用于将唯一 ID码与合适的控制软件进行关联,并且该关联被存储在网络服务器的存储器中。本发明还使用基于互联网的服务和本地光学编程器来配置模块的无线网络配置。一旦建立连通性,则模块可以将其唯一 ID码上传到服务器上,并从服务器接收合适的任意设备控制代码。便携式版本的模块可在任意设备之间随意地进行交换,并且将自动对其自身进行配置。
[0026]注意,除了帮助改进设备连通性和控制之外,利用本发明的通信模块从服务器获取设备代码还具有其它优点。具体来说,这帮助了厂商修复代码中的bug,并且还易于提出对本领域各种设备的其它代码改进。
[0027]本发明的通信模块和系统的特定版本的原型在2012年5月16日以各种新闻稿和示例的形式公布于众。在这些新闻稿中,通信模块被称为“Imp”。这样做部分地是为了向形成1969年的阿帕网络(其后来变为互联网)的基础的接口消息处理器“MP”设备致敬。使用术语“Imp”的部分原因是,就像神话中的小鬼、精灵或恶魔,该设备较小且能够一定程度地神奇地激活与其接口连接的各种任意设备。在本文中,本发明的通信模块部分通常将以可替换的方式称为“Imp”、“Imp设备”、“Imp通信模块”等。帮助对各种通信模块进行管理和网络使能的基于互联网的服务器系统偶尔也可以以可替换的方式被称为Imp云服务、Imp服务器等。
【专利附图】
【附图说明】
[0028]图1示出了典型的现有技术的非联网的简单电气或电子任意设备。
[0029]图2示出了典型的现有技术中通过增加通信接口、执行与网络相关的处理的处理器以及可选地执行系统中的实际控制功能的控制处理器来在简单任意设备上增加网络控制的方法
[0030]图3示出了如何将本发明的通信模块与简单任意设备集成。
[0031]图4给出了如何将本发明的系统和互联网服务器系统与多个站点集成的更详细视图,每个站点可包含多个联网设备,每个联网设备又与一通信模块连接以提供网络连通性。
[0032]图5示出了本发明的通信的模块系统的概述。
[0033]图6给出了可根据本发明的如何将未联网任意设备联网的示例。
[0034]图7示出了如何使用接口消息处理器(Imp)云服务来对灯开关类型的任意设备(此处为灯开关)进行Imp使能和配置。[0035]图8示出了如何在标准Web浏览器上使用图形化编程方法来简单配置Imp云服务的更多细节。
[0036]图9示出了如何对Imp设备进行网络接入的光学配置,这里,偶尔被称为“眨眼”步骤。
[0037]图10示出了示意性示出了配备有光电检测器的Imp设备的细节。
[0038]图1lA给出了用户使用智能设备对Imp使能任意设备(这里是AC电源开关)进行网络接入的光学配置的示例。
[0039]图1lB示出了如何将“Imp登记卡”和软件令牌(如硬件标识软件令牌)用于创建针对给定任意设备的唯一 ID与合适类型的软件代码之间的关联的示例。
[0040]图12示出了用户将Imp云服务配置为使得图7中的Imp使能电源开关能够控制图1lA中的Imp使能AC电源开关。
[0041]图13示出了 Imp使能湿气检测器。
[0042]图14字面上给出了根据本发明的已廉价地联网的“更好的捕鼠器”(这里,为Imp使能电捕鼠器)的示例。
[0043]图15示出了典型SD卡的照片,在一些实施例中该SD卡可以用作Imp通信模块的外壳和接口,以及各种替代的、软件可配置的Imp引脚输出电气配置。
[0044]图16示出了用于接纳SD卡类型的Imp通信模块的标准槽设备的电路图的示例。
【具体实施方式】
[0045]制造联网设备的挑战是什么?在厂商(如设计师,制造师)试图制造联网设备时,他们所经历的部分问题有:
[0046]1.无线设计:为了使无线设备具有良好的性能,厂商需要选择合适的无线芯片组,解决RF设计问题(天线匹配,供电质量等),设计天线,然后针对他们想要将该设备销售到的每个国家,通过昂贵的无线批准测试。
[0047]许多表现最佳的无线芯片是专门为手机使用而设计的,所以可能非常小,并且难以使用(例如0.4mm节距的BGA),将这些无线芯片放在任何给定任意设备的PCB上会极大地增加制造和装配成本。
[0048]有些厂商提供集成了无线电路和天线的无线模块。这些预批准的模块一定程度地减少了无线设计负担,但有其他缺点,详情如下。
[0049]2.嵌入式网络固件:每个网络设备都需要固件来处理网络通信。此代码经常被频繁地更新以修复bug和提高安全性:这些变化通常要由厂商进行整合,导致即使产品已经出厂之后,还需要大量的支持工作。
[0050]此外,厂商往往需要提供软件更新工具给他们的客户,使重要更新可应用于该领域中的产品。此问题也可能会导致任意设备的仓储和配送的问题,因为这些内置有充满bug的固件的设备可能在它们被出售前就需要进行更新。
[0051]3.网络配置:几乎每一个无线协议要求都需要设置(setup)程序以将设备安全地连接到无线网络。这通常需要在产品中至少包括专用按钮和指示LED,这给产品的物理设计增加了成本和复杂性。的确,更为常见的是,这种方法需要给任意设备增加显示屏幕和多个按钮,但如果增加这些特征仅仅是为了将设备配置为用于特定网络,则这是一种不能接受的负担。
[0052]4.设备软件:除了网络软件,很多任意设备需要操作该设备的功能的应用软件。对于任何软件,如上面第2节提到的,都意味着要对基础代码(shipping code)进行支持和更新。
[0053]5.互联网服务:联网设备需要提供一种供用户访问其功能的方式。
[0054]第一代网络设备使用嵌入式web服务器来实现控制,但是这往往是不安全且受限的,例如,为了从局域网外部访问设备,用户需要他们的防火墙上开孔。这是复杂的,并且往往需要专门的知识和经验才能成功地执行。
[0055]第二代设备连接到互联网服务,互联网服务将业务中继到用户的防火墙后面的设备,或中继来自用户的防火墙后面的设备的业务。通过登录到互联网服务,用户可以监测和控制他们的设备。该厂商必须设计、构建、运营及支持这些额外的服务。
[0056]6.智能手机应用:现代网络设备经常伴随着智能手机应用程序。然而,难以针对多个平台构建良好的智能手机应用程序。此外,这种方法也往往迫使任意设备厂商花费精力和费用来运行作为设备的网关的互联网服务。
[0057]7与其他设备和服务的集成:通常情况下,用户会希望将外部动作链接到他们的设备,如自动的“电池电量低”的电子邮件,当检测到移动时发送文本,等等。这给互联网服务增加了更多的复杂性。
[0058]在一个实施例中,本发明可以是一种在任意非联网设备(任意设备,主机设备)上增加网络接口的方法,系统或设备。这个任意设备通常将至少部分地通电,并且往往具有适当的电路来实现其功能。
[0059]如前面所论述的,本发明部分地包括通信模块或卡,其被设计成负责对主机设备进行至少一定程度的控制(也称为“任意非联网设备”或简称为“任意设备”)。再次如前面所论述的,该通信模块或卡可能偶尔被替代地称为“ IMP"或“ Imp设备”或“ IMP通信模块”。
[0060]本发明的基于通信模块的“Imp”系统被设计为帮助解决前面论述的具体问题1-7。具体地,Imp设备作为将任何设备连接到互联网的“粘合剂”,以此使得用户能够从连接中获得真正的价值。
[0061]Imp设备通常将包括WiFi或其他短距离无线数字收发机,如支持IEEE802.llb/g/η标准的收发机,但也可以使用其它标准(例如,紫蜂,蓝牙等)。Imp设备将进一步包括处理器、软件以及嵌入式网络固件。该嵌入式网络固件通常将包括兼容互联网标准的IP栈和TLS安全性,以确保方便安全地连接到互联网服务器,如Imp云服务,这将在稍后进行更详细地描述。在一些实施例中,Imp设备可以被配置为根据需要从授权的互联网服务器自动更新其软件。
[0062]为了容纳Imp通信模块,该任意设备通常会被设计或改造为在其表面上具有槽,下面为容纳用于Imp设备的插座以及支持电路的空间,所述支持电路例如为与任意设备的电路、Imp设备电源以及ID芯片的连接。这将在稍后更加详细地论述。该槽与支持插座和电路一起,可能偶尔被替代地称为“ MP槽”,“ IMP适配器”或“标准化槽设备”。
[0063]虽然该通信模块可以采取多种不同的物理形式,如前面所论述的,在一个优选实施例中,通信模块将包含具有物理兼容的电连接的标准固态存储卡物理接口。因此,例如在一些实施例中,通信模块可以被构建为标准的安全数字(SD)存储卡形式,在这种情况下,通信模块可与标准SD卡具有在物理上相同的电引脚(见图15(1500)和(1502))。然而,需要注意的是,这些电引脚的功能,至少在一些Imp设备中在软件控制的配置上,通常将不同于标准SD卡的功能。
[0064]也可以使用其他Imp设备卡形式。尽管可以使用与存储卡不同的Imp设备配置,但这种配置常常是方便的。替代Imp设备实施例的一些示例可能包括迷你SD卡和微型SD形式、PC卡、紧凑闪存卡、智能媒体卡、记忆棒卡、微型(Miniature)卡、多媒体卡、SxS卡、通用闪存存储卡、xD-picture卡、串行闪存模块卡、μ卡、NT卡、XQD卡,等等。
[0065]在一些实施例中,Imp通信模块也可以具有物理接口,以及可选地,甚至是电子和逻辑接口,在至少一种操作模式中,上述接口能够连接到一个标准存储卡读取器,然后与存储卡读取器一起工作,以根据(根据该通信模块的特定外形的)标准存储卡协议来进行数据的读写。因此,如果该通信模块被构建成与安全数字(SD)卡兼容,则它也可以被配置为像标准SD卡一样存储记忆数据。在一些实施例中,这也可用于Imp网络配置、软件令牌写入和读出等目的。
[0066]在任意设备中的Imp通信模块槽通常将具有可与Imp通信模块上的在物理上兼容的电连接(引脚)进行交互的通信模块接口,并且将在这些通信模块电连接(即,引脚)之间的控制信号传递到任意设备中的电路的至少一部分。这些引脚的SD卡示例见图15(1500)。
[0067]为了便于“混合和匹配”功能(其中一个Imp通信模块卡可能会被插入到各种不同的任意设备中),在一个优选的实施例中,任意设备可另外具有唯一标识(ID)存储记忆设备或芯片(例如,计算机存储器芯片和附接到任意设备的接口),其能够从该任意设备发送一组唯一标识数据(即,例如可以描述任意设备的类型、型号、版本号等的代码编号)到通信模块。可替代地,ID芯片也可以只包含任何唯一编号,并且Imp服务服务器可以基于该唯一编号查找设备类型。
[0068]如前面所论述的,为了便于标准化,在一些实施例中,可能期望以产生标准化“槽”模块来接纳“頂P”通信模块或卡。这个标准化槽模块可以被配置为与各种不同的任意设备相配。考虑到正常的制造成本和可靠性与产量的曲线,这可以帮助推动成本下降,也有利于可靠的性能。
[0069]这种标准化槽模块可以包括,例如,插槽(例如SD插槽(如果“Imp”的通信模块或卡是使用SD卡的外形尺寸构建的)),可选的电源(如能够提供400mA3.3V直流电源),针对“MP”通信模块或卡的标识芯片(例如Ateml ATSHA204芯片等能够标识任意设备的标识芯片),和Imp设备上的各个引脚连接到任意设备的电路上的接口电路。无论是否使用标准化槽模块,在一般情况下,当在本文中使用“槽”这一术语时,应当假定该槽包括通信模块插槽、可选的通信模块电源和任意设备标识芯片。图15示出在这里被称为“四月开发板”的标准化槽组件的一个示例,图16示出此标准化槽模块的一个实施例的电气原理图。注意,如果任意设备能够向Imp提供足够电力,那么Imp标准化槽模块本身则不需要电源。
[0070]Imp通信模块通常也有通信接口(通常是无线接口,诸如WiFi或蓝牙接口,但可替代地,有线接口,例如以太网接口,或红外IrDA或光纤接口也能够满足要求),其能够与计算机网络建立通信会话。往往这个计算机网络将是互联网,但也可以使用本地计算机网络。
[0071]Imp通信模块通常还具有能够存储代码和数据的内部固态存储器。在一些实施例中,当通信模块被连接到标准存储卡读取器或被标准存储卡读取器编程时,一些或所有这些代码和数据可被发送到所述通信模块,标准存储卡读取器经常又被连接到计算机化设备,诸如台式机或膝上型计算机、平板计算机、智能手机等。可替换地,代码和数据可以通过在本文中其它部分所论述的光学和/或无线方式被加载到通信模块存储器。
[0072]Imp通信模块将还具有至少一个内部处理器(例如微处理器,如ARM、MIPs、x86或其他类型的微处理器,其往往具有32位或更高位的指令集和内存模型)。该至少一个内部处理器可以被配置为至少当通信模块被连接到任意设备中的插槽时执行通信代码以及一些任意设备接口代码。
[0073]为了节省存储空间,在一些实施例中,可能有用的是,将Imp通信模块配置为能够运行高级命令式面向对象的编程语言,如Lua'Squirrel等。这种轻量脚本语言能够适应低成本微处理器和微控制器可用的有限内存空间(如128千字节)。这项技术有助于最小化“Imp”通信模块的成本,并且同时使得通信模块既高度可用且易于配置。
[0074]为了进一步方便编程,可通过使用附加的Imp特定的编程API来进一步扩展语言的标准库(例如Squirrel标准库)。这种Imp特定的编程API可将语言的标准库扩展为包括附加类(如Imp硬件类),Imp控制方法和功能,非易失性数据存储表,Imp引脚配置、读取和写入方法,服务器登录和控制方法,Imp SPI串行端口配置、读取和写入方法,Imp UART配置、读取和写入方法,有用的常量,控制标志,等等。
[0075]—旦该任意设备已Imp使能(通常通过将Imp设备插入到任意设备的Imp槽),则该任意设备可以使用本发明的各种方法被操作。根据这些方法,网络配置数据可以被加载到通信模块,从而配置通信模块以与服务器(例如,远程互联网服务器)建立网络连接,该服务器随后可将任意设备接口代码加载到通信模块。
[0076]如稍后将在本文中论述的那样,在本发明的一些实施例中,可能有用的是,为“IMP”通信模块进一步配置光电检测器,诸如可见光光电检测器。如果这样做的话,那么可以很容易地使用调制光从例如运行“MP”网络配置app的智能手机的发光显示屏幕将网络配置数据(例如无线网络配置数据)上传到“MP”通信模块。
[0077]可替代地,通信模块可以被预加载以设备接口代码和/或网络配置数据。
[0078]这里,假设在此过程中的至少某个点,提供了网络连接,诸如到互联网的无线WiFi连接,或其它连接。
[0079]通过本发明的设备,系统和方法,命令或数据可以通过网络(通常是通过到互联网的无线连接来介导)被发送到Imp通信模块,在Imp通信模块处,它们可以由运行相应代码的至少一个处理器来解释。随后,所述命令或数据然后可通过任意设备的Imp插槽被发送到任意设备接口。也就是说,该通信模块中的至少一个处理器可以使用该通信模块的物理兼容电连接(引脚)将控制信号发送到任意设备的电路。
[0080]作为补充或替代地,拟从任意设备的电路发送回网络的命令或数据可以使用通信模块的物理兼容电连接(引脚)从任意设备被发送到Imp通信模块。在Imp通信模块处,这些信号可以由运行该代码的至少一个处理器来解释,然后这些信号使用通信模块的通信接口被发送到期望的网络目的地。
[0081]为了更好地理解本发明,考虑表示现有技术的图1中所示的简单非联网任意设备。该设备几乎可以是任何东西,无论是电气的,电子的还是机械的。在这种背景下,该任意设备的示例可能是电插座、电开关、家用电器(烤面包机,咖啡机,烤箱)、HVAC部件(恒温器、空调)、照明灯具、安全或接入控制部件(运动检测器、窗传感器、标记阅读器、门锁)、车库开门器、泳池处理设备、开窗设备或遮阳控制,等等。
[0082]这样的任意设备(100)通常包含实现其功能的某种电路(101)。一个示例可以是咖啡机设备,它可以包括加热元件和相关联的闭环控制系统、泵和压力传感器。这个电路可以电简单或复杂的。作为另一个示例,一个替代的任意设备(开窗器)可以包含电机驱动器、位置传感器和负荷监测电路,可以包括或可以不包括确保系统的正确操作的一定类型的微控制器。
[0083]目前,当厂商期望为任意设备增加网络连通性时,厂商在任意设备内部电路中增加了两个或三个新的模块,如图2所示,这也代表了现有技术。图2示出了任意设备(110),其已被增加了控制处理器(111)、通信处理器(112)和通信接口(113)。用以控制任意设备
(114)的实际信号被连接在设备的电路与控制处理器之间。
[0084]在特定的任意设备的设计中,可以存在或者可以不存在控制处理器(112)(这取决于该任意设备的复杂性)。如果不存在控制处理器,则根据现有技术,信号(114)将直接连接到通信处理器。
[0085]值得注意的是,根据现有技术,对特定于设备的电路的控制通常并未集成在通信处理器中。这可能是因为这种集成需要大量的软件工作和测试才能确保控制功能不会干扰通信处理器的正确操作,反之亦然。
[0086]从现有技术的论述出发,现在考虑本发明的一个实施例,如图3所示。图3示出了如何使用本发明来将网络连通性增加到简单的任意设备中,从而得到联网的任意设备
(150)。在这个示例中,任意设备的电路(156)由在虚拟机(157)内执行的代码直接控制,所述虚拟机运行于通信模块(152)的至少一个处理器内。将这种虚拟机和至少一个处理器放置在通信模块内部,并且又将所述通信模块配置为能够直接控制任意设备的一个特别的优点是,这意味着任意设备(之前可能需要具有其自己的处理器)现在不一定需要有自己的独立的控制处理器。作为代替地,所述通信模块的至少一个处理器可以控制该任意设备。这大大降低了任意设备的成本。
[0087]因此,根据本发明,Imp通信模块中的物理处理器(153)现在可以提供与任意设备的特定电路(156)的实际电气连通性。替代地,当然,任意设备仍可继续拥有其自己的处理器,以用于当通信模块未被提供时的回退操作。这里,例如,当通信模块未被提供时,任意设备处理器可以被配置为作为主设备,当通信模块被提供时,任意设备处理器可以被配置为作为主设备,或者甚至完全离线。当与服务器相连接时,可以根据需要缓存操作代码,从而使得当没有可用的连接时,能够使用特定于设备的代码进行操作。
[0088]任意设备通常会包含一个唯一 ID块或唯一标识符(151),这通常是某种形式的记忆存储设备(通常是存储器芯片),其向Imp通信模块(152)该设备标识。如将要论述的,该ID块或唯一标识符允许Imp通信模块可选地向外部源(如远程互联网服务器或服务)请求正确的虚拟机程序,以使Imp通信模块来操作该任意设备(如果该Imp通信模块的存储器中尚未存储有适当的任意设备控制代码或虚拟机程序)。如前面所论述的,这个任意设备ID编号可以是任何唯一编号,并且服务器可以基于该唯一 ID编号查找设备类型。
[0089]Imp通信模块通信接口(154)通常由至少一个处理器(153)进行控制,从而根据需要实现与网络和期望的网络设备(例如管理通信模块的服务或服务器)的双向永久连通性。
[0090]需要注意的是,Imp通信模块的处理器可以在不同的模式下工作。在一种模式下,Imp通信模块的处理器呈现出较为被动的角色,仅仅负责任意设备外围的通信。在另一种模式下,例如当插入到其自身没有微处理器的任意设备中时,Imp通信模块处理器也可以根据需要成为Imp通信模块所插入到的任意设备中的主要处理器或主处理器。
[0091]在一些实施例中,Imp通信模块将包含适当的可逆固态开关和代码,所述可逆固态开关和代码使能在Imp通信模块能够动态地重新配置它的电气特性和/或它的电触点(引脚)的逻辑特性,以适应该Imp通信模块所插入到的特定的任意设备。这个动态的软件控制的重新配置将经常基于已从远程源(例如,提供这种类型的服务的互联网服务器)被下载到Imp通信模块的虚拟机的配置和程序。
[0092]图4示出了根据本发明的远程“服务”源(例如,提供Imp通信模块管理、配置和操作服务的互联网服务器)是如何工作的。这里,为了简明,该服务将被假定为一适当配置的互联网服务器,并且该服务器通常会作为替代地被称为“服务”、“ Imp服务”、“ MP服务器”或“Imp云服务”。
[0093]如先前所论述的,Imp服务(207)可以是连接到互联网的,并且可以由甚至可位于世界各地的一个或多个(通常是多个)物理服务器构成。在后一种情况下,在一个优选的实施例中,在给定的物理位置处的Imp通信模块可优先地使用在物理上距离它们较近的Imp服务服务器被管理(directed towards),以减少通信延迟。
[0094]在一些实施例中,将该“ IMP云服务”配置为使得它可以由终端用户容易地进行配置是有用的。在这里,可以使用各种图形化编程方法和集成开发环境(IDE),其中终端用户可以简单地在屏幕上移动象征各种设备、编程命令和功能的框或图标,通过简单地用箭头连接框和/或在框中键入简单的推荐来连接逻辑流(或者,也可以使用基于非图形化规则的方法)。这里除了标准化传感器读数、输出功能和设备控制功能之外,提供其他标准化编程命令也是有用的,如用于发送RSS提要、发送和接收SMS消息、发送和/或接收推特消息等的命令。这样的消息允许“MP”系统进一步利用广泛的互联网和移动电话通信基础设施,并进一步增加了系统的通用性。
[0095]每个设备(200)、(201)、(202)可包含Imp通信模块发明的相同硬件实施例,每个设备常常加载有不同的任意设备软件。各Imp通信模块负责控制设备并根据需要向该设备提供与Imp云服务或其它指定的网络目的地/设备的连通性(203)。因此,单一物理位置(站点)或客户可能有许多任意设备,这些任意设备由很多不同的Imp通信模块控制。
[0096]在一个实施例中,可以通过本地网络(例如无线网络,这可以是家庭或企业网络)来将通信从连接到每个任意设备的每个Imp通信模块的通信传送到本地路由器(205),如WiFi路由器。随后,该路由器可以将业务传送到提供互联网连通性的互联网服务提供商,或者传送来自该互联网服务提供商的业务。请注意,虽然互联网连通性是非常可取的,但在一些应用中,如高安全性的应用,也可以使用替代的非互联网网络(例如,本地无线LAN网络)。
[0097]如(208)所示,多个站点/客户的Imp通信模块可以通过互联网连接到服务(Imp云服务);映射是很多(客户)到很多(服务器);服务器资源一般可以共享。[0098]图5给出了本发明的Imp通信模块如何操作的另一概要图,这次更注重组合视图,其示出了 Imp通信模块(152)的物理形式以及在各种任意设备(200)、(201)、(202)中的物理槽。图5还示出了可选的计算机化设备(300)和固态存储卡读取器(302),在某些实施例中,其可用于配置或编程Imp通信模块(152)与到服务(207)的网络连接。可替代地,该配置可通过其他方法,例如光学方法来完成,这将在下面进行论述。
[0099]图5还示出了到其他设备(304)或服务的互联网连接的一个示例。这里,为了简单起见,先前在图4中所示的本地网络(203)、(204)和本地路由器(205)的细节不再示出,但可假设其也存在于图5中。
[0100]可以看到,Imp通信模块(152)往往会插入到其各自的任意设备(200)、(201)、
(202)或可选的固态存储卡读取器(302)的各个槽(306)中。
[0101]这里相同的基本Imp通信模块(152)可首先被配置为本地网络配置(例如204,205,未示出)。在一些实施例中,这可以通过使用计算机化设备(300)(例如,配备有存储卡读取器302的标准计算机)与服务(207)建立连接(310)来完成,或者再次通过下面将论述的其他方法(例如光学配置方法)来完成。服务(例如,Imp云服务)往往由服务器(312)和数据库(314)构成。
[0102]服务器(312)和计算机化设备(300)可通过网络(310) —起工作以确定合适的网络配置数据,从而使所述通信模块(152)能够连接到本地网络(204)和路由器(205),然后连接到互联网(206)。出于安全考虑,在本地网络配置数据不需要被传递到服务器(312)。而服务器(312)可以简单地验证本地网络配置数据是否正确。可替代地,服务器(312)可以将有助于确定本地配置数据的软件以及有助于传送本地网络配置数据的软件发送到本地计算机化设备(300),并且将从计算机化设备(300)传送到存储卡读取器(302)或光学输出设备(例如,显示屏幕),并且最终到Imp通信模块(152),但是同样地,该网络配置数据需要不被发送回服务器(312)。
[0103]一旦Imp通信模块(152)已被配置有合适的网络配置数据,则该Imp通信模块可被安装到所选择的任意设备中,这里为设备(200)。一旦被安装到任意设备(200)中,所述Imp通信模块(152)可以读出任意设备的唯一 ID(151),并且还与服务(207),特别是服务器(312)和数据库(314),建立网络通信会话(316)。在该通信会话期间,Imp通信模块
(152)可以将其特定任意设备的唯一 ID (151)(这里为ID001)发送到Imp云服务(207)、月艮务器(312)和数据库(314)。然后,服务器和数据库可以使用这个唯一 ID作为数据库的索引(318),并检索操作为或作为该特定任意设备(200)的接口所需的合适代码(320)。这可以被发送回(316) Imp通信模块(152),并且该模块然后可以根据需要,既作为任意设备(200)的网络接口,又控制任意设备(200)。
[0104]注意,该方案是非常灵活的,并允许将同一 Imp通信模块(152)从任意设备(200)拆卸,并放置到任意设备(201)或(202)中。当发生这种情况时,Imp通信模块可以被配置为检测唯一标识码(151)的改变,并再次向Imp云服务207(例如,服务器312和数据库314)请求合适的软件或代码。
[0105]在Imp通信模块被配置之后,它就可以作为服务(207)与任意设备之间的网络接口,或者根据需要可以使任意设备开始与一不同的设备或备选服务(304)建立网络连接。
[0106]图6示出了任意设备(170)的一相当奇特但有用的实施例,其特点在于本发明的Imp通信模块(这里表示为173,而不是152)可插入的Imp槽。这个示例中的任意设备是标准的烤面包机,但是其增加有机动模具组件。
[0107]对于通常的烤面包机来说,所包括的电子电路(171)是最小的;当面包被插入并且被下拉到烘烤室中时,定时器被启动,从而启用加热元件。在定时器(其调整为褐变控制)到期之后,加热器自动关闭,烤面包被弹出。在该设备中,没有微控制器或其他高级智倉泛。
[0108]烤面包机电路还具有用于本发明的Imp槽、为其供电的电源(174)和机动模具
(172),机动模具(172)可在加热元件和烤面包的表面之间旋转,以便选择性地防止面包的部分从该元件接收热量。通过在烘烤周期的一部分期间在该元件和面包之间引入太阳图标,此模具允许例如该太阳图标可见于烤面包的切片上,其中该太阳图标对应的部分呈现出比周围的烤面包部分更浅的褐色。该器件还包含唯一 ID,这里表示为(175),而不是之前的(151),该唯一 ID用来将该设备标识为具有模具的烤面包机。
[0109]为了传达天气预报的基础知识,模具可能有4个图标;太阳、云、雨、雪以及一个无图标的部分,当未安装Imp通信模块(173/152)且图标已印之后,可使用该无图标的部分以确保所有的面包都受到一定烘烤。
[0110]如果没有卡(173/152),烤面包机像正常一样运行;模具保持在默认位置(无符号),并且烤面包机简单地烘烤。然而,当Imp通信模块(Imp卡)插入时,一系列操作发生:首先,Imp卡使用唯一 ID芯片(175/151)识别电器,并向(即通过WiFi网络发送无线请求至IJ)服务(207),(312),(314)请求合适的烤面包机操作软件。该服务发送回虚拟机程序,该虚拟机程序被加载到Imp卡的虚拟机中,并且该程序将Imp卡的电引脚配置为适应该电器的需求,在这种情况下,该需求为:用于“提供烤面包”的数字输入和在默认(零)位置的模具,用于定时器设置(褐变控制)的模拟输入和用以重写定时器和旋转模具的数字输出。
[0111]然后,Imp卡在几乎零功率模式下等待面包被插入,这在“提供烤面包”数字线路上用信号通知。当被看到时,卡向服务(207)发信号表示它需要为用户进行天气预报。该服务获取并解析针对用户的注册地址(例如用户的物理或IP地址)的本地天气预报,挑选与当天的天气最为相关的符号,并将其发送回烤面包机中的Imp卡,Imp卡的虚拟机程序适当地旋转模具,并且如果需要的话,基于用户已配置且卡已感测到的褐变设置来旋转模具,以延长烘烤时间以确保压印可被接受。
[0112]这个示例尽管还相当稀奇,但也说明了本发明如何使简单的任意设备能够在不过度增大任意设备的成本的情况下以在有趣和新颖的方式进行扩展。
[0113]进一步论述:
[0114]在替代实施例中,本发明也可以看作是一种在任意设备中嵌入灵活的、可动态重新配置的Imp控制器模块的方法,该Imp控制器模块常常作为具有标准固态存储卡的外形的插件模块,从而为该任意设备增加网络连通性。这种方法通常使用通信模块来操作,该通信模块包括:
[0115]1:处理子系统,其维持网络连接(以能够与服务交换数据),并且还在虚拟机环境中执行任意代码,以控制与它所插入到的设备并与之交互。
[0116]2:通信接口,将所述处理子系统连接到本地网络,并从本地网络连接到合适的服务,例如互联网服务器(312或304)。[0117]3:与任意设备的柔性电气接口,可以经常进行动态重新配置以适应设备的要求。
[0118]4:可选地允许Imp模块呈现出标准计算机外围设备的样子以便容易地由除了该任意设备之外的计算机化设备(如标准的台式机或膝上型计算机、笔记本、智能电话等)配置的装置(通常是通信模块内部运行的软件代码和合适的电子开关)。
[0119]如前面所论述的,在一些实施例中,此Imp通信模块可以是SD(安全数字)卡、USB棒的形式或者可以很容易地连接到计算机以用于配置目的其它方便的形式。这里,如前所述,将处理系统配置为使得该模块操作虚拟机(设备相关代码在该虚拟机中执行)可能是有用的。
[0120]使Imp通信模块采取普通或流行的固态存储卡形式的一个附加的优点是,这种形式增强了使用者处理Imp模块的舒适性和熟悉性,而且还为系统提供了标准化的电配合连接器的源。
[0121]如前面所论述的,从电的角度来看,在一些实施例中,Imp模块可以被配置成检测它合适被连接到用于配置的计算机上,并将其自身配置成(例如,重新配置其引脚的电性能和功能),呈现为一兼容设备(例如,标准存储卡),以便该计算机无需任何额外交互即可识别出该Imp模块。然而,当Imp模块然后连接到任意设备上时,所述Imp模块可以识别该设备(通常是通过读取设备的唯一 ID码,如前面所论述的),从服务器中加载合适的虚拟机代码,然后配置或重新配置该Imp模块的电气接口以满足不同应用的要求。因此,例如,当作为存储卡时,一个特定引脚可以被配置为仅用于数字I/O模式。但是同时作为到任意设备的接口,同样的引脚可以重新配置为用于模拟输入或输出。
[0122]再次,如前面所论述的,从网络连通性的角度看,在本地网络环境已经被感测到并且Imp通信模块已经被适当地配置(通常与远程互联网服务的协助下)之后,网络代码然后优选地以将Imp网络代码与特定于Imp任意设备的代码相隔离的方式在通信模块内的至少一个处理器上执行。这可以通过在至少一个Imp处理器上的Imp虚拟机或沙盒中运行特定于Imp任意设备的代码来完成。在这里,使用适当的语言,如前面所论述的Lua和Squirrel,可能是有用的。
[0123]因此,在Imp通信模块中的至少一个处理器上运行的Imp虚拟机将通常用于将特定于Imp任意设备的代码(在此Imp虚拟机上运行)与Imp通信的模块关键网络代码隔离。这种布置具有另外的好处在于它允许对Imp通信模块的设计进行更新,而无需更新特定于任意设备的代码。也就是,不管Imp通信模块的其余部分是什么版本级别,它均可以运行相同的标准化虚拟机,并且因此特定于Imp任意设备的代码与在Imp通信模块的其余部分的任何变化隔开。此特定于任意设备的代码当然会由在Imp通信模块的处理器上执行的网络代码提供连通性服务。但是,该网络代码不需要由虚拟机来运行,而是可以在虚拟机外运行,但可以可选地依赖于至少一些虚拟机的功能,以便为特定于任意设备的代码提供标准化接口。
[0124]示例:
[0125]图7示出了 “MP”通信模块(700)(这里,为SD卡形式),“MP”通信模块(700)连接到任意设备(在这里是光开关(704))中的“Imp槽”(702)的示例。在此背景下,示出了基于图形用户界面和web的编程IDE (706),其允许用户使用标准的web浏览器快速地配置Imp云服务来处理该具体的Imp/设备组合,以及使得该具体的Imp使能开关能够控制世界上任何地方的其他Imp使能设备。
[0126]图8示出了如何配置Imp云服务的更多的细节。(800)显示基于web的IDE的图形“框和连接箭头”编程模型,其使得用户能够使用标准的web浏览器对Imp云服务进行简单地编程。(802)和(804)中示出了用户可用的各种命令的一些细节。这些命令可以包括通知系统何时电力比平时更便宜的(即非高峰小时率)的命令,在有限或无限时段内周期性开关设备的命令,格式化消息的命令,对在线“ IMP”设备进行计数的命令,发送数据到pachube.com(现在为Cosm)即互联网web连通性服务的命令,将Imp输入数据与各种设置进行比较的逻辑命令,发送RSS提要的命令,接收和发送(例如,用于移动电话的)SMS消息的命令,从外部网页控制Imp设备的命令,依此类推。
[0127]图9示出了如何对Imp设备进行光学配置以用于无线网络接入的示例。因为这种光学方法使用闪烁光源,并且因为它有助于将Imp与网络连接起来,它偶尔被称为“眨眼(blinkup) ”步骤。这里,“Imp”通信卡(在这里为SD卡形式)进一步被配备以可见光光电检测器,该光光电检测器被连接到Imp微处理器(见图10)。在图9中(900),此Imp设备被放置在任意设备(904)的槽(902)中,在这种情况下该槽(902)是可切换的交流电源插座。在(906)中,用户对其智能手机(在这里为苹果iPhone4)进行配置,从而使该智能手机针对通过本地WiFi连接到互联网的网络连通性对Imp设备进行光学配置。
[0128]在这个示例中,通信建立使用以下协议:
[0129]?同步8个字节的OxAA(黑白交替屏幕):允许校准亮度和时间。
[0130].0Χ2Α数据前导字节
[0131].指示(后续的)总数据长度的字节
[0132]?数据包:一个或多个以下格式的数据包:1字节类型-1字节长度-长度字节的数据
[0133].CRC:对在总长度字节和用于错误检验的CRC之间发送的数据的16位CRC。
[0134]为什么要使用这样的光学配置方法?如先前在通过引用并入本文中的母案临时专利申请61/583,299中所论述的,联网设备的一个问题是将它们设置完备可能是复杂的。为确保安全操作,联网设备通常需要知道一些私钥(对于WIFI网络,最少要知道网络名(SSID)和网络密码)。
[0135]各种现有技术的方法被设计为改进这种网络配置的经验,包括WPS(WiFi保护设置),它在WiFi接入点和设备上均使用一种特殊的无线模式和WPS使能按钮,以便于接入信息的空中交换。虽然这种现有技术方法的硬件实现可以是很简单的(只需要在设备上增加一个按钮),但问题是,对于设备厂商来说,为了确保与所安装的基本WiFi接入点的最大兼容性,联网设备还必须支持手动输入网络配置数据(例如,SSID和密码)的较旧方法。
[0136]由于需要输入网络配置数据(例如,SSID和密码信息),实现这样的网络方案可能是复杂和昂贵的。最起码,往往需要多个按钮和显示设备。对于某些设备,这可能是可以接受的,因为它们已经具有可以允许这样的配置信息被输入的用户界面,但往往用户体验可能是令人沮丧的,因为密码可能很长并且输入起来比较复杂,而屏幕可能较小且难以阅读。
[0137]一些厂商,尤其是具有尚无用户界面来接受SSID和密码输入的设备的厂商,通过在其设备上纳入USB插头来解决这个问题,以允许将其设备连接到PC进行配置。这提高了用户的体验,但同时需要电缆,并且需要再PC上加载专用软件,这导致了更大的成本和复杂性。
[0138]为了减轻这种配置方案的负担,在本发明的一些实施例中,各种Imp通信模块可以另外被配备以连接到处理器的光电检测器。当完成时,可使用具有光学显示屏幕或其它光学设备的通用计算机化设备来传递用于联网设备的初始设置信息。
[0139]各种方法可以被用来产生调制光信号以对Imp通信模块进行光学配置。在一些实施例中,计算机化设备(例如,智能电话或平板电脑)可以用来(通常通过智能手机的显示屏)生成用以发送网络配置和/或设置信息的随时间变化的光图案。因为这样的智能手机和平板设备现在几乎无处不在,因此这种方法具有充分利用用户既已经拥有并熟悉的设备的优势。智能手机和平板电脑的一个附加优点是,因为它们是手持的,因此它们可以很容易地根据需要被拿到Imp光学传感器(例如光电检测器)附近。
[0140]这种光学配置方法的一个额外的优点是,需要被内置到Imp通信模块中的Imp光学传感器(例如,光电检测器)的设备往往很便宜,比任何连接器都便宜,而且非常坚固。这种光电检测器不需要如连接器或按钮通常所需要的额外的保护电路。事实上,即使当Imp通信模块被安装在可能已经具有能够被用于SSID和密码输入的用户界面的任意设备中时,本发明的光学编程方法仍然比其他方法具有更为显著的用户友好性。
[0141]在该方法的一个实施例中,如图10所示,光学设备(光电检测器,光电传感器)包括但不限于光电晶体管或光电二极管/简单的光传感器等中,被耦合到Imp通信模块设备的处理器。这里没有必要使用一个红外敏感的光电检测器(但也可以使用红外敏感的光电检测器)。当然也可以使用光(可见光)敏感的光电检测器。因此,在本说明书中所示的示例中,Imp设备光电检测器对可见光光谱(例如,由计算机化移动设备的显示屏幕产生的光谱)敏感。可替代地,在其它实施例中,光电检测器Imp可由滤光器材料进行包装或以其他方式覆盖,以使光电检测器只对某些波长敏感。
[0142]在此处所示的Imp原型设备中,使用了无内置滤光器的光电检测器,因为这允许Imp设备被由计算机化设备显示屏幕(例如,智能电话,平板电脑等)所产生的可见光容易地编程。
[0143]需要在典型的Imp网络配置设置(例如Imp通信模块配置会话)交易中发送的网络配置信息的量相对较小,通常小于100字节。因此,可以使用相对简单的编码方法来发送该小量的数据。作为一个非限制性的示例,这样的网络配置数据可以由最高达32个字节的本地WiFi网络的SSID (网络名)和最高达32个字节的密码以及各种类型的通信开销(前导字节、控制字节、校验和,等等)构成。
[0144]智能手机经常以恒定的频率(如60赫兹)刷新自己的显示屏幕(例如,一个显示屏幕帧每1/60秒刷新一次)。在一个实施例中,发射设备可以在每帧更新或刷新周期对一个比特的数据进行编码。虽然不旨在进行限制,这种类型的方案具有的优点是,它允许一个计算机化设备(如智能电话)的整个显示屏幕被用来发送数据。这又可以更容易地对齐智能手机(发送计算机化设备)与Imp通信模块上的光电检测器(这里作为光学接收器)。
[0145]因此,假设使用智能手机或平板电脑的显示屏幕作为光学发送器,那么假设每秒约60帧的恒定显示屏幕更新速率,智能手机能够以每秒60比特的数据速率发送配置数据。因此,使用这些方法,将大约需要8.5秒来发送64字节的网络配置数据。一旦网络配置已经建立,也可以使用该方法来发送其他信息,如可以用作针对其他用途的软件令牌的各种数据块。
[0146]对于无法达到每秒60帧的刷新速率的智能手机或其他发光器件,可相应地降低数据速率。类似地,对于可以维持每秒更多帧的发光器件,可提高数据速率。
[0147]通常,附加数据,例如确立定时和光级度信息的头部,可以在数据之前被发送,长度字节和校验和或CRC可以在数据之后被发送,以确保无损地到达的数据也将被发送。
[0148]如前面所论述的,作为一个非限制性的示例,在一个实施例中,可以通过使智能电话显示屏幕或其它光源(例如,由另一网络连接的Imp或“在中间的MP”控制的光源)发送32个循环的交替的白/黑(二进制1/0)光学图案,来启动头部。这个前导允许Imp设备确定发送的开始,并且也允许建立同步。在这个前导之后,光学发送器随后发送单个“魔术字节”,例如十六进制0X2A十进制42,以表示实际数据包有效载荷(即网络配置数据)的开始。该系统还可以发送长度字节来表示跟随的数据的长度。然后可跟随以由长度字节指示的长度的数据,且在一些实施例中,可以使用(使用对长度字节和数据字节的CRC-16计算出的)2个字节的CRC的数据或其他错误检测和/或校正码来结束发送。
[0149]为了进一步减少发送时间,使用灰度或均匀颜色(如果Imp设备具有颜色敏感的光电检测器)来提高数据速率,从而在每个显示屏幕刷新期间的时间内发送多于I比特。
[0150]因此,例如,所述光学配置系统可以使用两个光级度来指示每帧的单个比特的信息(I帧=黑色或白色=O或I比特的选择)。如果除了黑色和白色之外还使用两个灰度级,则每帧可以传送2比特的信息(级别0,I, 2,3 = 二进制00,01,10,11)。利用8个强度级别,该系统在每帧可传送3个比特,等等。这会导致数据的传递速度加快到2或3倍。
[0151]为了执行设置操作,用户可以经常使用此目的而设计的app (软件应用)在他们的移动设备上输入必要的细节。可替代地,移动设备上的发送应用app可以被设计为从该设备自己的无线设置自动提取必要的细节。这显示在图9 (906)中。然后,用户按下开始按钮,这将提示用户将移动设备的屏幕转向光学设备,并启动可听的倒计时。
[0152]然后,用户将移动设备屏幕拿到Imp通信模块上的光电检测器(例如,接收器的传感器)附近,最好尽可能地接近,以最小化环境光所造成的任何信号失真。这显示在图1IA (904),(906)中。
[0153]然后,用于Imp通信模块的网络配置数据被光学地发送。当传输完成后,该app可以通过发出指示外城的另一移动设备提示(例如,音频“嘟”)来表示完成。这是对将移动设备屏幕拿到Imp附近的用户有用的,因为此时该用户可能难以直接阅读屏幕。
[0154]然后,Imp通信模块可以验证网络配置,并且可选地通过其他可见指示器(这里,Imp通信模块为此目的可能有一内置的发光二极管)来指示成功,或者通过移动设备的UI利用新建立的网络连接向服务器发送“连接成功”的信息(该服务器随后将该消息中继到用户拿着的移动设备(例如智能电话))来指示成功。
[0155]图10示出了图9中的Imp (900)和图9中的智能电话(906)的示意图。
[0156]图1lA示出了用户将智能手机(906)拿到AC电源开关的下部上的Imp,这样就产生一调制光信号,该调制光信号将本地网络配置传送到Imp。然后,用户将一串灯(1100)插入Imp使能的AC电源开关,以便稍后表明该系统在操作中。在这里,交流电源开关(904)任意设备的底槽上的Imp (900)已部分地从槽中取出,以便更好地显示AC电源开关已经MP使能。[0157]用于任意设备制造的光学网络配置和软件令牌方法
[0158]上面描述的通常被称为“blinkup”方法的光学配置方法,除了有助于用于可拆卸Imp或嵌入任意设备内部的Imp的网络配置过程,也可以用于其他目的。一个重要的附加用途是协助制造配备有Imp槽或配备有嵌入式Imp的任意设备。
[0159]在一个实施例中,本发明也可以是至少自动配置任意非联网设备的软件网络接口(例如,外部连通性路径)的方法。这里,除了例如网络配置之外,光学方法还可用于在制造过程中监视任意设备的产量,以及以促进将唯一 ID码(其与任意设备本身相关联,或者被存储在嵌入式Imp的存储器中)与用于操作该类型的任意设备的适当代码(软件)进行关联的过程。
[0160]如前面所论述的,可拆卸Imp来说,包含唯一 ID码的芯片通常将通过Imp槽的方式被制成任意设备的电路的一部分。然而,在使用嵌入式Imp的情况下(即,其中Imp通信模块被焊接到任意设备的电路上,或被放置在内部槽中,使得终端用户不会想要去移动该Imp),这种唯一 ID码是没有必要的(但如果需要的话,也可以使用)。相反,为了减少费用,唯一 ID码本身可以被放置在不可拆卸的(即嵌入式)Imp通信模块的存储器中。由于Imp模块被固定在任意设备上,这将当然,因此不可逆转地将唯一 ID码与该特定的任意设备进行关联。
[0161]也应当清楚的是,当Imp拟通过例如焊接嵌入到任意设备电路中时,不一定需要将Imp电路包围一外壳,例如SD存储卡的情况。相反,可以直接使用Imp电路模块,而无需这样的外壳。
[0162]因此,在一般情况下,无论是任意设备或还是通信模块都将具有能够发送唯一标识数据的唯一 ID存储记忆设备。对于嵌入式Imp来说,该唯一 ID存储记忆设备可以简单地为标准Imp固态存储器,但是,当然,唯一 ID码将优选被放入嵌入式Imp通信模块的固态存储器的受保护部分中,例如,写保护部分。
[0163]为了协助任意设备的制造和/或将唯一 ID码与合适的软件进行关联的过程,除了使用基于MP光电检测器的光学配置界面来将无线网络配置数据加载到设备(从而允许Imp通信接口与计算机网络建立无线网络连接)之外,本发明还可以使用基于软件令牌的方法来帮助将唯一 ID与往往在任意设备的整个寿命中使用的代码进行关联,以确保适当类型的软件代码被加载到任意设备的Imp。
[0164]软件令牌(硬件识别令牌)本身不需要过于复杂。它可以是任何一组比特或字节,例如一个标识编码,字母数字代码,等等,其用来表示到底什么类型的软件代码应该在与该特定的任意设备相关联的Imp上运行。因此,举例来说,由“Toastermatic公司”为烤面包机版本I制作的软件令牌可以是字母数字串,如:“toaster vltoastermatic inc”,或者可以是可被软件服务器(例如,基于远程互联网的服务器)用来将软件令牌与特定类型的代码(例如,toaster Vl代码)进行链接的数字。软件令牌也可以比这更复杂,即可以有不同的安全比特或数字,可以有以加密形式存储的信息,等等,只要该令牌执行将任意设备的电路与特定的唯一 ID码进行关联以校正对应类型的软件代码的目的。
[0165]通常,软件令牌或硬件识别令牌不必用于在任意设备首次连接到服务器时识别该任意设备之外的任何目的。它使服务器能够执行的关联步骤,但不需要被用于其他目的。一旦执行了初始连接和标识,该服务器存储唯一 ID与硬件类型之间的关联,而令牌不会再被引用。
[0166]在一个优选的实施例中,为了提高安全性,该软件令牌可以是随机数,例如64位的随机数,而不是显示为未加密形式的特定设备名称或固件名称的字符串。但是,也可以其他的数字作为软件令牌。
[0167]所有的Imp —般都配置了自己的唯一媒体访问控制(MAC)地址。这个MAC地址唯一地标识Imp网络地址,并且可以例如是48位或64位的代码。在一些实施例中,当正在使用Imp登记卡时,此Imp的MAC地址本身可以作为软件令牌(硬件标识令牌)。这里,例如,制造商可以通过联系Imp控制服务器,输入该Imp的MAC地址(假设这个地址印在Imp卡的背面,或以其他方式提供),并告诉服务器:具有特定MAC地址的Imp将被用作特定任意设备(例如,烤面包机)的Imp登记卡,来将可随意拆卸的Imp指定为Imp登记卡。然后,该服务器可以把MAC地址视为软件令牌的类型,并进行相应处理。
[0168]在一些实施例中,也可以使用其他类型的令牌来启用其他类型的关联,例如,将任意设备与特定的用户(例如,用户关联令牌)进行关联。这里,例如,如果烤面包机厂商希望特定设备(例如烤面包机)与特定的用户进行关联,则也可以设计被用户用来配置任意设备的智能手机app,以提供表示该特定用户的用户关联令牌,并且这个用户关联令牌也可以被光学地发送到Imp。
[0169]这样一来,当任意设备连接到Imp服务服务器时,用户关联的令牌可以例如被传递到任意设备厂商的服务器上,从而使任意设备厂商知道该任意设备(在这里,仍为烤面包机)属于哪个特定的用户。烤面包机厂商的服务器便拥有了存储烤面包机的唯一 ID和特定的用户帐户之间的关联的选项,尽管更一般的Imp服务服务器可能不会去跟踪此信息。
[0170]在软件令牌(硬件标识令牌)已被(通常被任意设备制造商)初始地用来将特定唯一的ID码与特定类型的软件代码进行关联,且这种关联随后被存储在服务器中之后,软件令牌则不再必须使用。相反,服务器然后可以将唯一 ID码直接与该类型的代码进行关联。在制造过程中进行的基于软件令牌的关联过程的基本逻辑可以是这样的:
[0171]1:软件令牌最初与适当类型的代码关联(通常在服务器中)
[0172]2:制造商将任意设备(或者嵌入式Imp/任意设备)唯一 ID码与软件令牌进行关联,并且将此关联发送到服务器。可替代地,制造商可作出登记设备(例如Imp,在中间的Imp,登记Imp)和硬件类型之间的关联,并且系统可以生成引用该关联的软件令牌。
[0173]3:服务器,知道该软件令牌与适当类型的代码相关联,并知道唯一 ID码与软件令牌相关联,从而可以制作逻辑连接,并存储唯一 ID码因此与适当类型的软件代码相关联的记录。
[0174]各种基于软件令牌的方法可用于将唯一 ID码与适当类型的软件代码进行关联。
[0175]在一个非常适合于嵌入式Imp通信模块的情况的实施例中,在前面所论述的光学配置方法除了发送无线网络配置数据之外,也可以用来将软件令牌加载到嵌入式Imp的存储器。其结果是,当嵌入到任意设备的Imp与适当服务器建立连接时,除了向服务器发送所述嵌入式Imp/任意设备组合的唯一 ID码之外,该软件令牌也可以被发送到服务器。该服务器可以针对许多不同类型的不同任意设备处理多种类型的不同软件代码,并且通常在特定软件令牌与特定类型的任意代码之间进行关联之前配置该服务器。
[0176]其结果是,当服务器看到到来的来自特定嵌入式Imp/任意设备组合的软件令牌和唯一 ID码对时,该服务器知道到来的软件代码与什么类型的代码相关联,因此可以作出唯一 ID码与适当类型的软件之间的逻辑关联,然后将此逻辑关联存储在存储器中以供将来使用。这将来使用可以包括用于软件更新等。
[0177]例如,考虑一个以100个设备为一组来制造任意设备的生产工厂。所有这些任意设备可以都具有嵌入式Imp,并且对于为任何类型的任意设备生产的任何嵌入式Imp,这些嵌入式Imp可以是相同的(即,相同的硬件,相同的初始软件套件),例外仅在于每个嵌入式Imp可以具有其自己的存储在存储器中的唯一 ID码。
[0178]一旦Imp被嵌入到一任意设备中,则该唯一 ID码随后与该任意设备相关联。但是,如何告诉Imp软件服务器该唯一 ID码与烤面包机相关联,而不与某其它设备(例如,灯开关)相关联? Imp控制服务器如何知道向该特定的烤面包机嵌入式Imp发送合适的烤面包机代码?
[0179]为此,烤面包机制造商将与Imp软件服务器的管理者一起工作,并且他们将设立烤面包机软件令牌,并且将合适类型的烤面包机软件代码(其与烤面包机软件令牌相链接)存放于服务器处。注意,令牌与该类型的代码的关联可能偶尔是复杂的,因为多种类型的硬件可能共用相同的软件代码。这里,关键是形成唯一 ID与硬件类型之间的关联,并且硬件类型随后可规定被发送到Imp的软件。
[0180]嵌入式Imp通信模块可以被初始配备以设置代码,该设置代码指令嵌入式Imp在初始光学配置数据组中除了包含无线网络配置信息之外还将包含软件令牌。该初始设置代码将指令嵌入式Imp在进行网络连接之后与服务器建立连接,并且向服务器发送其各自的唯一 ID码和所接收的软件令牌。该联网服务器随后可存储该唯一 ID标识数据(唯一 ID码)与合适类型的软件代码之间的关联的记录。
[0181]该初始设置代码可选地还可以指令嵌入式Imp从服务器下载其他代码,例如任意设备制造测试代码和/或任意设备操作代码。注意,该设置代码因此是非常通用的,并且拟嵌入到任何类型的任何任意设备的任何嵌入式Imp由此可利用相同的设置代码进行初始配置。这极大地提高了制造灵活性,并且极大地降低了成本,因为嵌入式Imp模块可以作为一完全通用或相同的产品根据需要以数以百万的量进行生产(可能的例外在于,每个嵌入式Imp将存储其自身的唯一 ID码)。
[0182]返回到制造工厂示例,制造商可以同时测试并配置他的100个“烤面包机”任意设备的组。为此,制造商可以设置由软件控制的光源(其自身可以由“在中间的imp”进行控制),(根据需要)一次性开启所有的烤面包机,并且将光源编程为向100个烤面包机的组发送网络配置数据和“you are a toaster vl”类型的软件令牌。该烤面包机的组使用其嵌入式Imp和设置代码,可获取光学发送的网络配置数据、光学发送的软件令牌,并且利用一系列消息(例如,Imp 22359, “I am a toaster vl”, Imp22360, “I am a toaster vl”...(Imp22459, I am a toaster vl”)与服务器接触。随后,该软件服务器可将该关联存储在存储器中,并且又将合适类型的toaster vl测试或操作代码发送到该烤面包机组。
[0183]该系统还可以帮助向制造商和制造商的客户提供有用的制造信息。例如,假设服务器初始将烤面包机测试代码发送回该100个烤面包机任意设备的组。该100个烤面包机的组可以对自身进行测试,并且也许98 %的烤面包机向服务器报告“成功”,并且2 %的烤面包机可能向服务器报告“失败”。该信息可被制造商和制造商的客户(例如,已与制造商签订协议以购买大量烤面包机进行转售的公司)用于质量保证和计划目的。在烤面包机生产完毕时双方可以立即知道,并且可以知道已有多少件通过他们的测试。这可以极大地协助后续的计划和过程优化。
[0184]将系统配置为使得当测试成功时将软件令牌-唯一 ID关联仅存储于服务器中,往往将是有用的。这样一来,未通过测试的任意设备将根本不会获得任何操作软件。这允许有缺陷的任意设备(如果它们故意或非故意地“逃出”工厂)被更容易地区分开来。
[0185]相同的基本方案还可以用于使用可拆卸的Imp的配备有槽的任意设备,唯一的区别在于,这里,唯一 ID码将由Imp从任意设备获取,而非从Imp自身的固态存储器获取。因此,以上考量、特征和益处同样适用于使用可拆卸的Imp通信模块的配备有槽的任意设备。
[0186]还可以实现软件令牌方法的一个替代实施例,其非常适合于可以在配备有槽的任意设备之间进行切换的可拆卸的Imp通信模块,并且其中,由此,唯一 ID码作为任意设备电路的一部分(这里,其可以为作为任意设备电路的一部分的Imp槽)。
[0187]在该替代实施例中,虽然可以可选地使用光学网络配置方法,但是也可以作为代替地,通过使用便携式“Imp登记卡”来提供软件令牌以及可选地提供网络配置信息。该便携式Imp登记卡将被配置有设置软件、合适的软件令牌,并且可选地甚至配置有网络配置信息,以便制造商至少不需要在制造工厂中使用光学配置。当制造工厂任意设备从组装线上流出时,Imp登记卡(或多个卡,可使用任何数量的卡来加速制造)可以被暂时地插入到制造工厂任意设备中,这里仍可能为烤面包机。该可能被预配置为用于本地无线网络接入的登记卡将在每个任意设备离开组装线时,读取该每个任意设备的唯一 ID码,并且将该唯一 ID码与存储在登记卡中的软件令牌一起报告给服务器。随后,服务器可以像之前那样制作该特定任意设备的唯一 ID码、软件令牌与软件令牌类型的软件代码之间的逻辑关联,并且再次存储特定任意设备的唯一 ID码由此连接到合适类型的软件代码的记录。根据需要还可以可选地进行另外的任意设备测试,并且将结果报告给服务器。一旦完成之后,可以将Imp登记卡从该特定的任意设备中拔出,并且再次使用该Imp登记卡来登记离开制造商的组装线的下一个任意设备。该过程可以相对较快,在每分钟在Imp服务器上登记一新的任意设备的量级上。
[0188]可替代地,该Imp登记卡方法通常对于任意非联网设备具有能够容纳可拆卸Imp通信模块的槽的情况是最佳的,并且其中任意设备(经常通过嵌入式Imp插槽)具有能够发送唯一标识数据的唯一 ID存储记忆设备,该Imp登记卡方法可以提供如下软件令牌:
[0189]操作者通常将第一可拆卸Imp通信模块(登记Imp,在登记Imp内部固态存储器中包含合适的软件令牌)插入到任意设备的Imp槽中。登记Imp (经常被预配置有无线网络配置数据)将与联网服务器建立网络连接,并且将任意设备的唯一 ID码和登记软件令牌发送到联网服务器。这允许联网服务器记录该特定的任意设备的唯一 ID码与由登记Imp提供的软件令牌之间的关联。
[0190]例如,如果任意设备再次为烤面包机,则登记Imp可以携带将登记Imp标识为烤面包机登记Imp的软件令牌,并且服务器可以识别出任意设备的唯一 ID应当与烤面包机类型的软件代码相关联。
[0191]因此,该软件令牌可选地可被联网服务器用来选择操作Imp通信模块的类型的代码。在该选择之后,联网服务器通常将存储唯一 ID与适合于与具有该唯一 ID的任意设备一起使用的类型的代码之间的关联的记录(或将该记录发送到另一服务器)。
[0192]在该登记之后,通常在第一登记Imp卡从任意设备的槽中拔出之后,任意设备通常将会被配送给客户。
[0193]例如,当客户随后使用第二可拆卸Imp通信模块(即任何可拆卸Imp,其通常在其内部固态存储器中将不包含软件令牌)将其插入到任意设备槽中时,该第二 Imp通信模块(通常在可选的光学网络配置步骤之后)可以包含来自任意设备的唯一 ID,并且将其发送到联网服务器。
[0194]该联网服务器又可以使用该唯一 ID来选择操作该第二可拆卸Imp通信模块的类型的代码。如之前那样,为此,该服务器将记录该任意设备的唯一 ID与为此的合适类型的软件代码之间的关联。
[0195]无论Imp是可拆卸Imp还是嵌入式Imp,针对所有基本光学配置方法软件令牌方法的共同点在于,各种方法使用无线网络连接,并且具有唯一 ID和/或软件令牌,以加载操作Imp通信模块的代码。
[0196]进一步地,作为普通要素,唯一 ID数据和/或软件令牌被联网服务器用来选择操作通信模块的类型的代码,并且其中,该联网服务器还存储唯一 ID数据与用来运行该类型的任意设备的合适类型的软件代码之间的关联的记录。
[0197]进一步地,作为另一普通要素,当通过网络向Imp通信模块发送针对任意设备的命令或数据时,这些命令或数据由运行合适类型的代码的至少一个Imp处理器来解释。通常,该至少一个处理又将发送控制信号到任意设备的电路。
[0198]作为补充或替代地,当来自任意设备电路的命令或数据被发送到所连接的Imp通信模块时,这些命令或数据由运行合适类型的软件代码(例如,软件程序)的Imp处理器来解释,并且,处理器根据需要又使用Imp通信接口将这些命令或数据发送到各个网络目的地。
[0199]图1lB示出了 “Imp登记卡”和软件令牌如何用于创建唯一 ID与针对给定任意设备的合适类型的软件代码之间的关联。
[0200]在图11中,“烤面包机”任意设备的制造商可以通过与服务器(312)的操作者一起工作来开始该过程,设立适当的“烤面包机”软件令牌,并且往往还将与该特定令牌相关联的“烤面包机”类型的软件代码的副本存放于服务器。该制造商(或其他方)随后可通过例如通过使用互联网浏览器(1120)通知服务器(312)制造商打算使用该Imp作为登记Imp,来将可拆卸Imp (1122)配置为“烤面包机登记Imp”。该制造商可以例如读取Imp的MAC地址(其往往印刷在Imp的背面上),通知服务器(312)该制造商希望作用于什么类型的任意设备(例如,烤面包机)。该服务器(312)随后可以使用该特定Imp的MAC地址作为软件令牌,并且将该MAC地址与合适的任意设备硬件类型和代码类型相关联。该服务器还可以根据需要下载任何合适的任意设备测试或设置软件到该登记Imp (1122)上。
[0201]注意,在任何任意设备登记完成之前,如(1124)所示的服务器的存储器(14)的状态为使得虽然软件令牌“烤面包机”与“烤面包机硬件”相关联,并且因此与“烤面包机类型代码”相关联,但是也可能并没有任何任意设备唯一 ID与烤面包机软件令牌或烤面包机类型代码相关联。然而,假设服务器(312)和存储器(314)处理多种类型的任意设备(例如,灯开关1126),则与灯开关(1126)相关联的其它唯一 ID码(例如ID:00η)可能之前已经与软件令牌和适合于它们的设备的类型的代码相关联。
[0202]在该示例中,制造商可以通过首先将登记Imp(1122)插入到烤面包机(1128)中来开始登记烤面包机任意设备(1128)和(1130)。该登记Imp将读取烤面包机的唯一ID(ID:001),与服务器(312)建立无线网络连接,并且将其与烤面包机软件令牌(例如,登记Imp(1122)的MAC地址)一起发送到服务器。随后,该制造商可以将登记Imp (1122)从设备(1128)中拔出,并且将其插入到下一个设备(1130)中。再次,登记Imp将该设备的唯一 ID码(这里为:ID:002)与烤面包机软件令牌一起发送到服务器。这些操作的最终结果然后可以如(1132)被存储在服务器的存储器中。服务器现在知道任意设备ID001已被登记为烤面包机,并且任意设备ID002也已被登记为烤面包机。一旦登记Imp(1122)已被拔出,并且烤面包机(1128)和(1130)被发出到该区域,那么无论何时当新的Imp被插入到烤面包机中时,服务器将能够读取唯一 ID,并且根据需要将合适的烤面包机代码和数据发送到控制这些任意设备的Imp。
[0203]用于嵌入式Imp的软件令牌的一般原理是非常相似的,除了对于嵌入式Imp来说,软件令牌可以通过相同的光学方法传递到嵌入式Imp,该光学方法还可以用来对嵌入式Imp进行网络接入的配置。因此,Imp登记卡不是必需的,相反,软件令牌可以通过光学“眨眼”的方法来传递。在这种情况下,软件令牌很有可能不是MAC地址,而可能是某些其它比特序列,例如之前论述的64位随机数。
[0204]图12示出了用户使用基于web浏览器的图形编程系统来使Imp云服务(1200)将图7中的Imp使能灯开关(704)配置为现在控制(1202) Imp使能AC电源开关(904)的操作。
[0205]这些基本方案的其它变型也是可行的。
[0206]对于拥有Imp槽的任意设备,替代的过程为:
[0207]1.将登记Imp(被服务器已知为在工厂中用于将唯一设备ID与硬件类型相关联的Imp)插入到新的任意设备中。
[0208]2.登记Imp使用先前存储在其非易失性存储器中的本地WiFi配置参数或证书来建立与服务器的连接。
[0209]3.服务器向登记Imp发送适合于该设备的工厂测试软件,工厂测试软件在Imp虚拟机(VM)软件环境中运行。
[0210]4.运行测试软件。如果测试(检查任意设备的功能)通过,则测试软件告诉服务器,设备通过,并且服务器然后存储设备的ID与硬件类型之间的关联,以便将来该设备获得正确的软件。该服务器还存储设备被正确“构建”的记录。
[0211]5.如果测试失败,则该测试软件告诉服务器,并且服务器记下设备未能通过测试。
[0212]可替代地,对于具有嵌入式Imp通信模块的任意设备单元
[0213]1.仍可以使用登记imp,但是,嵌入式Imp设备中不存在槽可被插入,作为替代地,登记Imp通过发送“眨眼包”,即包括网络设置信息和对设备的硬件标识令牌(软件令牌)的光学光脉冲,来操作。
[0214]2.任意设备/嵌入式Imp的组合连接到本地WiFi,并且将软件令牌发送到服务器。
[0215]3.服务器将该令牌识别为工厂令牌,并向该设备发送测试代码,该测试代码再次在嵌入式Imp虚拟机(VM)软件环境中运行。随后如上执行后续步骤4和5。
[0216]在图12(1210)中,用户现在使用Imp使能灯开关(704)来经由Imp使能AC电源开关(904)控制灯(1100)。注意,控制路径经过如图3和4所示的Imp云服务(207)和服务器(312),由此Imp使能AC电源开关(904)可字面上地位于远离Imp使能灯开关(704)的世界的另一侧,并且假设互联网连接良好,则系统可完美地工作。
[0217]图13示出了如何快速地将Imp使能湿气检测器(1300)和Imp使能伺服电机(这里,连接到2x3英寸的具有大的卡板指示器的白板(1302),白板上具有手绘水平标记)配置为使得当湿气检测器被浸入到一杯水(1304)中时,临时水平显示设备几乎立即像巨型液面计(1306)那样运行。再次,因为连接的“胶合”逻辑和通信路径经过Imp云服务(207)和服务器(312),因此实际的计量仪(1302)可以位于任何地方,例如字面上地位于世界的另一侧。
[0218]图14给出什么是字面上的“更好的扑鼠器”的示例,该“更好的扑鼠器”根据本发明已被网络使能。这里,Imp槽(通用Imp插槽)被示出为(1400)。该Imp槽随后被安装在电子扑鼠器设备(1402)中,并且Imp(1404)被示出为从所安装的Imp槽突出。这里,Imp使能扑鼠器的实际成本仅在正常零售价格约为20美元的扑鼠器上增加了大约一美元的材料费。
[0219]更具体地,Victor M2524电子扑鼠器是一种低成本(大约20美元)的电池供电的电子设备,其利用高压电击(1404)人道地杀死老鼠,其以大约I美元的成本被改进为还包括Imp适配器(Imp槽)(1400)。该改进的电子扑鼠器现在是互联网使能的,并且可以例如在设备已捉到另一只老鼠时通知其用户(无论用户在世界上任何地方)。
[0220]其它类型的应用的示例包括能够经由移动电话SMS消息解锁的Imp使能门锁,可以将Imp使能湿气和温度传感器与互联网可用的天气预报相集成的复杂植物浇水系统相应地利用Imp使能水控制阀或泵智能地给植物浇水。Imp使能洗衣机或烘干机可以在洗涤完成时向用户发送文本消息。Imp使能运动传感器可以被放置在老人或残疾人的家中,并且如果运动传感器检测到老人或残疾人在个人的正常时间参数内尚未访问特定的房间,例如厨房或浴室,则Imp云服务可以被设置为向负责人或服务发送文本消息或其它警告信号。
[0221]因此,本发明使得在其它情况下通常不会被web使能的极低成本的设备被web使能变得经济可行。
[0222]另外的软件和硬件论述和示例
[0223]Imp设备和软件通常将支持各种无线互联网加密方案,例如WEP、WPA和WPA2加密方案以及WPS设置。
[0224]如在本说明书其它地方所论述的,Imp设备软件通常可以由厂商或用户使用基于web的集成开发环境(IDE)来开发。这里,例如,基于web的控制台可以显示有多少个用户关注的Imp使能设备是在线的,并且该系统还允许软件更新能够通过诸如Imp云服务之类的互联网服务即时推送到客户处。
[0225]还如在本说明书其它地方所论述的,Imp使能设备可以由一个或多个互联网服务器(例如图5中的(312),例如Imp云服务)控制或管理。原理上,这种Imp云服务可以服务于任何地方,从一个Imp或Imp使能设备到世界上的所有Imp。这种标准化Imp云服务因此可将厂商从操作其自身的Imp控制服务的需要(尽管他们根据需要和协商当然可以这么做)中解放出来。
[0226]如之前所论述的,本发明还可以使Imp能够与诸如蜂窝电话和智能电话之类的电话进行交互、交换消息并且被其控制。例如,智能电话app可以被开发,以允许各种Imp相关的迷你小应用程序显示在该app内。这些app可以允许从单个应用程序监测和控制各种Imp使能独立设备,并且这再次极大地降低了开发负担。另外,Imp控制互联网服务器或Imp云服务可以提供应用程序编程接口(API)以进一步降低厂商的开发负担。
[0227]Imp云服务还可以允许各种各样的Imp使能设备通常通过各种网关(例如,电子邮件、SMS和推特网关)与其它标准互联网通信方法交互。Imp云服务还可以允许来自多个厂商的不同Imp使能设备在一起和谐地工作。
[0228]如之前所论述的,为了便于对各种任意设备进行Imp使能,进一步提供标准化槽设备(Imp槽)往往是有用的,该标准化槽设备能够接纳Imp通信模块设备,并且随后容易地被任意设备的厂商集成到任意设备中,从而对任意设备进行Imp使能。在某些实施例中,能够利用最小材料清单(BOM)以低于大约一美元的成本来构建这种标准化槽设备。以下的表1中示出了提供标准化槽设备所需的最小电路的示例。
[0229]表1:1mp槽(标准化槽设备)中的部件的示例
[0230]
【权利要求】
1.一种为任意非联网设备自动配置用于通信模块的软件的方法,所述任意设备具有实现该任意设备的功能的电路,所述方法包括: 为所述任意设备提供通信模块,所述通信模块能够将控制信号传送到所述电路中的至少一些电路中; 所述任意设备或所述通信模块还具有能够发送唯一标识数据的唯一 ID存储记忆设备; 所述通信模块具有能够与计算机网络建立无线网络连接的通信接口,以及能够读取光学发送的配置数据的光学接口; 所述通信模块具有能够存储代码和数据的内部固态存储器; 所述通信模块具有至少一个内部处理器,所述至少一个内部处理器被配置为至少当所述通信模块被连接到所述任意设备时执行所述代码; 使用所述光学配置接口来将无线网络配置数据加载到所述设备中,从而允许所述通信接口与计算机网络建立无线网络连接; 使用所述网络连接以及所述唯一标识数据或软件令牌来加载用以操作所述通信模块的代码; 其中,所述唯一标 识数据或所述软件令牌被一联网服务器用来选择用以操作所述通信模块的类型的代码,并且其中,所述联网服务器存储所述唯一标识数据和所述类型的代码之间的关联的记录; 其中,针对任意设备的命令或数据通过所述网络被发送到所述通信模块,并且由运行所述代码的至少一个处理器来解释,并且其中,所述至少一个处理器又将控制信号发送到所述电路;或 其中,来自所述电路的命令或数据被发送到所述通信模块,由运行所述代码的至少一个处理器来解释,并且使用所述通信接口被发送到所述网络。
2.根据权利要求1所述的方法,其中,所述软件令牌被联网服务器用来选择用以操作所述通信模块的类型的代码,并且其中,在所述选择之后,所述联网服务器存储所述唯一标识数据和所述类型的代码之间的关联的记录; 进一步使用所述光学配置接口来将所述软件令牌加载到所述通信模块的内部固态存储器中,从而允许所述通信接口将所述软件令牌发送到所述联网服务器。
3.根据权利要求1所述的方法,其中,所述通信模块为多个可拆卸通信模块,并且所述任意非联网设备进一步包括能够容纳所述可拆卸通信模块的槽; 其中,所述任意设备进一步包括能够发送唯一标识数据的所述唯一 ID存储记忆设备; 通过以下操作进一步提供所述软件令牌: 将第一可拆卸通信模块插入到所述槽中,所述第一可拆卸通信模块的所述内部固态存储器中包含所述软件令牌; 与所述联网服务器建立网络连接,并且向所述联网服务器发送所述唯一标识数据和所述软件令牌,从而允许所述联网服务器记录所述唯一标识数据和所述软件令牌之间的关联; 其中,所述软件令牌被一联网服务器用来选择用以操作所述通信模块的类型的代码,并且其中,在所述选择之后,联网服务器存储所述唯一标识数据和所述类型的代码之间的关联的记录; 其中,当所述内部固态存储器中不包含所述软件令牌的第二可拆卸通信模块被插入到所述槽中时,所述第二通信模块能够从所述任意设备获取所述唯一标识数据并且将所述唯一标识数据发送到所述联网服务器;以及 所述联网服务器能够使用所述唯一标识数据与所述类型的代码之间的关联的所述记录,来选择用以操作所述第二可拆卸通信模块的类型的代码。
4.根据权利要求1所述的方法,其中,所述通信模块进一步包括具有电连接的物理接口; 所述任意设备另外还包括一通信模块接口,该通信模块接口能够与所述通信模块上的所述电连接交互,并且将所述电连接之间的控制信号传送所述电路中的至少一些电路。
5.根据权利要求4所述的方法,其中,所述通信模块能够将其电连接中的至少一些电连接的功能重新配置为交替的模拟或数字协议,以用于与所述任意设备交互。
6.根据权利要求1的方法,其中,所述代码将所述通信模块的至少一个处理器配置为作为沙盒或虚拟机以如下方式来操作:防止操作所述任意设备的代码部分中的程序崩溃或错误干扰操作所述通信模块网络接口的代码部分。
7.根据权利要求6所述的方法,其中,所述代码将所述通信模块的至少一个处理器配置为作为虚拟机以如下方式来操作:进一步将独立于通信模块设备的接口提供给操作所述任意设备的代码部分。
8.根据权利要求1所述的方法,其中,能够读取光学发送的配置数据的所述光学接口进一步包括:至少一个光电检测器或与至少一个光检测器的至少一个连接件。
9.根据权利要求1所述的方法,其中,当不存在本地网络连通性,或者不存在与互联网或与能够向所述通信模块提供指令的互联网服务器的网络连通性时,所述通信模块代码能够在至少交替回退模式下操作所述任意设备。
10.根据权利要求1所述的方法,用于控制至少两个任意设备,每个任意设备配备有其自己的通信模块,所述方法包括: 为至少一个互联网服务器配置以管理所述任意设备或通信模块的操作的指令; 在所述通信模块与所述至少一个互联网服务器之间建立网络连接; 使用所述至少一个互联网服务器来将来自第一任意设备和通信模块的命令或数据中继到第二任意设备和通信模块;或 使用所述至少一个互联网服务器来将来自至少一个配备有其自己的通信模块的任意设备的命令或数据中继到外部的人或自动接收方;或 使用所述至少一个互联网服务器来将来自外部的人或自动源的命令或数据中继到至少一个配备有其自己的通信模块的任意设备。
11.根据权利要求1所述的方法,在所述任意设备中进一步提供用以容纳通信模块的槽; 在所述任意设备中的所述槽另外还具有通信模块接口,该通信模块接口能够与所述通信模块交互,并且将控制信号传送到所述电路中的至少一些电路; 所述任意设备另外还具有能够从所述任意设备向所述通信模块发送唯一标识数据的唯一 ID存储记忆设备;并且其中,所述通信模块是可拆卸通信模块。
12.根据权利要求1所述的方法,其中,所述通信模块被永久性地嵌入到所述任意设备中。
13.一种为任意非联网设备自动配置用于通信模块的软件的方法,所述任意设备具有实现该任意设备的功能的电路,所述方法包括: 在所述任意设备中提供用以容纳通信模块的槽; 在所述任意设备中的所述槽另外还具有通信模块接口,该通信模块接口能够与所述通信模块交互,并且将控制信号传送到所述电路中的至少一些电路; 所述任意设备另外还具有能够从所述任意设备向所述通信模块发送唯一标识数据的唯一 ID存储记忆设备; 为所述任意设备提供一通信模块,该通信模块能够将控制信号传送到所述电路中的至少一些电路; 所述通信模块具有:能够与计算机网络建立无线网络连接的通信接口,以及能够读取光学发送的配置数据的光学接口; 其中,能够读取光学发送的配置数据的所述光学接口进一步包括至少一个光电检测器; 所述通信模块具有能够存储代码和数据的内部固态存储器; 所述通信模块具有至少一个内部处理器,所述至少一个内部处理器被配置为至少当所述通信模块被连接到所述任意设备时执行所述代码; 使用所述光学配置接口来将无线网络配置数据加载到所述设备中,从而允许所述通信接口与计算机网络建立无线网络连接; 使用所述网络连接以及所述唯一标识数据或软件令牌,来加载用以操作所述通信模块的代码; 其中,所述唯一标识数据或所述软件令牌被一联网服务器用来选择用以操作所述通信模块的类型的代码,并且其中,所述联网服务器存储所述唯一标识数据和所述类型的代码之间的关联的记录; 其中,针对所述任意设备的命令或数据通过所述网络被发送到所述通信模块,并且由运行所述代码的至少一个处理器来解释,并且其中,所述至少一个处理器又将控制信号发送到所述电路;或 其中来自所述电路的命令或数据被发送到所述通信模块,并且由运行所述代码的至少一个处理器来解释,并且使用所述通信接口被发送到所述网络。
14.根据权利要求13所述的方法,其中,所述通信模块为多个可拆卸通信模块: 通过以下操作进一步提供所述软件令牌: 将第一可拆卸通信模块插入到所述槽中,所述第一可拆卸通信模块的所述内部固态存储器中包含所述软件令牌; 与所述联网服务器建立网络连接,并且向所述联网服务器发送所述唯一标识数据和所述软件令牌,从而允许所述联网服务器记录所述唯一标识数据和所述软件令牌之间的关联; 其中,所述软件令牌被一联网服务器用来选择用以操作所述通信模块的类型的代码,并且其中,在所述选择之后,联网服务器存储所述唯一标识数据和所述类型的代码之间的关联的记录; 其中,当所述内部固态存储器中不包含所述软件令牌的第二可拆卸通信模块被插入到所述槽中时,所述第二通信模块能够从所述任意设备获取所述唯一标识数据并且将所述唯一标识数据发送到所述联网服务器;以及 所述联网服务器能够使用所述唯一标识数据与所述类型的代码之间的关联的所述记录,来选择用以操作所述第二可拆卸通信模块的类型的代码。
15.根据权利要求13所述的方法,其中所述通信模块进一步包括:具有物理兼容的电连接的标准固态存储卡物理接口; 其中,所述通信模块还包括电子和逻辑接口,在至少一种操作模式下,所述电子和逻辑接口能够连接到标准存储卡读取器,并根据标准存储卡协议存储和检索存储数据; 其中,所述任意设备中的所述槽另外还包括通信模块接口,所述通信模块接口能够与所述通信模块上的所述物理兼容的电连接交互,并且将所述物理兼容的电连接之间的控制信号传送到所述电路中的至少一些电路。
16.根据权利要求15所述的方法,其中,当所述通信模块连接到所述任意设备时,所述通信模块能够将其物理兼容的电连接中的至少一些电连接的功能重新配置为交替的模拟或数字协议,以用于与所述任意设备交互。
17.根据权利要求 15所述的方法,其中,所述标准固态存储卡物理接口、物理兼容的电气接口和逻辑接口是PC卡、紧凑式闪存卡、智能媒体卡、记忆棒卡、微型卡、多媒体卡、MMCmicro卡、安全数字卡、SxS卡、通用闪存存储卡、miniSD卡、microSD卡、xD-Picture卡、智慧棒卡、串行闪存模块、μ卡、NT卡或其他商用标准的固态存储卡形式。
18.根据权利要求13所述的方法,其中,所述槽是设计为与多种不同类型的任意设备兼容的标准化槽设备,并且其中,所述标准化槽设备包括用于所述通信模块的插槽、标识芯片、通信模块电源和在所述通信模块与所述任意设备电路之间提供电气接口的接口电路。
19.根据权利要求18所述的方法,其中,所述标准化槽设备安装在所述任意设备的表面上的槽的后面,从而产生单元式的任意设备和标准化槽设备,使得所述标准化槽设备的插槽保持打开,并且能够接纳和拆卸所述通信模块。
20.根据权利要求13所述的方法,其中,当所述通信模块从第一任意设备被移到第二任意设备时,所述通信模块获取所述第二任意设备的唯一标识数据,与所述联网服务器建立网络连接,将所述第二任意设备的所述唯一标识数据发送到所述联网服务器,并且从所述联网服务器接收与所述第二任意设备相关联的代码,从而给予所述通信模块以为所述第二任意设备增加网络接口的能力,并且允许所述通信模块可在所述第一任意设备与所述第二任意设备之间互换。
【文档编号】G06F15/177GK104040530SQ201380004913
【公开日】2014年9月10日 申请日期:2013年1月5日 优先权日:2012年1月5日
【发明者】雨果·费斯 申请人:电气银普股份有限公司