SmartConnector Forum
Schneider Electric support forum about SmartConnector applications for integration of other building management systems (BMS) into EcoStruxure Building Operation.
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
Create your free account or log in to subscribe to the forum - and gain access to more than 10,000+ support articles along with insights from experts and peers.