@@ -44,7 +44,8 @@ class OpenADRClient:
4444 """
4545 def __init__ (self , ven_name , vtn_url , debug = False , cert = None , key = None ,
4646 passphrase = None , vtn_fingerprint = None , show_fingerprint = True , ca_file = None ,
47- allow_jitter = True , ven_id = None , disable_signature = False , check_hostname = True ):
47+ allow_jitter = True , ven_id = None , disable_signature = False , check_hostname = True ,
48+ event_status_log_period = 10 , events_clean_up_period = 300 ):
4849 """
4950 Initializes a new OpenADR Client (Virtual End Node)
5051
@@ -75,6 +76,8 @@ def __init__(self, ven_name, vtn_url, debug=False, cert=None, key=None,
7576 self .vtn_fingerprint = vtn_fingerprint
7677 self .debug = debug
7778 self .check_hostname = check_hostname
79+ self .event_status_log_period = event_status_log_period
80+ self .events_clean_up_period = events_clean_up_period
7881
7982 self .reports = []
8083 self .report_callbacks = {} # Holds the callbacks for each specific report
@@ -162,9 +165,12 @@ async def run(self):
162165 self .scheduler .add_job (self ._poll ,
163166 trigger = 'interval' ,
164167 seconds = self .poll_frequency .total_seconds ())
168+ self .scheduler .add_job (self ._event_status_log ,
169+ trigger = 'interval' ,
170+ seconds = self .event_status_log_period )
165171 self .scheduler .add_job (self ._event_cleanup ,
166172 trigger = 'interval' ,
167- seconds = 300 )
173+ seconds = self . events_clean_up_period )
168174 self .scheduler .start ()
169175
170176 async def stop (self ):
@@ -937,14 +943,14 @@ async def _execute_hooks(self, hook_name, *args, **kwargs):
937943 f"{ err .__class__ .__name__ } : { err } " )
938944
939945 async def _on_event (self , message ):
940- logger .debug ("The VEN received an event" )
941946 events = message ['events' ]
942947 try :
943948 results = []
944949 for event in message ['events' ]:
945950 event_id = event ['event_descriptor' ]['event_id' ]
946951 event_status = event ['event_descriptor' ]['event_status' ]
947952 modification_number = event ['event_descriptor' ]['modification_number' ]
953+ logger .info ("The VEN received an event with event_id: %s, status: %s, modification_number: %s" , event_id , event_status , modification_number )
948954 received_event = utils .find_by (self .received_events , 'event_descriptor.event_id' , event_id )
949955 if received_event :
950956 if received_event ['event_descriptor' ]['modification_number' ] == modification_number :
@@ -1003,6 +1009,20 @@ async def _on_event(self, message):
10031009 else :
10041010 logger .info ("Not sending any event responses, because a response was not required/allowed by the VTN." )
10051011
1012+ async def _event_status_log (self ):
1013+ """
1014+ Periodic task that will log each event status change
1015+ """
1016+ for event in self .received_events :
1017+ # ignoring the cancelled case
1018+ if event ['event_descriptor' ]['event_status' ] == 'cancelled' :
1019+ return
1020+
1021+ event_status = utils .determine_event_status (event ['active_period' ])
1022+ if event_status != event ['event_descriptor' ]['event_status' ]:
1023+ event ['event_descriptor' ]['event_status' ] = event_status
1024+ logger .info ("event_id: %s has new status: %s" , event ['event_descriptor' ]['event_id' ], event_status )
1025+
10061026 async def _event_cleanup (self ):
10071027 """
10081028 Periodic task that will clean up completed and cancelled events in our memory.
0 commit comments