Hi Danee, thanks for the app and all the work on the Alarm support.
I have a Ring Alarm Pro (the base station with the built-in eero Wi-Fi 6 router) on a Homey Self-Hosted Server, app version 2.14.27. Pairing works for the Keypad, Doorbells and Floodlight Cams, but adding a Basestation returns an empty device list.
I tried a few times and then pointed Claude Fable at my challenge to see if I was messing up. It came right back with a slight miss in the code and offered a patch.
I built this from your current master with the three edits below and installed it on my Self-Hosted Server with homey app install. The Alarm Pro now appears in the Basestation pairing list, pairs, and the mode and alarm cards work as expected.
----AI BELOW!----
The cause is that Ring reports the two base station models with different device types, and the app only matches the original one. The bundled ring-client-api defines both:
BaseStation: 'hub.redsky'
BaseStationPro: 'hub.kili'
The Alarm Pro comes back as hub.kili, so it is filtered out before the pairing list is built. Three places match only the original base station:
drivers/basestation/driver.js, onPairListDevices(): if (device.data.deviceType === 'hub.redsky')
lib/Api.js: alarmDeviceList only contains 'hub.redsky', so the app never subscribes to the Pro’s data events
drivers/basestation/device.js: the block that reads tamper, power source, network connection and battery from the base station checks data.deviceType == RingDeviceType["BaseStation"] only
Adding the Pro type in each spot fixes it:
diff
--- a/drivers/basestation/driver.js
- if (device.data.deviceType === 'hub.redsky') {
+ if (device.data.deviceType === 'hub.redsky' || device.data.deviceType === 'hub.kili') {
--- a/lib/Api.js
-const alarmDeviceList = [ 'sensor.contact', 'sensor.motion', 'security-keypad', 'security-panel', 'hub.redsky' ];
+const alarmDeviceList = [ 'sensor.contact', 'sensor.motion', 'security-keypad', 'security-panel', 'hub.redsky', 'hub.kili' ];
--- a/drivers/basestation/device.js
- if ( data.deviceType == RingDeviceType["BaseStation"] ) {
+ if ( data.deviceType == RingDeviceType["BaseStation"] || data.deviceType == RingDeviceType["BaseStationPro"] ) {
Mode changes and the burglar/fire/medical/panic/entry delay triggers all come from the security-panel device, which is the same on both base stations, so nothing else needed to change.