by Ron Lake
With the rising “Internet of Things,” there will be an explosion of devices on the Internet—devices with addresses to which messages can be sent and from which messages can be received. Driven initially by the desire to measure and observe the environment, this explosion will give rise to communities of communicating machines and a new type of “social network.”
This isn’t about legions of self-aware robots (at least not yet), but communities of communicating machines, constructed at the outset for a specific purpose (e.g., monitoring building air quality), but which become more connected in ways and for reasons not foreseen when initially deployed.
This includes machines that are logical entities with specific tasks and responsibilities (e.g., measure water quality in a water main, detect leaks, etc.) that will be passed on to “descendants” as their function becomes permanently “wired” into the world. These functions will become as essential as the infrastructure they support. In this context, it’s perfectly correct to talk about the “social network” of machines.
Finding the Language
If machines are to communicate with one another in a given community, they need to speak a similar language. Consider the case of air-quality monitoring.
A sensor measures concentrations of CO, CO2, NOx and particulates in a room; it does this once an hour, 24 hours per day. But how should such information be encoded in the “conversation” with other machines? It’s just a stream of floating point numbers with a label describing its location.
It might be possible to simply graph these values over 24 hours as a jpeg or gif image, but that depends on the application to which the information is put. A picture of the measurements’ time history may be fine if the only purpose is to show it to a person. However, it wouldn’t be useful at all to process the information for presentation, compare it to readings from other sensors or create a simulation.
A stream of floating point numbers is better suited to this requirement, but it doesn’t include the units of measure, and the order of values being sent also must be known. Adding a new value risks confusion and may lead to a “failure to communicate.” Furthermore, where are the room and its building geospatially located? What about the room’s volume? How is it ventilated?
When You Assume
Inside the social networks of machines, don’t assume too many things are “well known” outside the community. Such assumptions can be optimal under restricted circumstances, but may be catastrophic in general. Instead, machines need to be able to ask questions of one another or provide additional information about the structure and content of messages so they can be understood. This is how people communicate with one another.
A machine could ask another machine, “what is the order of the values you are sending,” and the responding machine might send a response describing the order (“first is NOx,” “second is CO,” etc.). Alternatively, such information might always be sent in the initial message (“the value of NOx is,” the value of “CO” is, etc.).
There’s no significant difference between these two cases. The critical part is how to encode information about what is being sent (i.e., how to say “the first one is NOx” or “the value of NOx is”). How should units of measure, location, volume and shape be encoded? Languages such as Geography Markup Language (GML) were created for exactly this purpose, which will be discussed more in future columns.