I’m proud to present what I’m currently working on: a Arduino home automation framework and a corresponding webservice. I call it Ardumote, because when I started working on this, all I wanted to have is a simple remote control app for my mobile phone.

the idea

The basic idea is to use a arduino only for operating actors, requesting sensor values and communicate all this stuff to another device. To make things flexible we have ActorModule-, SensorModule- and CommunicationModule classes with a common interface and thus said you simply attach actor objects, sensor objects and communication objects to your Ardumote instance which handles everything in this manner:

loop {
  if (command available from any communication module) {
    process command / operate specified actor;
  if (value available from any sensor module) {
      send value to all attached communication modules;

The communication protocol is kept human readable and very simple. You can find more details at

The „other device“ could be a application on your computer/smartphone using the (bluetooth) serial communication module, a webapplication on your home or remote webserver or – what I personally focus on – a webservice at using the ethernet IRC module.

What is ready for now:

  • The basic ardumote library using plaintext (recommended for Duemilanove/Uno) or md5 (recommended for Mega) authentification
  • A analog and a digital sensor module -> just read a analog/digital pin in a defined interval, useful for LDR or LM35 temperature sensors for example
  • A analog (PWM) and digital actor module -> just write a analog/digital pin, useful for switching LEDs for example
  • A RCSwitch actor module -> just a wrapper for the RCSwitch library to operate RC power sockets, only works on Arduino Mega
  • A serial communication module -> test & debug in serial monitor, useful for eventually processing or android apps via bluetooth
  • A ethernet IRC communication module -> connects to
  • A ugly basic web interface at giving the ability to register a Ardumote controller, operate actors and log sensor values.
    This is what it looks like:

What I want to have in near future is:

  • Refactoring to minimize the RAM consumption (hope to get the RCSwitch module running on a Duemilanove/Uno)
  • A RCSwitch sensor module -> use a simple remote control
  • Set event based actions at the webservice -> if (LDR < threshold) { switch on lights; }
  • A fancy web interface with the possibility to compose customized fancy remote control interfaces
  • A Android app to use the fancy remote control interfaces 🙂

Quickstart if you want to try the pre alpha (ethernet shield needed):

  • Get yourself the RCSwitch and Time libraries
  • Sign up at, login and add a new Ardumote controller.
  • Get the library
  • Take the example sketch which comes along with the library, change the following lines according to the Ardumote controller you’ve created in step 1 and your local network settings:
    #define ARDUMOTE_SHARED_SECRET "2d520b8f5ea2cf6113a578f57b45201c"
    byte mac[]     = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    byte ip[]      = { 192,168,0,11 };

    Btw: As the arduino connects via IRC and keeps being connected, there is no need to setup anything on your router 🙂

  • Plug in a ethernet shield, a LED to pin #5 and pin #6, plug in a analog sensor to analog pin #0
  • Upload and wait until the LED at pin #13 switchs on (which indicates that the Arduino is connected to the IRC server)
  • Now you should be able to control the LEDs at the webinterface

Feel free to share your toughts in the project forum (no registration required)

8 Gedanken zu “Ardumote

  1. Jein. Es gibt keine eigene App aber man kann die virtuelle Fernbedienung auch in jedem Browser öffnen (auch mit QR-Code scannen).

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

Du kommentierst mit Deinem Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )


Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )


Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s