This is just a "cocktail napkin" design. Here is some brief details on each class
- BaseDevice - All devices derive from this class. It provides some of the base services typically used by each class (example: serial communications).
- SwitchedDevice - Represents a device that can be switched on or off, whether via hardware or software
- LightingDevice - Inherits capabilities of a switched device. Adds other functions such as intensity and color control.
- SensorDevice - A base class representing a general sensor device. Provides features such as sampling rate. These devices are always on and cannot be switched "on" or "off" (though I am thinking about having a "sleep" mode).
- TankLevelDevice - drives the device that monitors tanks levels (water, fuel, holding, etc).
- LiquidFlowDevice - drives the device that monitors the flow of liquid through a pipe (or hose).
- WeatherDevice - drives the device that will measure environmental qualities often associated with weather (temperature, barometric pressure, humidity, etc).
- DCMonitorDevice - drives the device that measures aspects of a DC electrical circuit (voltage, current, etc).
- ACMonitorDevice - similar to DCMonitorDevice except for AC circuits
- HumanInputDevice - is a base class for devices that handle human physical interaction used to control and monitor other devices in the network (switches, knobs, touch screens, etc).
- ProximityDevice - drives the device that senses proximity intrusions. Like motion sensors.
- ToggleSwitchDevice - drives the device that will accept wiring from physical switches which will turn the physical switches into "soft" switches to control other items on the network.
- TouchScreenDevice - drives the device that provides a dedicated touch screen interface for monitoring and controlling other devices on the network. This does not include off-the-shelf computing devices that have touch screen interfaces (like an iPad or iPhone).
There you go. I reserve the right to change my mind on any this of course.