Instead of entering a "hot" reboot loop when there is a problem
connecting to WiFi or the MQTT broker, the chip will now go into deep
sleep for a minute before trying again. This should conserve battery in
situations where simply trying again right away won't fix the problem
(e.g. WiFi is actually down, or the band conditions are just really bad
for now).
This should be useful for diagnostic purposes. It's not brought out
into a proper sensor in HA, but it can be seen using the MQTT message
viewer in the HA device configuration tool.
It really isn't necessary to have minute-level granularity of soil
moisture (especially since it's just been sitting at "max" for 2
weeks!). Updating frequently is helpful for diagnostics, though. To
compromise, the sensor will now publish data every minute for the first
few minutes after it starts up, then reduce its update frequency to once
every hour.
Populating these options helps Home Assistant display the sensors better
in the UI.
The `publish_client` function has too many parameters as it is, making
it difficult to keep track of which value is passed as which argument.
Using a structure and designated initializers makes this a lot cleaner.