N23 is data acquisition and processing framework, optimized for Internet of
Things and edge computing.

The framework is designed for programmers who want to implement
applications on top of it.

Features

- scheduler to asynchronously obtain data from sockets, sensors, devices
  and other data sources
- flexible and efficient storage of data in a timeseries database
- build applications using Python or Lisp (Hylang) API
- configure applications using Lisp (Hylang) syntax; use macros for
  templating
- based on Python asynchronous coroutines minimizing resource use and
  avoiding cost of context switching of threads

Scheduler
=========
The scheduler executes concurrent tasks (to read and process data) and
actions. Tasks can read data on regular basis or be event-driven. When
reading data on regular basis, the time drift is minimized, for example
data read every second shall produce sixty data points within one minute.

Storage
=======
N23 framework provides default storage mechanism using PostgreSQL RDBMS
with TimescaleDB extension. It supports multiple data types, compression,
and chunking. This allows to use efficiently the available storage.

PostgreSQL without TimescaleDB extension can be used for small databases.

The TimescaleDB based storage is optional and any other system can be used.
A system with very good asyncio support is recommended.

Analytics
=========
The data can be analyzed and visualized with any popular tool supporting
connection to the PostgreSQL RDBMS. For example, querying PostgreSQL
database is possible with Python and R languages.

Demo Applications
=================
- https://gitlab.com/n23/n23-weight
- https://gitlab.com/n23/n23-energy
- https://gitlab.com/n23/n23-sensor
