Added departure resending when sent only once
This commit is contained in:
parent
9e5f67eee7
commit
c11960321f
|
@ -45,6 +45,7 @@ class Departure:
|
|||
if len(last_stop) >= 21:
|
||||
last_stop = last_stop[:20].strip() + "..."
|
||||
self.did = did
|
||||
self.sent = 0
|
||||
self.stop_id = stop_id
|
||||
self.id = Departure.get_id()
|
||||
self.line = line
|
||||
|
@ -53,14 +54,18 @@ class Departure:
|
|||
self.departure = departure
|
||||
self.delay = delay
|
||||
self.controller = lora_controller
|
||||
self.controller.data(self)
|
||||
self.send()
|
||||
Departure.storage[did] = self
|
||||
|
||||
def update(self, delay):
|
||||
if delay != self.delay:
|
||||
self.controller.data(self)
|
||||
self.send()
|
||||
self.delay = delay
|
||||
|
||||
def send(self):
|
||||
self.controller.data(self)
|
||||
self.sent += 1
|
||||
|
||||
def get_departure(self):
|
||||
return -(floor(((datetime.now().timestamp() - (self.departure + self.delay*60))/60)*10)/10)
|
||||
|
||||
|
|
|
@ -2,9 +2,11 @@ import requests
|
|||
from requests.structures import CaseInsensitiveDict
|
||||
import json
|
||||
import threading
|
||||
from operator import itemgetter
|
||||
from base64 import b64encode
|
||||
from datetime import datetime
|
||||
from random import randint
|
||||
from random import randint, shuffle
|
||||
from time import sleep
|
||||
|
||||
import urllib3
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
@ -36,15 +38,13 @@ class LoraController:
|
|||
self.devices.append(LoraDevice(self, id, stop_id))
|
||||
|
||||
def time(self):
|
||||
def to_string():
|
||||
return f"TIME|{(datetime.now() - datetime(1970, 1, 1)).total_seconds():.0f}"
|
||||
for d in self.devices:
|
||||
d.send(to_string)
|
||||
d.send(lambda: f"TIME|{(datetime.now() - datetime(1970, 1, 1)).total_seconds():.0f}")
|
||||
|
||||
def data(self, data):
|
||||
for d in self.devices:
|
||||
if d.stop_id == data.stop_id:
|
||||
d.send(data.__repr__)
|
||||
d.send_departure(data)
|
||||
|
||||
class LoraDevice:
|
||||
|
||||
|
@ -54,8 +54,25 @@ class LoraDevice:
|
|||
self.stop_id = stop_id
|
||||
self.message_pool = []
|
||||
self.thread = None
|
||||
self.sent_departures = {}
|
||||
self.send(lambda: "CLEAR")
|
||||
|
||||
def resend(self):
|
||||
to_send = []
|
||||
for d in self.sent_departures:
|
||||
if self.sent_departures[d] <= 2:
|
||||
to_send.append(d)
|
||||
shuffle(to_send)
|
||||
for d in to_send[:1]:
|
||||
self.send_departure(d)
|
||||
|
||||
def send_departure(self, departure):
|
||||
if departure not in self.sent_departures:
|
||||
self.sent_departures[departure] = 1
|
||||
else:
|
||||
self.sent_departures[departure] += 1
|
||||
self.send(departure.__repr__)
|
||||
|
||||
def send(self, msg):
|
||||
self.message_pool.append(msg)
|
||||
if not self.thread or not self.thread.is_alive():
|
||||
|
|
|
@ -68,11 +68,16 @@ class Main:
|
|||
def update_loop(self):
|
||||
refetch = 0
|
||||
regenerate = 1
|
||||
resend = 1
|
||||
while True:
|
||||
|
||||
if self.ended:
|
||||
break
|
||||
|
||||
if resend == 0:
|
||||
for d in self.controller.devices:
|
||||
d.resend()
|
||||
|
||||
if regenerate == 0:
|
||||
self.controller.generate_token()
|
||||
|
||||
|
@ -83,6 +88,7 @@ class Main:
|
|||
|
||||
refetch = (refetch + 1) % 3
|
||||
regenerate = (regenerate + 1) % (6*30)
|
||||
resend = (resend + 1) % 7
|
||||
|
||||
sleep(.1)
|
||||
|
||||
|
|
Loading…
Reference in a new issue