US20170279894A1 - Universal internet of things (iot) smart translator - Google Patents

Universal internet of things (iot) smart translator Download PDF

Info

Publication number
US20170279894A1
US20170279894A1 US15/298,379 US201615298379A US2017279894A1 US 20170279894 A1 US20170279894 A1 US 20170279894A1 US 201615298379 A US201615298379 A US 201615298379A US 2017279894 A1 US2017279894 A1 US 2017279894A1
Authority
US
United States
Prior art keywords
protocol
iot
application
devices
virtual
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.)
Abandoned
Application number
US15/298,379
Inventor
Li Chen
Ying Xiong
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.)
Esmart Tech Inc
Original Assignee
Esmart Tech 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 Esmart Tech Inc filed Critical Esmart Tech Inc
Priority to US15/298,379 priority Critical patent/US20170279894A1/en
Priority to CN201611196972.8A priority patent/CN107222454A/en
Priority to PCT/US2017/020838 priority patent/WO2017165105A1/en
Priority to US15/655,717 priority patent/US10003654B2/en
Publication of US20170279894A1 publication Critical patent/US20170279894A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • H04L67/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols

Definitions

  • IoT Internet of things
  • Many Internet of things (IoT) devices such as light bulbs, toasters, televisions, etc. may utilize some IoT protocol and are able to be controlled by or otherwise interact with various applications (or “apps”) that run on various user devices (e.g., smartphones, tablets, personal computers, etc.).
  • applications or “apps”
  • user devices e.g., smartphones, tablets, personal computers, etc.
  • IoT devices utilize a variety of communication protocols.
  • the apps may utilize a variety of protocols. End users are forced to use apps that support the communication protocol of the IoT devices.
  • IoT devices may not be able to interact with each other due to differing protocols.
  • Some embodiments provide a universal Internet of things (IoT) translator.
  • IoT Internet of things
  • Such a translator may allow communication among user devices (and/or associated applications) and IoT devices (and/or associated applications) when the user device protocols do not match the IoT device protocols.
  • Each service and each virtual may be associated with a different protocol.
  • the core may communicate among the services and virtuals using an internal protocol.
  • the universal translator may be able to relay messages, commands, data, etc., between user devices and IoT devices. Messages may be received from a user device at a virtual and converted from the protocol of the virtual to an internal protocol of the universal translator. The messages may be relayed to the service associated with an IoT device. The service may send the message to the IoT device.
  • Messages, data, etc. may be received from the IoT device at the associated services and converted to the internal protocol.
  • the converted message may be relayed to the virtual device associated with the user device protocol and sent by the virtual device to the user device.
  • FIG. 6 illustrates a message flow diagram of an exemplary communication structure used by the system of FIG. 1 ;
  • FIG. 8 illustrates a flow chart of an exemplary process that provides universal translation for an IoT device associated with multiple applications
  • FIG. 9 illustrates a flow chart of an exemplary process that sends operations to an IoT device from a user device.
  • a first exemplary embodiment provides a system that provides communication among user devices and IoT devices.
  • the system includes: at least one user device able to execute at least one application that is able to communicate using at least a first IoT protocol; at least one IoT device able to communicate using at least a second IoT protocol; and a universal translator able to communicate using at least the first IoT protocol and the second IoT protocol.
  • the universal translator 110 may be an electronic device that is able to communicate among the IoT devices 120 and user devices 130 across multiple protocols 140 - 150 , as necessary.
  • the universal translator 110 may be implemented using one or more server devices that are accessible across various appropriate networks (e.g., cellular networks, wireless networks, the Internet, etc.).
  • the translator may be included at a user device 130 , IoT device 120 , and/or a combination of user devices 130 , IoT devices 120 and/or servers.
  • the universal translator 110 may be provided as a fully extensible plug-in to any IoT protocol (whether standard or proprietary).
  • the translator may receive and apply updates automatically and securely.
  • the translator may support existing and/or potential protocols such as wireless protocols.
  • the translator may utilize encrypted communication.
  • the universal translator will be described in more detail in reference to FIGS. 2-5 below.
  • Each IoT device 120 may be an electronic device that is capable of communicating across at least one protocol 140 .
  • the IoT devices 120 may include physical devices, vehicles, buildings, etc. with embedded IoT functionality.
  • Example IoT devices include locksets, power or lighting, appliances, HVAC or heating systems, etc.
  • the IoT devices may include multiple physical components (e.g., a smart light bulb may include a physical bulb and a computer system that resides in the cloud) that are able to communicate across one or more networks.
  • Such devices may include elements such as sensors, actuators, wired or wireless communication transmitters and/or receivers, etc. Such devices may typically be able to connect to one or more local or distributed networks.
  • Each user device 130 may be device such as a smartphone, tablet, personal computer, remote control, etc. That is able to communicate across at least one protocol 150 , typically by executing an application.
  • each user device may include components such as user interface elements (e.g., touchscreens, keypads, buttons, etc.) that may be used to control or otherwise interact with the various IoT devices 140 .
  • an IoT device 120 may server as the user device 130 .
  • an IoT garage door opener may be used to control an IoT light bulb.
  • a user device 130 may attempt to interact with an IoT device 120 (e.g., by sending a command to the IoT device). If the user device 130 is able to communicate using protocol 150 while the IoT device is able to communicate using protocol 140 , the universal translator 110 may receive the command from the user device 130 across protocol 150 and deliver the command to the IoT device 120 across protocol 140 .
  • the universal translator 110 may likewise allow the IoT device 120 to send messages or data by receiving communications from the IoT device over protocol 140 and delivering the communications to the user device 130 across protocol 150 .
  • FIG. 2 illustrates a schematic block diagram of an exemplary universal translator 110 provided by system 100 .
  • the universal translator may include a core 210 , a set of services 220 , and a set of virtual devices 230 .
  • the various components 210 - 230 of translator 110 may be implemented using multiple physical devices or computer systems.
  • the services 220 may include multiple plug-in modules that are able to communicate with various IoT devices 120 and or applications (e.g., via user devices 130 ) using any supported protocol. Such services 220 will be described in more detail in reference to FIG. 4 below.
  • the virtual devices 230 may include multiple plug-in modules that are able to instantiate as an IoT device in order to communicate with various user devices 130 using any supported protocol. Such virtual devices 230 will be described in more detail in reference to FIG. 5 below.
  • the communication module 310 may manage, perform, or otherwise carry out communication (e.g., messaging, threads, etc.) between the services subsystem 220 and the virtual devices subsystem 230 .
  • the communication module 310 may further manage various hardware subsystems.
  • the translator command module 320 may manage command and/or protocol parsing.
  • the main command module 330 may manage a main thread overseeing all other modules with the core subsystem 210 .
  • the user data module 340 may handle user and/or configuration data and maintain the app list 350 and device list 360 .
  • the app list 350 may include a list of associated applications, their status, and/or other relevant information.
  • the applications may be associated based on various relevant criteria such as installation on a user device, previous execution of the applications, a listing of available applications from a provider, etc.
  • the device list 360 may include a list of associated IoT devices, their status, and/or other relevant information.
  • the devices may be associated based on various relevant factors such as previous interactions, association with a manufacturer, etc.
  • FIGS. 1-3 may be implemented in various different ways without departing from the scope of the disclosure. For instance, some embodiments may include additional modules, devices, etc. As another examples, various modules may be eliminated. In addition, the various modules, devices, etc. may be implemented using various different communication pathways or schemes than shown.
  • FIG. 4 illustrates a schematic block diagram of exemplary services 220 provided by the universal translator 110 .
  • the services 220 include a platform 410 , and multiple sets of protocol specific services 420 and associated porting layers 430 .
  • the platform 410 may be provided by the internal protocol of the translator 110 and may allow interaction with the core 210 .
  • the internal protocol may be a complete IoT protocol that is able to be used by an IoT device.
  • Each protocol specific service 420 may be associated with one or more corresponding protocol specific service 420
  • IoT protocols may include communication rules, parameters, attributes, etc. associated with the IoT protocol.
  • one or more protocol specific services 420 may be associated with a single IoT device 120 or user device 130 app, type or brand of device or app, multiple devices or apps associated with a specific protocol, etc.
  • Each porting layer 430 may link the associated specific service 420 to the internal protocol via the platform 410 .
  • FIG. 5 illustrates a schematic block diagram of exemplary virtual devices provided by the universal translator 110 .
  • the virtuals 230 include a platform 510 , and multiple sets of specific virtual devices 520 and associated porting layers 530 .
  • the platform 510 may be provided by the internal protocol of the translator 110 and may allow interaction with the core 210 .
  • Each virtual device 520 may be associated with one or more corresponding protocols and may include communication rules, parameters, attributes, etc. associated with an IoT device or user device protocol, where the protocol may be associated with an application running on the user device.
  • one or more protocol specific virtuals 520 may be associated with a single IoT device 120 or user device 130 , type or brand of device(s), multiple devices associated with a specific protocol, etc.
  • Each porting layer 530 may link the associated specific virtual 520 to the internal protocol via the platform 510 .
  • FIGS. 1-5 may be implemented in various different ways without departing from the scope of the disclosure.
  • some embodiments may include additional modules or components (e.g., hardware modules, user interface elements, etc.), may omit various components, include different arrangements of components, etc.
  • FIG. 6 illustrates a message flow diagram of an exemplary communication structure 600 used by system 100 .
  • the system may include a universal translator 110 , IoT device 120 , and user device 130 .
  • the universal translator 110 in this example includes a core 210 , services 220 , and virtuals 230 .
  • the user device 130 may include new applications 610 and old or previously added applications 615 .
  • the core 210 may send to the services 220 a request 620 to initiate service for each supported IoT protocol.
  • the services 220 may respond to such a request by listening for devices and/or apps on each supported protocol.
  • the IoT device 120 may broadcast an existence message or beacon 625 that is able to be received by one of the services 220 .
  • the service may, in turn, process the discovery of the new device 120 based on the protocol of the message 625 .
  • a new app 610 may then broadcast an existence message or beacon 630 that is able to be received by one of the services 220 .
  • the service may, in turn, process the discovery of the new app 610 based on the protocol of the message 630 .
  • the service 220 may establish a communication channel 635 between the service 220 and the device 120 .
  • the service 220 may send a device notification 640 to the core 210 .
  • the notification 640 may include an indication of a new device, identified protocol associated with the device, a unique identifier or ID associated with the device, etc.
  • the service 220 may then send an app notification 645 to the core 210 .
  • the notification 645 may include an indication of a new app, identified protocol associated with the app, a unique identifier or ID associated with the app, etc.
  • the core 210 may then insert the new app information into the app list and insert the new device information into the device list. For each new devices, the core 210 may loop through the app list and if the protocols do not match, the core may initiate a virtual device instance corresponding to the app protocol. Such initiation may achieved by sending an instantiation request 650 for a new app and/or an instantiation request 655 for an existing app from the core 210 to the virtuals 230 .
  • the core 210 may determine whether the protocol of the old app 615 matches the protocol of the new IoT device 120 and, if the protocols do not match, create a virtual 230 of the IoT device 120 that uses the protocol of the old app 615 .
  • the new virtual 230 may broadcast an existence message 660 to the new app 610 and establish a communication channel 665 between the virtual 230 and the new app 610 .
  • a virtual 230 associated with an existing app 615 may broadcast an existence message 670 to the old app 615 and establish a communication channel 675 between the virtual 230 and the old app 615 .
  • the core 210 may communicate directly with the new app 610 rather than via virtual 230 .
  • the established communication channels may then be utilized to allow two-way communication among the device 120 and apps 610 or 615 .
  • One example scenario is described below in reference to messages 680 - 695 .
  • the normalized message 685 may be sent from the virtual 230 to the core 210 using the internal protocol.
  • the core may identify the IoT device associated with the message using the device list.
  • the normalized operation 690 may then be sent from the core 210 to the specific service 220 identified using the device list.
  • the service may send the operation 695 to the IoT device 120 using the appropriate protocol for the IoT device.
  • a similar communication algorithm may be used to relay messages or data from the IoT device 120 to the user device 130 .
  • the communication structure 600 may be implemented in various different ways without departing from the scope of the disclosure. For instance, although some messages may be represented as single entities, the various communications may include various numbers of packets of data, initialization messages, handshake or other communication protocols, etc. In addition, although the messages have been shown in a particular order, different embodiments may allow different structures and/or messaging sequences depending on the content of one or more messages and/or other relevant factors. Furthermore, the communication structure may be implemented using different specific physical components.
  • FIG. 7 illustrates a flow chart 700 of an exemplary process that provides universal translation. Such a process may begin, for instance, when a user device application is launched, when an IoT device is turned on, etc. The process may be performed by a component such as translator 110 .
  • the process may identify (at 710 ) an IoT device.
  • the process may determine (at 720 ) a protocol and unique identifier (ID) for the IoT device.
  • the protocol determination may be made based on various relevant factors (e.g., messages received from the device).
  • the unique identifier may have been previously generated at the translator 110 and may be associated with a device list such as list 360 .
  • the process may then identify (at 730 ) an application.
  • the application may be executed by a user device such as a smartphone, tablet, personal computer, wearable device, etc.
  • the process may determine (at 740 ) a protocol and unique ID associated with the user device and or application.
  • the protocol determination may be made based on various appropriate criteria (e.g., messages received from the app or device).
  • the unique ID may have been previously generated at the translator 110 and may be associated with an app list such as list 350 .
  • the unique IDs may be at least partly based on information associated with the user device (e.g., a serial number, model number, etc.) and may include automatically incremented elements, randomly generated strings, user input data, protocol specific ID, and/or other appropriate features that may allow for additional unique IDs to be generated for the new apps and devices as they are encountered.
  • the translator 110 may then be able to identify the unique ID based on future communications received from the application(s) or device(s).
  • the unique ID may be unique within the universal IoT system of some embodiments (i.e., it is insufficient for the ID to be unique within its own protocol).
  • Process 700 may then determine (at 750 ) whether the protocols and/or IDs match between the IoT device and the user device. In addition, some embodiments may determine whether the protocols match between a new app or new device and each existing app or device. If the protocols and IDs do not match, the process may insert (at 760 ) a virtual device that is able to translate communications between user devices and IoT devices.
  • the process may receive (at 770 ) an operation such as a command from the application.
  • the process may then send (at 780 ) the operation to the IoT device, where the operation may be sent via the virtual device, as appropriate.
  • a similar process may be used to receive communications at the user device from the IoT device or to allow communications among IoT devices.
  • FIG. 8 illustrates a flow chart of an exemplary process 800 that provides universal translation for an IoT device associated with multiple applications.
  • process 800 describes the handling of new apps and devices. Such a process may begin, for instance, when a user device application is launched, when an IoT device is turned on, etc. The process may be performed by a component such as translator 110 .
  • the process may receive (at 810 ) a device protocol and ID and receive (at 820 ) an app protocol and ID.
  • Such information may be received from the services 220 at the core 210 using messages such as messages 640 - 645 described above.
  • the process may determine (at 830 ) whether the app is a new app (i.e., an application that has not be encountered previously). Such a determination may be made by comparing the received app information to information in the app list. If the process determines that the app is new, the process add (at 840 ) the app to the app list.
  • a new app i.e., an application that has not be encountered previously.
  • Process 800 may then loop (at 845 ) through a list of existing IoT devices and determine (at 850 ) for each device in the device list, whether the protocols of the new app and the existing devices match. If the protocols do not match, the process may initiate (at 855 ) a virtual device instance.
  • the process may determine (at 860 ) whether the device is a new device. Such a determination may be made by comparing the received device information to information in the device list. If the device is not a new device, the process may end.
  • Process 800 may then add (at 865 ) the device to the device list.
  • Process 800 may then loop (at 870 ) through the app list and determine (at 880 ) for each app in the app list, whether the protocols of the new device and the app match. If the protocols do not match, the process may initiate (at 890 ) a virtual device instance and then may end. If the protocols match, the process may end without instantiating any virtual device.
  • FIG. 9 illustrates a flow chart of an exemplary process 900 that sends operations to an IoT device from a user device.
  • a process may begin, for instance, when a command is received at a user device application, when an IoT device responds to a command, etc.
  • the process may be performed by a component such as translator 110 .
  • a similar complementary process may be used to receive messages from the IoT device and send messages to the user device.
  • the process may receive (at 910 ) an operation.
  • Such an operation may be received from an app and be based on various user inputs or actions.
  • the process may normalize (at 920 ) the operation for use within the internal protocol of the translator.
  • the process may then send (at 930 ) the operation to the core.
  • the process may then identify (at 940 ) a device from the device list and identify (at 950 ) the service associated with the device.
  • Process 900 may then send (at 970 ) the operation to the identified service. Finally, the process may send (at 980 ) the operation from the service to the IoT device and then may end.
  • processes 700 - 900 are exemplary and different embodiments may be implemented in different ways without departing from the scope of the disclosure. For instance, some embodiments may perform the operations in different orders, may omit various operations, and/or may include additional operations. As another example, some operations and/or sets of operations may be performed iteratively (e.g., as when relaying a series of commands from a user device to an IoT device). In addition, the processes may be divided into multiple sub-processes and/or combined with other processes or operations in a larger macro process. Furthermore, the processes may be executed by various different physical devices (and/or sets of devices).
  • Many of the processes and modules described above may be implemented as software processes that are specified as one or more sets of instructions recorded on a non-transitory storage medium.
  • these instructions are executed by one or more computational element(s) (e.g., microprocessors, microcontrollers, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc.) the instructions cause the computational element(s) to perform actions specified in the instructions.
  • DSPs digital signal processors
  • ASICs application-specific integrated circuits
  • FPGAs field programmable gate arrays
  • various processes and modules described above may be implemented completely using electronic circuitry that may include various sets of devices or elements (e.g., sensors, logic gates, analog to digital converters, digital to analog converters, comparators, etc.). Such circuitry may be able to perform functions and/or features that may be associated with various software elements described throughout.
  • FIG. 10 illustrates a schematic block diagram of an exemplary computer system 1000 used to implement some embodiments.
  • the system described above in reference to FIG. 1 may be at least partially implemented using computer system 1000 .
  • the communication structure described in reference to FIG. 6 and/or processes described in reference to FIGS. 7-9 may be at least partially implemented using sets of instructions that are executed using computer system 1000 .
  • Computer system 1000 may be implemented using various appropriate devices.
  • the computer system may be implemented using one or more personal computers (PCs), servers, mobile devices (e.g., a smartphone), tablet devices, and/or any other appropriate devices.
  • the various devices may work alone (e.g., the computer system may be implemented as a single PC) or in conjunction (e.g., some components of the computer system may be provided by a mobile device while other components are provided by a tablet device).
  • computer system 1000 may include at least one communication bus 1005 , one or more processors 1010 , a system memory 1015 , a read-only memory (ROM) 1020 , permanent storage devices 1025 , input devices 1030 , output devices 1035 , audio processors 1040 , video processors 1045 , various other components 1050 , and one or more network interfaces 1055 .
  • processors 1010 may include at least one communication bus 1005 , one or more processors 1010 , a system memory 1015 , a read-only memory (ROM) 1020 , permanent storage devices 1025 , input devices 1030 , output devices 1035 , audio processors 1040 , video processors 1045 , various other components 1050 , and one or more network interfaces 1055 .
  • ROM read-only memory
  • Bus 1005 represents all communication pathways among the elements of computer system 1000 . Such pathways may include wired, wireless, optical, and/or other appropriate communication pathways.
  • input devices 1030 and/or output devices 1035 may be coupled to the system 1000 using a wireless connection protocol or system.
  • the processor 1010 may, in order to execute the processes of some embodiments, retrieve instructions to execute and/or data to process from components such as system memory 1015 , ROM 1020 , and permanent storage device 1025 . Such instructions and data may be passed over bus 1005 .
  • System memory 1015 may be a volatile read-and-write memory, such as a random access memory (RAM).
  • the system memory may store some of the instructions and data that the processor uses at runtime.
  • the sets of instructions and/or data used to implement some embodiments may be stored in the system memory 1015 , the permanent storage device 1025 , and/or the read-only memory 1020 .
  • ROM 1020 may store static data and instructions that may be used by processor 1010 and/or other elements of the computer system.
  • Permanent storage device 1025 may be a read-and-write memory device.
  • the permanent storage device may be a non-volatile memory unit that stores instructions and data even when computer system 1000 is off or unpowered.
  • Computer system 1000 may use a removable storage device and/or a remote storage device as the permanent storage device.
  • Input devices 1030 may enable a user to communicate information to the computer system and/or manipulate various operations of the system.
  • the input devices may include keyboards, cursor control devices, audio input devices and/or video input devices.
  • Output devices 1035 may include printers, displays, audio devices, etc. Some or all of the input and/or output devices may be wirelessly or optically connected to the computer system 1000 .
  • Audio processor 1040 may process and/or generate audio data and/or instructions.
  • the audio processor may be able to receive audio data from an input device 1030 such as a microphone.
  • the audio processor 1040 may be able to provide audio data to output devices 1040 such as a set of speakers.
  • the audio data may include digital information and/or analog signals.
  • the audio processor 1040 may be able to analyze and/or otherwise evaluate audio data (e.g., by determining qualities such as signal to noise ratio, dynamic range, etc.).
  • the audio processor may perform various audio processing functions (e.g., equalization, compression, etc.).
  • the video processor 1045 may process and/or generate video data and/or instructions.
  • the video processor may be able to receive video data from an input device 1030 such as a camera.
  • the video processor 1045 may be able to provide video data to an output device 1040 such as a display.
  • the video data may include digital information and/or analog signals.
  • the video processor 1045 may be able to analyze and/or otherwise evaluate video data (e.g., by determining qualities such as resolution, frame rate, etc.).
  • the video processor may perform various video processing functions (e.g., contrast adjustment or normalization, color adjustment, etc.).
  • the video processor may be able to render graphic elements and/or video.
  • Other components 1050 may perform various other functions including providing storage, interfacing with external systems or components, etc.
  • computer system 1000 may include one or more network interfaces 1055 that are able to connect to one or more networks 1060 .
  • computer system 1000 may be coupled to a web server on the Internet such that a web browser executing on computer system 1000 may interact with the web server as a user interacts with an interface that operates in the web browser.
  • Computer system 1000 may be able to access one or more remote storages 1070 and one or more external components 1075 through the network interface 1055 and network 1060 .
  • the network interface(s) 1055 may include one or more APIs that may allow the computer system 1000 to access remote systems and/or storages and also may allow remote systems and/or storages to access computer system 1000 (or elements thereof).
  • non-transitory storage medium is entirely restricted to tangible, physical objects that store information in a form that is readable by electronic devices. These terms exclude any wireless or other ephemeral signals.
  • modules may be combined into a single functional block or element.
  • modules may be divided into multiple modules.

Abstract

A system provides communication among user devices and Internet of things (IoT) devices includes a user device able to execute at least one application that is able to communicate using at least a first IoT protocol; an IoT device able to communicate using at least a second IoT protocol; and a universal translator able to communicate using at least the first IoT protocol and the second IoT protocol. An automated method of providing communications between a user device and an IoT device includes: determining a protocol of the IoT device; determining a protocol of the user device; and inserting a virtual device if the protocols are different. An automated method of translating communications for IoT systems includes: receiving a device protocol and identifier; receiving an application protocol and identifier; adding the application identifier to an application list; and adding the device identifier to a device list.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims priority to U.S. Provisional Patent Application Ser. No. 62/311,729, filed on Mar. 22, 2016.
  • BACKGROUND
  • Many Internet of things (IoT) devices such as light bulbs, toasters, televisions, etc. may utilize some IoT protocol and are able to be controlled by or otherwise interact with various applications (or “apps”) that run on various user devices (e.g., smartphones, tablets, personal computers, etc.).
  • Such IoT devices utilize a variety of communication protocols. Likewise, the apps may utilize a variety of protocols. End users are forced to use apps that support the communication protocol of the IoT devices. In addition, IoT devices may not be able to interact with each other due to differing protocols.
  • Existing solutions such as bridges force users to utilize a single destination protocol, thus limiting the choice of devices.
  • Thus there exists a need for a universal IoT translator that is able to support multiple device protocols and multiple application protocols.
  • SUMMARY
  • Some embodiments provide a universal Internet of things (IoT) translator. Such a translator may allow communication among user devices (and/or associated applications) and IoT devices (and/or associated applications) when the user device protocols do not match the IoT device protocols.
  • The universal translator may include a core, a set of services, and a set of virtuals.
  • Each service and each virtual may be associated with a different protocol. The core may communicate among the services and virtuals using an internal protocol.
  • Some embodiments of the universal translator may listen for devices and/or applications. If a broadcast message or beacon is received from a device or application, the universal translator may identify the protocol associated with the device or application. Some embodiments may maintain tables of applications and devices that specify the protocol used and a unique identifier for each application or device.
  • The universal translator may be able to relay messages, commands, data, etc., between user devices and IoT devices. Messages may be received from a user device at a virtual and converted from the protocol of the virtual to an internal protocol of the universal translator. The messages may be relayed to the service associated with an IoT device. The service may send the message to the IoT device.
  • Messages, data, etc. may be received from the IoT device at the associated services and converted to the internal protocol. The converted message may be relayed to the virtual device associated with the user device protocol and sent by the virtual device to the user device.
  • The preceding Summary is intended to serve as a brief introduction to various features of some exemplary embodiments. Other embodiments may be implemented in other specific forms without departing from the scope of the disclosure.
  • BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
  • The exemplary features of the disclosure are set forth in the appended claims. However, for purpose of explanation, several embodiments are illustrated in the following drawings.
  • FIG. 1 illustrates a schematic block diagram of an exemplary hardware system according to an exemplary embodiment;
  • FIG. 2 illustrates a schematic block diagram of an exemplary universal translator provided by the system of FIG. 1;
  • FIG. 3 illustrates a schematic block diagram of an exemplary core provided by the universal translator of FIG. 2;
  • FIG. 4 illustrates a schematic block diagram of exemplary services provided by the universal translator of FIG. 2;
  • FIG. 5 illustrates a schematic block diagram of exemplary virtual devices provided by the universal translator of FIG. 2;
  • FIG. 6 illustrates a message flow diagram of an exemplary communication structure used by the system of FIG. 1;
  • FIG. 7 illustrates a flow chart of an exemplary process that provides universal translation;
  • FIG. 8 illustrates a flow chart of an exemplary process that provides universal translation for an IoT device associated with multiple applications;
  • FIG. 9 illustrates a flow chart of an exemplary process that sends operations to an IoT device from a user device; and
  • FIG. 10 illustrates a schematic block diagram of an exemplary computer system used to implement some embodiments.
  • DETAILED DESCRIPTION
  • The following detailed description describes currently contemplated modes of carrying out exemplary embodiments. The description is not to be taken in a limiting sense, but is made merely for the purpose of illustrating the general principles of some embodiments, as the scope of the disclosure is best defined by the appended claims.
  • Various features are described below that can each be used independently of one another or in combination with other features. Broadly, some embodiments generally provide ways to implement communication among various internet of Things (IoT) devices.
  • A first exemplary embodiment provides a system that provides communication among user devices and IoT devices. The system includes: at least one user device able to execute at least one application that is able to communicate using at least a first IoT protocol; at least one IoT device able to communicate using at least a second IoT protocol; and a universal translator able to communicate using at least the first IoT protocol and the second IoT protocol.
  • A second exemplary embodiment provides an automated method of providing communications between a user device and an Internet of things (IoT) device. The automated method includes: determining a protocol of the IoT device; determining a protocol of the user device; and inserting a virtual device between the IoT device and the user device if the protocol of the IoT device is different than the protocol of the user device.
  • A third exemplary embodiment provides an automated method of translating communications for Internet of things (IoT) systems. The automated method includes: receiving a device protocol and identifier; receiving an application protocol and identifier; adding the application identifier to an application list; and adding the device identifier to a device list.
  • Several more detailed embodiments are described in the sections below. Section I provides a description of an exemplary hardware architecture. Section II then describes various exemplary methods of operation. Lastly, Section III describes a computer system which implements some of the embodiments.
  • I. System Architecture
  • FIG. 1 illustrates a schematic block diagram of an exemplary hardware system 100 according to an exemplary embodiment. As shown, the system may include a universal translator 110, various IoT devices 120, and various user devices 130. The various components may communicate using IoT protocols 140-150.
  • The universal translator 110 may be an electronic device that is able to communicate among the IoT devices 120 and user devices 130 across multiple protocols 140-150, as necessary. The universal translator 110 may be implemented using one or more server devices that are accessible across various appropriate networks (e.g., cellular networks, wireless networks, the Internet, etc.). The translator may be included at a user device 130, IoT device 120, and/or a combination of user devices 130, IoT devices 120 and/or servers.
  • The universal translator 110 may be provided as a fully extensible plug-in to any IoT protocol (whether standard or proprietary). The translator may receive and apply updates automatically and securely. The translator may support existing and/or potential protocols such as wireless protocols. The translator may utilize encrypted communication. The universal translator will be described in more detail in reference to FIGS. 2-5 below.
  • Each IoT device 120 may be an electronic device that is capable of communicating across at least one protocol 140. The IoT devices 120 may include physical devices, vehicles, buildings, etc. with embedded IoT functionality. Example IoT devices include locksets, power or lighting, appliances, HVAC or heating systems, etc. In some cases the IoT devices may include multiple physical components (e.g., a smart light bulb may include a physical bulb and a computer system that resides in the cloud) that are able to communicate across one or more networks.
  • Such devices may include elements such as sensors, actuators, wired or wireless communication transmitters and/or receivers, etc. Such devices may typically be able to connect to one or more local or distributed networks.
  • Each user device 130 may be device such as a smartphone, tablet, personal computer, remote control, etc. That is able to communicate across at least one protocol 150, typically by executing an application. In addition, each user device may include components such as user interface elements (e.g., touchscreens, keypads, buttons, etc.) that may be used to control or otherwise interact with the various IoT devices 140.
  • In some embodiments, an IoT device 120 may server as the user device 130. For instance, an IoT garage door opener may be used to control an IoT light bulb.
  • During operation, a user device 130 may attempt to interact with an IoT device 120 (e.g., by sending a command to the IoT device). If the user device 130 is able to communicate using protocol 150 while the IoT device is able to communicate using protocol 140, the universal translator 110 may receive the command from the user device 130 across protocol 150 and deliver the command to the IoT device 120 across protocol 140.
  • The universal translator 110 may likewise allow the IoT device 120 to send messages or data by receiving communications from the IoT device over protocol 140 and delivering the communications to the user device 130 across protocol 150.
  • FIG. 2 illustrates a schematic block diagram of an exemplary universal translator 110 provided by system 100. As shown, the universal translator may include a core 210, a set of services 220, and a set of virtual devices 230. One of ordinary skill in the art will recognize that the various components 210-230 of translator 110 may be implemented using multiple physical devices or computer systems.
  • The core 210 may process communications among the services 220 and the virtual devices 230 using an internal protocol. The core 210 may perform, direct, and/or otherwise carry out various other operations such as data lookup, storage, and/or evaluation, management of other components, etc. The core will be described in more detail in reference to FIG. 3 below.
  • The services 220 may include multiple plug-in modules that are able to communicate with various IoT devices 120 and or applications (e.g., via user devices 130) using any supported protocol. Such services 220 will be described in more detail in reference to FIG. 4 below.
  • The virtual devices 230 may include multiple plug-in modules that are able to instantiate as an IoT device in order to communicate with various user devices 130 using any supported protocol. Such virtual devices 230 will be described in more detail in reference to FIG. 5 below.
  • FIG. 3 illustrates a schematic block diagram of an exemplary core 210 provided by the universal translator 110. As shown, the core 210 may include a communication module 310, a translator command module 320, a main command module 330, a user data module 340, an app list 350, and a device list 360.
  • The communication module 310 may manage, perform, or otherwise carry out communication (e.g., messaging, threads, etc.) between the services subsystem 220 and the virtual devices subsystem 230. The communication module 310 may further manage various hardware subsystems.
  • The translator command module 320 may manage command and/or protocol parsing.
  • The main command module 330 may manage a main thread overseeing all other modules with the core subsystem 210.
  • The user data module 340 may handle user and/or configuration data and maintain the app list 350 and device list 360.
  • The app list 350 may include a list of associated applications, their status, and/or other relevant information. The applications may be associated based on various relevant criteria such as installation on a user device, previous execution of the applications, a listing of available applications from a provider, etc.
  • The device list 360 may include a list of associated IoT devices, their status, and/or other relevant information. The devices may be associated based on various relevant factors such as previous interactions, association with a manufacturer, etc.
  • One of ordinary skill in the art will recognize that system and/or devices of FIGS. 1-3 may be implemented in various different ways without departing from the scope of the disclosure. For instance, some embodiments may include additional modules, devices, etc. As another examples, various modules may be eliminated. In addition, the various modules, devices, etc. may be implemented using various different communication pathways or schemes than shown.
  • FIG. 4 illustrates a schematic block diagram of exemplary services 220 provided by the universal translator 110. As shown, the services 220 include a platform 410, and multiple sets of protocol specific services 420 and associated porting layers 430.
  • The platform 410 may be provided by the internal protocol of the translator 110 and may allow interaction with the core 210. The internal protocol may be a complete IoT protocol that is able to be used by an IoT device.
  • Each protocol specific service 420 may be associated with one or more corresponding
  • IoT protocols and may include communication rules, parameters, attributes, etc. associated with the IoT protocol. In some cases, one or more protocol specific services 420 may be associated with a single IoT device 120 or user device 130 app, type or brand of device or app, multiple devices or apps associated with a specific protocol, etc.
  • Each porting layer 430 may link the associated specific service 420 to the internal protocol via the platform 410.
  • FIG. 5 illustrates a schematic block diagram of exemplary virtual devices provided by the universal translator 110. As shown, the virtuals 230 include a platform 510, and multiple sets of specific virtual devices 520 and associated porting layers 530.
  • The platform 510 may be provided by the internal protocol of the translator 110 and may allow interaction with the core 210.
  • Each virtual device 520 may be associated with one or more corresponding protocols and may include communication rules, parameters, attributes, etc. associated with an IoT device or user device protocol, where the protocol may be associated with an application running on the user device. In some cases, one or more protocol specific virtuals 520 may be associated with a single IoT device 120 or user device 130, type or brand of device(s), multiple devices associated with a specific protocol, etc.
  • Each porting layer 530 may link the associated specific virtual 520 to the internal protocol via the platform 510.
  • One of ordinary skill in the art will recognize that the system and components described above in reference to FIGS. 1-5 may be implemented in various different ways without departing from the scope of the disclosure. For instance, some embodiments may include additional modules or components (e.g., hardware modules, user interface elements, etc.), may omit various components, include different arrangements of components, etc.
  • II. Methods of Operation
  • FIG. 6 illustrates a message flow diagram of an exemplary communication structure 600 used by system 100. As shown, the system may include a universal translator 110, IoT device 120, and user device 130. The universal translator 110 in this example includes a core 210, services 220, and virtuals 230. The user device 130 may include new applications 610 and old or previously added applications 615.
  • As shown, the core 210 may send to the services 220 a request 620 to initiate service for each supported IoT protocol. The services 220 may respond to such a request by listening for devices and/or apps on each supported protocol.
  • Next, the IoT device 120 may broadcast an existence message or beacon 625 that is able to be received by one of the services 220. The service may, in turn, process the discovery of the new device 120 based on the protocol of the message 625.
  • A new app 610 may then broadcast an existence message or beacon 630 that is able to be received by one of the services 220. The service may, in turn, process the discovery of the new app 610 based on the protocol of the message 630.
  • The service 220 may establish a communication channel 635 between the service 220 and the device 120. Next, the service 220 may send a device notification 640 to the core 210. The notification 640 may include an indication of a new device, identified protocol associated with the device, a unique identifier or ID associated with the device, etc.
  • The service 220 may then send an app notification 645 to the core 210. The notification 645 may include an indication of a new app, identified protocol associated with the app, a unique identifier or ID associated with the app, etc.
  • In response to the notifications 640-645, the core 210 may then insert the new app information into the app list and insert the new device information into the device list. For each new devices, the core 210 may loop through the app list and if the protocols do not match, the core may initiate a virtual device instance corresponding to the app protocol. Such initiation may achieved by sending an instantiation request 650 for a new app and/or an instantiation request 655 for an existing app from the core 210 to the virtuals 230.
  • The core 210 may determine whether the protocol of the old app 615 matches the protocol of the new IoT device 120 and, if the protocols do not match, create a virtual 230 of the IoT device 120 that uses the protocol of the old app 615. Next, the new virtual 230 may broadcast an existence message 660 to the new app 610 and establish a communication channel 665 between the virtual 230 and the new app 610. Similarly, a virtual 230 associated with an existing app 615 may broadcast an existence message 670 to the old app 615 and establish a communication channel 675 between the virtual 230 and the old app 615. Alternatively, if the protocols do match, the core 210 may communicate directly with the new app 610 rather than via virtual 230.
  • The established communication channels (and internal channels of the universal translator 110) may then be utilized to allow two-way communication among the device 120 and apps 610 or 615. One example scenario is described below in reference to messages 680-695.
  • In this example, an operation (e.g., a turn-on command) may be initiated by a new app 610. As shown, the command 680 may be sent from the new app 610 to the virtual 230. The virtual may normalize the operation, command, or application programming interface (API) to the universal translator internal protocol.
  • Next, the normalized message 685 may be sent from the virtual 230 to the core 210 using the internal protocol. In response to the message 685, the core may identify the IoT device associated with the message using the device list. The normalized operation 690 may then be sent from the core 210 to the specific service 220 identified using the device list. Finally, the service may send the operation 695 to the IoT device 120 using the appropriate protocol for the IoT device.
  • A similar communication algorithm may be used to relay messages or data from the IoT device 120 to the user device 130.
  • One of ordinary skill in the art will recognize that the communication structure 600 may be implemented in various different ways without departing from the scope of the disclosure. For instance, although some messages may be represented as single entities, the various communications may include various numbers of packets of data, initialization messages, handshake or other communication protocols, etc. In addition, although the messages have been shown in a particular order, different embodiments may allow different structures and/or messaging sequences depending on the content of one or more messages and/or other relevant factors. Furthermore, the communication structure may be implemented using different specific physical components.
  • FIG. 7 illustrates a flow chart 700 of an exemplary process that provides universal translation. Such a process may begin, for instance, when a user device application is launched, when an IoT device is turned on, etc. The process may be performed by a component such as translator 110.
  • As shown, the process may identify (at 710) an IoT device. Next, the process may determine (at 720) a protocol and unique identifier (ID) for the IoT device. The protocol determination may be made based on various relevant factors (e.g., messages received from the device). The unique identifier may have been previously generated at the translator 110 and may be associated with a device list such as list 360.
  • The process may then identify (at 730) an application. The application may be executed by a user device such as a smartphone, tablet, personal computer, wearable device, etc. Next, the process may determine (at 740) a protocol and unique ID associated with the user device and or application. The protocol determination may be made based on various appropriate criteria (e.g., messages received from the app or device). The unique ID may have been previously generated at the translator 110 and may be associated with an app list such as list 350.
  • The unique IDs may be at least partly based on information associated with the user device (e.g., a serial number, model number, etc.) and may include automatically incremented elements, randomly generated strings, user input data, protocol specific ID, and/or other appropriate features that may allow for additional unique IDs to be generated for the new apps and devices as they are encountered. The translator 110 may then be able to identify the unique ID based on future communications received from the application(s) or device(s). The unique ID may be unique within the universal IoT system of some embodiments (i.e., it is insufficient for the ID to be unique within its own protocol).
  • Process 700 may then determine (at 750) whether the protocols and/or IDs match between the IoT device and the user device. In addition, some embodiments may determine whether the protocols match between a new app or new device and each existing app or device. If the protocols and IDs do not match, the process may insert (at 760) a virtual device that is able to translate communications between user devices and IoT devices.
  • Next, the process may receive (at 770) an operation such as a command from the application. The process may then send (at 780) the operation to the IoT device, where the operation may be sent via the virtual device, as appropriate.
  • A similar process may be used to receive communications at the user device from the IoT device or to allow communications among IoT devices.
  • FIG. 8 illustrates a flow chart of an exemplary process 800 that provides universal translation for an IoT device associated with multiple applications. Specifically, process 800 describes the handling of new apps and devices. Such a process may begin, for instance, when a user device application is launched, when an IoT device is turned on, etc. The process may be performed by a component such as translator 110.
  • As shown, the process may receive (at 810) a device protocol and ID and receive (at 820) an app protocol and ID. Such information may be received from the services 220 at the core 210 using messages such as messages 640-645 described above.
  • Next, the process may determine (at 830) whether the app is a new app (i.e., an application that has not be encountered previously). Such a determination may be made by comparing the received app information to information in the app list. If the process determines that the app is new, the process add (at 840) the app to the app list.
  • Process 800 may then loop (at 845) through a list of existing IoT devices and determine (at 850) for each device in the device list, whether the protocols of the new app and the existing devices match. If the protocols do not match, the process may initiate (at 855) a virtual device instance.
  • After determining (at 830) that the app is not new, or after determining (at 850) that the protocols match, or after initiating (at 855) a virtual device instance, the process may determine (at 860) whether the device is a new device. Such a determination may be made by comparing the received device information to information in the device list. If the device is not a new device, the process may end.
  • If the process determines that the device is a new device the process may then add (at 865) the device to the device list. Process 800 may then loop (at 870) through the app list and determine (at 880) for each app in the app list, whether the protocols of the new device and the app match. If the protocols do not match, the process may initiate (at 890) a virtual device instance and then may end. If the protocols match, the process may end without instantiating any virtual device.
  • FIG. 9 illustrates a flow chart of an exemplary process 900 that sends operations to an IoT device from a user device. Such a process may begin, for instance, when a command is received at a user device application, when an IoT device responds to a command, etc. The process may be performed by a component such as translator 110. A similar complementary process may be used to receive messages from the IoT device and send messages to the user device.
  • As shown, the process may receive (at 910) an operation. Such an operation may be received from an app and be based on various user inputs or actions.
  • Next, the process may normalize (at 920) the operation for use within the internal protocol of the translator. The process may then send (at 930) the operation to the core. The process may then identify (at 940) a device from the device list and identify (at 950) the service associated with the device.
  • Process 900 may then send (at 970) the operation to the identified service. Finally, the process may send (at 980) the operation from the service to the IoT device and then may end.
  • One of ordinary skill in the art will recognize that processes 700-900 are exemplary and different embodiments may be implemented in different ways without departing from the scope of the disclosure. For instance, some embodiments may perform the operations in different orders, may omit various operations, and/or may include additional operations. As another example, some operations and/or sets of operations may be performed iteratively (e.g., as when relaying a series of commands from a user device to an IoT device). In addition, the processes may be divided into multiple sub-processes and/or combined with other processes or operations in a larger macro process. Furthermore, the processes may be executed by various different physical devices (and/or sets of devices).
  • III. Computer System
  • Many of the processes and modules described above may be implemented as software processes that are specified as one or more sets of instructions recorded on a non-transitory storage medium. When these instructions are executed by one or more computational element(s) (e.g., microprocessors, microcontrollers, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), etc.) the instructions cause the computational element(s) to perform actions specified in the instructions.
  • In some embodiments, various processes and modules described above may be implemented completely using electronic circuitry that may include various sets of devices or elements (e.g., sensors, logic gates, analog to digital converters, digital to analog converters, comparators, etc.). Such circuitry may be able to perform functions and/or features that may be associated with various software elements described throughout.
  • FIG. 10 illustrates a schematic block diagram of an exemplary computer system 1000 used to implement some embodiments. For example, the system described above in reference to FIG. 1 may be at least partially implemented using computer system 1000. As another example, the communication structure described in reference to FIG. 6 and/or processes described in reference to FIGS. 7-9 may be at least partially implemented using sets of instructions that are executed using computer system 1000.
  • Computer system 1000 may be implemented using various appropriate devices. For instance, the computer system may be implemented using one or more personal computers (PCs), servers, mobile devices (e.g., a smartphone), tablet devices, and/or any other appropriate devices. The various devices may work alone (e.g., the computer system may be implemented as a single PC) or in conjunction (e.g., some components of the computer system may be provided by a mobile device while other components are provided by a tablet device).
  • As shown, computer system 1000 may include at least one communication bus 1005, one or more processors 1010, a system memory 1015, a read-only memory (ROM) 1020, permanent storage devices 1025, input devices 1030, output devices 1035, audio processors 1040, video processors 1045, various other components 1050, and one or more network interfaces 1055.
  • Bus 1005 represents all communication pathways among the elements of computer system 1000. Such pathways may include wired, wireless, optical, and/or other appropriate communication pathways. For example, input devices 1030 and/or output devices 1035 may be coupled to the system 1000 using a wireless connection protocol or system.
  • The processor 1010 may, in order to execute the processes of some embodiments, retrieve instructions to execute and/or data to process from components such as system memory 1015, ROM 1020, and permanent storage device 1025. Such instructions and data may be passed over bus 1005.
  • System memory 1015 may be a volatile read-and-write memory, such as a random access memory (RAM). The system memory may store some of the instructions and data that the processor uses at runtime. The sets of instructions and/or data used to implement some embodiments may be stored in the system memory 1015, the permanent storage device 1025, and/or the read-only memory 1020. ROM 1020 may store static data and instructions that may be used by processor 1010 and/or other elements of the computer system.
  • Permanent storage device 1025 may be a read-and-write memory device. The permanent storage device may be a non-volatile memory unit that stores instructions and data even when computer system 1000 is off or unpowered. Computer system 1000 may use a removable storage device and/or a remote storage device as the permanent storage device.
  • Input devices 1030 may enable a user to communicate information to the computer system and/or manipulate various operations of the system. The input devices may include keyboards, cursor control devices, audio input devices and/or video input devices. Output devices 1035 may include printers, displays, audio devices, etc. Some or all of the input and/or output devices may be wirelessly or optically connected to the computer system 1000.
  • Audio processor 1040 may process and/or generate audio data and/or instructions. The audio processor may be able to receive audio data from an input device 1030 such as a microphone. The audio processor 1040 may be able to provide audio data to output devices 1040 such as a set of speakers. The audio data may include digital information and/or analog signals. The audio processor 1040 may be able to analyze and/or otherwise evaluate audio data (e.g., by determining qualities such as signal to noise ratio, dynamic range, etc.). In addition, the audio processor may perform various audio processing functions (e.g., equalization, compression, etc.).
  • The video processor 1045 (or graphics processing unit) may process and/or generate video data and/or instructions. The video processor may be able to receive video data from an input device 1030 such as a camera. The video processor 1045 may be able to provide video data to an output device 1040 such as a display. The video data may include digital information and/or analog signals. The video processor 1045 may be able to analyze and/or otherwise evaluate video data (e.g., by determining qualities such as resolution, frame rate, etc.). In addition, the video processor may perform various video processing functions (e.g., contrast adjustment or normalization, color adjustment, etc.). Furthermore, the video processor may be able to render graphic elements and/or video.
  • Other components 1050 may perform various other functions including providing storage, interfacing with external systems or components, etc.
  • Finally, as shown in FIG. 10, computer system 1000 may include one or more network interfaces 1055 that are able to connect to one or more networks 1060. For example, computer system 1000 may be coupled to a web server on the Internet such that a web browser executing on computer system 1000 may interact with the web server as a user interacts with an interface that operates in the web browser. Computer system 1000 may be able to access one or more remote storages 1070 and one or more external components 1075 through the network interface 1055 and network 1060. The network interface(s) 1055 may include one or more APIs that may allow the computer system 1000 to access remote systems and/or storages and also may allow remote systems and/or storages to access computer system 1000 (or elements thereof).
  • As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic devices. These terms exclude people or groups of people. As used in this specification and any claims of this application, the term “non-transitory storage medium” is entirely restricted to tangible, physical objects that store information in a form that is readable by electronic devices. These terms exclude any wireless or other ephemeral signals.
  • It should be recognized by one of ordinary skill in the art that any or all of the components of computer system 1000 may be used in conjunction with some embodiments.
  • Moreover, one of ordinary skill in the art will appreciate that many other system configurations may also be used in conjunction with some embodiments or components of some embodiments.
  • In addition, while the examples shown may illustrate many individual modules as separate elements, one of ordinary skill in the art would recognize that these modules may be combined into a single functional block or element. One of ordinary skill in the art would also recognize that a single module may be divided into multiple modules.
  • The foregoing relates to illustrative details of exemplary embodiments and modifications may be made without departing from the scope of the disclosure as defined by the following claims.

Claims (20)

We claim:
1. A system that provides communication among user devices and internet of things (IoT) devices, the system comprising:
at least one user device able to execute at least one application that is able to communicate using at least a first IoT protocol;
at least one IoT device able to communicate using at least a second IoT protocol; and
a universal translator able to communicate using at least the first IoT protocol and the second IoT protocol.
2. The system of claim 1, wherein the universal translator comprises:
a core;
a set of services, each service in the set of services associated with a different IoT protocol; and
a set of virtual devices, each virtual device in the set of virtual devices associate with a different IoT protocol.
3. The system of claim 2, wherein each service in the set of services comprises a protocol specific element and a service porting layer.
4. The system of claim 2, wherein each virtual device in the set of virtual devices comprises a device specific element and a device porting layer.
5. The system of claim 4, wherein the core receives a command from the at least one user device via the protocol specific element and the service porting layer and delivers the command to the at least one IoT device via the device specific element and the device porting layer.
6. The system of claim 1, wherein a virtual device of the universal translator is communicatively coupled between the at least one user device and the at least one IoT device if the first IoT protocol and second IoT protocol are different.
7. The system of claim 1, wherein the at least one user device is one of a smart phone, a tablet, a personal computer, and a remote control.
8. An automated method of providing communications between a user device and an Internet of things (IoT) device, the automated method comprising:
determining a protocol of the IoT device;
determining a protocol of the user device; and
inserting a virtual device between the IoT device and the user device if the protocol of the IoT device is different than the protocol of the user device.
9. The method of claim 8 further comprising:
providing a first protocol specific service that is associated with the protocol of the IoT device; and
providing a second protocol specific service that is associated with the protocol of the user device.
10. The method of claim 9 further comprising:
receiving an operation from the user device via the second protocol specific service; and
sending the operation to the IoT device via the first protocol specific service.
11. The method of claim 8, wherein determining a protocol of the IoT device comprises:
indentifying the IoT device; and
retrieving, from a device list, a protocol associated with the identified IoT device.
12. The method of claim 8, wherein determining a protocol of the user device comprises:
identifying an application running on the user device; and
retrieving, from an application list, a protocol associated with the identified application.
13. The method of claim 8, wherein the virtual device is associated with the protocol of the user device.
14. The method of claim 8 further comprising receiving a message from the IoT device via the first protocol specific service and sending the message to the user device via the second protocol specific service.
15. An automated method of translating communications for Internet of things (IoT) systems, the automated method comprising:
receiving a device protocol and identifier;
receiving an application protocol and identifier;
adding the application identifier to an application list; and
adding the device identifier to a device list.
16. The method of claim 15 further comprising, iteratively, for each application in the application list:
selecting a next application from the application list;
determining whether the protocol of the next application matches the device protocol; and
instantiating a virtual device instance if the protocol of the next application does not match the device protocol.
17. The method of claim 16, wherein the device protocol and identifier are received at a protocol specific service associated with the device protocol.
18. The method of claim 17, wherein the application protocol and identifier are received at a protocol specific service associated with the application protocol.
19. The method of claim 18, wherein the protocol specific service associated with the application protocol, the protocol specific services associated with the device protocol, and the virtual device are able to communicate using an internal protocol.
20. The method of claim 19, wherein the virtual device is associated with the application protocol.
US15/298,379 2016-03-22 2016-10-20 Universal internet of things (iot) smart translator Abandoned US20170279894A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US15/298,379 US20170279894A1 (en) 2016-03-22 2016-10-20 Universal internet of things (iot) smart translator
CN201611196972.8A CN107222454A (en) 2016-03-22 2016-12-22 General Internet of Things(IoT)Intelligent converter
PCT/US2017/020838 WO2017165105A1 (en) 2016-03-22 2017-03-04 Universal internet of things (iot) smart translator
US15/655,717 US10003654B2 (en) 2016-03-22 2017-07-20 Universal internet of things (IoT) smart translator

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662311729P 2016-03-22 2016-03-22
US15/298,379 US20170279894A1 (en) 2016-03-22 2016-10-20 Universal internet of things (iot) smart translator

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/655,717 Continuation US10003654B2 (en) 2016-03-22 2017-07-20 Universal internet of things (IoT) smart translator

Publications (1)

Publication Number Publication Date
US20170279894A1 true US20170279894A1 (en) 2017-09-28

Family

ID=59898270

Family Applications (2)

Application Number Title Priority Date Filing Date
US15/298,379 Abandoned US20170279894A1 (en) 2016-03-22 2016-10-20 Universal internet of things (iot) smart translator
US15/655,717 Expired - Fee Related US10003654B2 (en) 2016-03-22 2017-07-20 Universal internet of things (IoT) smart translator

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/655,717 Expired - Fee Related US10003654B2 (en) 2016-03-22 2017-07-20 Universal internet of things (IoT) smart translator

Country Status (3)

Country Link
US (2) US20170279894A1 (en)
CN (1) CN107222454A (en)
WO (1) WO2017165105A1 (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170031333A1 (en) * 2015-07-31 2017-02-02 Arm Ip Limited Managing interaction constraints
US20170374490A1 (en) * 2016-06-22 2017-12-28 Intel Corporation Internet of things protocol handler
US20180034914A1 (en) * 2016-07-29 2018-02-01 American Megatrends, Inc. System and method for controlling heterogeneous internet of things (iot) devices using single application
CN108040051A (en) * 2017-12-12 2018-05-15 开放物联(北京)科技发展有限公司 A kind of configurable things-internet gateway method for converting protocol
EP3474131A1 (en) * 2017-10-19 2019-04-24 Libre Wireless Technologies, Inc. Multiprotocol audio7voice internet-of-things devices and related systems
WO2019112734A1 (en) * 2017-12-06 2019-06-13 Intel Corporation Plugin management for internet of things (iot) network optimization
US10419385B2 (en) * 2017-12-11 2019-09-17 Mastercard International Incorporated Systems and methods for use in transmitting electronic messages between different protocols
US20200021670A1 (en) * 2016-12-27 2020-01-16 Intel IP Corporation Framework for iot protocol identification and management
EP3657732A4 (en) * 2017-10-18 2020-07-29 Samsung Electronics Co., Ltd. Electronic device control system for controlling electronic device, and method for controlling electronic device
US11026063B2 (en) 2017-10-19 2021-06-01 Libre Wireless Technologies Inc. Internet-of-things devices and related methods for performing in-call interactions
US11038966B1 (en) 2020-04-28 2021-06-15 Arm Ip Limited Remote device operation
US11133857B2 (en) * 2017-03-29 2021-09-28 Intel Corporation Relay selection for communication in multi-rat environment
US20210397526A1 (en) * 2020-06-18 2021-12-23 General Electric Company Systems and methods of providing an abstraction layer between an application layer and hardware components of a computing device
EP3924808A4 (en) * 2019-02-14 2022-10-26 Fluence Bioengineering, Inc. Controlled agricultural systems and methods of managing agricultural systems
US11663414B2 (en) 2018-02-20 2023-05-30 Fluence Bioengineering, Inc. Controlled agricultural systems and methods of managing agricultural systems

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3437300A4 (en) 2016-03-29 2020-03-04 Resolution Products, Inc. Universal protocol translator
EP3634018A1 (en) * 2018-10-02 2020-04-08 Siemens Aktiengesellschaft System for data communication in a network of local devices
CN111031138B (en) * 2019-12-19 2022-08-05 青岛海尔科技有限公司 Communication method and device of Internet of things and computer readable storage medium
CN115136570A (en) * 2020-02-20 2022-09-30 华为技术有限公司 Integration of internet of things devices
TWI810523B (en) * 2020-03-12 2023-08-01 日商愛德萬測試股份有限公司 Automated test equipment system and apparatus, and method for testing duts
CN114051219A (en) * 2021-11-12 2022-02-15 中国电力科学研究院有限公司 Edge node wireless sensor connection method and system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052031A1 (en) * 2000-01-14 2001-12-13 Information Design Inc. Uniform application programming interface for messaging middleware
US8005937B2 (en) * 2004-03-02 2011-08-23 Fatpot Technologies, Llc Dynamically integrating disparate computer-aided dispatch systems
US7305289B2 (en) * 2004-05-28 2007-12-04 Spx Corporation Universal translator for vehicle information
US7715433B2 (en) * 2006-07-14 2010-05-11 Boren Gary W Universal controller and signal monitor
CN103748620A (en) * 2011-04-22 2014-04-23 艾克潘尔基公司 Systems and methods for analyzing energy usage
WO2013123445A1 (en) * 2012-02-17 2013-08-22 Interdigital Patent Holdings, Inc. Smart internet of things services
US9413827B2 (en) * 2013-02-25 2016-08-09 Qualcomm Incorporated Context aware actions among heterogeneous internet of things (IOT) devices
WO2014164538A1 (en) * 2013-03-12 2014-10-09 Tait Towers Manufacturing, LLC Universal translator for an automation and motion control system
KR102046287B1 (en) * 2013-05-06 2019-11-18 콘비다 와이어리스, 엘엘씨 Internet of things(iot) adaptation services
KR101560470B1 (en) * 2014-01-07 2015-10-16 한국과학기술원 Smart access point apparatus and method for controlling internet of things apparatus using the smart access point apparatus
US9111214B1 (en) * 2014-01-30 2015-08-18 Vishal Sharma Virtual assistant system to remotely control external services and selectively share control
WO2015183014A1 (en) * 2014-05-28 2015-12-03 Samsung Electronics Co., Ltd. Apparatus and method for controlling internet of things devices
EP3172859B1 (en) * 2014-07-22 2019-09-04 Convida Wireless, LLC Interworking light weight machine-to-machine protocol with device management protocol
US9210534B1 (en) * 2015-02-19 2015-12-08 Citrix Systems, Inc. Location assistance in a machine to machine instant messaging system
US10572296B2 (en) * 2015-02-27 2020-02-25 Savi Technology, Inc. System and method for a data processing architecture
US10425811B2 (en) * 2015-08-24 2019-09-24 Ayla Networks, Inc. Linked user accounts for an internet-of-things platform
US20170060911A1 (en) * 2015-08-31 2017-03-02 Synchronoss Technologies, Inc. Systems and Methods For an Open System Internet of Things Data Hub
US10110697B2 (en) * 2015-10-28 2018-10-23 Adobe Systems Incorporated Environmental detection of internet of things devices
US10681027B2 (en) * 2016-01-19 2020-06-09 Honeywell International Inc. Gateway mechanisms to associate a contractor account
US20170237623A1 (en) * 2016-02-15 2017-08-17 Kilton Patrick Hopkins Methods and apparatus for unified integration and processing of a variety of information sensors and systems

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170031333A1 (en) * 2015-07-31 2017-02-02 Arm Ip Limited Managing interaction constraints
US11218855B2 (en) * 2015-07-31 2022-01-04 Arm Ip Limited Managing interaction constraints
US20170374490A1 (en) * 2016-06-22 2017-12-28 Intel Corporation Internet of things protocol handler
US10299091B2 (en) * 2016-06-22 2019-05-21 Intel Corporation Internet of things protocol handler
US20180034914A1 (en) * 2016-07-29 2018-02-01 American Megatrends, Inc. System and method for controlling heterogeneous internet of things (iot) devices using single application
US10834586B2 (en) * 2016-07-29 2020-11-10 Amzetta Technologies, Llc System and method for controlling heterogeneous internet of things (IoT) devices using single application
US11076024B2 (en) * 2016-12-27 2021-07-27 Intel Corporation Framework for IoT protocol identification and management
US11770459B2 (en) * 2016-12-27 2023-09-26 Intel Corporation Framework for IoT protocol identification and management
US20220109743A1 (en) * 2016-12-27 2022-04-07 Intel Corporation Framework for iot protocol identification and management
US20200021670A1 (en) * 2016-12-27 2020-01-16 Intel IP Corporation Framework for iot protocol identification and management
US11133857B2 (en) * 2017-03-29 2021-09-28 Intel Corporation Relay selection for communication in multi-rat environment
EP3657732A4 (en) * 2017-10-18 2020-07-29 Samsung Electronics Co., Ltd. Electronic device control system for controlling electronic device, and method for controlling electronic device
JP2019087994A (en) * 2017-10-19 2019-06-06 リブレ ワイヤレス テクノロジーズ インコーポレイテッドLibre Wireless Technologies, Inc. Multi-protocol audio/voice iot device and related system
US11026063B2 (en) 2017-10-19 2021-06-01 Libre Wireless Technologies Inc. Internet-of-things devices and related methods for performing in-call interactions
US10887123B2 (en) 2017-10-19 2021-01-05 Libre Wireless Technologies, Inc. Multiprotocol audio/voice internet-of-things devices and related system
EP3474131A1 (en) * 2017-10-19 2019-04-24 Libre Wireless Technologies, Inc. Multiprotocol audio7voice internet-of-things devices and related systems
JP7410640B2 (en) 2017-10-19 2024-01-10 リブレ ワイヤレス テクノロジーズ インコーポレイテッド Multiprotocol audio/voice IoT devices and related systems
WO2019112734A1 (en) * 2017-12-06 2019-06-13 Intel Corporation Plugin management for internet of things (iot) network optimization
US11483418B2 (en) * 2017-12-06 2022-10-25 Intel Corporation Plugin management for internet of things (IoT) network optimization
US10419385B2 (en) * 2017-12-11 2019-09-17 Mastercard International Incorporated Systems and methods for use in transmitting electronic messages between different protocols
CN108040051A (en) * 2017-12-12 2018-05-15 开放物联(北京)科技发展有限公司 A kind of configurable things-internet gateway method for converting protocol
US11663414B2 (en) 2018-02-20 2023-05-30 Fluence Bioengineering, Inc. Controlled agricultural systems and methods of managing agricultural systems
EP3924808A4 (en) * 2019-02-14 2022-10-26 Fluence Bioengineering, Inc. Controlled agricultural systems and methods of managing agricultural systems
US11038966B1 (en) 2020-04-28 2021-06-15 Arm Ip Limited Remote device operation
US20210397526A1 (en) * 2020-06-18 2021-12-23 General Electric Company Systems and methods of providing an abstraction layer between an application layer and hardware components of a computing device

Also Published As

Publication number Publication date
US10003654B2 (en) 2018-06-19
CN107222454A (en) 2017-09-29
WO2017165105A1 (en) 2017-09-28
US20180115612A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
US10003654B2 (en) Universal internet of things (IoT) smart translator
US10567479B2 (en) Managing a device cloud
US11050683B2 (en) System for providing dialog content
US10425392B2 (en) Managing a device cloud
CN106557038B (en) Computing device, method and system for customized environment
CN105471686B (en) Terminal control method, device and system
AU2016335997B2 (en) Cloud-synchronized architecture for a home automation system
KR101924163B1 (en) Methods, systems, and media for managing output of an hdmi source
WO2018137521A1 (en) Method for realizing live voice broadcast in virtual scene interaction client, device and storage medium
KR102636605B1 (en) Control and/or register smart devices locally by the Assistant client device
KR20160019087A (en) System, method and computer-readable medium for presenting media content
US11122318B2 (en) Methods and systems for implementing legacy remote and keystroke redirection
KR102203757B1 (en) Closed caption-supported content receiving apparatus and display apparatus, system having the same and closed caption-providing method thereof
WO2020168568A1 (en) Data processing method and apparatus, electronic device and readable storage medium
CN111028839B (en) Smart home control method and device and electronic equipment
WO2016150191A1 (en) Data sharing method and device
CN112929246A (en) Processing method of operation instruction, storage medium, program product and user terminal
KR20120034338A (en) Security operating method for access point and system thereof
US9900660B2 (en) Password protected stream receivers
US10298879B2 (en) Method and system for switching a push-based video call between devices in a group
US20240028315A1 (en) Automatically Creating Efficient Meshbots
US20210067633A1 (en) Service System Supporting Voice Call Using Digital Assistant Device, Method Thereof, And Non-Transitory Computer Readable Medium Having Computer Program Recorded Thereon
US11937085B2 (en) Methods, systems, and media for creating temporary virtual access points using WiFi routers when portals cannot be presented
US20220413882A1 (en) Operating environment personalizations
US20240064883A1 (en) Requesting a lighting device to control other lighting devices to render light effects from a light script

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION