Skip to main content

Core concepts

Modules and Appliances

The Plugwise system distinguishes between two related but distinct concepts: modules and appliances.

Module

A module represents the physical hardware device, such as a smart plug, thermostat, meter, or sensor. It contains hardware-specific information such as vendor details, firmware version, protocol data, and the services exposed by the device.

Modules describe what the hardware is and which low-level services it provides.

Appliance

An appliance is the logical representation of a device in the system. It is the primary object used for retrieving measurements and sending control commands.

Appliances expose logs and actuator functionalities, and are typically linked to a single module.

Relationship between modules and appliances

A module exposes low-level services. An appliance exposes the corresponding logs and actuator functionalities derived from those services. Shared IDs are used to link module services to appliance objects.

In practice, each module is typically associated with one appliance.

Relationship diagram

The diagram below illustrates how a module and its appliance are connected through shared service and log IDs.

Module 2e787867... Appliance ea3f1696...
┌──────────────────────────────┐ ┌──────────────────────────────────┐
│ services │ │ logs & actuator functionalities │
│ │ │ │
│ relay 86c541ca... │ │ │
│ ├─ point_log 1f790cdd... ───┼──────────▶│ point_log 1f790cdd... │
│ │ │ │ type: relay │
│ │ │ │ relay id="86c541ca..." │
│ │ │ │ │
│ └─ relay_functionality │ │ actuator_functionalities │
│ 3cb3e771... ─────────────┼──────────▶│ relay_functionality 3cb3e771... │
│ │ │ ├─ state: on │
│ │ │ ├─ lock: false │
│ │ │ └─ relay id="86c541ca..." │
│ │ │ │
│ electricity_point_meter │ │ │
│ b05a7372... │ │ │
│ ├─ point_log 13d55c47... ───┼──────────▶│ point_log 13d55c47... │
│ │ │ │ type: electricity_consumed │
│ │ │ │ electricity_point_meter │
│ │ │ │ id="b05a7372..." │
│ │ │ │ │
│ └─ point_log 273b0bed... ───┼──────────▶│ point_log 273b0bed... │
│ │ │ type: electricity_produced │
│ │ │ electricity_point_meter │
│ │ │ id="b05a7372..." │
│ │ │ │
│ electricity_interval_meter │ │ │
│ 2d28d40f... │ │ │
│ ├─ interval_log e448f2ad... ┼──────────▶│ interval_log e448f2ad... │
│ │ │ │ type: electricity_produced │
│ │ │ │ electricity_interval_meter │
│ │ │ │ id="2d28d40f..." │
│ │ │ │ │
│ └─ interval_log f85aee09... ┼──────────▶│ interval_log f85aee09... │
│ │ │ type: electricity_consumed │
│ │ │ electricity_interval_meter │
│ │ │ id="2d28d40f..." │
└──────────────────────────────┘ └──────────────────────────────────┘

IDs are used to link module services to appliance-exposed logs and actuator functionalities. A module service references the relevant point_log, interval_log, or relay_functionality, while the appliance exposes the corresponding full object with the same ID. Service IDs such as relay, electricity_point_meter, and electricity_interval_meter are also referenced from the appliance objects, making it possible to trace measurements and control state back to the underlying module service.