Back

Machine to Machine Instant Messaging


Drawings

Brief Description:

Figure 1 is a system diagram illustrating an example of a system for connecting devices, such as internet of things (IoT) devices, other devices or machines, and/or systems, according to some embodiments

Detailed Description:

Figure 1 depicts a system 100 for connecting devices, such as IoT devices, other devices or machines, and/or systems. An IoT device may include any network-connectable device or system having sensing or controlfunctionality. An IoT device may be connectable to a local area network (LAN), a personal area network (PAN), and to a wide area network (WAN). For example, an IoT device may include one or more radios operating using one or more communications protocols that allow the IoT device to connect to one or more LANs or PANs, such as WiFi.TM., ZigBee.TM., Bluetooth.TM., Bluetooth low Energy.TM. (BLE), Infrared Data Association, Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and any other suitable protocol that allows connection to a LAN. A LAN may interconnect various network devices and provide the network devices with the ability to connect to a WAN. A router, modem, access point, or other switching mechanism may be used to control and manage the connections to the network devices. A PAN may provide network access for a user’spersonal devices (e.g., a network for connecting devices worn or carried by the user, for connecting devices located in the user’sworkspace, or the like), and may further provide access to other networks, such as a LAN or a WAN. The IoT device may further include one or more radios that allow the IoT device to connect to a WAN, such as the internet, a private cloud network, a public cloud network, or any other network external to a local network. The system 100 may also include third-party messaging services (e.g., facebook, twitter, LinkedIn, SMS, etc.) as well as non-IoT devices and systems

The system 100 may include one or more remote servers, or clouds, that are in communication with other devices or systems via a network, such as the internet, an intranet, a LAN, a PAN, or a WAN. For example, the system 100 includes a common messaging system 102 (or messaging system 102) that supports machine-to-machine instant message exchange in real-time or near real-time. In some embodiments, the messaging system 102 may be an open source machine-to-machine messaging platform, enabling IoT devices, other devices or machines, and/or systems to message or otherwise communicate with any other IoT devices, other devices or machines, and/or systems. The messaging system 102 may be implemented by one or more remote servers and may allow an IoT device, other device or machine, and/or a system to exchange communications or messages with another device or systemregardless of whether the devices or systems are built by different manufacturers, operate using different connection protocols or interfaces, or whether the devices or systems are built with the ability to communicate with a network. While only a single messaging system 102 is shown, one of ordinary skill in the art will appreciate that multiple private or public messaging systems may be implemented using the techniques described herein. One or more remote servers of the messaging system 102 may be connected to a network via the internet and/or other connection platforms (e.g., a WAN and/or a LAN) such that the servers may be accessed from anywhere in the world. The remote servers allow IoT devices, other devices or machines, and/or systems connected to the servers via the network to communicate and exchange messages with other IoT devices, other devices or machines, and/or systems from anywhere in the world. The remote servers may be configured with enough processing power to run an application, store and process data, and/or perform any other computing task. In some examples, the remote servers may provide enough processing power to operate applications running on devices located remotely from the servers and applications running on the servers themselves. 

Messaging system 102 may be configured to supportmultiple connection protocols, such as any suitable machine-to-machine connection protocol. For example, the messaging system 102 may supportconnection protocols such as hypertext transfer protocol (HTTP), websockets, message queuing telemetry transport (MQTT), constrained application protocol (CoAP), Extensible Messaging and Presence Protocol (XMPP), Simple Network Management Protocol (SNMP), AllJoyn, and/or any other suitable connection protocol. The multiple connection protocols supported by the messaging system 102 may be referred to herein as native connection protocols of the messaging system 102. Messaging system 102 may also supportmultiple developer platforms, such as one or more software developer kits (SDKs). For example, the messaging system may supportSDKs such as Node.JS, JavaScript, python, ruby, or any other suitable SDK. The support of multiple developer platforms and protocols provides programmers with the flexibility to customize functions, instructions, and commands for IoT devices, other devices or machines, and/or systems connected to messaging system 102

The messaging system 102 may include a cloud infrastructure system that provides cloud services. In certain embodiments, services provided by the cloud infrastructure of messaging system 102 may include a host of services that are made available to users of the cloud infrastructure system on demand, such as registration, access control, and message routing for users, devices or machines, systems, or components thereof. Services provided by the messaging system 102 can be dynamically scaled to meet the demands of users. The messaging system 102 may comprise one or more computers, servers, and/or systems. In some embodiments, the computers, servers, and/or systems that make up the cloud network of the messaging system 102 are different from a user’sown on-premises computers, servers, and/or systems. For example, the cloud network may host an application, and a user may, via a communication network such as a WAN, LAN, and/or PAN, on demand, order and use the application. In some embodiments, the cloud network of the messaging system 102 may host a Network Address Translation Traversal application to establish a secure connection between the messaging system 102 and a device or machine. A separate secure connection (e.g., using a native protocol of the messaging system 102) may be established by each device or machine for communicating with the messaging system 102. In certain embodiments, the cloud network of the messaging system 102 may include a suite of applications, middleware, or firmware that can be accessed by a user, device or machine, system, or component thereof. 

Upon registering with the messaging system 102, each device or machine, person, and/or system may be assigned a unique identifier and a security token. For example, a device (IoT or other device) or system connected to the messaging system, a person associated with an account or an application that utilizes the messaging system, or the like may be assigned or otherwise provided with a distinct universally unique identifier (UUID) and/or a distinct security token. Each IoT device, other device or machine, system, and/or person using a device must communicate its distinct UUID and security token to the messaging system 102 in order to access the messaging system 102. The messaging system 102 may authenticate the IoT device, other device or machine, system, and/or person using each respective distinct UUID and token. The messaging system 102 may use the UUIDs to process, route, and/or otherwise manage messages and other communications to an appropriate device, person, system, and/or machine. For example, a device may send a message with its UUID and a destination UUID for the device, system, or person to which the message is destined. The messaging system 102 may process, route, and/or otherwise manage the message so that it is received at the appropriate destination

In some embodiments, one or more components or programs of a device or system may also be assigned a unique identifier and a security token. In some cases, the unique identifier and/or token for the components of a device or system may be the same as the unique identifier and/or token of the device or system itself. In some cases, the unique identifier and/or token for a component or program of a device or system may be different from that of the device or system and may be unique only to the component or program. In some embodiments, components of a device or system that may be assigned a unique identifier may include a sensor (e.g., a camera, motion sensor, temperature sensor, accelerometer, gyroscope, or any other available sensor), an output (e.g., a microphone, siren, display, light, tactile output, or any other available output), a third-party messaging service that the device or system is able to run, or any other component of a device or system that can be identified, accessed, and/or controlled. 

Messaging system 102 may further be configured to interact with any application programming interface (API). Each API may also be assigned or otherwise provided with a unique identifier (e.g., a distinct UUID) and/or a security token. Assigning APIs with a unique identifier enables messaging system 102 to receive instructions from and provide instructions to any IoT device, other device or machine, and/or system that is connected to the messaging system 102. Further details describing how the messaging system 102 can interact with any API of any device or system are described herein. By being able to interact with any API, messaging system 102 may control the functionality of all components of a registered IoT device, other device or machine, and/or system that are accessible by the messaging system 102. In some embodiments, messaging system 102 may be configured such that a single message transmitted by messaging system 102 may be communicated to multiple devices and/or systems having different APIs. Accessible IoT devices, other devices or machines, and/or systems include any device that has been registered with messaging system 102 and that has been assigned a unique identifier and/or a security token. For example, a user may purchase an IoT device. The user must register the IoT device with the messaging system 102, and may be assigned a UUID and security token by the messaging system 102 to make the IoT device accessible to the messaging system 102

Using the common messaging system 102, people, devices, systems, and/or components thereof that have assigned UUIDs can query and communicate with a network of other people, devices, system, and components thereof that have assigned UUIDs and that meet specific search criteria. For example, a device may query the common messaging system 102 searching for a specific type of devices that are located in a particular area, and may receive a list of UUIDs for devices that meet the search criteria. The device may then send a message with a destination UUID assigned to the destination device to which the device wants to send a message

In some embodiments, messaging system 102 may also detect, connect, and/or communicate with other servers, allowing messaging system 102 to routemessages to IoT devices, other devices or machines, and/or systems on the other servers via a server-to-server connection. Server-to-server communications may include connections used to transfer data from one server to another server. For example, a user may use multiple cloud servers to store different types of information. A user may want to transfer data from a first server of a first cloud network to a second server of a second cloud network. A server-to-server communication allows the user to directly transfer or otherwise share this information with the second server. As another example, the messaging system 102 supports inter-cloud communications to allow people, devices or machines, systems, or components thereof to routemessages across clouds to other people, devices or machines, systems, or components thereof on other clouds. For instance, a device connected to a private or public cloud network may send a message to another device connected to another private or public cloud

IoT devices, other devices or machines, and/or systems may be able to connect with the messaging system 102 in several ways. In some embodiments, devices and systems may communicate with the messaging system 102 using a messaging system gateway. For example, IoT devices, other devices or machines, and/or systems may communicate with the messaging system 102 using messaging system gateway or hub 114. The messaging system gateway 114 may be connected to a same LAN as the devices that use the messaging system gateway 114. For example, the messaging system gateway 114 may be installed at a location, such as a home, office, a sports venue, an outside environment (e.g., a park, a city, or the like), or any other suitable location. In some embodiments, the messaging system gateway 114 includes an instance of messaging system software that is configured to interact with the messaging system 102. In some cases, the messaging system gateway 114 may be run on an operating system, such as, but not limited to, Linux.TM., Mac.TM. OS, and/or Windows.TM.. In some embodiments, a messaging system gateway 114 may be a standalone physical device, such as a wireless router or modem, which runs the gateway software that connects to the messaging system 102 using a WAN. In some embodiments, a messaging system gateway 114 may be integrated into an IoT device, other device or machine, and/or system by installing the gateway software onto the IoT device, other device or machine, and/or system. For example, the messaging system gateway 114 may be run on computing devices such as a Raspberry Pi, a home and/or office computer, Intel.TM. galileo, Beagle Bones, yuns, and/or other suitable computing device

Regardless of physical form, the messaging system gateway 114 may operate as an intermediary between the messaging system 102 and the devices or systems that use the messaging system gateway 114. For example, IoT devices, other devices or machines, and/or systems may be connected to messaging system gateway 114, which then links the IoT devices, other devices or machines, and/or systems to the messaging system 102 in real-time. The connection of a device or system to the messaging system 102 via the messaging system gateway 114 allows connected IoT devices, other devices or machines, and/or systems to communicate with one another in real-time. IoT devices, other devices or machines, and/or systems may be connected to messaging system gateway 114 using one or more native connection protocols of the IoT device, other device or machine, and/or system. The protocols may include, but are not limited to, Transmission Control Protocol (TCP), User Datagram Protocol (UDP), WiFi, ZigBee, bluetooth low energy (BLE), HTTP, websockets, MQTT, CoAP, XMPP, SNMP, AllJoyn, and/or any other suitable connection protocol. In some embodiments, messaging system gateway 114 may broadcast a private network signal such that registered devices and systems may securely connect to the messaging system gateway 114 and to the messaging system 102. Devices and systems that do not have access to the messaging system gateway 114 and messaging system 102 may be unable to process the private network signal

In some embodiments, messaging system gateway 114 is on a LAN side of a firewall, such as a network address translations (NAT) firewall implemented using a router, or other suitable firewall. In some cases, the messaging system gateway 114 may use websockets to connect to the messaging system 102. The connection between websockets of the messaging system gateway 114 and the messaging system 102 may include a bi-directional persistent connection. The bi-directional persistent connection may auto-reconnect as WAN (e.g., internet, or the like) connectivity becomes available. By locating the messaging system gateway 114 inside of the firewall, only communications to and from the messaging system gateway 114 have to be granted access to the firewall. Accordingly, the messaging system 102 and any system and/or device connected to the messaging system gateway 114 may communicate through the firewall via the messaging system gateway 114. The messaging system gateway 114 may be used by a person or business to connect various IoT devices, other devices or machines, and/or systems to the messaging system 102, serving as a secure connection for communicating with messaging system 102 much like a personal firewall

Devices and systems may also be able to communicate with the messaging system 102 using a mobile messaging system gateway that is installed on a mobile device. For example, IoT devices, other devices or machines, and/or systems may be able to connect with the messaging system 102 using a mobile gateway 118. The mobile gateway 118 is similar to a messaging system gateway 114, but instead is installed and operated on a mobile device. For example, mobile gateway 118 may be installed on a mobile phone, tablet, laptop, wearable device, or other suitable mobile device. The mobile gateway 118 may allow the mobile phone to connect to the messaging system 102. The mobile gateway 118 may access all sensors on the mobile device. For example, geolocation sensor data, compass headings, and/or accelerometer data of a mobile phone may be provided to the messaging system 102 through mobile gateway 118. In some embodiments, the mobile gateway 118 may be installed in wearable technology, such as pedometers, headsets, watches, and the like, as well as in Bluetooth.TM. low-energydevices. In some embodiments, the mobile gateway 118 may also provide a personal area network (PAN) and may allow other devices that are connectable to the mobile device to connect to the messaging system 102 via the mobile gateway 118. For example, one or more devices that do not have an Internet Protocol address and that are not able to connect to a LAN (e.g., a WiFi network or the like) may connect to the mobile gateway 118 using a wired interface or a short-range communication protocol interface, such as bluetooth, BLE, ZigBee, near field communication (NFC), radio frequency (RF), infrared (IR), or any other suitable communication protocol. These devices may then connect to messaging system 102 through the mobile gateway 118 of the mobile device. The mobile gateway 118 may operate to exchange communications between the devices and the messaging system 102. Devices that do not have an Internet Protocol address and that are not able to connect to a local area network may include wearable technology or other similar devices that only have access to a PAN. 

In some embodiments, an IoT device, other device or machine, and/or system may connect with messaging system 102, the messaging system gateway 114, and/or the mobile gateway 118 using a universal messaging system interface 116 that is programmed into the device or system. The built-in universal messaging system interface 116 (or universal interface 116) allows a device or system to perform operations that native firmware of the device or system does not allow it to perform. For example, the messaging system interface 116 may override the native firmware of a device to allow the device to perform various operations that are outside of the functionality of the native firmware. In some embodiments, the messaging system interface 116 may be installed on a device that does not have the ability to communicate with other devices using one or more connection protocols. In such embodiments, the messaging system interface 116 may provide the device with the capability to use one or more connection protocols. The messaging system interface 116 may accessone or more sensors, inputs, outputs, or programs on the device or system in order to perform various operations. For example, the messaging system interface 116 may have access to and control a geolocation sensor, a compass, a camera, a motion sensor, a temperature sensor, an accelerometer, a gyroscope, a graphical interface input, a keypad input, a touchscreen input, a microphone, a siren, a display, a light, a tactile output, a third-party messaging service that the device or system is able to run, or any other component of a device or system that can be identified, accessed, and/or controlled. 

In some embodiments, the built-in universal messaging system interface 116 may include an operating system that allows the device to communicate with the messaging system 102. Messaging system interface 116 may be installed on an IoT device, other device or machine, and/or system, such as a computing device. For example, the messaging system interface 16 may be installed on a Raspberry Pi board, an arduino board, a microcontroller, a minicomputer, or any other suitable computing device

In some embodiments, a device or system running the messaging system interface 116 may connect directly to messaging system 102. In some embodiments, a device or system running the messaging system interface 116 may connect to the messaging system 102 via the messaging system gateway 114 or the mobile gateway 118. The messaging system interface 116 run by the device or system may be assigned a UUID and a token. The messaging system interface 116 may connect to the messaging system 102 using the assigned UUID and token, and may await further instructions from the messaging system 102. In some embodiments, the messaging system 102 may act as a compute server that controls the messaging system interface 116. For example, messaging system 102 may activate and/or deactivate pins of the computing device running the messaging system interface 116, request sensor data from the computing device, and/or cause the messaging system interface 116 to perform other functions related to the computing device. In some embodiments, the messaging system interface 116 can be connected to a gateway (e.g., messaging system gateway 114 or mobile gateway 118), and the gateway may act as a compute server that controls the messaging system interface 116 in a similar manner as described above. In some embodiments, messaging system interface 116 may be a mobile operating system or application that is able to run on mobile device operating systems, such as iOS and Android.TM. operating systems

Information from messaging system 102, including informationtransmitted to messaging system 102 by messaging system gateway 114, mobile gateway 118, and/or messaging system interface 116, may be transmitted to one or more data storage systems. For example, information about IoT devices, other devices or machines, and/or systems registered with the messaging system 102 may be transmitted to device directory 104 for storage. The information about the IoT device, other device or machine, and/or system may be stored in device directory 104 upon registration of the IoT device, other device or machine, and/or system. For example, information related to when the IoT device, other device or machine, and/or system comes online or offline may be stored in device directory 104

In some embodiments, the device directory 104 may maintain various lists, such as whitelists and/or blacklists, that are associated with a unique identifier (e.g., a UUID) assigned a person, an IoT device, other device or machine, system, and/or component thereof. The use of whitelists and blacklists ensures that devices, systems, and users only have access to those UUIDs of IoT devices, other devices or machines, and/or systems for which permission has been granted. In one example, the device directory 104 may maintain a whitelist for a UUID assigned to a device. The whitelist includes a list or array of UUIDs assigned to devices or systems that are allowed access the device at various levels of access. For example, four levels of access to the device may be granted to other devices or systems, and a separate list or array may be maintained for each level of access. In this example, the whitelist for the device’sUUID may include a list or array that includes UUIDs of devices or systems that may discover the device, a list or array of UUIDs of devices or systems that may send a message to the device, a list or array of UUIDs of devices or systems that may receive a message from the device, and/or a list or array of UUIDs of devices or systems that may configure the device. Other levels of access may also be granted, such as the ability of another device or system to subscribe to the device

In another example, the device directory 104 may also maintain a blacklist for a UUID assigned to the device. The blacklist includes a list or array of UUIDs assigned to devices or systems that are denied access to the device at the various levels of access. In this example, the blacklist for the device’sUUID may include a list or array that includes UUIDs of devices or systems that cannot discover the device, a list or array of UUIDs of devices or systems that cannot send a message to the device, a list or array of UUIDs of devices or systems that cannot receive a message from the device, and/or a list or array of UUIDs of devices or systems that cannot configure the device

In some embodiments, the device directory 104 is queriable, such that a device, system, or user may be provided with a list and/or array of IoT devices, other devices or machines, and/or systems that fit requested search criteria. The messaging system 102 may access the device directory 104 upon receiving a query from a device, system, or user. Upon polling the device directory 104 according to the criteria specified in a query, the messaging system 102 may provide a device with a list or array of UUIDs assigned to IoT devices, other devices or machines, and/or systems that are currently online and that the device has access to according to the device’sUUID and/or security token. The use of the whitelists and/or blacklists operates as a security feature, ensuring that devices, systems, and users only have access to other devicesdevices, systems, and users to which permission has been granted. 

In some embodiments, sensor data from sensors of registered IoT devices, other devices or machines, and/or systems may be transmitted to sensor data storage 106. The sensor data may be streamed from a registered IoT device, other device or machine, and/or system through messaging system 102 in real-time. Sensor data storage 106 is queriable such that a user may poll sensor data storage 106 to receive data from specified sensors during a specified time period. A user may also be able to query the sensor data storage 106 for all available data from one or more sensors. In some embodiments, information from sensor data storage 106, as well as additional information from messaging system 102, may be transmitted to an analytics database 108. In some embodiments, analytics database 108 may not be queried by a user of the system 100. In other embodiments, analytics database 106 may be queried by a user of the system 100. The information stored in analytics database 108 may be accessible via a platform network 110

In some embodiments, multiple servers or other systems may each operate an instance of software that includes the messaging system 102, thus creating multiple cloud servers and/or instances of messaging systems 102. In some embodiments, a particular instance of messaging system 102 may have its own UUID that allows the instance of messaging system 102 to connect to another instance of messaging system 102 to form a mesh network of messaging systems. Other networks and devices or machines may also be part of the mesh network, such as LANs and PANs and the devices or machines that are interconnected using the LANs and PANs. Each of the LANs and PANs can have their own unique UUID and/or token registered with the messaging system 102. The LANs and PANs are addressable using their unique UUID, and can also address other UUIDs around the world. Such a mesh network may allow messages and other payloads to be routed between devices across messaging systems 102. Accordingly, the messaging system 102 supports inter-cloud communications to allow people, devices or machines, systems, or components thereof to routemessages across clouds to other people, devices or machines, systems, or components thereof on other clouds. Each of the cloud networks may run an instance of the messaging system 102. For instance, a device connected to a private or public cloud network may send a message to another device connected to another private or public cloud

As described above, each person, device or machine, system (e.g., cloud network running an instance of the messaging system, a LAN, a PAN, or the like), or components thereof that is registered with the messaging system 102 is assigned a UUID. Each person, device or machine, system, or components thereof can be referenced by the messaging system using its UUID. Each of the UUIDs can discover other UUIDs (e.g., clouds, other networks, people, or devices or machines) using one or more queries, such as using multicast Domain Name System (MDNS) or API queries. In some embodiments, a UUID can connect to multiple networks thus forming a global mesh network including different networks (e.g., multiple cloud networks, LANs, PANs, or a combination of cloud networks, LANs, and/or PANs). A cloud network running an instance of messaging system may also be assigned a UUID and can routemessages across cloud networks via inter-cloud communications using a routing paradigm. For example, a cloud network can send a message across cloud networks by sending the message with a route UUID.sub.–1/UUID.sub.–2/UUID.sub.–3/UUID.sub.–4, with each UUID be assigned to a different cloud network. In some embodiments, the mesh network may route the message based on known connections

Platform network 110 may include one or more analytics engines that may process the information received from the analytics database 108. The analytics engines may aggregate the received information, detect trends, and/or perform other analytics on the information. Platform network 110 may be communicatively coupled with a number of APIs 112 that are used to create, manage, identify, and/or communicate with functions of different IoT devices, other devices or machines, and/or systems. APIs may include, for example, sales analyticsAPIs, social mediaaccount and other third-party messaging accountAPIs, stock quoteAPIs, weather service APIs, other data APIs, mobile application APIs, and any other suitable API. For example, a Facebook.TM. or other social media message may use a messaging API to send SMS messages. Platform network 110 may use the messaging API to deliver a payload to a device or system configured to display an SMS message. A light API may be provided by a manufacturer of “smart” light bulbs. The platform network 110 would then use this light API to provide an output to turn a light bulb connected to the platform network 110 on or off. Platform network 110 is also in communication with messaging system 102 using the APIs of messaging system 102. Platform network 110 may interact with the IoT devices, other devices or machines, and/or systems connected through the messaging system 102 using UUIDs and/or security tokens

The UUIDs and/or security tokens may be issued by the messaging system 102 and/or the platform network 110. In some embodiments, a user may register systems and/or devices with the messaging system 102. The platform network 110 may import or otherwise utilize any UUIDs and/or tokens issued by the messaging system 102 during the registration. In some embodiments, a user may register devices and/or systems with the platform network 110. The platform network 110 may issue UUIDs and security tokens to IoT devices, other devices or machines, and/or systems upon registration of the IoT device, other device or machine, and/or system. The UUIDs and security tokens are used to access the messaging system 102, as described above. In some embodiments, a user may register devices and/or systems with both the messaging system 102 and the platform network 110. Eithermessaging system 102 or platform network 110 may issue UUIDs and/or tokens. Registration with the non-issuing system or network creates a link or other association with the issued UUIDs and/or security tokens

Platform network 110 may operate an application or other program that provides a designer graphical interface that allows a user to create a control system or flow. The designer graphical interface may allow the user to create a control system by dragging and dropping blocks that represent various devices and/or systems of the control system, inputs and/or outputs from the various devices and/or systems, and/or functions for controlling the devices and/or systems. Any IoT device, other device or machine, and/or system that is registered with platform network 110 may be configured to receive or transmit a message to any other IoT device, other device or machine, and/or system that is registered with platform network 110 using an appropriate control system designed using the designer graphical interface. Messages may be transmitted from one device or system to controloperation of another device or system. For example, the platform network 110 may run control systems continuously, such that an input from a device or system may automatically cause an event to occur in a different location and/or by a different device or system. Such functionality, along with access to the data from analytics database 108, enables the platform network 110 to monitor a performance, behavior, and/or state of any IoT device, other device or machine, and/or system within the control system and to send a resulting message or payload to any other IoT device, other device or machine, and/or system in the control system based on the monitored performance, behavior, and/or state. In another example, the platform network 110 may run a control system designed using the designer graphical interface upon receiving a command, such as from a user or from another device or system. In some embodiments, the designer graphical interface operated by the platform network 110 may access any IoT device, other device or machine, and/or system connected to messaging system 102, including IoT devices, other devices or machines, and/or systems connected using the messaging system gateway 114, messaging system interface 116, and/or mobile gateway 118. This connection enables control systems created using the designer graphical interface to controloutput functions of devices and/or systems registered with the messaging system 102. For example, real-time monitoring of data at a remote location, such as performance of a machine or system, or of a person’shealth condition may be performed by the platform network 110

The platform network 110 may also automatically provide messages or other outputs, including commands, to any of the registered IoT devices, other devices or machines, and/or systems based on processes performed on information received from IoT devices, other device or machine, and/or system. For example, sensor data may be received from an IoT device and processed by analytics systems of the platform network 110. Using artificial intelligence and/or machine learning within the platform network 110, the processed sensor data may be used to provide commands to another system or device connected to platform network 110

In some embodiments, platform network 110 may be connected with messaging system 102 through a web-based design interface 120. Web-based design interface 120 may include similar functionality as the designer of platform network 110, but operates as a web-based application. Users may design control systems and flows on web-based design interface 120 and test the control systems prior to fully deploying a control system into platform network 110. Users may have access to all IoT devices, other devices or machines, and/or systems associated with messaging system 102 and/or platform network 110, although the processing functions available using the web-based design interface 120 are limited to those provided by a web browser. Web-based design interface 120 may act as a developer design tool that functions through the capabilities of the web browser. A user may then import the control system into platform network 110 for continuous operation of the control system

Devices or machines, systems, or components thereof that are each assigned individual UUIDs may continuously stream data (e.g., sensor data) to the messaging system 102. The streamed data may be stored in device directory 104, sensor data storage 106, and/or to the analytics database 108. The streamed data from the UUIDs may be reacted upon in real-time. As described in more detail below, UUIDs or user control systemcontrol system or flow created using the platform network 110 can subscribe to other UUIDs streaming the data. Based on thresholds within the data, frequency of occurrence of certain data, or the occurrence of the data itself, events can be created that trigger messages to be exchanged between devices or machines and/or systems. For example, a photo sensor with an assigned UUID that senses a change in light may stream sensor data to the messaging system 102, and a control system created using the platform network 110 may indicate that anytime a change in light occurs, a light with an assigned UUID should be turned on or off. The control system may subscribe to the UUID of the sensor so that it can detect when a change in light occurs. When the control system senses a light change, it may trigger a message to be sent to the light in order to cause the light to changestates (e.g., on or off). In some examples, the sensor data and message exchanges or other transactions may be streamed into the analytics database 108 for real-time, near real-time, and/or offline data analytics

In some embodiments, UUIDs can subscribe to other UUIDs with or without tokens (provided security permissions allow it). Subscribing with the device’sUUID with a token allow a person, device, or system to “spy” on the device’sinbound and outbound communications in an eavesdropping mode. Subscribing without the device’stoken may only allow the subscribing device access to the messages broadcast by the device (provided security permissions allow it). 

Brief Description:

Figure 2 is a system diagram illustrating an example of a system for exchanging machine-to-machine instant messages between systems and devices or machines, according to some embodiments

Detailed Description:

Figure 2 illustrates an example of a system 200 implementing various components of Figure 1. The system 200 allows the real-time exchange of machine-to-machine instant messages between devices and/or systems. System 200 includes a messaging system 202 and a messaging system 204. The messaging systems 202 and 204 may be similar to the messaging system 102 described above with respect to Figure 1, and may perform one or more of the functions described above. Either of the messaging systems 202 and 204 may be part of a private or a public cloud network. For example, messaging system 202 may be part of a public cloud network with which any device, system, or user may be registered. Messaging system 204 may be part of a private cloud network that is restricted for use by only select devices, systems, or users. For example, the private messaging system 204 may be restricted for use by employees and affiliates of a particular company

The system 200 may further include one or more messaging system interfaces implemented by one or more machines or devices. For example, the system 200 includes messaging system interface 208, messaging system interface 210, messaging system interface 212, and messaging system interface 214. The messaging system interfaces 208, 210, 212, 214 may be similar to the messaging system interface 116 described above with respect to Figure 1, and may perform one or more of the functions described above. The messaging system interfaces 208, 210, 212, 214 may each be installed on a separate computing device and integrated with a separate machine or device. For example, the messaging system interfaces 208, 210, 212, or 214 may be installed on a computing device, such as a Raspberry Pi board, an arduino board, a microcontroller, a minicomputer, or any other suitable computing device. The computing devices with the installed messaging system interfaces 208, 210, 212, or 214 may then be integrated with separate devices or machines. Accordingly, four machines may each be integrated with a computing device installed with one of the messaging system interfaces 208, 210, 212, and 214. Devices or machines can include any electronic device, including sensors and consumer products such as light bulbs, thermostats, home automation devices, smoke alarms, burglary alarms, an accelerator or other electronic component of a vehicle, a display device, a printer, or any other electronic device

The system 200 may further include one or more messaging system gateways, including a messaging system gateway 206 and a mobile gateway (not shown). The messaging system gateway 206 may be similar to the messaging system gateway 114 described above with respect to Figure 1, and may perform one or more of the functions described above. In some embodiments, the messaging system gateway 206 may include a mobile gateway, similar to the mobile gateway 118 described above with respect to Figure 1. The messaging system gateway 114 may be connected to a local area network (LAN) and/or to a personal area network (PAN). 

Any machine that has been assigned a unique identifier (e.g., a UUID) by the messaging system 202 or messaging system 204 and that has the ability to connect to a wide area network (WAN) (e.g., an IoT device) can connect directly to the messaging system 202. In some embodiments, only the messaging system 202issuesunique identifiers to people, machines or devices, systems, or components thereof. In such embodiments, the messaging system 204 may use the unique identifiers that are issued by the messaging system 202. In some embodiments, the messaging systems 202 and 204 are independent messaging systems, and each messaging systems 202 and 204 may issue different unique identifiers. Machines with or without unique identifiers can connect to the messaging system gateway 206. A machine with an assigned unique identifier and the appropriate access level permission can query the system 200 from anywhere in the world for other machines that meet a specific search criteria. The machine may message the other machines via the messaging system 202

The messaging systems 202 and 204 supportinter-cloud communications, allowing machines to routemessages across the messaging systems 202 and 204 to devices and sub-devices on other cloud networks. For example, the machine running the messaging system interface 214 is connected to the private messaging system 204 cloud network, and can send a message to a machine running the messaging system interface 208 that is connected to the public messaging system 202. The machine running the messaging system interface 214 may be located in New York, N.Y., and the machine running the messaging system interface 208 may be located in london, england. The machine running the messaging system interface 214 may send the message to a route of UUIDs corresponding to the path that the message must follow in order to reach the machine running the messaging system interface 208. The route may be included in a routing list that is included in the message (e.g., in a field of the message, such as a header field). For example, the routing list for the message may include a route of UUIDs that includes UUID_MSGSYS204/UUID_MSGSYS202/UUID_MSGSYSINT208. The messaging system 202 may assign the UUID_MSGSYS204 to the messaging system 204, the UUID_MSGSYS202 to itself, and the UUID_MSGSYSINT208 to the machine running the messaging system interface 208. The network servers of the messaging systems 202 and 204, the messaging system gateway 206, and the machines or devices running the messaging system interfaces 208, 210, 212, 214, if included in the route, may each remove their UUID from the routing list and pass the message on to the next UUID in the list until the message arrives at its destination. The same routing technique may be used to send messages within the same messaging system cloud network or across multiple messaging system cloud networks

In some embodiments, devices or machines can also communicate with other devices or machines via one or more peer-to-peer sockets rather than going through a messaging system 202 or 204. For example, the machine running the messaging system interface 208 may directly communicate with the machine running the messaging system interface 210. One or more dynamic routing protocols may be used by the machines when exchanging communications via a peer-to-peer connection. In some embodiments, devices or machines may discover and be introduced to other devices or machines using the messaging system 202. After being introduced by the messaging system 202, the devices or machines may then begin a peer-to-peer communications session directly provided they have the proper security permissions. For example, the machine running the messaging system interface 208 may query the messaging system 202 for machines that meets certain criteria (e.g., Philips Hue.TM. light bulbs in a particular location, or other suitable search criteria). The messaging system 202 may check the security permissions of the machine running the messaging system interface 208, and may return a list or array of UUIDs assigned to machines that meet the criteria and for which the machine running the messaging system interface 208 has permission to access. One of the machines on the list or array may include the machine running the messaging system interface 210. The machines running messaging system interfaces 208 and 210 may then begin a peer-to-peer communications session to directly exchange messages

In some embodiments, the messaging system 202 may store various properties of each registered person, machine or device, system, or component thereof that has an assigned UUID. Each registered person, machine or device, system, or component thereof may have a registry store in which the properties may be stored. For example, the registry store for each registered person, machine or device, system, or component thereof may be stored in a device directory similar to the device directory 104 described above. The properties can be anything that describes the person, machine or device, systemdevice, system, or component thereof, including status or state (e.g., on, off, idle, sleeping, or the like), type, color, features, connection protocols, geolocation, or the like. For example, one or more servers of the messaging system 202 may track how each registered machine or device is connected to the messaging system 202 or to a messaging system gateway (e.g., gateway 206). The messaging system 202 may also track the geolocation of each device or machine. For example, the messaging system 202 may store in a registry store for each machine or device the connection protocol used by each machine or device and the geolocation of each machine or device at a given point in time. The geolocation may be stored as a set of coordinates (e.g., global positioning system (GPS) coordinates, latitude-longitude coordinates, or the like). The connection protocol and the geolocation may be updated each timeeitherchanges. For example, if a machine or device changes locations or connects with the messaging system using a different connection protocol, the messaging system 202 may update the machine’sregistry store with the updated connection protocol and/or geolocation. In some embodiments, the messaging system 202 can store all of the connection protocols for which a machine or device is configured to operate. The properties may be updated in real-time as the change occurs, or in partial real-time at different points in time (e.g., every 1 minute, 2 minutes, 5 minutes, 30 minutes, 1 hour, or other appropriate period of time). 

The messaging systems 202 and 204 operate using one or more native connection protocols. For example, the messaging systems 202 and 204 may natively recognize an HTTP connection protocol, a websockets connection protocol, a MQTT connection protocol, a CoAP connection protocol, an XMPP connection protocol, an SNMP connection protocol, an AllJoyn connection protocol, or any other appropriate connection protocol. One of ordinary skill in the art will recognize that the messaging systems 202 and 204 may natively operate using any other appropriate machine-to-machine connection protocol. Other protocols may be added to the messaging system 202 or 204 over time as the protocols become more universally used. 

The messaging system 202 may also include a universal application programming interface that is available for use by all of the native connection protocols of the messaging system 202. The universal application programming interface may be used to interface Internet Things (IoT) devices that use different proprietary application programming interfaces. The universal application programming interface allows the messaging system 202 to avoid having to go through each machine’sproprietary cloud network and proprietary application programming interface to facilitate message exchange between machines that use different proprietary protocols to communicate. Without a universal application programming interface, a server may receive a message from a first device that is destined for a second device. The first device may use a first proprietary connection protocol and application programming interface and the second device may use a second proprietary connection protocol and application programming interface. The server would have to send the message to the proprietary cloud server with which the second device is registered. The proprietary cloud server would then access the application programming interface used by the second device, and send the message to the second device. Such a procedure of sending the messages to a different proprietary cloud network using different application programming interface requests for each different proprietary protocol used adds latency to the message transport from the first device to the second device. Using the universal application programming interface, the messaging system 202 can receive messages from the first device, and can directly send the messages to the second device (or to a local gateway to which the second device is connected via a LAN or PAN) using a single application programming interface request

The universal application programming interface supports various commands. For example, the universal application programming interface allows users, machines or devices, systems, or components thereof to get a status of the messaging system 202 (e.g., online, offline, temporarily offline, or the like). The universal application programming interface also allows a machine or device to be registered with the messaging system 202. Upon receiving a registration request, the universal application programming interface may return a UUID and a security token to the registrant. The universal application programming interface also specifies how queries from users, machines or devices, systems, or components thereof are handled. For example, the universal application programming interface may allow the messaging system 202 to return a list of UUIDs that correspond to a query for different usersusers, machines or devices, systems, or components thereof. As another example, the universal application programming interface may allow the messaging system 202 to return information related to a specific machine or device in response to a query for information relating to the machine or device. The universal application programming interface also describes how to update features of (e.g., change a location, connection protocol, color, or other feature) or control (e.g., turn on/off, move to a different location, or the like) registered machines or devices in response to requests from users, machines or devices, systems, or components thereof to make the changes (and that have permission to do so). One of ordinary skill in the art will appreciate that the universal application programming interface can specify to the servers of the messaging system 202 how to perform various generic functions that relate to any connected usersusers, machines or devices, systems, or components thereof. 

One or more computing devices of the messaging system 202 can routemessages to and from any connected machine or device in any supported protocol (whether native or transformed by a plug-in, as described below). The computing devices may include one or more network servers. The messaging system 202 may translate between the different native connection protocols to facilitate message exchanges between machines or devices that operate using different connection protocols. For example, the common messaging system may translate a received communication that is in a first native connection protocol to a second native connection protocol before sending the communication to a machine or device that only operates using the second native connection protocol or that operates using a connection protocol that is different than the first and second native connection protocols (in which case a plug-in would be needed to convert from the second native connection protocol to the protocol that the machineuses). In one example, a MQTT device can use the messaging system 202 to communicate a message to a CoAP device, a websocket-powered device, or a web page via HTTP. The messaging system 202 can thus interpret or translate the message to the destination device’sconnected or preferred connection protocol

In one example, a computing device may be used for interfacing Internet Things (IoT) devices that use different connection protocols. For example, the computing device may be a network server of the messaging system 202, and may include one or more data processors. The computing device may also include a receiver. A first IoT device may transmit a communication destined for a second IoT device across a WAN or to a messaging system gateway (e.g., messaging system gateway 206) via a LAN and/or PAN. The first IoT device may include a messaging system interface. The receiver of the computing device may receive the communication from the first IoT device. The first IoT device may be communicatively connected to the computing device using a first connection protocol and the communication may be received using the first connection protocol. The first connection protocol may be a connection protocol that is native to the computing device of the messaging system 202. For example, the first connection protocol may be a MQTT connection protocol

The computing device may include a non-transitory computer-readable storage medium containing instructions that, when executed on the one or more data processors, cause the one or more processors to perform various operations. The computing device may determine a second IoT device to which the communication is intended to be transmitted. The computing device may also determine a second connection protocol used by the second IoT device. For example, the first IoT device may be assigned a first UUID, and the second IoT device may be assigned a second UUID. The received communication may include the second UUID (e.g., in a field of a communication packet). The computing device may determine the identity of the second IoT device and the second connection protocol used by the second IoT device based on the second UUID. For example, the computing device may refer to a registry store (e.g., in the device directory of messaging system 202) that is associated with the second UUID in order to determine the connection protocol used by the second IoT device. The computing device may then translate the communication to the second connection protocol that corresponds to the protocol with which the second IoT device is connected to the computing device of the messaging system 202. The first connection protocol is different than the second connection protocol. For example, the second connection protocol may be an HTTP connection protocol. In some embodiments, the first IoT device may not be configured to communicate using the second connection protocol, and the second IoT device may not be configured to communicate using the first connection protocol

The computing device may further include a transmitter for transmitting the communication to the second IoT device that is communicatively connected to the computing device using the second connection protocol. The communication is transmitted using the second connection protocol

In some embodiments, the receiver is configured to and may receive a response to the communication from the second IoT device. The response may be received using the second connection protocol with which the second IoT device is communicatively connected to the computing device. The computing device may then translate the response to the first connection protocol with which the first IoT device is communicatively connected to the computing device. The transmitter is configured to and may transmit the response to the first IoT device using the first connection protocol

In some embodiments, the receiver is configured to and may receive a second communication from a third-party messaging account. The transmitter is configured to and may transmit the second communication to the second IoT device. The second communication received from the third-party messaging account controls a function of the second IoT device. For example, the third-party messaging account may be an account of a third-party messaging service, such as Facebook.TM., Twitter.TM., LinkedIn.TM., SMS, or any other messaging service that allows a user of a device to send and receive messages using a registered account. In some embodiments, the second communication includes a message and a tag. The tag identifies a destination program of the second device, such as an application or program that enables a machine or device to send messages using the third-party messaging accounts. For example, the tag may identify an identifier of the application or program. Upon being received by the application or program of the second device, the destination application or program may be opened and the tagged data may be entered into the application or program to activate the indicated function

In some embodiments, the messaging system gateway 206 may include one or more messaging system plug-ins. In some embodiments, one or more plug-ins may be installed on one or more computing devices, such as a microcontroller, a minicomputer, or any other suitable computing device in the messaging system gateway 206. In some embodiments, one or more plug-ins may be added to one or more existing programs of the messaging system gateway 206. In some examples, each plug-in may include program code that knows how to interact with the messaging system gateway 206. For example, a plug-in may include a JavaScript piece of code. In some examples, when sending messages from a machine to the messaging system 202, a messaging system plug-in may translate or convert one or more connection protocols that are used by the machine and that are not native to the messaging system 202 to a native connection protocol of the messaging system 202. When sending messages from the messaging system 202 to the machine, the messaging system plug-in of the gateway 206 may also translate the native connection protocols of the messaging system 202 to the protocols used by the machine. In some examples, a messaging system plug-in may also translate or map one or more proprietary application programming interfaces used by a machine to a universal application programming interface of the messaging system 202. Similar plug-ins may be used in a mobile gateway (e.g., mobile gateway 118), and may perform similar functions as those described herein. For example, a mobile gateway may allow a user to interconnect various devices worn or carried by the user via a PAN provided by the mobile gateway, as described above. One or more plug-ins of the mobile gateway may allow the devices to communicate with the messaging system 202, similar to the plug-ins of the messaging system gateway 206

To perform the translation, a plug-in may define a message schema that corresponds to the format of the messages required to communicate with a particular machine or device. For example, a message with a command from the messaging system 202 may instruct one or more machines to perform a function, such as to turn off all lights in a room. The message may be transmitted in a general format of the universal application programming interface that is not specific to the proprietary application programming interfaces of the different machines. The message may also be transmitted by the messaging system 202 using a connection protocol that is not used by the different machines. The proprietary application programming interfaces of the machines may only be configured to receive messages in a certain format, and the message from the messaging system 202 may not be in any of the specific formats. The one or more plug-ins that are used to translate messages for the different machine may translate the message into the format that is required by each of the proprietary application programming interfaces. The plug-ins may also transmit the message to the machines using the proprietary connection protocol for which the machines are configured to operate. 

Accordingly, the messaging system gateway 206 supports an open plug-in architecture that translates non-native connection protocols, such Phillips Hue.TM., Nest.TM., Belkin Wemo.TM., Insteon.TM., SmartThings.TM., or any other appropriate proprietary, legacy, or new connection protocols, to native protocols and/or to a universal application programming interface of the messaging system 202. In some cases, one or more of the machines or devices themselves may include a messaging system plug-in. Each machine or device that runs proprietary firmware and/or that usesproprietary application programming interfaces can include one or more plug-ins that translate the proprietary communications to and from the connection protocols used by the messaging system 202. The plug-in architecture allows proprietary, legacy (e.g., RS-232 serial, RF, or the like), and/or new machines or devices (e.g., BLE wearable devices or the like) to be registered with and communicate with the messaging system 202regardless of the connection protocol natively used by the machines or devices

The messaging system gateway 206 may include multiple plug-ins. For example, a set of machines or devices may be connected to the messaging system gateway 206. Different plug-ins may be used by different subsets of machines or devices that are connected to the messaging system gateway 206. The different subsets of machines may relate to different classes of devices. For example, machines may be broken into classes based on a manufacturer of the devices, a connection protocol and/or application programming interface used by the devices, or any other appropriate classification. Each of the devices that are connected to the messaging system gateway 206 may be assigned to a logical sub-device that the messaging system gateway 206 keeps track of. The messaging system gateway 206 may assign and map each logical sub-device to a particular plug-in. For example, the messaging system gateway 206 may store a record of all devices, with the record of each connected device including a separate sub-device and plug-in combination. In one example, three Philips Hue.TM. lights and two Nest.TM. smoke alarms may be connected to the messaging system gateway 206 for communicating with the messaging system 202. The messaging system gateway 206 may have a stored record for each device, including five records. The three records for the three Philips Hue.TM. lights may each include a separate sub-device (e.g., sub-device_A, sub-device_B, sub-device_C) and a plug-in that is specifically configured to translate between the messaging system 202native connection protocols and application programming interfaces and the Philips Hue.TM. connection protocols and application programming interfaces. Similar records may be stored for the two Nest.TM. smoke alarms, including two records storing a separate sub-device for each smoke alarm (e.g., sub-device_D, sub-device_E) and a plug-in that is configured to translate between the messaging system 202native connection protocols and application programming interfaces and the Nest.TM. connection protocols and application programming interfaces. In some embodiments, the messaging system gateway 206 may include a single plug-in that is configured to and may translate between multiple proprietary connection protocols and application programming interfaces

In one example of the universal application programming interface, a computing device may be provided with the universal application programming interface. The computing device may be included in a cloud network. For example, the computing device may include one or more network servers of the messaging system 202. The computing device includes one or more data processors and a receiver for receiving a communication originating from a first IoT device. The first IoT device may use a first proprietary application programming interface and the communication may include a command for a second IoT device to perform. The command may be converted from a protocol corresponding to the first proprietary application programming interface to a universal protocol corresponding to the universal application programming interface. For example, either the computing device of the messaging system 202 or a plug-in of a messaging system gateway (e.g., messaging system gateway 206) may convert the command to a format that is understood by the universal application programming interface, as described above. 

The computing device may include a non-transitory computer-readable storage medium containing instructions that, when executed on the one or more data processors, cause the one or more processors to perform various operations. The computing device may determine that the communication is to be transmitted to the second IoT device. For example, the first IoT device may be assigned a first UUID, and the second IoT device may be assigned a second UUID. The received communication may include the second UUID (e.g., in a field of a communication packet). The computing device may determine the identity of the second IoT device based on the second UUID. The computing device may then cause a transmitter to transmit the communication including the command to the second IoT device. The second IoT device may use a second proprietary application programming interface. The command may be converted from the universal protocol corresponding to the universal application programming interface to a protocol corresponding to the second proprietary application programming interface. For example, either the computing device of the messaging system 202 or a plug-in of a messaging system gateway (e.g., messaging system gateway 206) may convert the command to a format that is usable by the second proprietary application programming interface, as described above. 

In some embodiments, the receiver is configured to and may receive a second communication from a third-party messaging account. The transmitter is configured to and may transmit the second communication to the second IoT device. The second communication received from the third-party messaging account controls a function of the second IoT device. For example, the third-party messaging account may be an account of a third-party messaging service, such as Facebook.TM., Twitter.TM., LinkedIn.TM., SMS, or any other messaging service that allows a user of a device to send and receive messages using a registered account. In some embodiments, the second communication includes a message and a tag. The tag identifies a destination program of the second device, such as an application or program that enables a machine or device to send messages using the third-party messaging accounts. For example, the tag may identify an identifier of the application or program. Upon being received by the application or program of the second device, the destination application or program may be opened and the tagged data may be entered into the application or program to activate the indicated function

In some examples of using one or more plug-ins, a computing device may be provided for communicating with the universal application programming interface of the messaging system 202. In some embodiments, the computing device may be included in the messaging system gateway 206, and may execute the one or more plug-ins. In some embodiments, the computing device may be included in a mobile gateway (e.g., mobile gateway 118), and may execute the one or more plug-ins. The computing device includes one or more data processors and a non-transitory computer-readable storage medium containing instructions which when executed on the one or more data processors, cause the one or more processors to perform various operations. The computing device may receive a communication from a first proprietary application programming interface of a first IoT device. The communication may include a command for a second IoT device to perform. For example, the first IoT device may include a smoke alarm and the second IoT device may include a lighting system controller connected to one or more lights. The first and second IoT devices may be connected to the computing device via a local area network, a personal area network, or a combination of a local area network and a personal area network. The command may include a message indicating that the smoke alarm has detected smoke, and that the lighting system controller should turn on the one or more lights. The second IoT device may use the first proprietary application programming interface or a second proprietary application programming interface that is different than the first proprietary application programming interface. The computing device may convert the command from a protocol corresponding to the first proprietary application programming interface to a universal protocol corresponding to the universal application programming interface, using the techniques described above. The computing device may further cause a transmitter to transmit the communication including the converted command to the universal application programming interface of the messaging system 202cloud network. The universal application programming interface may process the command, determine the identity of the second IoT device, and route the command to the appropriate networks or devices so that it can reach the second IoT device. The command may then be received by the second IoT device or a messaging system gateway connected to the second IoT device. A plug-in of the messaging system gateway may then convert the command to a command that can be carried out by a proprietary application programming interface of the second IoT device

The computing device may further receive a second communication from the universal application programming interface that includes a command for a third IoT device to perform. The third device may include another device connected to the computing device via the local area network, the personal area network, or a combination of the local area network and the personal area network. The third IoT deviceuses a third proprietary application programming interface. The computing device may convert the command of the second communication from the universal protocol corresponding to the universal application programming interface to a protocol corresponding to the third proprietary application programming interface used by the third IoT device. The computing device may then cause the transmitter to transmit the second communication including the converted command to the third IoT device

In some embodiments, the computing device determine a sub-device that is mapped to the third IoT device. The computing device may route the second communication to the sub-device mapped to the third IoT device, and may determine a plug-in that applies to the sub-device. As described above, the sub-device is mapped to a particular plug-in and can be used to identify the plug-in to use to convert the command to the proprietary application programming interface

In some embodiments, the computing device may receive a third communication from the universal application programming interface. The third communication may include a message from a third-party messaging account. The third communication from the third-party messaging account controls a function of the second IoT device. For example, the third-party messaging account may be an account of a third-party messaging service, such as Facebook.TM., Twitter.TM., LinkedIn.TM., SMS, or any other messaging service that allows a user of a device to send and receive messages using a registered account. In some embodiments, the third communication includes a message and a tag. The tag identifies a destination program of the second device, such as an application or program that enables a machine or device to send messages using the third-party messaging accounts. For example, the tag may identify an identifier of the application or program. Upon being received by the application or program of the second device, the destination application or program may be opened and the tagged data may be entered into the application or program to activate the indicated function

Working in combination, the messaging system 202 and the messaging system gateway 206 (and/or a mobile gateway) with the plug-ins allow machines or devices to communicate with one another regardless of the proprietary nature of the connection protocols or application programming interfaces that are used by the machines or devices. In the example above including the three Philips Hue.TM. lights and two Nest.TM. smoke alarms, a smoke alarm may communicate with one or more of the lights by sending messages to the messaging system 202 via the messaging system gateway 206. For example, when smoke is detected by the smoke alarm, the smoke alarm may transmit a message to the messaging system gateway 206 instructing all of the lights to turn on. A plug-in of the messaging system gateway 206 may translate the message from the proprietary Nest.TM. format to a generic, native format used by the messaging system 202. The messaging system 202 may determine a destination for the message by referring to one or more UUIDs that are included in the message. In some embodiments, the messaging system 202 may determine a destination based on a query included in the message. For example, the message may indicate that the message is to be sent to all lights that are located within a particular geolocation (e.g., within a certain distance from the smoke alarm). Once the messaging system 202 determines that the destination for the message includes the three lights, the messaging system 202 may process the message using the universal application programming interface. For example, the messaging system 202 may authenticate the smoke alarm using its UUID and token combination, and may determine the security permissions of the smoke alarm in order to verify that the smoke alarm has appropriate access to the lights (e.g., that the smoke alarm is permitted to discover and send messages to the lights). 

As previously described, the system 200 also includes messaging system interface 208, messaging system interface 210, messaging system interface 212, and messaging system interface 214. The machines running the messaging system interfaces 208, 210, 212, 214 may directly connect with the messaging system 202 or may connect with the messaging system gateway 206 using the universal messaging system interfaces 208, 210, 212, 214. In some embodiments, the machine running the messaging system interface 208 may be a closed-network machine that is designed to communicate with a proprietary network in order to transmit and receive communications to other machines that operate using the same proprietary protocols. The messaging system interface 208 allows the machine to communicate directly with the messaging system 202 without going through the proprietary network. By communicating directly with the messaging system 202, the machine can communicate with any machine registered with the messaging system 202regardless of the proprietary nature of the other machines. In some embodiments, the messaging system interfaces 208, 210, 212, or 214 may be an operating system that allows the machine running the messaging system interface 208, 210, 212, or 214 to communicate with the messaging system 202

The built-in universal messaging system interfaces 208, 210, 212, 214 allow the machine running the universal messaging system interfaces 208, 210, 212, 214 to perform operations that native firmware of the machines does not allow them to perform. For example, the messaging system interface 210 may override the native firmware of its machine to allow the machine to perform various operations that are outside of the functionality of the native firmware. In some embodiments, the messaging system interface 210 may be installed on a machine that does not have the ability to communicate with other machines using one or more connection protocols. In such embodiments, the messaging system interface 210 may provide the machine with the capability to use one or more connection protocols. The messaging system interfaces 208, 210, 212, 214 may accessone or more sensors, inputs, outputs, or programs on the machines running them in order to perform various operations. For example, the messaging system interface 212 may have access to and control a geolocation sensor, a compass, a camera, a motion sensor, a temperature sensor, an accelerometer, a gyroscope, a graphical interface input, a keypad input, a touchscreen input, a microphone, a siren, a display, a light, a tactile output, a third-party messaging service that the machine is able to run, or any other component of the machine that can be identified, accessed, and/or controlled. 

The messaging system interfaces 208, 210, 212, 214 may each be assigned a different UUID and token. The messaging system interfaces 208, 210, 212, 214 may connect to the messaging system 202 using the assigned UUID and token, and may await further instructions from the messaging system 202. In some embodiments, the messaging system 202 may act as a compute server that controls the messaging system messaging system interfaces 208, 210, 212, 214. For example, messaging system 202 may activate and/or deactivate pins of the machine running the messaging system interface 214, request sensor data from the machine, and/or cause the messaging system interface 214 to perform other functions related to the machine. In some embodiments, one or more of the messaging system interfaces 208, 210, 212, 214 can be connected to a gateway (e.g., messaging system gateway 206 or a mobile gateway), and the gateway may act as a compute server that controls the messaging system interfaces 208, 210, 212, 214 in a similar manner as the messaging system 202. In some embodiments, the messaging system interfaces 208, 210, 212, 214 may each be a mobile operating system or application that is able to run on mobile device operating systems, such as iOS and Android.TM. operating systems

In one example of using one or more messaging system interfaces, a computing device may be provided. The computing device may include a Raspberry Pi board, an arduino board, a microcontroller, a minicomputer, or any other suitable computing device. The computing device may be built into or integrated with a first device to allow the first device to communicate with other devices. For example, the computing device includes a messaging system interface (or “universal interface“) for enabling one or more sensors of the first device to communicate with one or more sensors of a second device by connecting the one or more sensors with a network server of the messaging system 202. The first device and the second device may be in different locations, such as different rooms of a building, cities, countries, or continents. The first device may include a solar panel located on a roof of a building, and the second device may include a dimmable light bulb located in a room of the building

The proprietary protocol and native firmware of the first device and the proprietary protocol and native firmware of the second device may not allow the devices to exchange communications with each other or with the messaging system 202. The universal interface allows the first device to communicate with the messaging system 202 in order to exchange communications with the second device. The universal interface is configured to and may obtain sensor data from a sensor of the first device. For example, the universal interface may obtain sensor data from the solar panel indicating that it is getting dark outside of the building. The amount of sunlight being received may fall below a certain threshold level as measured by an amount of current being generated by the solar panel using the received sunlight. The universal interface may cause a transmitter of the first device to transmit the sensor data to a network server of the messaging system 202, which may include a cloud network. The universal interface thus allows the first device to transmit sensor data to the messaging system 202 even when the proprietary protocol or firmware of the first device does not allow the one or more sensors of the first device to communicate with other devices. In some embodiments, the universal interface may transmit the sensor data to a messaging system gateway on a LAN and/or a PAN with which the universal interface can communicate. 

The universal interface may further receive a command from the messaging system 202. The command may be received when a sensor of the second device senses a condition. For example, the light may include a photodiode that can sense light. The photodiode may sense natural light, and in response may transmit a message to the messaging system 202 (e.g., using a universal interface installed on the dimmable light) to query whether the solar panel senses sunlight. In this example, the solar panel may have incorrectly determined that it was getting dark in response to the sun going behind a cloud. The command received by the universal interface may cause the sensor of the first device to perform a function. For example, the solar panel may check the amount of current being produced based on the current amount of sunlight being received. The first device may then send a command to the messaging system 202 with updated sensor data

In some embodiments, the universal interface is configured to and may determine a first universally unique identifier assigned to the sensor of the first device, determine a second universally unique identifier assigned to a sensor of the second device, and cause the transmitter to transmit the first universally unique identifier and the second universally unique identifier with the sensor data to the network server. Accordingly, the network server of the messaging system 202 may determine to which device and sensor to transmit the message, and may determine the security access permissions of the first device sensor

In another example, a universal messaging system interface installed on a device may allow multiple sensors within the device to interact in a way that the sensors were not designed to operate. For example, a device may include a thermostat. The thermostat may include a motion sensor that is designed to turn on an LED display when motion is detected. The thermostat may also include a controller that controls the temperature of an air conditioning system. The native proprietary protocol and firmware of the thermostat is not designed to allow the motion detector to be used except to send signals to turn on the LED display as motion is detected. For example, the native proprietary protocol and firmware of the thermostat may not allow the motion sensor and the controller to communicate with one another. The thermostat may be integrated with a computing device (e.g., a Raspberry Pi board, an arduino board, a microcontroller, a minicomputer, or any other suitable computing device) that has a universal messaging system interface installed on it. The universal messaging system interface allows the sensors of the thermostat to communicate with the messaging system 202. For example, the motion sensor and the controller may be assigned separate UUIDs and tokens. The universal messaging system interface may stream motion data from the motion sensor to the messaging system 202. The messaging system 202 may perform one or more functions based on the motion data. For example, the messaging system 202 may include a program that sends a message to the controlleranytime motion is detected by the motion sensor. The program may be created by a user of the thermostat using the designer graphical interface implemented by the platform network 110 or the design interface 120 described above. The program may be stored in the messaging system 202, and may access the motion data and convert motion sensor values to a command that is included in the message. The command may instruct the controller to turn the temperature of the air conditioning system to 72 degrees. Accordingly, sensors of the thermostat that are not designed to communicate with one another can exchange messages using the messaging system and the messaging system interface


Parts List

100

system

102

messaging system

104

device directory

106

data storage

108

analytics database

110

platform network

112

APIs

114

messaging system gateway

116

messaging system interface

118

mobile gateway

120

design interface

200

system

202

messaging system

204

messaging system

206

messaging system gateway

208

messaging system interface

210

messaging system interface

212

messaging system interface

214

messaging system interface


Terms/Definitions

public messaging system

functions

token allow

registered IoT devices

Facebook.TM

display

server-to-server communications

status or state

galileo

air conditioning system

updated connection protocol and/or geolocation

field communication

other systems

other communications

light

messaging system

built-in universal messaging system interface

ability

different connection protocols

other UUIDs

other devices

multicast Domain Name System

inputs and/or outputs

various IoT devices

CoAP

techniques

coordinates

output

controller

new machines or devices

appropriate networks or devices

such a procedure

inter-cloud communications

devices or machines and/or systems

various generic functions

microcontroller

WiFi.TM

generic, native format

different manufacturers

second proprietary connection protocol

offline data analytics

bi-directional persistent connection

SDKs

Windows.TM

other IoT devices

sunlight being

computing device

UUIDs and security tokens

microphone

store and process data

multiple cloud servers

accelerometer

Beagle Bones

PANs

security permissions

MQTT

web-based design interface

demands

particular machine or device

closed-network machine

one or more messaging system plug-ins

different machines

communications or messages

logical sub-device

connection protocols

geolocation sensor data

geolocation sensor

manufacturer

other social media message

design interface

registration request

program code

thermostats

access point

received sunlight

monitored performance

global positioning system

other servers

modem

user

UUIDs and/or security tokens

blocks

web-based application

server-to-server communication

other appropriate machine-to-machine connection protocol

other suitable location

other device or machine

different classes

LED display

park

watches

second cloud network

near real-time

dark outside

state

first server

classes

link

connections

other component

device, system

operation

person or business

similar functionality

LAN side

minicomputer

Linux.TM

other similar devices

specific type

one or more devices

bluetooth

other people

Belkin Wemo.TM

BLE wearable devices

appropriate control system

their unique UUID

one or more peer-to-peer sockets

systems and devices or machines

regardless

registered account

assigned individual UUIDs

multiple developer platforms

messages

separate secure connection

third-party messaging account

installed messaging system interfaces

various devices

ruby

one or more machines or devices

time

global mesh network

processes

devices or systems

outbound communications

occurrence

UUID_MSGSYS

function

single plug-in

common messaging system

compass headings

using one or more communications protocols

programmers

frequency

security access permissions

sports venue

example

mobile device

users

blacklist

dimmable light bulb

CoAP connection protocol

behavior

list and/or array

native proprietary protocol and firmware

communications

secure connection

electronic device

Assigning APIs

control system or flow

consumer products

translation

API, messaging system

local area network

destination UUID

light change

flexibility

network devices

accelerometer data

three records

change

particular location

output functions

message exchange

one or more data processors

personal firewall

facebook

one or more network servers

pedometers

certain embodiments

CoAP device

plug-in combination

indicated function

devices or machines, systems

directory

universal messaging system interface

different proprietary protocol

proprietary network

connected device

machine-to-machine instant message exchange

message queuing telemetry transport

light bulbs

connection protocol

other available sensor

SmartThings.TM

first device

SMS message

siren

code

e.g., gateway

network-connectable device or system

multiple messaging system cloud networks

plug-ins

different connection protocol

gateway

pins

keypad input

multiple proprietary connection protocols

local network

specified sensors

only communications

other embodiments

photo sensor

distinct security token

transmitter

appropriate device, person, system

developer design tool

other transactions

home

different unique identifiers

services

different locations

one or more queries

thermostat

other devices or systems

JavaScript

different machine

unique identifiers

first connection protocol

hypertext transfer protocol

control

assigned UUID

private network signal

routing list

outputs

third communication

sensor data and message exchanges

features

person, device or machine

specific formats

world

multiple cloud servers and/or instances

machine or system

websocket-powered device

order

other protocols

separate machine or device

message routing

non-IoT devices and systems

middleware

other program

cloud services

different rooms

twitter

other suitable communication protocol

bluetooth low energy

registry store

temperature

their own unique UUID

display device

its machine

connects

four machines

protocols

condition

cloud networks

route

XMPP connection protocol

multiple developer platforms and protocols

universal messaging system interfaces

cities

first IoT device

receiver

registered person

XMPP

servers

certain threshold level

different device or system

anytime motion

one server

location

registrant

SNMP connection protocol

inputs

device or machine

suite

color

non-native connection protocols

other cloud networks

states

other levels

lights

field

MQTT connection protocol

other outputs

operations

machine or device, system

API queries

system gateway

other electronic device

input

second UUID

record

event

connected users

thresholds

public messaging systems

only a single messaging system

type

open plug-in architecture

convert motion sensor values

software

messaging API

part

second proprietary application programming interface

Raspberry Pi

artificial intelligence

device and sensor

local gateway

working

native protocol

processed sensor data

light bulb

New York

current amount

second server

either

cloud infrastructure system

LANs and PANs

data

program

control systems

received information

graphical interface input

received communication

similar manner

motion data

mobile gateway (e.g., mobile gateway

server-to-server connection

other suitable SDK

enough processing power

camera

whitelist

its UUID

component or program

single application programming interface request

latency

other suitable mobile device

“smart” light bulbs

UUIDs

network address translations

stock quote

Raspberry Pi board

motion detector

low-energy

application

device or machine, person, and/or system

respective distinct UUID and token

user’s

processing functions

two Nest.TM

detect trends

personal area network

server

route UUID.sub.–1/UUID.sub.–2/UUID.sub.–3/UUID.sub

specified time period

registered person, machine

one or more native connection protocols

machines

message exchanges

one or more data storage systems

communication network

other association

streamed data

three Philips Hue.TM

Intel.TM

ZigBee

multiple plug-ins

offline

certain format

status

registered devices and systems

message transport

room

sunlight

next UUID

Simple Network Management Protocol

compute server

person, device, or system

particular area

Accessible IoT devices

access

first native connection protocol

tagged data

different location

operates

non-issuing system or network

flow

trigger messages

health condition

application or program

path

devices

more detail

multiple cloud networks

one or more software developer kits

routing paradigm

person’s

open source machine-to-machine messaging platform

WiFi

mobile operating system

embodiments

Nest.TM

network server

one or more servers

cloud network

geolocation

router

burglary alarms

properties

unique identifier

sensor

multiple sensors

message

information

capability

response

separate UUIDs and tokens

one or more remote servers

smoke

second device

exchange messages

messaging system plug-in

appropriate destination

mobile phone, tablet, laptop

first UUID

continuous operation

programs

converted command

Network Address Translation Traversal application

different proprietary application programming interfaces

proprietary protocol or firmware

other appropriate connection protocol

independent messaging systems

different APIs

gyroscope

latitude-longitude coordinates

private messaging system

their UUID

device or system

various operations

commands

anytime a change

peer-to-peer connection

web browser

assigned UUID and token

other electronic component

proper security permissions

whitelists and blacklists

proprietary protocol

users, machines or devices, systems, or components

access control

AllJoyn connection protocol

headsets

machine or device

different proprietary protocols

other connection platforms

Bluetooth low Energy.TM

analytics systems

different types

query

clouds

machine’s

system

intermediary

particular plug-in

message schema

multiple servers

request sensor data

destination device

real-time

proprietary nature

first device sensor

same messaging system cloud network

second universally unique identifier

application programming interface

second native connection protocol

motion

events

one or more LANs or PANs

analytics database

component

universal protocol

storage

specific search criteria

devices and sub-devices

certain criteria

sub-device

JavaScript piece

same LAN

examples

two records

cases

particular geolocation (e.g.

criteria

user control system

different points

office

one example

websockets

eavesdropping mode

servers and applications

subscribing device access

payload

mobile device operating systems

device, system, or component

distinct UUID

second connection protocol

designer

other available output

proprietary connection protocol

WiFi network

such Phillips Hue.TM

host

uses

such functionality

own on-premises computers

other clouds

data storage

combination

other IoT device

registration

technology

MDNS

performance

different application programming interface requests

proprietary application programming interfaces

MQTT device

various levels

Internet Protocol address

functionality

components

similar functions

destination program

connected or preferred connection protocol

mobile gateway

proprietary cloud network

Twitter.TM

web page

support

five records

issues

compass

sensor data storage

short-range communication protocol interface

new connection protocols

UUIDs and/or tokens

network

separate computing device

IoT device

Node.JS

social media

device, system, or user

certain distance

other switching mechanism

other computing task

registered IoT device

firmware

third-party messaging accounts

personal devices

token combination

vehicle

peer-to-peer communications session

mobile application APIs

communication packet

instructions

permission

proprietary firmware

built-in universal messaging system interfaces

native connection protocol

level

sales analytics

yuns

city

connected machine or device

destination application or program

messaging system interface

wide area network

physical form

employees and affiliates

application programming interfaces

further details

home and/or office computer

other data APIs

second native connection protocols

tactile output

lighting system controller

different cloud network

registered machine or device

sub-device mapped

various commands

list or array

workspace

whitelists and/or blacklists operates

messaging systems

photodiode

python

plug-ins allow machines

other network external

appropriate access level permission

public cloud network

particular instance

different plug-ins

smoke alarm

Presence Protocol

supported protocol

websockets connection protocol

machine or device changes locations

private cloud network

second communication

separate list or array

one or more radios

further instructions

wired interface

first cloud network

IoT devices

platform network

other analytics

different IoT devices

roof

computing devices

computers

one or more processors

unique identifier and/or token

one example, three Philips Hue.TM

number

radio frequency

header field

other suitable protocol

temperature sensor

other suitable connection protocol

multiple devices and/or systems

other functions

LinkedIn.TM

one or more UUIDs

security feature

connecting devices

second device (

LANs

different networks

device

capabilities

its own UUID

device’s

arduino board

Internet Things

protocol

different connection protocols or interfaces

its distinct UUID

such a mesh network

partial real-time

other device

machines or devices

gateway software

first proprietary application programming interface

inbound

other third-party messaging account

proprietary application programming interface

Infrared Data Association

real-time exchange

list

things

messaging system gateway

accelerator

different native connection protocols

real-time monitoring

temporarily offline

various components

signals

applications

stored record

one device or system

amount

certain data

england

one or more messaging system interfaces

machine learning

native firmware

sensors

firewall

network access

different UUID and token

mobile phone

one or more connection protocols

systems

application protocol

native connection protocols

security token

format

third proprietary application programming interface

system or device

analytics engines

specific machine or device

other payloads

device directory

natural light

people

devices and/or systems

devices and systems

machine-to-machine instant messages

one or more sensors

operating system

messaging system software

london

third-party messaging service

one or more existing programs

communication

standalone physical device

separate devices or machines

UUID_MSGSYSINT

demand

remote location

one or more messaging system gateways

different users

token

messaging

destination

continents

Android.TM

assigned unique identifier

one or more components or programs

online

light occurs

network servers

messaging system gateway or hub

control system

Transmission Control Protocol

one or more computers

given point

one or more lights

other feature

changes

one or more analytics engines

proprietary Nest.TM

Insteon.TM

other appropriate classification

one or more plug-ins

ZigBee.TM

other suitable computing device

one or more computing devices

public cloud

ordinary skill

building

tokens

command

various network devices

proprietary communications

various lists

resulting message or payload

SMS messages

plug-in

Extensible Messaging

first proprietary connection protocol

motion sensor

other messaging service

other suitable search criteria

same proprietary protocols

outside environment

track

wearable technology

such embodiments

messaging system messaging system interfaces

identifier

system and/or device

similar plug-ins

other appropriate period

mesh network

one or more functions

sensor data

search criteria

different subsets

one or more proprietary application programming interfaces

Bluetooth.TM

issued UUIDs and/or security tokens

other suitable firewall

proprietary cloud server

third IoT device

various properties

other devices or machines

internet

current being

touchscreen input

Philips Hue.TM

only select devices, systems

native protocols

one or more dynamic routing protocols

single message transmitted

first universally unique identifier

several ways

queries

machines or devices, systems

smoke alarms

different proprietary cloud network

universal interface

similar records

UUID

cloud infrastructure

account

systems and/or devices

devices, systems

HTTP connection protocol

same routing technique

anything

other networks

User Datagram Protocol

printer

devices or machines

particular company

third device

third-party messaging services

instance

second IoT device

four levels

AllJoyn

suitable machine-to-machine connection protocol

identity

additional information

known connections

machine

intranet

SNMP

available data

HTTP

mobile messaging system gateway

multiple connection protocols

appropriate access

designer graphical interface

destination device’s

second IoT devices

whitelists and/or blacklists

non-transitory computer-readable storage medium containing instructions

cloud

home automation devices

universal application programming interface

sub-device_D

solar panel

person

system diagram

messaging system interfaces

plug-in architecture

three lights

requests

system interface

countries

transmitted

wireless router or modem

remote servers

general format

various devices and/or systems

multiple networks

APIs

LinkedIn

one or more machines

other machines

connection

updated sensor data

dimmable light

weather service APIs

its destination

separate sub-device