Prior to purchasing a Hubitat I created Ring Alarm automations on my PC with Windows 11 and C++. I therefore needed Notifications from the Ring app that was running on my Iphone (I had difficulties obtaining these notifications from the online Ring program that ran on my PC within Chrome) to do the automations. I did this by running "Link To Windows" app on my Iphone and then running the "Phone Link" program on my PC and via Bluetooth I would obtain all the notifications that got produced on my Iphone (Of course you can filter which notifications you want... I just wanted Ring Alarm notifications). These Notifications appeared in a GUI within the PC's Phone Link program and could not find a programmatic method to obtain these notifications from the Phone Link program. So for a while I OCR'd the GUI and extracted them. NOT REALIABLE!! I soon realized that these notifications got logged to a database that the Event Viewer used on the PC. I then wrote a C++ program to extract the notifications from that database with SQL. I could then do the things I wanted to do with the Ring automation I wanted to develop. Of course all the notifications could be used for these PC based automations but I was only interested in Ring. When I purchased a Hubitat not to long ago I wanted to utilize this stream of notifications on Hubitat so I wrote another program on the PC to send them to a Hubitat app called NotificationServer. This Hubitat program sends out the notifications to my client Hubitat apps with "SendLocationEvent()" . The first client I used during developing this is as follows:
definition(
name: "Notification Client",
namespace: "Example",
author: "Hubi",
description: "Impliment a client to receive NOTIFICATION's",
category: "Convenience",
iconUrl: "",
iconX2Url: "")
preferences {
section("Logging") {
input name: "logEnable", type: "bool", title: "Enable logging?"
}
}
def installed() {
log.debug "installed()"
updated()
}
def updated() {
if (logEnable) log.debug "updated()"
unsubscribe()
def MyLocation = getLocation()
log.debug "MyLocation = " + MyLocation
subscribe(MyLocation, "NOTIFICATION", Handler)
}
def uninstalled() {
log.debug "uninstalled()"
}
def Handler(evt) {
log.debug "*** Entered Notification Handler ***"
log.debug evt.class.methods.collect { it.name }
log.debug "evt = " + evt
log.debug "evt.value = " + evt.value
log.debug "evt.name = " + evt.name
log.debug "evt.date = " + evt.date
log.debug "evt.source = " + evt.source
log.debug "evt.data = " + evt.data
def Data = evt.getData()
log.debug "evt.getData() = " + Data
def Source = evt.getSource()
log.debug "evt.getSource() = " + Source
}
This method seemed to work reliably with a few apps that I created to use these notifications. Just the last week or so I have been getting the following in my Log:
app:819 is the NotificationServer and line 153 (The Exception line) is:
When I reboot Hubitat everthing works great for a while and then I get the error. My Ring notification's average perhaps a couple every minute so I do not have a flood of information being served. This exception "LimitExceededException: Event queue is full" can be caused how? The amount of notifications being served out seems very reasonable and as far as I understand if I did not have any clients obtaining the notifiications that would be OK. Can someone give me any info so I might be able to understand what is going on and maybe I could figure out how to correct this.
I appreciate your help... Thank You