Ask our Experts
Didn't find what you are looking for? Ask our experts!
Ask Me About Webinar: Data Center Assets - Modeling, Cooling, and CFD Simulation
Join our 30-minute expert session on July 10, 2025 (9:00 AM & 5:00 PM CET), to explore Digital Twins, cooling simulations, and IT infrastructure modeling. Learn how to boost resiliency and plan power capacity effectively. Register now to secure your spot!
Schneider Electric support forum about SmartConnector applications for integration of other building management systems (BMS) into EcoStruxure Building Operation.
Search in
Link copied. Please paste this link to share this article on your social media post.
Hello!
We're looking for a advice how to retrieve the alarm comment, cause note, action note & checklist data for alarms.
Thanks,
Ellis
Link copied. Please paste this link to share this article on your social media post.
Hi Ellis,
I am assuming you want to get this data from an alarm object, and not the alarm event itself.
It is possible to get the Alarm comment(s) via EWS. Below is a method I wrote that does this give a list of EWS Alarm Item IDs.
public List<AugmentedAlarmItem> AugmentAlarmItems(List<AlarmItemType> alarmItems)
{
Logger.LogDebug(LogCategory.Processor, this.Name, $"Getting alarm messages for {alarmItems.Count} alarms..");
var returnList = new List<AugmentedAlarmItem>();
var alarmItemsTracker = alarmItems.ToList();
while (alarmItemsTracker.Count > 0)
{
var thisRequest = alarmItemsTracker.Take(250).ToList();
List<string> propertyIds = new List<string>();
foreach (var alarm in thisRequest)
{
propertyIds.Add($"1{alarm.Id.Remove(0, 1)}/AlarmMessage");
propertyIds.Add($"1{alarm.Id.Remove(0, 1)}/ResetMessage");
propertyIds.Add($"1{alarm.Id.Remove(0, 1)}/LowLimitMessage");
propertyIds.Add($"1{alarm.Id.Remove(0, 1)}/HighLimitMessage");
}
var values = _ewsClient.GetValues(propertyIds.ToArray());
foreach (var alarm in thisRequest)
{
var alarmMessage = values.GetValuesItems.ToList().FirstOrDefault(a => a.Id == $"1{alarm.Id.Remove(0, 1)}/AlarmMessage")?.Value;
var resetMessage = values.GetValuesItems.ToList().FirstOrDefault(a => a.Id == $"1{alarm.Id.Remove(0, 1)}/ResetMessage")?.Value;
var highLimitMessage = values.GetValuesItems.ToList().FirstOrDefault(a => a.Id == $"1{alarm.Id.Remove(0, 1)}/HighLimitMessage")?.Value;
var lowLimitMessage = values.GetValuesItems.ToList().FirstOrDefault(a => a.Id == $"1{alarm.Id.Remove(0, 1)}/LowLimitMessage")?.Value;
returnList.Add(new AugmentedAlarmItem
{
Id = alarm.Id,
Description = alarm.Description,
MonitoredValueId = alarm.ValueItemId,
AlarmMessage = !string.IsNullOrEmpty(alarmMessage) ? alarmMessage : $"{highLimitMessage}{(!string.IsNullOrEmpty(highLimitMessage) && !string.IsNullOrEmpty(lowLimitMessage) ? " ; " : string.Empty)}{lowLimitMessage}",
ResetMessage = resetMessage,
});
}
alarmItemsTracker.RemoveRange(0, thisRequest.Count());
}
return returnList;
}
As far as the cause note, action note and checklist. This is a whole other question, one of which I have never done before. Your best bet might be either to try and find a way to use the WorkStation SDK to get this information, or the new Mongoose.Csp Nuget Package directly (NOT the new SboEwsRestProvider which uses this behind the scenes). Both of these ways will require a much more in-depth understanding about how EBO works behind the scenes, but it should be possible.
Regards,
-Jeff
You’ve reached the end of your document
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.