[go: up one dir, main page]

WO2016069099A1 - Modèles de dispositifs flexibles pour des dispositifs de consommateur connectés - Google Patents

Modèles de dispositifs flexibles pour des dispositifs de consommateur connectés Download PDF

Info

Publication number
WO2016069099A1
WO2016069099A1 PCT/US2015/047285 US2015047285W WO2016069099A1 WO 2016069099 A1 WO2016069099 A1 WO 2016069099A1 US 2015047285 W US2015047285 W US 2015047285W WO 2016069099 A1 WO2016069099 A1 WO 2016069099A1
Authority
WO
WIPO (PCT)
Prior art keywords
physical
virtual
templates
attributes
template
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.)
Ceased
Application number
PCT/US2015/047285
Other languages
English (en)
Other versions
WO2016069099A8 (fr
Inventor
Sudah Sundaresan
Vishwesh PAI
Adrian Caceres
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.)
Ayla Networks Inc
Original Assignee
Ayla Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ayla Networks Inc filed Critical Ayla Networks Inc
Priority to CN201580056786.1A priority Critical patent/CN107003836B/zh
Priority to EP15854348.8A priority patent/EP3213186A4/fr
Publication of WO2016069099A1 publication Critical patent/WO2016069099A1/fr
Anticipated expiration legal-status Critical
Publication of WO2016069099A8 publication Critical patent/WO2016069099A8/fr
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Definitions

  • consumer devices functionality of the consumer devices are defined, the consumer devices are developed, the consumer devices are manufactured, and finally the consumer devices are sold and deployed to customer locations.
  • the behaviors of such consumer devices are typically hard coded into the consumer devices. Accordingly, the functionality and behaviors of the consumer devices cannot be modified after they have been deployed to a customer location. Additionally, the time frame for product development of conventional consumer devices can be very long (e.g., on the order of 6 months to a year in some instances).
  • Figure 1 is a block diagram depicting an example network architecture including remotely accessible devices and virtual devices for the remotely accessible devices;
  • Figure 2A is a block diagram of a template manager, in accordance with one embodiment of the present invention.
  • Figure 2B is a block diagram of a virtual device manager, in accordance with one embodiment of the present invention.
  • Figure 3A is a block diagram depicting interactions between a virtual device and additional devices
  • Figure 3B is an additional block diagram depicting interactions between virtual devices and additional devices;
  • Figure 4A is a flow chart of one embodiment for a method of using a virtual device to control a physical device;
  • Figure 4B is a flow chart of one embodiment for a method of changing the properties and/or functionality for a physical device based on changing one or more templates associated with that physical device;
  • Figure 5 is a flow chart of another embodiment for a method of using virtual devices to control a physical device.
  • Figure 6 illustrates a block diagram of one embodiment of a computing device.
  • Embodiments are directed to a network-connected device platform (also referred to as an internet-of-things (IoT) cloud platform or simply an IoT platform) having an agile templating framework that provides flexible generation and modification of virtual devices that can be used to facilitate, supplement and modify the functionality of physical devices.
  • a connected device has many properties or attributes that can be controlled by a user and many properties or attributes that are used for monitoring and data collection purposes.
  • the set of properties or attributes for a device varies based on the type of device, the model and the firmware it runs. These properties/attributes constitute the physical model of the device that is hardware and firmware dependent.
  • the device has various behavioral characteristics that the OEM can define that are independent of hardware or firmware considerations.
  • Some examples of these characteristics are alerts that are to be sent when certain device events happen, roles that have access to the device, and the method to be used for registering the device to a user account. These behaviors may be controlled by a cloud server and can vary at any point during the lifecycle of a device.
  • Some embodiments address the problems that arise when either the physical or behavioral attributes of a device change after the device has been deployed in the field.
  • the templating framework uses one or multiple device templates to define and generate virtual devices.
  • Each template is a model of a device (or a component, feature or feature set of a device) that captures the physical and behavioral attributes of the device.
  • the virtual devices may inherit the device attributes of each of the templates used to generate the virtual devices. These device attributes may include a superset of physical device attributes that are hard coded and/or manufactured into a physical device associated with a virtual device.
  • one or more of the templates associated with a physical device may change. Additionally, new device templates may be associated with a physical device, or existing device templates may be disassociated with the device. After such a change in the associated device templates, a new virtual device may be created for a physical device. The new virtual device may then provide added functionality, attributes, behaviors, etc. for the physical device.
  • the agile templating framework enables the functionality, attributes and/or behaviors of a physical device to change over time. Such changes may occur even to physical devices that have been deployed to customer locations. In many instances, changes may be implemented based on updating business logic executed at a server (e.g., a cloud based server) without writing new software code for execution on the physical device or for execution on a server. This shortens and simplifies a product development cycle, and enables additional tools such as A-B testing between different versions of physical devices, where each version may have the same hardware and the same software but a different virtual device and business logic executed on a remote server. Additionally, templates may be used to quickly and easily define the functionality of a new product based on modifying and/or reusing device templates formerly created for other devices. This can further simplify product design and shorten the product development cycle.
  • a virtual device manager determines one or more device templates associated with a physical device.
  • Each of the device templates may define a particular set of device attributes (e.g., logical attributes, physical attributes, notification rules, business logic, etc.).
  • the virtual device manager creates a virtual device from the one or more device templates.
  • the virtual device may inherit sets of device attributes from the one or more device templates.
  • the virtual device manager may establish a connection between the virtual device and the physical device over a network, and may then use the virtual device to control the physical device.
  • a new virtual device may be created for the physical device based on new and/or changed device templates, and may be used to control and/or interface with the physical device or Internet enabled device.
  • Figure 1 is a block diagram depicting an example network architecture 100 including remotely accessible devices 135A-C and computing devices 105, 125A, 125B that interact with the remotely accessible devices 135A-C.
  • the network architecture 100 includes the multiple devices 135A-C connected to a local area network (LAN) 165.
  • LAN local area network
  • the devices 135A-C may be referred to as network- connected devices.
  • the devices 135A-C are devices with embedded systems
  • the 150A-C may include, for example, electrical appliances such as refrigerators, ovens, washers, driers, dishwashers, thermostats, alarms, air conditioners, televisions, radios, receivers, amplifiers, and so forth.
  • the devices 135A-C may also include consumer devices such as digital watches, music players, game consoles, digital cameras, printers, and so forth.
  • Other examples of devices 135A-C include stationary devices such as HVAC systems, traffic lights, factory controllers, signs, electronic billboards, sprinkler systems, and irrigation control systems, as well as medical devices.
  • the embedded systems 150A-C may also be referred to as network-connected devices.
  • Devices 135A-C may also be any other type of device that includes an embedded system. Alternatively, one or more devices 135A-C may not include an embedded system.
  • An embedded system 150A-C is a class of computing device that is embedded into another device as one component of the device.
  • the device 135A-C typically also includes other hardware, electrical and/or mechanical components that may interface with the embedded system 150A-C.
  • Embedded systems 150A-C are typically configured to handle a particular task or set of tasks, for which the embedded systems 150A-C may be optimized. Accordingly, the embedded systems 150A-C may have a minimal cost and size as compared to general computing devices.
  • the embedded systems 150A-C may each include a communication module
  • the communication module may be configured to manage security, manage sessions, manage access control, manage
  • the communication module is configured to communicate using Wi-Fi®.
  • the communication module may be configured to communicate using Bluetooth®, Zigbee®, Internet Protocol version 6 over Low power Wireless Area
  • Ethernet e.g., 10 Megabyte (Mb)
  • GSM Global Systems for Mobile Communications
  • CDMA Code-Division Multiple Access
  • UMTS Universal Mobile Telecommunications Systems
  • LTE 3GPP Long Term Evaluation
  • WiMAX Worldwide Interoperability for Microwave Access
  • 2G second generation wireless telephone technology
  • 3G third generation wireless telephone technology
  • 4G fourth generation wireless telephone technology
  • the LAN 165 includes a router, switch, bridge or other network device (not shown) that enables communication between multiple devices connected to the LAN 165.
  • the network device may provide wired connections to the LAN using, for example, Ethernet ports, universal serial bus (USB) ports and/or Firewire® ports.
  • the network device may additionally provide wireless connections to the LAN using, for example, a Wi-Fi transceiver.
  • Some embedded systems 150A-C may not support any of the communication types supported by the network device.
  • device 135C may support Zigbee
  • device 135B may support Bluetooth.
  • the LAN 165 may include a gateway device 190 connected to the network device via one of the connection types supported by the network device (e.g., via Ethernet or Wi-Fi).
  • the gateway device 190 may additionally support other communication protocols such as Zigbee, PLC and/or Bluetooth, and may translate between supported communication protocols.
  • some devices may connect to the LAN 165 and/or to the WAN 170 through the gateway device 190.
  • the LAN 165 (or wireless carrier) is connected to a wide area network (WAN)
  • WAN wide area network
  • the WAN 170 may be a private WAN (e.g., an intranet) or a public WAN such as the Internet, or may include a combination of a private and public network.
  • the LAN 165 may include a router and/or modem (e.g., a cable modem, a direct serial link (DSL) modem, a Worldwide Interoperability for Microwave Access (WiMAX®) modem, an long term evolution (LTE®) modem, etc.) that provides a connection to the WAN 170.
  • modem e.g., a cable modem, a direct serial link (DSL) modem, a Worldwide Interoperability for Microwave Access (WiMAX®) modem, an long term evolution (LTE®) modem, etc.
  • the WAN 170 may include or connect to one or more server computing devices 125A-B.
  • the server computing devices 125A-B may include physical machines and/or virtual machines hosted by physical machines.
  • the physical machines may be rackmount servers, desktop computers, or other computing devices.
  • the server computing devices 125A-B include virtual machines managed and provided by a cloud provider system.
  • Each virtual machine offered by a cloud service provider may be hosted on a physical machine configured as part of a cloud. Such physical machines are often located in a data center.
  • the cloud provider system and cloud may be provided as an infrastructure as a service (IaaS) layer.
  • IaaS infrastructure as a service
  • One example of such a cloud is Amazon' s® Elastic Compute Cloud (EC2®).
  • Server computing device 125A hosts one or more WAN accessible services 130, which may be a web based service and/or a cloud service (e.g., a web based service hosted in a cloud computing platform).
  • a WAN accessible service 130 may maintain a session (e.g., via a continuous or intermittent connection) with one or more of the embedded systems 150A-C.
  • the WAN accessible service 130 may periodically establish sessions with the embedded systems 150A-C. Sessions and connections may be between a virtual device 185A-C running on the server computing device 130 and the devices 135A-C.
  • WAN accessible service 130 may use an appropriate virtual device 185A-C to issue commands to the embedded system (or device 135A-C) and/or receive status updates from the embedded system (or device 135A-C).
  • the virtual device 185A-C may be used to control the device 135A-C.
  • the commands may be commands to change a state of one or more parameters of a device controllable by the embedded system. For example, if the embedded system is embedded in a heater or thermostat, then the commands may include commands to increase or decrease a temperature. In another example, if the embedded system is embedded in a home automation system, then the commands may include commands to turn on or off lights.
  • Status updates received from the embedded systems 150A-C may identify values or states of some or all detectable parameters of devices 135A-C that the embedded systems are included in. Status updates may also include fault information, statistical device usage information, trace data and/or other information. Such values, states and/or other information may change based on direct user interaction with the devices. Such values, states and/or other information may also change responsive to commands sent to the embedded systems 150A-C by the WAN accessible service 130 and/or by computing devices 105A-C via an appropriate virtual device 185A-C.
  • WAN accessible services 130 may maintain up-to-date information on the devices 135A-C, and such up-to-date information may be reflected in a virtual device 185A-C.
  • WAN accessible services 130 include a template manager 126 and a virtual device manager 128.
  • the template manager 126 creates, modifies and otherwise manages a pool of device templates. Template manager 126 may generate and/or modify templates without users performing any programming.
  • template manager 126 provides a user interface (e.g., a graphical user interface) that enables users to easily define device attributes in a device template. The template manager 126 is discussed in greater detail below with reference to Figure 2A.
  • each device template defines one or more attributes for a device 135A-C.
  • the attributes may be physical attributes that are hard wired, hard coded or manufactured into the device 135A-C. Examples of such physical attributes include sensors and sensor capabilities, input devices (e.g., buttons) and operations of the input devices, output devices (e.g., speakers, a display, etc.) and operations of the output devices, servos and servo settings, motors and motor settings, and so forth.
  • Physical attributes may additionally include capabilities, behaviors, characteristics, etc. of firmware and/or software that is loaded into the devices 135A-C (e.g., into embedded systems 150A-C) in the devices.
  • Each device template additionally defines one or more logical or behavioral attributes for a device 135A-C.
  • Logical attributes also referred to as behavioral attributes
  • the logical attributes may instead be provided by a virtual device 185A-C on behalf of a physical device 135A-C.
  • a thermostat may include
  • a virtual device established for the thermostat may include a rule stating that a temperature minimum of 70 degrees Fahrenheit is to be applied at 7:00AM on weekdays.
  • the virtual device may change the temperature set point to 70 degrees Fahrenheit internally and may send a command to the physical device to change the set point to 70 degrees
  • the temperature set point and the controls usable to set the temperature set point would be considered physical attributes of the physical device, and the rule for controlling when to change the temperature set point would be considered a logical attribute assigned to the physical device.
  • the template manager 126 additionally associates templates to devices
  • template manager 126 associates each type of device with a particular template or combination of templates.
  • a device type may include a particular manufacturer (OEM), a particular model number and/or a particular version number (e.g., a firmware version number).
  • OEM manufacturer
  • model number e.g., a particular model number
  • version number e.g., a firmware version number
  • Virtual device manager 128 generates an instance of a virtual device
  • the physical devices 135A-C may each have the same device type or may have different device types from the same or different manufacturers. For example, a separate virtual device 185A-C may be created for each unit of a particular product of an OEM.
  • Each virtual device 185A- 185C is generated from one or a set of device templates.
  • the created virtual device 185A-C inherits device attributes from each of the device templates used to create the virtual device.
  • the virtual device 185A-C is then connected to a particular physical device 135A-C (e.g., to an embedded system 150A-C of a particular physical device 135A-C), and may be used to monitor, interface with, and control that physical device.
  • Server computing devices 125B include one or more third party services
  • Third party services 162 may be services provided by entities other than a provider of an IoT platform that includes WAN accessible services 130. As shown, server computing devices 125B may connect to server computing device 125 A directly or via WAN 170. Examples of third party services include weather services (e.g., that provide live weather feeds), time services (e.g., an atomic clock), a rich site summary (RSS, also known as really simple syndication) feed, earthquake data for an area (e.g., usable to shut off utilities in the event of a large earthquake), an OEM hosted service that keeps track of customer payments (e.g., usable to turn off device controls if payment is not received), and so on. For actions involving external services, a user may enter their credentials or go through an authorization procedure to provide authorization to perform actions on the user' s behalf with regards to the external services.
  • weather services e.g., that provide live weather feeds
  • time services e.g., an atomic clock
  • RSS rich site summary
  • earthquake data for an area
  • Virtual devices 185A-C may interface with third party services 162 on behalf of associated physical devices 135A-C. Virtual devices 185A-C may interface with the third party services 162 to obtain information usable to update the devices.
  • virtual devices 185A-C may interface with the third party services 162 to provide notifications and information about physical devices 135A-C.
  • Computing devices 105 may include portable devices such as electronic book readers, portable digital assistants, mobile phones, laptop computers, portable media players, tablet computers, cameras, video cameras, netbooks, notebooks, and the like. Computing devices 105 may also include traditionally stationary devices such as desktop computers, gaming consoles, digital video disc (DVD) players, media centers, and the like. Computing devices 105 may connect to the WAN 170 and/or to the LAN 165.
  • portable devices such as electronic book readers, portable digital assistants, mobile phones, laptop computers, portable media players, tablet computers, cameras, video cameras, netbooks, notebooks, and the like.
  • Computing devices 105 may also include traditionally stationary devices such as desktop computers, gaming consoles, digital video disc (DVD) players, media centers, and the like.
  • Computing devices 105 may connect to the WAN 170 and/or to the LAN 165.
  • Computing devices 105 may include a remote control application (or multiple remote control applications) 115 that can receive information for devices 135A-C and control the devices 135A-C via virtual devices 185A-C.
  • the remote control application 115 is configured to interface with one or more virtual devices 185A-C, and may issue commands to the connected virtual devices 185A-C.
  • the virtual devices 185A-C may then format the commands into a protocol used by associated physical devices 185A-C and/or generate new commands in such a protocol.
  • the virtual devices 185A-C may then send the new or modified commands to associated physical devices 135A-C (e.g., via the devices' embedded systems 150A-C) to control the physical devices 135A-C.
  • the remote control application 115 may be programmed to run on various operating systems, such as Windows® operating systems, Unix® operating systems, iOS® operating systems, Android® operating systems and Java® operating systems to name a few.
  • the remote control application 115 may also be configured as firmware, or as hardware, or as some combination of software, firmware and/or hardware.
  • the remote control application 115 may include a graphical user interface (GUI) that enables users to interact with and control devices 135A-C in an intuitive and user- friendly manner. A user may interact with the GUI to cause the remote control application to generate notifications, commands, property updates and other messages for the devices represented in the GUI.
  • GUI graphical user interface
  • the remote control application 115 interfaces with the template manager 126 to generate new templates to modify existing templates.
  • Template manager 126 may provide an application programming interface (API) that is used by remote control application 115 to generate and/or modify templates.
  • API application programming interface
  • users may access template manager 126 to generate and/or modify rules via a web interface that is accessible from a web browser.
  • Figure 2 A is a block diagram of a template manager 205, in accordance with one embodiment of the present invention.
  • template manager 205 corresponds to template manager 126 of Figure 1.
  • Template manager 205 includes functionality for designing, creating, modifying, and otherwise managing device templates.
  • the template manager 205 includes a template editor 210, a template association module 215 and a user interface 218.
  • the functionality of the template editor 210, user interface 218 and/or template association module 215 may be divided into additional modules or may be combined into a single module.
  • Template editor 210 is responsible for creating new device templates and editing existing templates. Template editor 210 may create a blank template or may create a new template based on an existing template. Template editor 210 may receive template data 220 that is used to populate fields and/or entries in the template, where each field or entry may be for a particular device attribute. Template data 220 may be input or selected by a user via a user interface 218. Alternatively, or additionally, template data 220 may be imported from existing templates and/or from other sources.
  • Each device template 232A-C defines one or more device attributes 240 A-C.
  • the device attributes 240A-C may be physical attributes of a physical device and/or logical attributes that are to be provided by a virtual device for a physical device.
  • Some device templates may be standalone templates that define all of the physical and logical attributes for a particular device (e.g., for a particular model and version of a device from a particular OEM). Additionally, some device templates may define only a subset of attributes for a physical device. For example, a first template may be created for the logical attributes of a device and a second template may be created for the physical attributes of the device.
  • a physical property template may specify a set of physical attributes of a device such as sensors of the device, controls for the device, and/or other capabilities of the device. The physical property template may be the lowest level template for a device, and may map to the actual commands and capabilities of the device. Thus, the physical property template may define the core data model for the physical device and provide the raw API for interfacing with and controlling the device.
  • device templates may be created for use with multiple different devices that share some characteristics.
  • a single device template may be created to be used for multiple different models of a similar type of device from a particular OEM.
  • a single device template may be set up that defines the properties of a particular component that may be shared by many devices or a particular protocol that may be used by many devices.
  • a device template may be created for the Zigbee protocol or the Wi-Fi 802.1 In protocol. These device templates may then be used for any device that uses the particular protocol for which the device template was created.
  • a template may be created that defines business logic that an
  • a template may be set up that includes notification rules identifying what entities to send notifications to and under what circumstances.
  • a notification template may provide third party integration with a third party service that tracks connectivity events. This can be enabled at any time on millions of devices by associating a new notification template that contains a universal resource locator (URL) and authentication parameters for the third part service.
  • URL universal resource locator
  • a device roles template may be created that defines roles associated with virtual devices created from the template. Each role may grant access to a set of resources. Examples of roles include an end-user or consumer role, an original equipment manufacturer (OEM) administrator role, an OEM account manager role, a dealer role, a technician role, and so forth.
  • An OEM administrator role may have access to all OEM user profiles of an organization and end user profiles of those who are consumers of the OEMs products.
  • a dealer role may have access to a consumers profile and other information if the consumer grants the dealer access.
  • Resources may be network-connected devices, attributes or parameters of network-connected devices, other users, and so on.
  • an OEM may want to sell devices though a dealer and enable that dealer to monitor devices sold through the dealer (e.g., for maintenance). This has access control implications because it enables dealers to access devices of consumers. With a new role template assigned to devices, any user with the role of dealer may be able to access those devices, subject to access control checks.
  • a device registration template may be created that defines what registration techniques to use to register devices to user accounts.
  • a device When a device is purchased by an end user, that device may initially not be registered to any user accounts. The end user may desire to register the device to his user account to gain access to and control over that device. For example, a user may purchase and install an Internet enabled oven, dishwasher, dryer or washer. By registering the Internet enabled device to a user account, that user account gains the ability to monitor and/or control that device.
  • the user account may be granted one of multiple different permission levels through the registration process.
  • a first permission level may permit monitoring of a device, but not permit any control of the device.
  • a second permission level may permit control of some (e.g., a subset of all) device functions or settings, and a third permission level may permit control of all device functions and settings, as an example.
  • the registration template may define one or more registration techniques to be used to register an unregistered device.
  • the defined registration techniques may be registration techniques that are supported by the device.
  • Each registration technique may be associated with one or more registration operations.
  • the specific registration operations that are performed depend on the specific registration technique that was selected. Examples of operations that may be performed include receiving registration information from an unregistered device, prompting a user to input registration information, generating registration information, sending registration information to an unregistered device, and sending registration information and/or other information to a registration service. Additionally, the types of registration information that is gathered may differ between registration techniques and the registration criteria may differ for different registration techniques.
  • a remote control application causes a screen of a mobile device that the remote control application is running on to pulsate in a manner that provides a code to the device.
  • the device may then report the code to a registration service for registration.
  • the unregistered device displays a unique code on a display, and a user views the unique code and provides it to a registration service for registration.
  • a user receives a unique code from a web site, via a text message, via email, etc., and provides the unique code to the device for registration.
  • Many other registration techniques are also possible.
  • the registration template may additionally include rules that control which registration techniques to apply under differing circumstances.
  • a registration technique selection rule indicates that a registration technique is to be selected based on a location of the unregistered device. For example, an OEM may specify that a first registration technique is to be used for devices in Europe, a second registration technique is to be used for devices in China, and a third registration technique is to be used for devices in the United
  • a registration technique selection rule indicates that a registration technique is to be selected based on a role of the user account that the remote control application is logged into. Accordingly, a first registration technique may be used if a dealer is installing the unregistered device in a customer' s home, and a second registration technique may be applied if the customer is installing the unregistered device herself. Many other registration technique selection rules may also be applied.
  • a device rules template may be created that defines rules for performing actions such as sending notifications, sending commands, and so forth.
  • Each rule may take one or more events as inputs and produces as outputs messages, notifications and/or commands.
  • the inputs may be received from one or more network connected devices and/or services, and the outputs may be sent to one or more network connected devices and/or services.
  • the outputs may be sent to the same network connected devices from which the inputs were received or to other network connected devices.
  • each input and output to is modeled as a feed.
  • a feed can be an input feed, which triggers an action, or an output feed, which may be the action itself.
  • the loosely coupled feeds may be tied together by user defined rules.
  • Some templates may include derived properties for a physical device.
  • a derived property is a logical property or attribute that is derived from another (usually physical) property or attribute (or set of other properties or attributes) of a physical device.
  • a derived property may include a definition of operations to perform on values of one or more other attributes.
  • a thermostat may be hard wired with a sensor that measures temperature in Fahrenheit. However, that thermostat may be sold in countries in which Celsius units are used to measure temperature. Accordingly, a derived property may be set up that converts Fahrenheit temperature measurements to Celsius temperature measurements. Other attributes of the device that are user facing may then be set up to perform actions and display data based on the derived property rather than the base attribute that is actually used by the physical device.
  • the derived property may additionally convert commands from users and/or triggered by other attributes into the values and units that are used by the physical device.
  • Derived properties enable a virtual device to present the same data from a physical device in many different ways.
  • Other examples of derived properties are various statistics that may be computed from one or more other properties.
  • a derived property may be an average of another property, or a delta between two values from one or more other attributes (e.g., start and stop time).
  • Many other types of derived properties may also be set up in templates.
  • Template editor 210 may assign scopes to created templates. The scope may control what entities may view, use and/or modify those templates.
  • One example scope is a private scope.
  • a template with a private scope is only viewable to a creator of the template.
  • Another example scope of a template is an OEM scope.
  • a template with an OEM scope is viewable to anyone from the OEM organization.
  • Another example scope is a public scope.
  • a template with a public scope may be publicly viewable.
  • Examples of some publicly viewable templates include templates configured for public standards (e.g., a Zigbee smart plug template that defines the Zigbee smart plug data model that can be used for any smart plug compliant with the Zigbee standard, an Apple® homekit data model that can be used for any device complying with a particular specification, etc.).
  • Another example scope is an enterprise customer scope that may be viewable to an OEM and to a particular enterprise customer of that OEM.
  • Template association module 215 associates specific devices and/or types of devices to device templates 232A-C.
  • a single device e.g., a particular product of an OEM
  • the device may be identified by a product identifier assigned to that device.
  • Device templates may be reused within an OEM and/or between OEMs (for public device templates). Accordingly, multiple different devices may each be associated with the same device template. Accordingly, if the same change is to be made to all of these devices, the change may be implemented by modifying the device template that is associated with each of the devices.
  • an OEM may choose to offer premium content that may provide an enhanced experience to some customers but not to others. Such premium content may be offered simply by associating a different device template that has attributes/properties that provide the premium content.
  • premium content may be provided by sending a firmware upgrade to a physical device, and accompanying the firmware upgrade with an upgraded template associated with that physical device.
  • Template association module 215 may detect that a firmware upgrade has been pushed to a physical device, and may automatically associate a new template corresponding to that firmware upgrade to the physical device.
  • the new template may be associated with the physical device before a firmware upgrade has been issued to that physical device.
  • Template manager 205 may detect that the new template relies upon functionality provided by the firmware upgrade, and may automatically download and install the firmware upgrade onto the physical device in response.
  • User interface 218 is an intuitive interface for creating and editing device templates.
  • User interface 218 may be a graphical user interface (GUI) or a functional user interface.
  • GUI graphical user interface
  • User interface 218 may provide a collection of graphical icons, visual indicators, buttons, toggles, sliders, and so forth that represent states and values of different parameters and attributes for devices that are to be included in a template.
  • a user may interact with the user interface 218 to assign device attributes to a template.
  • Template manager 205 may also provide an application programming interface (API) that other applications (e.g., a remote control application) can use to edit and create templates.
  • API application programming interface
  • User interface 218 may provide options for selecting device attributes for a template.
  • User interface 218 may provide a drop down menu or other listing of common device attributes. These may include parameters, settings, features, notifications, business logic, roles, rules, registration techniques, etc. that may be used in a template.
  • User interface 218 may also enable users to define new attributes.
  • the user interface 218 may also provide a drop down menu or other interface for users to associate device templates with particular devices or types of devices.
  • FIG. 2B is a block diagram of a virtual device manager 250, in accordance with one embodiment of the present invention.
  • virtual device manager 250 corresponds to virtual device manager 128 of Figure 1.
  • Virtual device manager 250 includes functionality for creating virtual machines and connecting virtual machines together and to physical devices.
  • the virtual device manager 250 includes a template determiner 255, a virtual device creator 260 and a connection module 265.
  • the functionality of the template determiner 255, virtual device creator 260 and/or connection module 265 may be divided into additional modules or may be combined into a single module.
  • a network connected device also referred to as a physical device
  • that physical device may send a message to virtual device manager 250 notifying virtual device manager 250 of that device.
  • the notification may include information identifying a particular device model, an OEM, a version number, a media access control (MAC) address, a serial number, a network address of the physical device, etc.
  • the notification may include a unique device identifier.
  • Template determiner 255 may use the provided information to determine a device type for the physical device. Template determiner 255 may additionally determine which device templates 232A-C are associated with that device type, where each of the device templates 232A-C includes different device attributes 240A-C. Template determiner 255 may then invoke virtual device creator 260 and pass to virtual device creator 260 the network address of the physical device and an identification of the device templates 232A-C associated with that physical device.
  • Virtual device creator 260 generates a virtual device 270 from the identified device templates 232A-C associated with the physical device.
  • the virtual device 270 may be a data structure that mimics the physical device.
  • the virtual device inherits device attributes
  • the device attributes 275 may include a superset of attributes that the physical device actually has (e.g., of physical device attributes).
  • device attributes 275 may additionally include logical device attributes that are implemented by a server computing device on behalf of a physical device. The fact that some operations of the device are performed on the server (e.g., in the cloud), and that other operations are actually performed on the physical device may be transparent to end users.
  • connection module 265 connects the virtual device 270 to the physical device.
  • a separate virtual device is created for each physical device.
  • Each virtual device may then be used to manage and control the particular physical device that it is connected to over a network.
  • Figure 3A is a block diagram depicting interactions between a virtual device
  • a server computing device 305 hosts virtual device 338 as well as one or more WAN accessible services 340.
  • the virtual device 338 is a virtual device that has been created for physical device 320, which is connected to virtual device 338 over a network.
  • Physical device 320 possesses a set of physical attributes 335. Each physical attribute is an attribute of the physical device 320 that the physical device 320 has with or without connection to a virtual device. Physical attributes 335 may include inputs and outputs of the physical device, controls usable to control the physical device 320, components of the physical device, set points and value ranges of the components, and so forth. The
  • functionality of the physical device 320 may be greatly augmented by the use of virtual device 338.
  • Virtual device 338 may include all of the physical attributes 335 of the physical device.
  • virtual device 338 may include many logical attributes (e.g., properties, characteristics, behaviors, functionality, etc.) that the virtual device 338 possesses on behalf of the physical device, and which the physical device does not inherently possess. Examples of such logical attributes include derived properties 350, notification rules 352, business logic (e.g., roles, additional rules, registration techniques, etc.) 354, and so on.
  • Virtual device 338 may additionally include a physical device interface 346 that is usable to send instructions to the physical device 320 and receive data from the physical device 320.
  • Virtual device 338 may additionally include an application (app) and/or web server interface 348 for communicating with WAN accessible services 340, third part services 325 and/or remote control applications 330.
  • the virtual device may generate commands and/or notifications that are sent to the third party service 325, WAN accessible service 340 and/or remote control application 330 via the app/web server interface 348.
  • Figure 3B is an additional block diagram depicting interactions between virtual devices and additional devices. In some instances, multiple different virtual devices are generated for a particular physical device. For example, Figure 3B illustrates a first level virtual device 380A and a second level virtual device 378A that have been created for a first physical device 266A and a first level virtual device 380B and a second level virtual device 378B that have been created for a second physical device 366B.
  • the use of multiple layers or levels of virtual devices for a physical device enables services and applications to indirectly interface with the physical devices 366A-B using a common application programming interface (API), even though the physical devices 366A-B may be different devices from different manufacturers and with different physical attributes 374A-B.
  • API application programming interface
  • second level virtual devices 378A-B enables services and applications (e.g., remote control applications 370A-B) to interface with and control the first level virtual devices 380A-B even though the first level virtual devices 380A-B may have different logical attributes 384A-B, physical attributes 374A-B and physical device interfaces 388A-B.
  • physical device 366A may be a thermostat from a first manufacturer with a distinct set of physical attributes 374A.
  • First level virtual device 380A may be configured with the physical attributes 374A of the physical device 366A and with logical attributes 384A specific to that physical device 366A.
  • Physical device 366B may be a dishwasher from a second manufacturer with a distinct set of physical attributes 374B.
  • First level virtual device 380B may be configured with the physical attributes 374B of the physical device 366B and with logical attributes 384B specific to that physical device 366B.
  • Second level virtual device 378A and second level virtual device 378B may be separate instances of virtual devices generated from the same templates. Each of the second level virtual devices
  • 378A-B may include a common API that remote control applications 370A-B can use to communicate with the second level virtual devices 378A-B.
  • the second level virtual devices may include a common API that remote control applications 370A-B can use to communicate with the second level virtual devices 378A-B.
  • the second level virtual devices may include a common API that remote control applications 370A-B can use to communicate with the second level virtual devices 378A-B.
  • 378A-B include application interfaces 395A-B that translate commands from the remote control applications 370A-B into commands that can be acted on by the specific first level virtual devices 380A-B. Additionally, the second level virtual devices 378A-B may translate data from the first level virtual devices 380A-B into a common format that can be used by the remote control applications 370A-B. This enables a single remote control application
  • 370A-B to be used to interface with and control multiple different types of devices.
  • FIGS 4A-5 are flow diagrams showing various methods of implementing virtual devices to augment and control the functionality of physical devices.
  • the methods may be performed by a processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof.
  • Various embodiments may be performed by a server computing device executing a virtual device (e.g., server computing device 125 of Figure 1).
  • Figure 4A is a flow chart of one embodiment for a method 400 of using a virtual device to control a physical device.
  • processing logic determines one or more device templates that are associated with a physical device.
  • the operations of block 405 may be performed automatically responsive to a physical device attempting to connect to a server and/or to one or more WAN accessible services.
  • the operations of block 405 may also be performed at any other time responsive to a command to generate a new virtual device.
  • processing logic creates a new virtual device from the determined device templates.
  • processing logic then establishes a connection between the virtual device and the physical device.
  • the connection may be a continuous or intermittent connection.
  • processing logic determines whether a second level virtual device will be used for the physical device.
  • a second level virtual device may be used, for example, to provide a generic or common interface to services and/or applications. If a second level virtual device is to be used, the method continues to block 425. Otherwise the method proceeds to block 440.
  • processing logic determines one or more additional device templates associated with the physical device.
  • the additional device templates may be designated as second level device templates. These device templates may include the same, different and/or additional data to the device attributes included in first level device templates. This additional data may include a common instruction set for communicating with applications and services and translations between the common instruction set and instruction sets specific to many different physical devices and/or first level virtual devices.
  • processing logic creates a second level virtual device for the physical device from the one or more additional device templates.
  • processing logic connects the second level virtual device to the first level virtual device.
  • the first and second level virtual devices may both execute on the same server machine. Accordingly, the connection between the first and second level virtual devices may be a logical connection.
  • processing logic controls the physical device using the virtual device (or the multiple virtual devices).
  • Controlling the physical device may include determining values to assign to parameters and/or settings of the physical device based on logical rules resident in the virtual device, and then sending controls to implement the determined values for the parameters and/or settings to the physical device.
  • Controlling the physical device may additionally include receiving commands at the virtual device from a remote control application and forwarding those commands to the physical device (potentially after translating the commands into a format understandable to the physical device).
  • Figure 4B is a flow chart of one embodiment for a method 450 of changing the properties and/or functionality for a physical device based on changing one or more templates associated with that physical device.
  • processing logic determines one or more device templates that are associated with a physical device.
  • processing logic creates a virtual device from the determined device templates.
  • processing logic then establishes a connection between the virtual device and the physical device.
  • the connection may be a continuous or intermittent connection.
  • processing logic determines whether there are any new firmware upgrades or updates available for the physical device. If so, the method continues to block 475. Otherwise the method proceeds to block 480.
  • processing logic performs an update (e.g., an over the air (OTA) update) of the physical device.
  • an update e.g., an over the air (OTA) update
  • This may include downloading an update to the physical device and causing the update to install on the user device.
  • OTA over the air
  • the firmware update may or may not introduce new functionality that is to be accompanied by a modified device template.
  • new or modified device templates may be associated with physical devices without any firmware updates.
  • templates may be modified to implement new or different logical attributes or other cloud based functionality for the physical device without any firmware changes.
  • processing logic determines whether there has been any change in the templates associated with the physical device. Changes to the associated templates may include modifications to existing templates previously associated with the physical device, the addition of new templates not formerly associated with the physical device and/or the removal of templates formerly associated with the physical device. If there has been any change in the templates associated with the physical device, the method continues to block 485. Otherwise the method ends.
  • processing logic disconnects the virtual device from the physical device. Processing logic additionally terminates the virtual device. The method may then return to block 455 to determine the new associated device templates and create a new virtual device for the physical device.
  • the properties, functionality and attributes of physical devices may be modified on-the-fly to devices that have already been deployed to customer locations. Such changes may be easily performed to all deployed and/or unsold devices. For example, OEMs may disable or enable certain roles (e.g., dealers) from having access to deployed devices at the push of a button.
  • OEMs may choose to implement changes to a subset of deployed devices. For example, OEMs may split a group of physical devices into a first subgroup and a second subgroup. The OEM may then associate a new unique template with the first subgroup. The OEM may then perform A-B testing between the subgroups to determine whether to implement the new unique template for all of the physical devices in the larger group. For example, a manufacturer of a washing machine may create a new template that adds a new spin cycle. This template may then be associated with 5% of deployed washing machines to provide the new spin cycle. If the new spin cycle is popular with customers, then the OEM may add the new spin cycle to the rest of the physical devices.
  • FIG. 5 is a flow chart of another embodiment for a method 500 of using virtual devices to control a physical device.
  • processing logic generates a first level virtual device for a physical device from one or more device templates associated with the physical device.
  • processing logic establishes a connection between the first level virtual device and the physical device.
  • processing logic generates a second level virtual device from one or more additional device templates.
  • processing logic establishes a connection between the first level virtual device and the second level virtual device.
  • the second level virtual device provides a level of abstraction that enables multiple different types of virtual devices to connect to a common remote control application.
  • a washer manufacturer might have three basic first level templates that describe how their washers work.
  • a second level template may be created the maps functions of the second level template to distinct but similar functions in each of the three different first level templates. Virtual devices from the same second level template would then be exposed to remote control applications for each of the three different washers.
  • An OEM may additionally set up different second level templates for different roles. For example, an OEM second level template may be used to create virtual devices for communication with OEMs, and a dealer second level template may be used to create virtual devices for communication with dealers. These separate second level virtual machines may have different functionality, different interfaces, etc.
  • processing logic establishes a connection between the second level virtual device and a remote control application (e.g., that may execute on a mobile device).
  • processing logic receives an instruction from the remote control application at the second level virtual device.
  • processing logic translates the instruction at the second level virtual device into a new instruction that the first level virtual device can act upon. This may include generating a new instruction from the received instruction.
  • processing logic may determine whether the instruction can be implemented at the virtual device or whether the instruction should be implemented at the physical device. If the instruction should be implemented at the physical device, the method continues to block 535. Otherwise, the method continues to block 533 and the instruction is executed by processing logic at the first virtual device.
  • processing logic translates the instruction at the first level virtual device into an instruction that the physical device can act upon. This may include generating a new instruction based on the received instruction. Processing logic may then send the instruction to the physical device. After the instruction has been executed updated data
  • an updated device state and/or other notification may be sent to the second level virtual device, which may then forward the data on to the remote control application.
  • Figure 6 illustrates a diagrammatic representation of a machine in the example form of a computing device 600 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
  • the machine may be connected (e.g., networked) to other machines in a Local Area Network (LAN), an intranet, an extranet, or the Internet.
  • the machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
  • the machine may be a personal computer (PC), a tablet computer, a set-top box (STB), a Personal Digital
  • PDA Personal Computer Assistant
  • a cellular telephone a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
  • machine shall also be taken to include any collection of machines (e.g., computers) that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
  • the example computing device 600 includes a processing device 602, a main memory 604 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 606 (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory (e.g., a data storage device 618), which communicate with each other via a bus 630.
  • main memory 604 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.
  • DRAM dynamic random access memory
  • SDRAM synchronous DRAM
  • RDRAM Rambus DRAM
  • static memory e.g., flash memory, static random access memory (SRAM), etc.
  • secondary memory e.g., a data storage device 618
  • Processing device 602 represents one or more general-purpose processors such as a microprocessor, central processing unit, or the like. More particularly, the processing device 602 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VIJW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 602 may also be one or more special- purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processing device 602 is configured to execute the processing logic (instructions 622) for performing the operations and steps discussed herein.
  • CISC complex instruction set computing
  • RISC reduced instruction set computing
  • VIPW very long instruction word
  • Processing device 602 may also be one or more special- purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP
  • the computing device 600 may further include a network interface device 608.
  • the computing device 600 also may include a video display unit 610 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 612 (e.g., a keyboard), a cursor control device 614 (e.g., a mouse), and a signal generation device 616 (e.g., a speaker).
  • a video display unit 610 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
  • an alphanumeric input device 612 e.g., a keyboard
  • a cursor control device 614 e.g., a mouse
  • a signal generation device 616 e.g., a speaker
  • the data storage device 618 may include a machine-readable storage medium
  • the instructions 622 may also reside, completely or at least partially, within the main memory 604 and/or within the processing device 602 during execution thereof by the computer system 600, the main memory 604 and the processing device 602 also constituting computer-readable storage media.
  • the computer-readable storage medium 628 may also be used to store a template manager 690 or a virtual device manager 692 (as described with reference to Figures 2A-2B), and/or a software library containing methods that call a template manager 690 or virtual device manager 692. While the computer-readable storage medium 628 is shown in an example embodiment to be a single medium, the term "computer-readable storage medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
  • computer-readable storage medium shall also be taken to include any medium other than a carrier wave that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies described herein.
  • computer-readable storage medium shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
  • modules, components and other features described herein can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices.
  • the modules can be implemented as firmware or functional circuitry within hardware devices.
  • the modules can be implemented in any combination of hardware devices and software components, or only in software.
  • Embodiments of the present invention also relate to an apparatus for performing the operations herein.
  • This apparatus may be specially constructed for the discussed purposes, or it may comprise a general purpose computer system selectively programmed by a computer program stored in the computer system.
  • a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic disk storage media, optical storage media, flash memory devices, other type of machine-accessible storage media, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

La présente invention concerne un dispositif de traitement exécutant un service d'enregistrement qui reçoit des informations identifiant un premier dispositif, un second dispositif et une application s'exécutant sur le premier dispositif. Le dispositif de traitement détermine une technique d'enregistrement qui est prise en charge par à la fois l'application et le second dispositif et envoie un message indiquant la technique d'enregistrement à au moins l'un du premier dispositif ou du second dispositif. L'application doit réaliser une opération associée à la première technique d'enregistrement pour lier le second dispositif au compte utilisateur.
PCT/US2015/047285 2014-10-27 2015-08-27 Modèles de dispositifs flexibles pour des dispositifs de consommateur connectés Ceased WO2016069099A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201580056786.1A CN107003836B (zh) 2014-10-27 2015-08-27 用于所连接的消费者设备的灵活设备模板
EP15854348.8A EP3213186A4 (fr) 2014-10-27 2015-08-27 Modèles de dispositifs flexibles pour des dispositifs de consommateur connectés

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/525,098 2014-10-27
US14/525,098 US9396015B2 (en) 2014-10-27 2014-10-27 Flexible device templates for connected consumer devices

Publications (2)

Publication Number Publication Date
WO2016069099A1 true WO2016069099A1 (fr) 2016-05-06
WO2016069099A8 WO2016069099A8 (fr) 2017-05-26

Family

ID=55792068

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/047285 Ceased WO2016069099A1 (fr) 2014-10-27 2015-08-27 Modèles de dispositifs flexibles pour des dispositifs de consommateur connectés

Country Status (4)

Country Link
US (1) US9396015B2 (fr)
EP (1) EP3213186A4 (fr)
CN (1) CN107003836B (fr)
WO (1) WO2016069099A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109219155A (zh) * 2017-06-29 2019-01-15 艾拉物联公司 移动环境设备中的连接状态优化

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170134500A1 (en) * 2015-11-09 2017-05-11 Admobilize Llc. System and method for creating operating systems to network physical objects or things
US11768004B2 (en) * 2016-03-31 2023-09-26 Johnson Controls Tyco IP Holdings LLP HVAC device registration in a distributed building management system
US20180129191A1 (en) * 2016-11-04 2018-05-10 Rockwell Automation Technologies, Inc. Industrial automation system machine analytics for a connected enterprise
WO2018170206A1 (fr) 2017-03-15 2018-09-20 Carrier Corporation Architecture d'internet des objets à plate-forme d'intégration en nuage
US10686865B2 (en) * 2017-04-10 2020-06-16 Ayla Networks, Inc. Third-party application control of devices in an IoT platform
US11176183B2 (en) 2018-03-05 2021-11-16 Honeywell International Inc. System and method to configure a flow algorithm automatically by using a primary element data sheet in multivariable smart line transmitters
US11201921B2 (en) 2019-05-13 2021-12-14 Cisco Technology, Inc. Virtual devices in internet of things (IoT) nodes
WO2021012234A1 (fr) * 2019-07-24 2021-01-28 Oppo广东移动通信有限公司 Procédé de génération de dispositif fantôme, dispositif et support d'informations
CN113193979B (zh) * 2021-03-25 2023-05-09 深圳市广和通无线股份有限公司 实现物联网模块虚拟外设共享的方法、装置、计算机设备
US12455779B2 (en) * 2023-06-12 2025-10-28 Arista Networks, Inc. Processing natural language network queries

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110107329A1 (en) * 2009-11-05 2011-05-05 International Business Machines Corporation Method and system for dynamic composing and creating 3d virtual devices
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5117491A (en) * 1989-03-31 1992-05-26 Bull Hn Information Systems Inc. Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding
US6640255B1 (en) * 1995-03-31 2003-10-28 Sun Microsystems, Inc. Method and apparatus for generation and installation of distributed objects on a distributed object system
US6052750A (en) * 1998-01-06 2000-04-18 Sony Corporation Of Japan Home audio/video network for generating default control parameters for devices coupled to the network, and replacing updated control parameters therewith
JP2000349793A (ja) * 1999-06-04 2000-12-15 Toshiba Corp ネットワーク装置及びネットワーク方法
US20010047431A1 (en) * 2000-02-09 2001-11-29 Eytchison Edward B. HAVi-VHN bridge solution
US20040221123A1 (en) * 2003-05-02 2004-11-04 Lam Wai Tung Virtual data switch and method of use
US9137251B2 (en) * 2005-03-16 2015-09-15 Fortinet, Inc. Inheritance based network management
US20080059944A1 (en) * 2006-08-15 2008-03-06 Zeligsoft Inc. Deployment-aware software code generation
CN100568202C (zh) * 2007-01-23 2009-12-09 福建升腾资讯有限公司 计算机外围设备共享服务器控制方法
CN101188684B (zh) * 2007-11-19 2010-08-11 新奥特(北京)视频技术有限公司 一种图形制播中图形模板的继承设备
US8250573B2 (en) * 2007-12-27 2012-08-21 Intel Corporation Audio subsystem sharing in a virtualized environment
JP5325981B2 (ja) * 2009-05-26 2013-10-23 株式会社日立製作所 管理サーバ及び管理システム
CN101938523A (zh) * 2010-09-16 2011-01-05 华中科技大学 一种iSCSI与FCP协议融合方法及其在容灾中的应用
US9015270B2 (en) * 2010-10-08 2015-04-21 Time Warner Cable Enterprises Llc Apparatus and methods for enforcing content protection rules during data transfer between devices
JP2012104063A (ja) * 2010-11-12 2012-05-31 Fuji Xerox Co Ltd サービス処理装置、サービス処理システム及びプログラム
US20130031225A1 (en) * 2011-07-27 2013-01-31 Amazon Technologies, Inc. Remotely preconfiguring a computing device
US9098312B2 (en) * 2011-11-16 2015-08-04 Ptc Inc. Methods for dynamically generating an application interface for a modeled entity and devices thereof
US9276958B2 (en) * 2013-02-04 2016-03-01 Ricoh Company, Ltd. Customizing security role in device management system, apparatus and method
EP2973242B1 (fr) * 2013-03-15 2020-12-23 Fisher-Rosemount Systems, Inc. Modélisation et ajustement d'usines de transformation
KR20140133357A (ko) * 2013-05-10 2014-11-19 삼성전자주식회사 디스플레이 장치 및 그 ui 화면 제공 방법
US9118670B2 (en) * 2013-08-30 2015-08-25 U-Me Holdings LLC Making a user's data, settings, and licensed content available in the cloud
US20150095880A1 (en) * 2013-09-27 2015-04-02 Salesforce.Com, Inc. Facilitating software development tools on mobile computing devices in an on-demand services environment
US20150268936A1 (en) * 2014-03-21 2015-09-24 Ptc Inc. System and method for testing computing devices in a heterogeneous environment
US20150281337A1 (en) * 2014-03-31 2015-10-01 Basic6, Inc. Open, extensible, scalable, method and system which delivers status monitoring and software upgrades to heterogeneous devices via a common user interface
US20150365480A1 (en) * 2014-06-16 2015-12-17 Spidermonkey, LLC Methods and systems for communicating with electronic devices
US20150381737A1 (en) * 2014-06-30 2015-12-31 Davra Networks Limited Gateway device and a gateway system for an internet-of-things environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US20110107329A1 (en) * 2009-11-05 2011-05-05 International Business Machines Corporation Method and system for dynamic composing and creating 3d virtual devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109219155A (zh) * 2017-06-29 2019-01-15 艾拉物联公司 移动环境设备中的连接状态优化

Also Published As

Publication number Publication date
EP3213186A1 (fr) 2017-09-06
EP3213186A4 (fr) 2018-09-12
US9396015B2 (en) 2016-07-19
WO2016069099A8 (fr) 2017-05-26
US20160117184A1 (en) 2016-04-28
CN107003836A (zh) 2017-08-01
CN107003836B (zh) 2021-07-27

Similar Documents

Publication Publication Date Title
US9396015B2 (en) Flexible device templates for connected consumer devices
CN108431765B (zh) 设备应用的生成
US10841120B2 (en) Application development framework for device control applications of IoT devices
US10999375B2 (en) Devices in a flexible registration framework
US10686865B2 (en) Third-party application control of devices in an IoT platform
WO2017040534A1 (fr) Gestion de dispositifs de passerelle à l'aide d'un dispositif de passerelle virtuel
US9800619B2 (en) Registration framework for connected consumer devices
US10454994B2 (en) Mapping an action to a specified device within a domain
US9648055B2 (en) Applications in a flexible registration framework
CN113839992A (zh) 设备控制方法及装置
JP6626956B2 (ja) コントローラに基づくデバイスのためのコードの挙動を修正するための方法および装置
CN107077326B (zh) 用于所连接的消费者设备的注册框架
CN115174383A (zh) 设备更新方法、存储介质及电子装置
HK1245457A1 (en) Method and apparatus for modifying behavior of code for a controller-based device

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15854348

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2015854348

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2015854348

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE