apamax.eplapplications.smartrules¶
SmartRule¶
- class apamax.eplapplications.smartrules.SmartRule(ruleType, configuration, smartRulesManager)[source]¶
Bases:
object
Class representing a smart rule object.
An instance of this class must be created by calling the appropriate build method of the class
SmartRulesManager
.Call the
deploy
method to deploy a smart rule to Cumulocity IoT and call thedelete
method on a previously deployed smart rule to delete it from Cumulocity IoT.Any updates to the object are not deployed on Cumulocity IoT until the
deploy
method is called.- getConfiguration()[source]¶
Get the configuration of the smart rule instance.
- Returns
The configuration.
- Return type
dict
- getDisabledSources()[source]¶
Get the list of device IDs for which this smart rule is disabled.
- Returns
The list of device IDs.
- Return type
list
- getEnabledSources()[source]¶
Get the list of device IDs for which this smart rule is enabled.
The list will be empty for a global smart rule that is enabled for all devices.
- Returns
The list of device IDs.
- Return type
list
- getID()[source]¶
Get the ID of the smart rule.
Returns None if the smart rule is deleted or not yet deployed.
- Returns
ID of the smart rule.
- Return type
str
- getRuleName()[source]¶
Get the name of the smart rule.
- Returns
The name of the smart rule.
- Return type
str
- isEnabled()[source]¶
Check if the smart rule is enabled.
- Returns
True
if the smart rule is enabled,False
otherwise.- Return type
bool
- isGlobal()[source]¶
Check if the smart rule is global.
- Returns
True
if the smart rule is global,False
otherwise.- Return type
bool
- isLocal()[source]¶
Check if the smart rule is local to a device or a group.
- Returns
True
if the smart rule is local to a device or a group,False
otherwise.- Return type
bool
- setDisabledSources(deviceList)[source]¶
Set the list of device IDs for which this smart rule must be disabled.
The disabled sources list will be ignored if the enabled sources list is also set.
- Parameters
deviceList (list) – The list of devices or device IDs.
- Returns
The updated smart rule object.
- Return type
- setEnabled(enabled=True)[source]¶
Enable or disable the smart rule.
- Parameters
enabled (bool) – The smart rule is enabled if
True
, otherwise it is disabled.- Returns
The updated smart rule object.
- Return type
- setEnabledSources(deviceList)[source]¶
Set the list of device IDs for which this smart rule must be enabled.
If the smart rule is local to a group, all devices must be part of the group.
- Parameters
deviceList (str) – The list of devices or device IDs.
- Returns
The updated smart rule object.
- Return type
- setGlobal()[source]¶
Set the smart rule to be global.
If a smart rule is previously set to be local to a device or group, it cannot be changed to be global.
- Returns
The updated smart rule object.
- Return type
- setLocal(deviceOrGroupId)[source]¶
Set the smart rule to be local to the specified device or group.
If a smart rule is previously set to be global, it cannot be changed to be local to a device or group.
- Parameters
deviceOrGroupId (str) – The ID of the device or group.
- Returns
The updated smart rule object.
- Return type
- setRuleName(name, addTestPrefix=True)[source]¶
Set the name of the smart rule.
- Parameters
name (str) – The name.
addTestPrefix (bool) – Add a test prefix to the name of the smart rule so that it can be identified and cleaned up as part of the test setup.
- Returns
The updated smart rule object.
- Return type
SmartRulesManager¶
- class apamax.eplapplications.smartrules.SmartRulesManager(tenant, log)[source]¶
Bases:
object
Class responsible for building smart rules objects that can be deployed on Cumulocity IoT.
See the methods in the
SmartRule
class to customize a smart rule object and deploy it.- Parameters
tenant (
CumulocityTenant
.) – The Cumulocity IoT tenant.log – The
logger
instance to use for logging.
- build_calculateEnergyConsumption(inputFragment='c8y_EnergyCounter', inputSeries='E', timeIntervalMinutes=1.0, outputFragment='c8y_EnergyConsumption', outputSeries='E')[source]¶
Build a smart rule object for the rule “Calculate energy consumption”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
inputFragment (str) – The name of the fragment for incoming measurements.
inputSeries (str) – The name of the series for incoming measurements.
timeIntervalMinutes (float) – The interval for which to calculate consumption values.
outputFragment (str) – The name of the fragment for generated measurements.
outputSeries (str) – The name of the series for generated measurements.
- Returns
A smart rule object.
- Return type
- build_onAlarmDurationIncreaseSeverity(alarmTypes, alarmDurationMinutes=1.0)[source]¶
Build a smart rule object for the rule “On alarm duration increase severity”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
alarmTypes (str or list[str]) – The types of alarms that trigger the rule.
alarmDurationMinutes (float) – The duration (in minutes) an alarm must be active before increasing the severity.
- Returns
A smart rule object.
- Return type
- build_onAlarmEscalateIt(alarmTypes, escalationSteps)[source]¶
Build a smart rule object for the rule “On alarm escalate it”.
To deploy it to Cumulocity IoT, call the
deploy
method.Call the
build_onAlarmEscalateStepSendEmail
orbuild_onAlarmEscalateStepSendSMS
methods to create escalation steps.- Parameters
alarmTypes (str or list[str]) – The types of alarms that trigger the rule.
escalationSteps (list) – Escalation steps.
- Returns
- Return type
- build_onAlarmEscalateStepSendEmail(sendTo, sendCC=None, sendBCC=None, replyTo=None, subject='New #{severity} alarm from #{source.name}', message='New #{severity} alarm has been received from #{source.name}. Alarm text is: "#{text}".')[source]¶
Build an escalation step to send an email for the rule “On alarm escalate it”.
- Parameters
sendTo (str) – The recipients of the email.
sendCC (str, optional) – The recipients that are to receive a copy of the email.
sendBCC (str, optional) – The recipients that are to receive a blind copy of the email.
replyTo (str, optional) – The reply-to address for the email.
subject (str) – The subject of the email.
message (str) – The text of the email.
- Returns
An escalation step object.
- build_onAlarmEscalateStepSendSMS(smsTo, smsText='New #{severity} alarm has been received from #{source.name}. Alarm text is: "#{text}".')[source]¶
Build an escalation step to send an SMS for the rule “On alarm escalate it”.
- Parameters
smsTo (str) – The target phone number for the SMS.
smsText (str) – The text of the SMS.
- Returns
An escalation step object.
- build_onAlarmExecuteOperation(alarmTypes, operation)[source]¶
Build a smart rule object for the rule “On alarm execute operation”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
alarmTypes (str or list[str]) – The types of alarms that trigger the rule.
operation (dict[str,any]) – The operation that will be sent. It must be a dictionary representing a JSON description of the operation.
- Returns
A smart rule object.
- Return type
- build_onAlarmSendEmail(alarmTypes, sendTo, sendCC=None, sendBCC=None, replyTo=None, subject='New #{severity} alarm from #{source.name}', message='New #{severity} alarm has been received from #{source.name}. Alarm text is: "#{text}".')[source]¶
Build a smart rule object for the rule “On alarm send email”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
alarmTypes (str or list[str]) – The types of alarms that trigger the rule.
sendTo (str) – The recipients of the email.
sendCC (str, optional) – The recipients that are to receive a copy of the email.
sendBCC (str, optional) – The recipients that are to receive a blind copy of the email.
replyTo (str, optional) – The reply-to address for the email.
subject (str) – The subject of the email.
message (str) – The text of the email.
- Returns
A smart rule object.
- Return type
- build_onAlarmSendSMS(alarmTypes, smsTo, smsText='Alarm occurred')[source]¶
Build a smart rule object for the rule “On alarm send SMS”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
alarmTypes (str or list[str]) – The types of alarms that trigger the rule.
smsTo (str) – The target phone number for the SMS.
smsText (str) – The text of the SMS.
- Returns
A smart rule object.
- Return type
- build_onGeofenceCreateAlarm(geofence, triggerAlarmOn='leaving', alarmType='c8y_GeofenceAlarm', alarmSeverity='MAJOR', alarmText='Geofence violation')[source]¶
Build a smart rule object for the rule “On geofence create alarm”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
geofence (list[dict]) – The polygon that defines the boundaries of a region. It should be a list of dictionaries containing “lng” and “lat” keys.
triggerAlarmOn (str) – The reason for triggering the alarm - one of “entering”, “leaving”, or “both”. The default is “leaving”.
alarmType (str) – The type of raised alarms.
alarmSeverity (str) – The severity of raised alarms.
alarmText (str) – The alarm message.
- Returns
A smart rule object.
- Return type
- build_onGeofenceSendEmail(geofence, sendTo, sendCC=None, sendBCC=None, replyTo=None, subject='New geofence violation from #{source.name}', message='New geofence violation from #{source.name}')[source]¶
Build a smart rule object for the rule “On geofence send email”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
geofence (list[dict]) – The polygon that defines the boundaries of a region. It should be a list of dictionaries containing “lng” and “lat” keys.
sendTo (str) – The recipients of the email.
sendCC (str, optional) – The recipients that are to receive a copy of the email.
sendBCC (str, optional) – The recipients that are to receive a blind copy of the email.
replyTo (str, optional) – The reply-to address for the email.
subject (str) – The subject of the email.
message (str) – The text of the email.
- Returns
A smart rule object.
- Return type
- build_onMeasurementExplicitThresholdCreateAlarm(fragment, series, rangeMin=90, rangeMax=100, alarmType='c8y_ThresholdAlarm', alarmText='Threshold exceeded')[source]¶
Build a smart rule object for the rule “On measurement explicit threshold create alarm”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
fragment (str) – Measurement fragment the smart rule listens for.
series (str) – Measurement series the smart rule listens for.
rangeMin (float) – The minimum value of measurements for which an alarm is raised.
rangeMax (float) – The maximum value of measurements for which an alarm is raised.
alarmType (str) – The type of raised alarms.
alarmText (str) – The alarm message.
- Returns
A smart rule object.
- Return type
- build_onMeasurementThresholdCreateAlarm(dataPointObjectID=None, alarmType='c8y_ThresholdAlarm', alarmText='Thresholds exceeded')[source]¶
Build a smart rule object for the rule “On measurement threshold create alarm”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
dataPointObjectID (str) – The ID of the Data Point Library object to use to find the values for the red and yellow ranges.
alarmType (str) – The type of raised alarms.
alarmText (str) – The alarm message.
- Returns
A smart rule object.
- Return type
- build_onMissingMeasurementsCreateAlarm(measurementType, timeIntervalMinutes=60, alarmType='c8y_MissingMeasurementsAlarm', alarmSeverity='MAJOR', alarmText='Missing measurements of type: #{type}')[source]¶
Build a smart rule object for the rule “On missing measurements create alarm”.
To deploy it to Cumulocity IoT, call the
deploy
method.- Parameters
measurementType (str) – The type of measurement.
timeIntervalMinutes (float) – Time (in minutes) to wait for missing measurements.
alarmType (str) – The type of raised alarms.
alarmSeverity (str) – The severity of raised alarms.
alarmText (str) – The alarm message.
- Returns
A smart rule object.
- Return type