Read event history of a source node result code from server is checked and an exception is raised in case of error If numvalues is > 0 and number of events in period is > numvalues then result will be truncated
(self, starttime=None, endtime=None, numvalues=0, evtypes=ua.ObjectIds.BaseEventType)
| 529 | return result |
| 530 | |
| 531 | def read_event_history(self, starttime=None, endtime=None, numvalues=0, evtypes=ua.ObjectIds.BaseEventType): |
| 532 | """ |
| 533 | Read event history of a source node |
| 534 | result code from server is checked and an exception is raised in case of error |
| 535 | If numvalues is > 0 and number of events in period is > numvalues |
| 536 | then result will be truncated |
| 537 | """ |
| 538 | |
| 539 | details = ua.ReadEventDetails() |
| 540 | if starttime: |
| 541 | details.StartTime = starttime |
| 542 | else: |
| 543 | details.StartTime = ua.get_win_epoch() |
| 544 | if endtime: |
| 545 | details.EndTime = endtime |
| 546 | else: |
| 547 | details.EndTime = ua.get_win_epoch() |
| 548 | details.NumValuesPerNode = numvalues |
| 549 | |
| 550 | if not isinstance(evtypes, (list, tuple)): |
| 551 | evtypes = [evtypes] |
| 552 | |
| 553 | evtypes = [Node(self.server, evtype) for evtype in evtypes] |
| 554 | |
| 555 | evfilter = events.get_filter_from_event_type(evtypes) |
| 556 | details.Filter = evfilter |
| 557 | |
| 558 | result = self.history_read_events(details) |
| 559 | result.StatusCode.check() |
| 560 | event_res = [] |
| 561 | for res in result.HistoryData.Events: |
| 562 | event_res.append(events.Event.from_event_fields(evfilter.SelectClauses, res.EventFields)) |
| 563 | return event_res |
| 564 | |
| 565 | def history_read_events(self, details): |
| 566 | """ |