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 performs parallel data reads, both event-driven and on
regular basis. 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
