I wonder if ESP-NOW[0] would be useful for this. I've been toying with building some mesh-based lighting controllers for synchronizing lights. Fortunately it can be entirely static (number of nodes) which makes it an easier problem than dynamic meshes.
0: https://www.espressif.com/en/solutions/low-power-solutions/e...