This is actually the third iteration of my web-enabled cat feeder.

The first one was powered by a Raspberry Pi which was running a node.js server. The food was dispensed with a revolver-like mechanism. The mechanism was prone to jamming and the Raspberry Pi was unstable. Also, Javascript, yuck.

The second iteration had the same mechanics but the electronics were replaced by a lot more reliable Arduino which communicated through Bluetooth with a node.js server running on a laptop.

The latest iteration has superior design, both on the mechanic and software side. The feeding mechanism has a crankshaft and piston type operation. The Arduino communicates with an ESP8266 ESP-01 WiFi module with the central "smart home" server which runs in the cloud. The server is written in Clojure.

The feeding times can be set using the central server's web UI. There's also a quick way to do it with a simple Pebble smartwatch app that's written for this purpose.