Palcom is a middleware toolkit for building IoT systems. A Palcom system consists of services connected by compositions. When a composition connects to a service, it receives the messages the service sends. The composition can then adapt these messages and send them to other services. A service has an interface describing the messages it can send and receive.

Services and compositions run on devices. A device is a running middleware instance with a globally unique identifier called a device id. Devices automatically discover each other over the network, using the Palcom discovery protocol. The discovery protocol also communicates what services and compositions a device hosts.

One kind of services are the native services; they perform computations and interact with the physical environment. For example, a native service can control a light, compute a control signal, or store an image. To enable this wide range of functionality, native services are implemented in general-purpose programming languages, like Java or C.

Compositions are limited to mediating and adapting messages, and a DSL is used for their specification. To provide an abstraction mechanism, compositions can combine multiple services' functionality into one synthesized service. For example, a synthesized service can provide a single interface for controlling multiple light services.


Boris Magnusson, project lead, cs.lth.se/boris-magnusson