Architecture
Overview
Haxall is an open source software framework for the Internet of Things. It includes an extensive toolkit for working with Project Haystack data. Use it right out of the box as a flexible IoT data gateway which runs at the edge. Haxall is written in Fantom with runtime support for both the Java VM and JavaScript environments.
Concepts
Haxall is composed of the following key concepts and subsystems:
- Ontology: we standardize the modeling of the built environment using Project Haystack
- Folio: database optimized for the real-time nature of IoT data
- Axon: functional scripting language for onboarding and transforming IoT data
- HTTP API: all functionality is accessible over the Haystack HTTP API
- Connectors: framework for connectivity to IoT devices and protocols
- Libs: pluggable modules for functionality
- Runtime: top-level API for working with a project
- Daemon: complete runtime server with batteries included
Libs
Functionality is packaged into libs that are reusable modules you can enable/disable at runtime. The most important libraries include:
axon
: core functions for Haystack data valueshx
: core runtime functionsmath
: mathematical functionsio
: functions to read/write data in a variety of formatsconn
: work with connectorstask
: schedule background work using actor frameworkpoint
: support for writable points and history collection
Software Stack
The following diagram illustrates how the system fits together:
SkySpark
Haxall is developed by SkyFoundry. It the foundational layer of our commercial product SkySpark that we have opened sourced to the community. As such, the documentation contains many notes related to the features which work differently or are only available in SkySpark.
Libraries developed for Haxall will run seamlessly in SkySpark. For example if you develop a connector or Axon function library as a Haxall lib, then you can drop that same pod into a SkySpark runtime and it will be available as a normal extension.
Haxall databases are also binary compatible with SkySpark. So you can open and run a Haxall database in SkySpark and vice versa. Note that not all extensions will run in Haxall - only the core open source libs such as the ones listed above.