I am automating my home using various tools, scripts and technologies. The core of my domotica system is HomeSeer Pro for which i developed a few tools, These tools and more will eventually find a home here on this page.


ZMC-NDS This was a very long running project. A Nintendo DS used as a domotica controller for HomeSeer 2. However it can also be used for other domotica systems. With this controller you can fire events and control devices that have ON / OFF buttons. A real remote control so to say.

ZMC-NDS is written in C++ and make use of the excellent devkitpro ARM r43. Since i didn't know much of programming in C or C++ it was a very, very tought project. String handling is so obvious in other languages but a nightmare to do in C or C++. Especially when you have a limited amount of memory that can't hold fancy libaries.

The zip file contains everything you need to set this up on your NDS and on your HS server. If you want to use it on a different domotica system then prevail not. I've included a well documented header to the server side part and you will be able to change it without to much trouble or even write your own with the provided details.

Grab your copy HERE

How is this thing working?
The NDS makes a connection with the WiFi accesspoint via the WFC settings defined in the NDS. These settings can be made by hand but it is far more easier to do using an existing game cartridge that make use of this. Mario Kart is such cartridge. ZMC-NDS will look for these settings on the NDS and make a connection with your defined WiFi access point. After that ZMC-NDS takes over control and can communicate via WiFi. ZMC-NDS make a connection with a script on a webserver and passes the commands. The webserver then give a response back that the action is done or in the case of a refresh it will create a list of devices and events and send that list back. The serverside script is also capable of handling the control of the devices and events. Doing it this way you will be able to use ZMC-NDS on different systems then just HomeSeer 2

The first thing you should do after you start ZMC-NDS the first time is getting a refresh of the available devices and events. This list is then build bij de webserver and downloaded to the NDS where it will be stored for later use. When you select a filter an new internal list is created from the already downloaded file and presented. Thus reducing download time. Since there is no state feedback due to the slow WiFi connection there is no logical need for displaying any other device then devices with buttons. You can display devices without buttons but you can't control them so what is the point of doing that?

How to set this thing up?

NDS side
Place ZMC-NDS.nds in the root of your (homebrew) cardridge. You may or may not need to patch the ROM with a tool like DLDI to let the file system link with the ROM. Most modern cardridges today do this automatically but i have a pre-historic M3 moviemaker SD card so i need to patch the ROM. This ROM is included in the ZIP file.

Copy the zmc folder and content to the cardridge. Open the config file in the folder and enter your ip address and portnumber of your domotica system.

Server side
Make the following folder structure in the root of your webserver, AZTools/ZMC_NDS/ and place Place response.aspx in this folder.
(For HS2)
Place response.aspx in c:/Program Files/HomeSeer HSPRO/html/AZTools/ZMC_NDS/
note1: You have to make /AZTools/ZMC_NDS/
Note2: This part may differ on your system c:/Program Files/HomeSeer HSPRO

Next you need to define which devices and events you want to control.
Pick only devices that have ON/OFF buttons and events groups that are meaningfull for control.
Open response.aspx and fill in the appropriate sections for devices and events. For devices i use device type as selection criteria since those define also if there are ON/OFF buttons or not.

Using it on other systems?
What do i need to know to make my own script?
You can use it for any system that is capable of producing a comma seperated list of events and devices when called for a file called response.aspx. This means that the following conditions must be met.
must be available since that is what the ZMC-NDS is calling for.

With ZMC-NDS you can control up to 1500 events and devices that have ON/OFF buttons. You can not view the status of devices. Make sure that you will not pass the limit of 1500 device and/or event records.

What does this script produce?
This script produce a list of devices and events in the following form :
For a device [device code(4)],[name(100)],[room(100)],[floor(100)]
For an event [empty(1)],[name(100)],[group(100)],[empty(1)]
Where (number) is the maximum allowed number of characters in that field.
Each device and event is also seperated by a comma from the next one

The whole block must start and end with a ASCII(7) to mark the complete block and make sure that you send a ASCII(0) character to signal the end of data. Doing it this way ensures that possible header info is not in the way of data processing.

Using AZTools/ZMC-NDS/response.aspx?Action=
For actions use cmd=
For devices us DV=

Possible values are:
DV = Housecode + Devicecode e.g. D18


Look at the provided code in response.aspx for more details.


  • By: A.A. van Zoelen
  • On: 25/02/2015

Traffic jam reader

This script is only useful for the Dutch railway system. So, since the audience is primary native Dutch speaking i will continue further in Dutch.

Als je net als ik ook gebruik moet maken van de NS wil je niet eerst een half uur reizen naar het station om daar er achter te komen dat er weereens een vertraging is. Vandaar dit script dat loopt met een recurring event en in de ochtend via de speaker in de badkamer me even informeer dat ik vandaag me niet hoeft te haasten. Dus wat is het. Het is een script die de NS storingen pagina in de gaten houdt of een van de door jou opgegeven plaatsen voorkomt in de lijst van storingen. Is dit het geval dan wordt een device ON

  • Simpel weergave optie. Alleen aantal storingen.
  • Mogelijkheid om trajecten op te geven.
  • Slechts 1 nieuw device.
  • Device wordt gemaakt als deze niet aanwezig is.
  • Device value, status en devicestring worden gezet voor gebruik in event triggers
  • Kan een onderdeel zijn van je Verkeer monitoring set.
    • Uitgebreidde melding optie. Inclusief:
    • Oorzaak
    • Verwachtin met eventueel vertragingtijd
    • Reisadvies
Overige informatie is in de header van het script. Veel plezier. Grab your copy here


  • By: A.A. van Zoelen
  • On: 31/12/2011

Traffic jams reader

This nice little script allows you to keep an eye on the route you usually take to get to your job, friend, family or whom ever. Device(s) will be created if needed for the routes supplied. The usage is rather simple. Just make an event and select script. Set a few parameters and you're ready to go. All information is included in the header of the script. Grab your copy here


  • By: A.A. van Zoelen
  • On: 31/12/2011