The IMHO best method is to have a raw dump of the SD card ready. You can’t miss any program or file that way you might forget about if you need to list it in a backup tool. Get an external card writer, attach it to your primary Pi and do dd if=/dev/mmcblk0 of=/dev/sdX
after significant changes or nightly via cron.
In case of breakdown, exchange SD card and boot. To have volatile data (logs, persistence DB) on an external medium (USB stick, NAS) helps but is no must.
EDIT: I have added the Amanda backup tool to openHABian. It allows to backup/restore selected files from multiple machines in parallel to backing up the raw SD cards. That way you can restore any system state of any date in the past and/or create a SD card clone.
PS: you also need to take care to backup your zwave controller data and any gateway you might be running but obviously there is no generally applicable manual on how to accomplish that.