[From the last episode: Many home IoTThe Internet of Things. A broad term covering many different applications where "things" are interconnected through the internet. systemsThis is a very generic term for any collection of components that, all together, can do something. Systems can be built from subsystems. Examples are your cell phone; your computer; the radio in your car; anything that seems like a "whole." will employ a hubA piece of electronic equipment that gathers separate related things together. A network hub, for instance, might bring together the individual network connections of multiple local users. A sensor hub brings together sensor data from multiple separate sensors for possible combination. Or, more specifically, a device in the home (or elsewhere) that acts as a central point connecting a variety of smart-home (or other) devices. The devices talk to the hub; the hub talks to the cloud. to connect all the Things.]
In order to understand better why some IoT Things work together while others don’t, and why ecosystems form, we need to delve into the notion of abstractionFor our purposes, it’s the removal of all unnecessary details, leaving only what’s required for operation.. Let’s start with the dictionary definition, paying particular attention to definitions 1 and 2:
noun
-
- an abstract or general idea or term.
- the act of considering something as a general quality or characteristic, apart from concrete realities, specific objects, or actual instances.
- an impractical idea; something visionary and unrealistic.
- the act of taking away or separating; withdrawal: The sensation of cold is due to the abstraction of heat from our bodies.
- secret removal, especially theft.
- absent-mindedness; inattention; mental absorption.
- Fine Arts.
-
-
- the abstract qualities or characteristics of a work of art.
- a work of art, especially a nonrepresentational one, stressing formal relationships.
-
(Source: dictionary.com)
Abstraction in Engineering
For engineering purposes, I would propose a more specific version that combines part of those first two definitions:
The removal of all unnecessary details, leaving only what’s required for operation.
That may still sound a bit vague and… abstract, so let’s take a look at an example that’s concrete in our everyday world to see how it works.
When you drive your car, you press on the accelerator to make the car go faster (or go at all). What does that do? Well, it probably moves a lever that moves the engine throttle. When that throttle opens up, more fuel enters the engine pistons, making the engine speed up. As the engine speeds up, the transmission speeds up, making the driveshaft spin faster, making the differential go faster, making the wheels go faster. Simple, right?
Or… maybe not. What happens if you have a front-wheel-drive car? Now there’s no transmission in the middle or differential in the rear; there’s a transaxle up front.
Or what happens if you have a more modern computer-controlled engine? Well, that means it’s probably not as simple as a lever opening the throttle. There’s probably a computer in the middle that sees the accelerator move, does some calculations, and then moves the throttle itself. Or adjusts the fuel injectors. Or whatever.
Or what if you have an electric car? Now there’s none of that internal-combustion-engine stuff at all.
So… how the heck are you supposed to know how to drive if “acceleration” means a bunch of different things for different kinds of cars??
Whatevs!
Of course, you don’t need to know all that stuff. All you really need to know is that, if you press the accelerator, you go faster. Period. All the rest is true, but it’s unnecessary detail. If every car abstracts away the drivetrain details for the driver and simply provides the same accelerator pedal that works the same way in every car, regardless of how the car works, then anyone can drive it.
Riffing off of one of the words in the example, there’s probably a word there that sums this up. Let’s say you were driving with a passenger, and he or she commented, “Did you know that this car has computer-controlled fuel injection, and that the accelerator tells a computer to take a bunch of things like temperature into account when calculating how much fuel to deliver?” You might find that curious, or else you might just shrug and say, “Whatever!”
Yeah, that word: “Whatever” It means, “I hear what you’re saying, but they’re all details that don’t matter.”
Abstraction and User Interfaces
The other thing that this example illustrates is the concept of a user interfaceThis is an interface between something and the user of that thing. In a car, the pedals and steering wheel are all part of the user interface. You’re probably more familiar with the user interface (or UI) on a computer. If that interface involves graphics, then it’s a graphic user interface, or GUI (pronounced “gooey”).. That’s how you interact with whatever machineIn our context, a machine is anything that isn't human (or living). That includes electronic equipment like computers and phones. you’re dealing with, be it a car, a computer, or an IoT gadget. An interfaceThe point where two different domains meet, like a border. For example, a wall plug could be thought of as the interface between the power grid and the appliances you plug in. is the point at which two separate things or domains or whatever meet. In the example, the accelerator pedal is the interface: it’s where the engine stuff meets the driver. And this particular interface is where and how you make the car speed up. The nice thing about good interfaces is that they provide the best abstraction. “Just press the pedal and you’ll accelerate. Don’t worry about how the pedal makes the car accelerate; we’ve taken care of that detail for you.”
Now you can have that interface in every car, and it doesn’t matter how the car is built or fueled. You’ll be able to drive every one. Heck, you could even take your gasoline car and swap out with a diesel or electric engine, maybe update the transmission, and do other things – and yet you’d still drive the car the same way. That’s because the details of how the engine works just don’t matter.
This is a really, really important concept for understanding why some IoT devices work together and some don’t. Next time, we’ll look at how abstraction helps engineers design softwareIn this context, "software" refers to functions in an IoT device that are implemented by running instructions through some kind of processor. It's distinct from "hardware," where functions are built into a silicon chip or some other component., and then we’ll see how this impacts the IoT.
Leave a Reply