snap name: aris-hydronics description: Embedded controller for Aris whole-home hydronic heating, cooling, and hot water systems. Runs on Ubuntu Core on a Raspberry Pi inside a sealed, headless HVAC appliance. Ships three daemons: a Brain (system controller), a CoAP bridge (Thread mesh networking), and a BLE WiFi provisioning daemon (Improv WiFi standard). snapcraft:
https://github.com/ArisHydronics/aris-brain/blob/main/snap/snapcraft.yaml
upstream: https://github.com/ArisHydronics/aris-brain upstream-relation: upstream maintainer
This is a commercial IoT HVAC appliance running Ubuntu Core on Raspberry Pi. Devices are deployed headlessly in mechanical rooms with no user present at install time, so manual snap connect is not feasible.
interfaces:
bluetooth-control:
- request-type: auto-connection
- reasoning: The ble-provision daemon implements the Improv WiFi open standard over BLE GATT. On first boot with no network configured, it advertises a BLE service so the installer can send WiFi credentials from a phone or laptop. Without auto-connection, the daemon cannot access the Bluetooth adapter and the device has no way to get on the network.
bluez:
- request-type: auto-connection
- reasoning: The ble-provision daemon uses the BlueZ D-Bus API to register a BLE GATT service and manage advertisements. This is used alongside bluetooth-control for the Improv WiFi provisioning flow described above.
network-manager:
- request-type: auto-connection
- reasoning: The ble-provision daemon calls NetworkManager over D-Bus to apply WiFi credentials received via BLE. The Brain daemon also reads network state from NetworkManager for diagnostics. Without this interface, BLE provisioning can receive credentials but cannot actually configure WiFi.
network-control:
- request-type: auto-connection
- reasoning: The ble-provision daemon reads the device MAC address to generate its BLE advertisement name (“Aris-XXXX”). The Brain daemon uses it for advanced network diagnostics. On a headless appliance, manual connection is not practical.
network-observe:
- request-type: auto-connection
- reasoning: The ble-provision daemon checks whether ethernet or WiFi is already configured at startup to decide whether BLE advertising is needed. Without this, the daemon cannot determine network state and would either always advertise (confusing) or never advertise (broken provisioning).