I’d second a selfhosted dav too. Recommending Baikal. But it needs a lil bit of “work”.
Yet, if FOSS is more a wish than a requirement: Try Bring. “free”, syncs and has an api to get it connected to smart-home or whatever. Definately the easiest thing.