Notifications from Alerts
-
@cw-kid said in Notifications from Alerts:
I also tried using a Join expression to get some formatted text out of it but I still just get this:
The reason your
join()
doesn't work as expected is that the array contains objects, not strings. @Alan_F gives an option, but he usesfirst
so only one alert, not in array, would result.Good efforts all around though. Let's fill in some details...
When writing complex expressions, and particularly as you're learning the expression language, it's often better to break it down into pieces as @Alan_F has done. For what you seem to want to do, you started with filtering the array:
Alerts_HTTP_Failed = each alert in getEntity( 'reactor_system>system' ).attributes.reactor_system.alerts: find( alert.message, "HTTP request", "i" ) >= 0 ? alert : null
This gives you an array of objects (as we've established) of only the HTTP request errors. From there, you want to get to just the message strings, but all of them, not just one/the first, so you'll use
each
again:HTTP_Fail_Messages = each alert in Alerts_HTTP_Failed: alert.message
That simple expression loops over the objects in the array and extracts just the
message
field. The result of that is a new array of strings, rather than an array of objects. From there, join...HTTP_Messages_String = join( HTTP_Fail_Messages, "; " )
And as they say, Robert is your mother's brother.
Doing it all together:
join( each alert in getEntity( 'reactor_system>system' ).attributes.reactor_system.alerts: find( alert.message, "HTTP request", "i" ) >= 0 ? alert.message : null, "; " )
If it looks like I left out a step, I did, in a way... rather than having the filter loop return objects, this version just returns the message (strings) directly as an array, so it eliminates that middleman and can then be passed directly into
join()
.@alan_f said in Notifications from Alerts:
g_last_alert_replaced = remove the " from the alert message string
Although the quotes look funny in the display, I don't think they will bother anything in use, as the notifiers are built to digest/handle such special characters properly.
Thanks I think its working now, here is what I have in the rule:
Trigger: Still not sure if I am using the best or correct trigger?
Local Expressions:
Action:
Send text message to Telegram app:
And this is what I now see on my phone in Telegram:
Thanks
-
I am seeing this alert sometimes to do with this rule
Rule "Alerts - HTTP Request Failed" is being throttled because its update rate exceeds 60 updates per minute. Check for logic errors that may be causing an evaluation loop, or devices that are "flapping".
-
Patrick, is there anyway to fire a reaction based on what you are reporting in your status - current alerts?
-
-
I am running a z-wave.me hat on a rpi. That is the device that is loosing connectivity occasionally. Since it is intermittent, it is hard to find a time when it occurs that I can look at the error and try to figure out the syntax of local expression. Anyone know of a commend that I can run from the terminal in HASS OS to kill the connection to force the error that won't screw up my zwave after a reboot?
-
T toggledbits locked this topic on