I have setup my Octopi to use static IP address so this is no longer part of the problem. I can confirm from router logs and from octopi logs that DHCP leases are no longer performed.
What I have from my router log for the last disconnect:
Mar 6 16:04:52 wlceventd: wlceventd_proc_event(526): eth4: Auth DC:A6:32:C0:09:DB, status: Successful (0), rssi:0
Mar 6 16:04:52 wlceventd: wlceventd_proc_event(507): eth5: Disassoc DC:A6:32:C0:09:DB, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8), rssi:0
Mar 6 16:04:52 wlceventd: wlceventd_proc_event(507): eth5: Disassoc DC:A6:32:C0:09:DB, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8), rssi:0
Mar 6 16:04:52 wlceventd: wlceventd_proc_event(536): eth4: ReAssoc DC:A6:32:C0:09:DB, status: Successful (0), rssi:0
Mar 6 16:05:17 wlceventd: wlceventd_proc_event(490): eth4: Deauth_ind DC:A6:32:C0:09:DB, status: 0, reason: Deauthenticated because sending station is leaving (or has left) IBSS or ESS (3), rssi:0
At the same time, the octoprint.log displays these messages:
2021-03-06 16:03:11,367 - octoprint.plugins.tracking - INFO - Sent tracking event ping, payload: {'octoprint_uptime': 1794}
2021-03-06 16:03:47,285 - octoprint.plugins.octopod - INFO - Could not load image from url
2021-03-06 16:07:03,882 - octoprint.plugins.octopod - INFO - Could not load image from url
2021-03-06 16:07:23,915 - octoprint.plugins.octopod - WARNING - Could not send message: HTTPConnectionPool(host='octopodprint.com', port=80): Max retries exceeded with url: //v1/push_printer (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xa80432b0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
2021-03-06 16:07:43,942 - octoprint.plugins.octopod - INFO - Could not send Silent job message: HTTPConnectionPool(host='octopodprint.com', port=80): Max retries exceeded with url: //v1/push_printer (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xa7fffe50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')) State: Printing
It appears that the Octopi stopped communicating with the router and after a few failures, the router dropped the connection. Then without the connection, Octoprint could no longer communicate with the outside world.
A reboot of the Octopi will reestablish the connection. Rebooting the router may do that same but have not tried that due to the disruptive effect it has on the rest of the network connected devices.
I have tried disabling plugins installed in the few days before this issue started, but still had the failures. I'm now considering disabling all plugins and testing for a few days to see if it is something that was added.