JoelBender / bacpypes

BACpypes provides a BACnet application layer and network layer written in Python for daemons, scripting, and graphical interfaces.
MIT License
299 stars 129 forks source link

Any method defined in Bacpypes to get Device's All Objects Alarm Summary #353

Open snehabati opened 4 years ago

snehabati commented 4 years ago

Hi,

Is there any method in bacpypes to fetch all objects Alarm Summary? Suppose for example in my Device which has Binary_Input Object and it has alarm active, similary in I have another instance on Binary_Input having another alarm and also another object which has alarm active, I want to to know that these there have alarms active. Is there any method which goes and checks the alarmValue of all the objects and gives a summary kind?

Thanks, Sneha

JoelBender commented 4 years ago

No, but it shouldn't be too hard to scan though the application values of the objectName or the objectIdentifier of an application (the two dictionary values should be the same). Add a "help wanted" label if you would like help writing a do_GetAlarmSummary() function as a mix-in class for an application so it will return a GetAlarmSummaryACK.

snehabati commented 4 years ago

Yes please need help for the function. I do not have access to add the label, can you please add it on my behalf? Also I would like to seek a clarification on the Alarm Detection, In my mock device I have set the object property 'Alarm Value' as 1 (active) should this property setting be enough to produce the Alarm or should I do something more?

JoelBender commented 4 years ago

There are a few properties that the service depends on, but before that, I noticed that the GetAlarmSummary service is deprecated, first paragraph Clause 13.10:

The specification of this service is retained for historical reference so that implementations of client devices have guidance on how to interoperate with older server devices. Otherwise, it is deprecated. It is recommended that execution of this service not be implemented in server devices.

More specific to your question for this service, the server will "search all (of its) event-initiating objects that have an Event_State property not equal to NORMAL and a Notify_Type property whose value is ALARM. Any object that has an Event_Detection_Enable property with a value of FALSE shall be ignored."

Note also that GetEnrollmentSummary (Clause 13.11) service is also deprecated in favor of GetEventInformation (Clause 13.12). So we'll need to dig into this a little deeper.

snehabati commented 4 years ago

The explanation on the device object properties value that raises the alarm is very clear, also for the services deprecated info, Thanks much. One more question I have in mind, as AlarmSummary and few other services are deprecated now, are there any other functions which I can use so that my client can be notified of the alarms?

JoelBender commented 4 years ago

Clause 13, Alarm and Event Services, is the chapter. Note that "... BACnet makes no distinction between an alarm and an event." You can do all kinds of things on the server side to help your clients, but if you have a specific client in mind then you should find out what it supports and save yourself a lot of work.

snehabati commented 4 years ago

ok, thank you for the info. I will create function for fetching the device objects in alarm status. Before writing the client side function I wanted to see how yabe explorer(client) responds if the device object has alarm. I tried to set my mock device's(bacpypes instance) AV object in alarm status by setting its property values as below: "eventState": 3 , "statusFlags": [0], "notifyType": 0,"eventDetectionEnable": True Then I used Yabe explorer to see the alarm status of the object in logs, I could not see any alarm related logs in yabe.(PFA screenshot for reference) image

Will setting of the above properties notify the client(Yabe) of the object in alarm state by default or do I need to do some more things to see the alarm in yabe, can you please let me know.

khalaniaiyaj commented 1 year ago

@snehabati Any success on this?

shashankgowdasd commented 10 months ago

Hi @JoelBender Sir, May I know any methods available for detecting the alarm services in BACpypes.

JoelBender commented 10 months ago

Read the Protocol_Services_Supported property of the Device Object (Clause 12.11.14) and look at the named bits you get back.

shashankgowdasd commented 10 months ago

Thanks for the reply sir, And I have gone through you have suggested me ,but I actually require how to implement the Internsic Alarming for the objects like AnalogInput, AnalogOutput ,BinaryInput and BinaryOutput.

or

Is their any method that support Internsic Alarming for the standard Objects.

And please correct me if my understanding of Alarm Services is incorrect.