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).
Contents
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¶
- SmartAnthill Device Abstraction Layer (SADAL)
- Request/Response/Event Handler
- SmartAnthill Firmware Builder and Uploader via PlatformIO
@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