hardware watchdog

I'm using an uno to control a green house heater and vent.
The problem is, the other day it hung (crashed and stayed in it's current state) with the heater on, and so it got pretty hot.
I have it talking to a mega256, so I set the mega up as a watchdog, and it cycles the uno's power if it stops reporting.
However, both were hung when I woke up this morning.

Anyone have a link to a hardware watchdog that works with with the uno/mega (I'd assume a 555 and a few extra parts).

basic description:
uno controls 240v vents with SSR, 240v fan with SSR, 24v heater with relay, measures temp and humidity with DHT22, has LCD, pot, switch and button for viewing status/setting values.
uno reports status to mega via I2C

mega has ethernet shield, controls uno's power with relay.
mega get NTP time, logs status to microsd, and gives latest status to web requests.

both are powered by 9v transformers into 5v regulators.
all parts from sparkfun

I'm new to arduino and c, so I'm sure there is probably obvious or not so obvious leaks, bad code, etc - code below if someone would like to advise on those issues

...

...

...

I think the problem was in Wire (I2C).
I replaced that with 19200 serial (for some reason 2400, 4800,9600 didn't work often), and it no longer (so far) hangs.

I'll post new code once it has been running without crash for a few days.