Esempio n. 1
0
 async def modify_monitored_item(self, handle: int, new_samp_time, new_queuesize=0, mod_filter_val=-1):
     """
     Modify a monitored item.
     :param handle: Handle returned when originally subscribing
     :param new_samp_time: New wanted sample time
     :param new_queuesize: New wanted queuesize, default is 0
     :param mod_filter_val: New deadband filter value
     :return: Return a Modify Monitored Item Result
     """
     # Find the monitored item in the monitored item registry.
     item_to_change = next(item for item in self._monitored_items.values() if item.server_handle == handle)
     if not item_to_change:
         raise ValueError('The monitored item was not found.')
     if mod_filter_val is None:
         mod_filter = None
     elif mod_filter_val < 0:
         mod_filter = item_to_change.mfilter
     else:
         mod_filter = ua.DataChangeFilter()
         # send notification when status or value change
         mod_filter.Trigger = ua.DataChangeTrigger(1)
         mod_filter.DeadbandType = 1
         # absolute float value or from 0 to 100 for percentage deadband
         mod_filter.DeadbandValue = mod_filter_val
     modif_item = ua.MonitoredItemModifyRequest()
     modif_item.MonitoredItemId = handle
     modif_item.RequestedParameters = self._modify_monitored_item_request(
         new_queuesize, new_samp_time, mod_filter, item_to_change.client_handle
     )
     params = ua.ModifyMonitoredItemsParameters()
     params.SubscriptionId = self.subscription_id
     params.ItemsToModify.append(modif_item)
     results = await self.server.modify_monitored_items(params)
     item_to_change.mfilter = results[0].FilterResult
     return results
Esempio n. 2
0
 def deadband_monitor(self, var, deadband_val, deadbandtype=1, queuesize=0, attr=ua.AttributeIds.Value):
     """
     Method to create a subscription with a Deadband Value.
     Default deadband value type is absolute.
     Return a handle which can be used to unsubscribe
     :param var: Variable to which you want to subscribe
     :param deadband_val: Absolute float value
     :param deadbandtype: Default value is 1 (absolute), change to 2 for percentage deadband
     :param queuesize: Wanted queue size, default is 1
     :param attr: Attribute ID
     """
     deadband_filter = ua.DataChangeFilter()
     # send notification when status or value change
     deadband_filter.Trigger = ua.DataChangeTrigger(1)
     deadband_filter.DeadbandType = deadbandtype
     # absolute float value or from 0 to 100 for percentage deadband
     deadband_filter.DeadbandValue = deadband_val
     return self._subscribe(var, attr, deadband_filter, queuesize)