So we have an Arduino Mega 2560 connected to a breakout board, which is inverted onto a veroboard. The board with the ICs and leds is the control panel removed from the DNC65.

The inputs and outputs are as follows:

- ESP8266-01 for emailing alerts
- DHT22 Humidity and Temperature sensor
- DS3231 Real time clock module
- 4 channel relay board
- 2 Buck converters (3.3v & 5v)
- 2 buttons for software assignable roles
- An RGB status led (connected to PWM pins)
- HX711 load cell amplifier connected to cheap set of digital bathroom scales
- Micro SD card adapter

The DNC65 has 5 distinct program modes and 3 timer modes.

The basic operation of the software:

Arduino startup > start sensors and wifi > flash the RGB led to indicate that the water bottle can be placed on the scales.

Select the program I want to run using the on the DNC65 control panel and then press the latching green topped button. Monitoring and controlling the DNC65 will follow using the program it was running at that point. If the unit switches off or someone comes along and selects a different program it will immediately switch it back to what it was doing (including powering on).

Actuating the switches on the DNC65 is done by momentarily setting the specific channel relay on and off - to simulate the button press.

To get the status of DNC65, the leds on the DNC65 board are read using Arduino analogue pins.

The red momentary button is used to send a status report, including today's log file (stored on the micro sd card)

For the software I used Visual Studio 2015 and the VisualMicro Arduino extension. I'll publish the software on Github if anyone's interested.