The computer on NCC-1701D interfaces with everything on board the ship and in its immediate vicinity (excluding, of course, subspace, which extends its “immediate vicinity” considerably). The types of things with which it can interface are countless. The computer does not always know what a thing is, but it can, nevertheless, detect, measure, and control in some fashion every thing that it encounters.
That is where the Web of Things is going, and we should begin describing those things in a specification in a way which can allow for things which have not yet been imagined.
The current unofficial draft specification describes some thing types:
- a “thing”, which is one or more of the other things mentioned below.
- onOffSwitch
- multiLevelSwitch
- binarySensor
- multiLevelSensor
- smartPlug
- onOffLight
- dimmableLight
- onOffColorLight
- dimmableColorLight
Those type definitions are unnecessary and, if every type of thing which will become part of the Web of Things is to be specified, maintaining the specification will become literally impossible. Those are not all of the types of things there are, and, if the specification is to accommodate all of the types of things which will eventually become part of the Web of Things, the specification alone will eventually require more storage space than can be made available in the known universe.
A system which implements the Web of Things specification does not need to know all of the types of things with which it may interface. The Mozilla IoT system demonstrates that plugins can be used to accommodate things. All that is required is that the inventor of a thing – or of an interface to a thing – tell the system where the implementation code is. A system, such as an IoT gateway, doesn’t have to know what a thing is; it merely needs to know where the application code is that describes the thing to the user and provides the user with the functional user interface.
Or am I missing something?