.. include:: ../_resources.rst .. _kotori-technologies: ############ Technologies ############ ************ Introduction ************ The system is based on a number of fine infrastructure components and technologies and supports a number of protocols in one way or another. Standing on the shoulders of giants. ******* Details ******* Infrastructure components ========================= - Kotori_, a data acquisition, graphing and telemetry toolkit - Grafana_, a graph and dashboard builder for visualizing time series metrics - CrateDB_, a time-series database ¹ - InfluxDB_, a time-series database ¹ - Mosquitto_, an MQTT message broker - MongoDB_, a document store (optional) ²³ | ¹ Kotori can either use CrateDB or InfluxDB as timeseries database. | ² MongoDB is only required when doing CSV data acquisition, so it is completely | optional for regular operations of Kotori. | ³ As MongoDB - strictly speaking - stopped being free software recently (2018/2019), | it will probably be phased out gradually and replaced by PostgreSQL_ or CrateDB_. Supported protocols =================== - MQTT_, a lightweight, publish-subscribe, machine to machine network protocol. - HTTP_, the ubiquitous application layer protocol for distributed, collaborative, hypermedia information systems. - WebSocket_, a computer communications protocol, providing full-duplex communication channels over a single TCP connection. - WAMP_, a WebSocket subprotocol offering routed RPC and PubSub. - Socket-based TCP_, UDP_. Runtime components ================== - Twisted_, an event-driven network programming framework - Autobahn_, open-source implementations of the Web Application Messaging Protocol (WAMP_)