MQTT is a topic-based publish/subscribe protocol, which utilizes a broker to forward events to subscribers. The subscriptions are specified by a topic filter. In GeoMQTT this filtering mechanisms is additionally advanced by spatial and temporal capabilities. Events are annotated with a topic, a geometry and a timestamp or time interval. The broker disseminates the events based on the evaluation results of the filters specified in the subscriptions and the metadata of the events.
Each GeoSubscription specifies a spatial and a temporal filter. The temporal filter is composed of a time stamp or a time interval indicated with an ISO-8601 representation or a cron expression, and a temporal relation between time points or time intervals according to Allen's interval algebra.
The spatial filter follows a similar pattern. It is defined by an arbitrary 2D geometry and a spatial relation according to the DE-9IM. The geometry can be specified in different encoding standards (e.g., WKT, GML or GeoJSON) and with any Coordinate Reference System (CRS). When forwarding messages to subscribers, the broker transforms the geometry of the GeoEvent in the asked CRSs and encodings.
The GeoEvent-driven architecture can be implemented with GeoMQTT using a TCP/IP stack. Different GeoMQTT clients are available that allows connecting various systems to a GeoMQTT broker, which act as a GeoEvent distributor. Besides GeoMQTT, the extension GeoMQTT for Sensor Networks (GeoMQTT-SN) enables clients in connectionless networks such as wireless sensor networks (WSN) to publish and receive GeoEvents. Networks based on LoRa or Zigbee can be connected by a GeoMQTT-SN Gateway.