@@ -46,7 +46,8 @@ class OpenADRClient:
4646
4747 def __init__ (self , ven_name , vtn_url , debug = False , cert = None , key = None ,
4848 passphrase = None , vtn_fingerprint = None , show_fingerprint = True , ca_file = None ,
49- allow_jitter = True , ven_id = None , disable_signature = False , check_hostname = True ):
49+ allow_jitter = True , ven_id = None , disable_signature = False , check_hostname = True ,
50+ event_status_log_period = 10 , events_clean_up_period = 300 ):
5051 """
5152 Initializes a new OpenADR Client (Virtual End Node)
5253
@@ -67,6 +68,9 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
6768 :param str ven_id: The ID for this VEN. If you leave this blank,
6869 a VEN_ID will be assigned by the VTN.
6970 :param bool disable_signature: Whether or not to sign outgoing messages using a public-private key pair in PEM format.
71+ :param bool check_hostname: Whether or not to check hostname
72+ :param int event_status_log_period: Setting the priod of status change logging
73+ :param int events_clean_up_period: Setting the priod of not relevant events clean up
7074 """
7175
7276 self .ven_name = ven_name
@@ -77,6 +81,8 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
7781 self .vtn_fingerprint = vtn_fingerprint
7882 self .debug = debug
7983 self .check_hostname = check_hostname
84+ self .event_status_log_period = event_status_log_period
85+ self .events_clean_up_period = events_clean_up_period
8086
8187 self .reports = []
8288 self .report_callbacks = {} # Holds the callbacks for each specific report
@@ -165,9 +171,12 @@ async def run(self):
165171 self .scheduler .add_job (self ._poll ,
166172 trigger = 'interval' ,
167173 seconds = self .poll_frequency .total_seconds ())
174+ self .scheduler .add_job (self ._event_status_log ,
175+ trigger = 'interval' ,
176+ seconds = self .event_status_log_period )
168177 self .scheduler .add_job (self ._event_cleanup ,
169178 trigger = 'interval' ,
170- seconds = 300 )
179+ seconds = self . events_clean_up_period )
171180 self .scheduler .start ()
172181
173182 async def stop (self ):
@@ -1038,14 +1047,14 @@ async def _execute_hooks(self, hook_name, *args, **kwargs):
10381047 f"{ err .__class__ .__name__ } : { err } " )
10391048
10401049 async def _on_event (self , message ):
1041- logger .debug ("The VEN received an event" )
10421050 events = message ['events' ]
10431051 try :
10441052 results = []
10451053 for event in message ['events' ]:
10461054 event_id = event ['event_descriptor' ]['event_id' ]
10471055 event_status = event ['event_descriptor' ]['event_status' ]
10481056 modification_number = event ['event_descriptor' ]['modification_number' ]
1057+ logger .info ("The VEN received an event with event_id: %s, status: %s, modification_number: %s" , event_id , event_status , modification_number ) # change to debug
10491058 received_event = utils .find_by (self .received_events , 'event_descriptor.event_id' , event_id )
10501059 if received_event :
10511060 if received_event ['event_descriptor' ]['modification_number' ] == modification_number :
@@ -1104,6 +1113,20 @@ async def _on_event(self, message):
11041113 else :
11051114 logger .info ("Not sending any event responses, because a response was not required/allowed by the VTN." )
11061115
1116+ async def _event_status_log (self ):
1117+ """
1118+ Periodic task that will log each event status change
1119+ """
1120+ for event in self .received_events :
1121+ # ignoring the cancelled case
1122+ if event ['event_descriptor' ]['event_status' ] == 'cancelled' :
1123+ continue
1124+
1125+ event_status = utils .determine_event_status (event ['active_period' ])
1126+ if event_status != event ['event_descriptor' ]['event_status' ]:
1127+ event ['event_descriptor' ]['event_status' ] = event_status
1128+ logger .info ("event_id: %s has new status: %s" , event ['event_descriptor' ]['event_id' ], event_status ) # change to debug
1129+
11071130 async def _event_cleanup (self ):
11081131 """
11091132 Periodic task that will clean up completed and cancelled events in our memory.
0 commit comments