diff --git a/gtfsrthttp2mqtt.py b/gtfsrthttp2mqtt.py index 2392871..64c54ee 100644 --- a/gtfsrthttp2mqtt.py +++ b/gtfsrthttp2mqtt.py @@ -39,7 +39,7 @@ def __init__(self, mqttConnect, mqttCredentials, baseMqttTopic, gtfsrtFeedURL, g self.session.mount(gtfsrtFeedURL, adapter) self.session.headers.update(json.loads(gtfsrtFeedHeaders)) self.OTPData = None - + self.lastFeedTimestamp = None def onMQTTConnected(self, client, userdata, flags, rc): @@ -77,6 +77,15 @@ def doGTFSRTPolling(self): feedmsg = gtfs_realtime_pb2.FeedMessage() try: feedmsg.ParseFromString(r.content) + + # Do not send messages for feeds older than already sent + feedTimestamp = feedmsg.header.timestamp + if self.lastFeedTimestamp is None or feedTimestamp >= self.lastFeedTimestamp: + self.lastFeedTimestamp = feedTimestamp + else: + print(f"Received a feed with timestamp earlier ({feedTimestamp}) than seen before ({self.lastFeedTimestamp}), skipping this update") + return + for entity in feedmsg.entity: if not entity.HasField('vehicle'): continue