We run nearly this at a few small pump stations, so a couple of things from that.
The Pi in the middle is a good call because of your outages. Have it act as a gateway: one device in Hermetry marked “This device is a gateway”, and each room becomes a child device the first time the Pi reports it. Node-RED collects the room messages from Mosquitto, keeps them in a file or a small SQLite table while the internet is down, and then sends them on with their own timestamps:
topic v1/gw/telemetry
{"Room 4": [{"ts": 1793000000000, "values": {"temperature": 22.1, "humidity": 51, "door_open": 0}},
{"ts": 1793000300000, "values": {"temperature": 22.0, "humidity": 51, "door_open": 1}}]}
Make sure the Pi has the right time (NTP after boot) before you put a ts on anything. A big backlog drains a bit slower because replays have their own rate limit on the profile, that’s normal.
Geyser switching can go through the same Pi. A command sent to a child device comes down to its gateway on v1/gw/rpc, so Node-RED subscribes to that and passes it on to the right room. Or make the geyser controller its own device that connects to Hermetry directly. For a geyser I’d go direct, fewer moving parts.
Gateway topics are described in Devices behind a gateway.

