SmartAnthill 2.0 Core Architecture

Version:v0.1b

SmartAnthill Core represents a cross-platform software which is written in Python language and should support the popular operation systems (Mac OS X, Linux (+ARM) and Windows).

Requirements

The requirements of SmartAnthill Core by the system resources should by very low:

  • < 1% CPU in IDLE mode
  • < 20Mb RAM for service/daemon
  • < 20Mb of free disk space (the cross-compilers, tool chains and firmware upload software are not included here)

SmartAnthill Core Services

SmartAnthill Core operates on PC like a system foreground daemon with the pieces of own services.

@TODO more explanation

API Service

API Service is responsible for receiving requests (via REST, WebSocket or Socket) from System Control Software and taking necessary measures to execute them via SmartAnthill Command&Control Protocol (SACCP).

@TODO more explanation

Dashboard Service

Dashboard Service represents WEB-based GUI (requires browser with enabled JavaScript) which allows:

  • to manage SmartAnthill Devices (add, edit or remove them, customise with the specific capabilities/plugins/operations)
  • to generate and upload device-compatible firmware via “TrainIt” wizard (see explanation below in SmartAnthill Firmware Builder and Uploader)
  • to monitor SmartAnthill Heterogeneous Network in the real time (operational state of each device, the number of sent/received messages, errors and etc)
  • to analyze log messages

@TODO more explanation

Device Service

@TODO more explanation

Message Queuing Service

SmartAnthill liteMQ Protocol:

  • Queues

  • Exchanges

    • Direct
    • Fanout
    • Topic

@TODO more explanation

Network Service

Network Service is based on the SmartAnthill 2.0 Protocol Stack and operates with the network data (messages, packets, fragments) within SmartAnthill Heterogeneous Network.

@TODO more explanation

SmartAnthill Router

SmartAnthill Router is responsible for translating IP-based requests into bus-specific requests for SmartAnthill Simple Devices (also see document SmartAnthill 2.0 Protocol Stack for details).

SmartAnthill Router operates one or more ‘buses’. Each SmartAnthill bus can be either a traditional wired bus (such as CAN bus), or a wireless ‘bus’. Wireless SmartAnthill ‘buses’ do not imply any wired connection, they just represent certain domain of wireless connections; for example, one wireless ‘bus’ can be a IEEE 802.15.4 ‘bus’ controlling some devices connected via IEEE 802.15.4, and at the same time another wireless ‘bus’ can be a 433 MHz RF ‘bus’ controlling some other devices connected via 433 MHz RF. Each bus (wired or wireless) has one or more simple devices (such as sensors or actuators) connected to it (in case of wireless buses, the connection is wireless). Each device runs an MPU (or in theory CPU), which runs SmartAnthill stack on it (either a reference stack, or some other implementation).

It should be noted that IP-enabled devices do not use SmartAnthill Router to operate; they can and SHOULD be addressed directly via their IP.

SmartAnthill Firmware Builder and Uploader

SmartAnthill Firmware Builder and Uploader is implemented on top of PlatformIO.

@TODO PlatformIO role should be explained here

SmartAnthill Database

  • Board settings
  • Pre-configured plugins
  • Application state
  • Configs