History of “SmartAnthill” Project

SmartAnthill is an intelligent micro-oriented networked system

SmartAnthill is an intelligent micro-oriented networking system

My love to electronics has started from my childhood. And if you ask me about: “What was your favorite toy in childhood?”, then I answer: “Most likely it was a soldering iron”. In that time I only had a minimal basic knowledge in electronics.  But to understand that a circuit is broken due to a faulty resistor or transistor was not a big problem for me.

The most interesting moment of “electronic life” started several years ago. Then I was one of those people who have made their first “electronics steps” in the “Home Automation“.  The first task which had to be resolved was a “Simplified Climate Control System“. The first way to find the solution for it was using OWFS based on “1-Wire” bus . This approach was cheap and easy to use. The fundamental hardware part was built on DS18B20 (1-Wire Digital Thermometer) and DS2408 (1-Wire 8-Channel Addressable Switch) chips. At the building stage in my house I embedded a lot of digital thermometers into the floor. This allowed me to control the floor’s temperature in the different rooms (because I didn’t have the radiators for heating  😎 ). The information about temperature, the ability to control heating collector and gas boiler, the several lines of Bash / PHP code helped me to create my first working version of “Climate Control System“. With it I could:

  • setup different “Climate Programs”(Day/Night, Weekend,  Holiday, Guests and any others modes)
  • monitor and analyze history of temperature and heating collector (excellent graphs)
  • control this system from outside of my house (via Internet with mobile application)
  • reduce a gas consumption in several times 😀

my-electronics-step-1 my-electronics-step-5 my-electronics-step-4 my-electronics-step-7 my-electronics-step-9 my-electronics-step-3my-electronics-step-2 my-electronics-step-6my-electronics-step-11my-electronics-step-10 my-electronics-step-8my-electronics-step-12

The era of micro-controllers

The next task was linked with my “Air-conditioning System” (Mitsubishi Lossnay). I developed external device (based on Arduino) that fully replaced all functions which were available in original PZ-60DR-E. But the main difference between the original and my own version was that I could see all information on my laptop/mobile phone at any place and could manage all functions of Lossnay. Then I connected it with my “Climate Control System”. The further tasks required additional controlled nodes (based on Arduino, MBED, TI LaunchPads):

  • to control of aqua (temperature monitoring, control COequipment, replacing 30% of water each week in automation mode)
  • lightening control
  • energy consumption (high-load triggers)
  • water consumption (water leak triggers)
  • and many more.

Some of these nodes were connected to CAN bus, others through different bridges (Serial Port, Ethernet) connected directly to master PC. But finally, I had the several devices with different Firmware, Toolchain and backend interaction for each.  At that time it was not easy to support this “electronic salad” from different micro-controllers day by day.  I wanted to abstract at user’s level and manipulate with device’s Capabilities, but not with device’s registers, different libraries, compilers, drivers and etc. Then I realized that these devices want to communicate with each other in “common language”. In other words they should be located in a Common Network and should understand a Common Control Protocol.

“SmartAnthill” Project

The Common Network and the Common Control Protocol are very good at the beginning, but not for beginners. I asked a few of my friends (developers) about their opinion of the micro-controllers. Would they like to use them? And most of them answered: “Yes, of course, but I have no time to read the application notes, to learn SDK… but I would like to use it like “Plug and Play”. After many thoughts was born “SmartAnthill” …

SmartAnthill is not an alternative to any industrial protocol or Fieldbus, it is an addition to them. The main features of SmartAnthill are:

  •  to allow user to communicate with hardware device (micro-controller) as with Network Device from any High-Level programming language via High-Level API
  • “Plug and Play”.  User a connects device to the PC, customizes it via “SmartAnthill GUI” and then asks “SmartAnthill” to train this device with selected Capabilities. At this point, “SmartAnthill” should compile special firmware with selected features by user and install them.
  • to extend already existing Fieldbus, like CAN bus
  • to extend another “SmartAnthill Network”
  • to allow developers to integrate the new family of microcontrollers in “SmartAnthill System” with minimal efforts
  • and many more.

I understand, that is huge project and it requires many time and efforts… But only Open Source can realize our dreams or huge command of developers… Therefore, “SmartAnthill” should Be Opened for each of us  🙂

I pushed short information (README) to special “SmartAnthill Home Page”. You can find all detailed information here. Also, I have shared the several ideas about “SmartAnthill Network and Protocols” in the Main Documentation recently.

Your opinion

  1. What do you think about this idea and “SmartAnthill” in general?
  2. Would you like to use “SmartAnthill” for DIY projects?
  3. Which microcontrollers are interesting for you?
  4. Which Peripherals are interesting for you?
  5. Which “High-Level languages” do you want to use for communicating with “SmartAnthill”?


  • Петрівський селюк

    You definitely must write an article on habr and I’m sure you’ll find adherents.

    • Yes, sure. But I should have a simple working demo for beginning (maybe based on Arduino).

  • Thomas F.

    Hello Ivan,
    yesterday I stumbled over your project page. I am very interested in using both – platformIO and also SmartAnthill and also to contribute, if I can help.

    I’d like to test SmartAnthill, but unfortunately the sections “Usage Documentation” and “Developer Documentation” are still empty. When do you think, you can provide these information? I am very curious how this is working, but I don’t know exactly, where to start. :o)

    My platform consists of (currently) Atmega328p (Arduino based) sensors, a raspberry pi as gateway and Android devices or pc’s as clients. I’d like to connect the sensors via rs232, CAN bus and also wireless (802.15.4 radios).

    • Hi Thomas. Thanks a lot for your feedback. Now, I’m going to answer on your questions:

      As for PlatformIO

      Have you used it on your PC & Raspberry Pi? Which type of OS is installed on your Raspberry Pi?

      As for SmartAnthill

      SmartAnthill has not been released yet. I created Milestone 0.1.0 and attached to it all tasks, which must be implemented before first public “alpha” will be released.

      If you want to contribute, then which part would be interesting for your?
      1. Core: Python Event-Driven Programming (based on Twisted Engine)
      2. Portal: Web Programming (Bootstrap, AngularJS, REST API and etc.)
      3. Embedded: Sure, Embedded Programming (C/C++, Arduino and Energia Frameworks) 🙂 You can find more information here
      4. Of course, I would be very much obliged to you if you help me with testing! Because, I don’t have RaspberryPi and this platform is interesting for these projects.

      P.S: I described little more about SmartAnthill on “reddit”. Please read this comment.

  • Hi Ivan,

    This project sounds like a proper way to approach this – well thought-out. I went quickly through the docs to get a general idea but was not able to figure out for sure if the control logic can be added to the sensors/actuators? So that we have some (basic) functions of the system still available even when the main controlling device is gone.

    This is the reason I went for souliss library for now as it offers a simple way to implement logic for these ANTs 😉 For time being it will fit my needs but this could change in the future as I add more nodes and stuff will get more complicated…

    Edit: Just had a quick look in the code. Are these ZepotOS plugins what could be a way to implement the logic on these boards?

    • Hi Bart,

      The main idea of SmartAnthill Project is to move business logic to higher level using API (Socket, WebSocket, REST over HTTP). We are going to prepare SmartAnthill SDK for the popular languages. It will allow you to communicate with your SmartAnthill Network (Ants) using Python, Java, C, JavaScript, Ruby, PHP and etc.

      Nevertheless, we will create plugins for the most popular sensors/actuators later. However, you can implement own logic (as you have asked above) using Zepto OS Plugin:

      * SmartAnthill Plugins Documentation
      * SmartAnthill Plugin Examples

      P.S: SmartAnthill has not been released yet. Please follow us on SmartAnthill Twitter.

      • Hi again.

        I am keeping an eye on the project. Just installed and configured it. I was able to compile the firmware as well. The design of this is really neat. I was wondering if the project is in the stage I can start developing plugins. I don’t see a documentation for those plugin functions yet but I see some basic stuff is already there. How mature is all this?

        I intend to create only a simple light controlling plugins so there’s no need for any fancy features or external libraries. I guess if the basic ping and led plugins work, mine should work as well.


        • Dear Bart,

          Thanks a lot that following us. I don’t recommend to use SmartAnthill now(even `develop` snapshot). The API that is described here will be modified significantly.

          We are hardly working on the first public development version. I hope that I will release something(dev.draft) to the end of this year. We are currently focused on SimpleIoT Heterogeneous Mesh Protocol and on the transports for the popular hardware (nRF24, TI CC11xx, xBee, ESP8266, RFM69).

          Firstly, we should implement the main idea of SmartAnthill and show that users can connect different networks/hardware into the single SmartAnthill Heterogeneous network.

          Secondly, we will correct API in docs for Plugins and create a few practical plugins that use `papi_` prototypes. Then users will have ability to create own plugins.

          Don’t forget that “SmartAnthill” plugins are not intended for business logic. The SimpleIoT’s node in the network is low-power and “stupid”(slave) device. You should focus your logic on the SmartAnthill Core side (PC, Raspberry Pi, etc). This approach should significantly improve “battery life” of your nodes.

          P.S: I will write a few articles and explain in practice how to use SmartAnthill.

  • Dontsov Evgeny

    Hi, Ivan!
    I see a hard work to create and to document SmartAnthill, but I can’t understand how I can use it… I try to read a lot of doc pages, but didn’t find any examples of device and communications. Ideas are right, but how can I use it?!

    Everybody needs to communicate with their own lnternetOfThings ;). Help me not to invent another bicycle ))

    • Hi Evgeny,

      Please sorry but I have stopped work on SmartAnthill Project 🙁 Currently. I’m focused on PlatformIO.

      Do you need to communicate with hardware for personal or commercial using?

      • Dontsov Evgeny

        No problem. I have the same aims and read info about private “Bicycles” around the world. I also have some ideas for easy creating of IoT and want to understand how can i use SmartAnthill “from the box”. Maybe it is also very easy and comfortble as Platformio. 🙂

        Have you a link: device firmware + how I can communicate with it?

        Later, I will describe my ideas, because, I have never seen the same vision.

  • udvarhelyi

    Hi. Can you give me some details about “I developed external device (based on Arduino) that fully replaced all functions which were available in original PZ-60DR-E.” I have a lossnay LGH-25RX5-E, which has same controller, but I want to use arduino to control.

    • There is datasheet for this device with detailed description about external connectors. You can use Arduino’s GPIO in pair with opto-isolators to control most functions or to read states.