No more free DynDNS … time for ORDNS :-)

Last Wednesday on May 7th 2014 DynDNS stopped with their free services. For people who like me use VPN to connect their home LAN this is not a pleasant message. The cheapest paid service from DynDNS is priced at $25/year. Luckily we have OpenRemote and it is very easy to recreate the dynamic DNS service for free. Please follow the steps:

  • register a domain name if you don’t already have one which you will be using for your home LAN. Free domains can be registered here
  • apply for free DNS service here Setup the dynamic DNS service there too. This step will generate a password which will be used in the OpenRemote setDDNS command later.
  • create command in OpenRemote designer to read your external IP address: name = externalIP, protocol = HTTP, URL =, HTTP method = GET, polling interval = 30m.
  • create sensor: name externalIP, command: externalIP, type: custom.
  • create command for setting the address record: name = setDDNS, protocol = HTTP, URL =${param}, HTTP method = GET.
  • create rules to forward your external IP changes:
    declare ExternalIP
      ip : String
    rule "ExternalIP init"
      Event(source=="externalIP", $v: value)
      not ExternalIP()
      insert (new ExternalIP($v.toString()));
      String message = "External IP initialized: '"+$v.toString();
      My_NMA nma = new My_NMA(message, -2);
      execute.command("setDDNS" , $v.toString());
    rule "ExternalIP change"
      Event(source=="externalIP", $v: value, value != "")
      $e: ExternalIP($i: ip, ip != $v)
      String message = "External IP changed: '"+$i+"' -> '"+$v.toString()+"'";
      My_NMA nma = new My_NMA(message, 1);
      execute.command("setDDNS" , $v.toString());

    The code above also sends push message to my smartphone using the Notify My Android service. Of course you can also use the Pushover service or remove the notification code from the rules.

  • In case you don’t need push service notifying about IP change then the rule below is all you need:
    rule "ExternalIP DDNS"
      Event(source=="externalIP", $v: value!="")
      execute.command("setDDNS" , $v.toString());

Bravo, your OpenRemote is now paying you back 25$ a year for a VIP DynDNS account 😉

Sending Pushover notifications from Openremote

pushover summarypushover listPushover is a simple mobile notification system available for Android and iOS. It is similar to the Notify My Android however it is not free. Its API makes it possible to configure messages with custom icons (see images left) and notifications are easily send from within OpenRemote.

To send a message first you need to create a command:

  • name
  • protocol HTTP
  • URL${param}
  • HTTP method POST

There are more parameters available and described in details on Pushover API’s page.
Note that the call uses ${param} to pass the message text from a rule:

rule "System start"
when eval(true)
  execute.command("", "System start");