make sure hook cron is only run once a day setting
I would check the implementation of hook_cron() in the Examples module.

The exact implementation is here, it's pretty straightforward!

Basically, you're setting the next execution time (in the example code as cron_example_next_execution) of your cron run as the very last step in your hook_cron() implementation, and then checking it as the very first thing.

If the variable doesn't exist, then cron will fire off your task, and then set it!