Do you have the option enabled in HPM to download beta versions? Only the beta version added the glass break sensor so far.
Yes I have enabled the option in HPM to upgrade to pre-releases but it still says I'm up to date.
edit: I was able to get it working by doing a "repair" and then update again, thanks
That's great. Was it a quick add from Ring to HE or did you let it sit on Ring for a bit before adding to HE?
It was after 3 tries this morning before the Create Devices command finally worked.
The 4 new contact sensors (All Gen 2) paired on first try tonight so I wonder if I just need to let it go for a few days before it would work for some odd reason.
@bfara3 Sorry for the delay in looking into this. I have been recovering from the flu.
I released a new beta version which should fix the issue you were having with new devices. The issue was that createDevices was assuming there was only a single hub. Now createDevices will stay enabled for 60 seconds, which should be enough time to receive an update for every hub.
Thanks for the update, seems to be working perfectly now after I removed 12 of the contact sensors and tried the CreateDevices again to test it out.
Interesting. Is that only if you have another hub like the Lights hub enabled or do you see the Gen2 hub acting like more than one?
The gen 2 hub still acts like a single hub. What matters is the order the 'DeviceInfoDocGetList' message responses for each hub. The order seems somewhat random, which is why it would sometimes work after retrying a few times.
I am surprised this issue didn't affect more people. It's been in the code from the very first commit! Like many bugs this one fell into the "How did this ever work" category.
Since about two days ago, I've been unable to interact with my Ring alarm system through the Hubitat app. I'm trying to debug, but could use a little guidance, because I get surprisingly little log output...
Things I've tried:
- I've re-logged in via the "Unofficial Ring Connect" app
- I've configured debug and trace-level logging via the "Unofficial Ring Connect" app settings
- I've confirmed I can change the mode via the actual Ring iPhone app
When I try to setMode('home') on the "Ring Virtual Alarm Hub" device, this is all I get in the logs:
dev:112022-05-12 08:42:50.614 am tracerequest: ["message",{"body":[{"zid":"<uuid1>","command":{"v1":[{"commandType":"security-panel.switch-mode","data":{"mode":"some"}}]}}],"datatype":"DeviceInfoSetType","dst":"<uuid2>","msg":"DeviceInfoSet","seq":10}]
dev:112022-05-12 08:42:50.611 am traceparams: [type:security-panel.switch-mode, zid:<uuid1>, dst:<uuid2>, data:[mode:some]]
dev:112022-05-12 08:42:50.608 am debugsimpleRequest(setcommand)
I've noticed this in the logs as well, which seems like useful information. Not sure what to do with it though:
dev:112022-05-12 08:46:29.028 am warnWatchdog checking interval exceeded
dev:112022-05-12 08:46:29.026 am debugWatchdog checking started. Time since last websocket msg: 2681.6 minutes
dev:112022-05-12 08:46:29.023 am tracewebsocketWatchdog(60) now:1652359589020 state.lastWebSocketMsgTime:1652198693362
That time delta ("time since last websocket msg") lines up with when I seem to have last been able to interact with Ring via the Hubitat app. Is the websocket connection used to send commands, or just to receive Ring events?
We've had a couple power outages the last few days, not sure why that would affect things, but mentioning in case maybe power got cut at a bad time and screwed up state?
Wondering if someone with knowledge of the internals of the app has ideas for what to try next. I could uninstall and re-install, or re-create all the devices, but would be nice to avoid having to then manually add devices back to apps/dashboards/etc. Thanks in advance for any ideas to try.
OK, as is often the case when you get your stuff together enough to ask a question, I figured this out shortly afterwards. I'll leave the post up just so others can search/find the solution if necessary.
Per logs, websocket connection was busted. The fix for that is to go to the "Ring API Virtual Device" and run the "Initialize" command. This is pretty clear from the README section on configuration.
I wonder if this Initialize could be automated when a websocket connection is detected to be broken (via the watchdog)?
Hi folks — I have a new a ring version 4 doorbell that doesn’t work with this integration. I have 3 ring doorbells. Two are the older 2020 2nd gen units which work perfectly. The third is a new 4th gen which doesn’t get discovered. I have tried multiple times rescanning but no cigar.
Product is video doorbell 4. Device health is good and everything else works fine.
Any help appreciated.
This shouldn't be hard to support, the question is how does it identify itself.
Most likely it is "doorbell_" something. Today we support many that identify as
doorbell_portal, doorbell_4, etc.
Could you turn on logs and run a discovery and see if you get any hits on devices not supported that tells you the name?
It should be something like doorbell_v6 but might have another code name like cocoa or something else odd.
Potentially it's the "doorbell_graham_cracker" which I have heard about which is one of the latest wired versions.
It isn’t wired. I’m away on vacation now but will do this when I get home in a few weeks.
I have remote support so I will try while away and report back
I turned on logs and did a discover but no logs showed up.
Make sure you turn on logs in both the "Ring API Virtual Device" and "Ring Virtual Alarm Hub Device" as well.
That helped so thanks. The old 2020 devices were discovered as cocoa doorbells which worked. The new device was discovered as a oyster doorbell which didn’t take.
Here is a screenshot of the oyster debug and trace.
app:7422022-05-13 03:26:47.339 pm tracenode: [id:90628943, description:Front Door, device_id:343ea4327cd8, time_zone:America/Los_Angeles, subscribed:true, subscribed_motions:true, battery_life:43, external_connection:false, firmware_version:Up to Date, kind:doorbell_oyster, latitude:37.498013, longitude:-122.27813, address:, settings:[cv_settings:[detection_types:[human:[enabled:true, mode:edge, record:null, notification:true], loitering:[enabled:false, mode:none, record:null, notification:false], motion:[enabled:true, mode:edge, record:null, notification:false], moving_vehicle:[enabled:false, mode:none, record:null, notification:false], other_motion:[enabled:false, mode:none, record:null, notification:false], package_delivery:[enabled:false, mode:none, record:null, notification:false], package_pickup:[enabled:false, mode:none, record:null, notification:false]], threshold:[loitering:10.0, package_delivery:2.0], triggers:], cv_paid_features:[human:true, loitering:true, motion:true, other_motion:true, package_delivery:true, package_pickup:true, cv_triggers:true], concierge_settings:[mode:disabled], other_paid_features:[alexa_concierge:true, sheila_cv:true, sheila_recording:true], sheila_settings:[cv_processing_enabled:false, local_storage_enabled:false], server_settings:[ring_media_server_enabled:true], zone_settings:[motion:[[id:95dbe2da-7191-487e-8b23-76bbac277dcf, name:Default Zone, state:enabled, properties:[detection_types:[motion], style:1], vertices:[[x:0.496135, y:0.432646], [x:0.569565, y:0.442955], [x:0.633816, y:0.539175], [x:0.978261, y:0.630241], [x:1, y:0.999141], [x:0.666666, y:0.999141], [x:0.423671, y:0.999141], [x:0.413527, y:0.685567]]]]], offline_motion_event_settings:[subscribed:true, enabled:false, max_upload_kb:5000, resolution_p:360, frequency_after_secs:2, period_after_secs:30], lite_24x7:[subscribed:true, enabled:true, frequency_secs:3600, resolution_p:360], enable_vod:1, exposure_control:2, motion_zones:[1, 1, 1, 1, 0], motion_snooze_preset_profile:medium, motion_snooze_presets:[none, low, medium, high], live_view_preset_profile:middle, live_view_presets:[low, middle, high, highest], pir_sensitivity_1:4, vod_suspended:0, doorbell_volume:8, vod_status:enabled, chime_settings:[type:2, enable:true, duration:10], video_settings:[encryption_enabled:false, encryption_method:null], advanced_motion_detection_enabled:true, advanced_motion_zones:[zone1:[name:Default Zone, state:2, vertex1:[x:0.496135, y:0.432646], vertex2:[x:0.569565, y:0.442955], vertex3:[x:0.633816, y:0.539175], vertex4:[x:0.978261, y:0.630241], vertex5:[x:1.0, y:0.999141], vertex6:[x:0.666666, y:0.999141], vertex7:[x:0.423671, y:0.999141], vertex8:[x:0.413527, y:0.685567]], zone2:[name:Zone 2, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0], vertex3:[x:0.0, y:0.0], vertex4:[x:0.0, y:0.0], vertex5:[x:0.0, y:0.0], vertex6:[x:0.0, y:0.0], vertex7:[x:0.0, y:0.0], vertex8:[x:0.0, y:0.0]], zone3:[name:Zone 3, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0], vertex3:[x:0.0, y:0.0], vertex4:[x:0.0, y:0.0], vertex5:[x:0.0, y:0.0], vertex6:[x:0.0, y:0.0], vertex7:[x:0.0, y:0.0], vertex8:[x:0.0, y:0.0]]], advanced_motion_detection_human_only_mode:true, enable_audio_recording:true, people_detection_eligible:true, live_view_disabled:false, ignore_zones:[zone1:[name:undefined, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0]], zone2:[name:undefined, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0]], zone3:[name:undefined, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0]], zone4:[name:undefined, state:0, vertex1:[x:0.0, y:0.0], vertex2:[x:0.0, y:0.0]]], enable_rich_notifications:true, rich_notifications_billing_eligible:true, rich_notifications_face_crop_enabled:false, loitering_threshold:10, advanced_motion_detection_types:[human], motion_detection_enabled:true, rich_notifications_scene_source:firmware, advanced_motion_zones_enabled:true, advanced_motion_zones_type:8vertices, advanced_pir_motion_zones:[zone1_sensitivity:5, zone2_sensitivity:5, zone3_sensitivity:5, zone4_sensitivity:5, zone5_sensitivity:5, zone6_sensitivity:5], preroll_enabled:true], features:[motion_zone_recommendation:false, motions_enabled:true, show_recordings:true, show_vod_settings:true, rich_notifications_eligible:true, show_24x7_lite:true, show_offline_motion_events:false, cfes_eligible:true, sheila_camera_eligible:true, sheila_camera_processing_eligible:true, chime_auto_detect_capable:true, live_view_pip_mode:null], owned:true, alerts:[connection:online, ota_status:successful], motion_snooze:null, stolen:false, location_id:f894571a-2875-4d98-bd71-5006e696d301, ring_id:null, ring_net_id:null, is_sidewalk_gateway:false, created_at:2021-11-05T20:54:10Z, shared_at:null, active_schedule_uuid:null, health:[device_type:doorbell_oyster, last_update_time:1652426099, connected:true, rss_connected:true, vod_enabled:true, sidewalk_connection:false, floodlight_on:false, white_led_on:false, night_mode_on:false, hatch_open:false, packet_loss:0.0, packet_loss_category:good, rssi:-54.0, battery_voltage:3637.0, transformer_voltage:0.0, transformer_voltage_category:poor, wifi_is_ring_network:false, ota_status:successful, ext_power_state:0, network_connection_value:wifi, ac_power:0, external_connection:false, battery_percentage:43, battery_percentage_category:poor, firmware_version:9.0.39, rssi_category:good, battery_voltage_category:good, second_battery_voltage_category:unknown, second_battery_percentage_category:unknown, battery_save:false, firmware_version_status:Up to Date, stream_resolution:44, bandwidth_last_time:1651043881, bandwidth:3753], deactivated_at:null, owner:[id:7308356, first_name:, last_name:, email:], ext_power_state:0]
app:7422022-05-13 03:26:47.136 pm debugfound a doorbell_oyster at location f894571a-2875-4d98-bd71-5006e696d301
So can I just add oyster to the code on lines 1793 for RINGABLES and line 1809 for DEVICE_TYPES?
OMG … I added the oyster type to these two arrays in the code and now the V4 doorbell shows up and works fine. Thanks for the tip. Whoever owns the master code should add this to the main source. The patch was super simple - just two lines of code.
You could do this with Rule Machine to automate having Rule Machine run an Initialize to fix any WebSocket issues.
Here an example of a RM rule I created:
It'll require doing a Custom Attribute for the Trigger and Custom Action for the Actions on the rule. Mine doesn't run too often so it's not a big issue but I ran into it a few times which lead me to creating this rule.
