Handler

class secsgem.secs.handler.SecsHandler(connection: secsgem.common.protocol.Protocol)[source]

Bases: object

Baseclass for creating Host/Equipment models. This layer contains the SECS functionality.

Inherit from this class and override required functions.

classmethod hsms(address, port, active, session_id, name, custom_connection_handler=None, **kwargs) → secsgem.secs.handler.SecsHandler[source]

Initialize a secs handler using a hsms connection.

All arguments will be passed to the HSMS handler.

protocol

Get the connection for the handler.

enable()[source]

Enable the connection.

disable()[source]

Disable the connection.

send_response(*args, **kwargs)[source]

Wrapper for connections send_response function.

send_and_waitfor_response(*args, **kwargs)[source]

Wrapper for connections send_and_waitfor_response function.

send_stream_function(*args, **kwargs)[source]

Wrapper for connections send_stream_function function.

events

Wrapper for connections events.

callbacks

Property for callback handling.

register_stream_function(stream: int, function: int, callback)[source]

Register the function callback for stream and function.

Parameters:
  • stream (integer) – stream to register callback for
  • function (integer) – function to register callback for
  • callback (def callback(connection)) – method to call when stream and functions is received
unregister_stream_function(stream, function)[source]

Unregister the function callback for stream and function.

Parameters:
  • stream (integer) – stream to unregister callback for
  • function (integer) – function to register callback for
collection_events

Get available collection events.

Example:

>>> handler = SecsHandler.hsms("127.0.0.1", 5000, False, 0, "test")
>>> handler.collection_events[123] = {'name': 'collectionEventName', 'dvids': [1, 5] }

Key

Id of the collection event (integer)

Data

Dictionary with the following fields

name
Name of the collection event (string)
dvids
Data values for the collection event (list of integers)
data_values

Get available data values.

Example:

>>> handler = SecsHandler.hsms("127.0.0.1", 5000, False, 0, "test")
>>> handler.data_values[5] = {'name': 'dataValueName', 'ceid': 123 }

Key

Id of the data value (integer)

Data

Dictionary with the following fields

name
Name of the data value (string)
ceid
Collection event the data value is used for (integer)
alarms

Get available alarms.

Example:

>>> handler = SecsHandler.hsms("127.0.0.1", 5000, False, 0, "test")
>>> handler.alarms[137] = {'ceidon': 1371, 'ceidoff': 1372}

Key

Id of the alarm (integer)

Data

Dictionary with the following fields

ceidon
Collection event id for alarm on (integer)
ceidoff
Collection event id for alarm off (integer)
remote_commands

Get available remote commands.

Example:

>>> handler = SecsHandler.hsms("127.0.0.1", 5000, False, 0, "test")
>>> handler.remote_commands["PP_SELECT"] = {'params': [{'name': 'PROGRAM', 'format': 'A'}], 'ceids': [200, 343]}

Key

Name of the remote command (string)

Data

Dictionary with the following fields

params

Parameters for the remote command (list of dictionaries)

Parameters

The dictionaries have the following fields

name
name of the parameter (string)
format
format character of the parameter (string)
ceids
Collection events ids the remote command might return (list of integers)
disable_ceids()[source]

Disable all Collection Events.

disable_ceid_reports()[source]

Disable all Collection Event Reports.

list_svs(svs=None)[source]

Get list of available Service Variables.

Returns:available Service Variables
Return type:list
request_svs(svs)[source]

Request contents of supplied Service Variables.

Parameters:svs (list) – Service Variables to request
Returns:values of requested Service Variables
Return type:list
request_sv(sv_id)[source]

Request contents of one Service Variable.

Parameters:sv_id (int) – id of Service Variable
Returns:value of requested Service Variable
Return type:various
list_ecs(ecs=None)[source]

Get list of available Equipment Constants.

Returns:available Equipment Constants
Return type:list
request_ecs(ecs)[source]

Request contents of supplied Equipment Constants.

Parameters:ecs (list) – Equipment Constants to request
Returns:values of requested Equipment Constants
Return type:list
request_ec(ec_id)[source]

Request contents of one Equipment Constant.

Parameters:ec_id (int) – id of Equipment Constant
Returns:value of requested Equipment Constant
Return type:various
set_ecs(ecs)[source]

Set contents of supplied Equipment Constants.

Parameters:ecs (list) – list containing list of id / value pairs
set_ec(ec_id, value)[source]

Set contents of one Equipment Constant.

Parameters:
  • ec_id (int) – id of Equipment Constant
  • value (various) – new content of Equipment Constant
send_equipment_terminal(terminal_id, text)[source]

Set text to equipment terminal.

Parameters:
  • terminal_id (int) – ID of terminal
  • text (string) – text to send
get_ceid_name(ceid)[source]

Get the name of a collection event.

Parameters:ceid (integer) – ID of collection event
Returns:Name of the event or empty string if not found
Return type:string
get_dvid_name(dvid)[source]

Get the name of a data value.

Parameters:dvid (integer) – ID of data value
Returns:Name of the event or empty string if not found
Return type:string
are_you_there()[source]

Check if remote is still replying.

stream_function(stream, function)[source]

Get class for stream and function.

Parameters:
  • stream (int) – stream to get function for
  • function (int) – function to get
Returns:

matching stream and function class

Return type:

secsSxFx class

secs_decode(packet)[source]

Get object of decoded stream and function class, or None if no class is available.

Parameters:packet (secsgem.common.Packet) – packet to get object for
Returns:matching stream and function object
Return type:secsSxFx object