|
|
- #!/usr/bin/env python3
- '''Hello to the world from ev3dev.org'''
-
- import os
- import sys
- import time
- import json
- import datetime
- import urllib3
- import requests
-
- from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_B, SpeedPercent, MoveTank
- from ev3dev2.sensor import INPUT_1,INPUT_2
- from ev3dev2.sensor.lego import TouchSensor
- from ev3dev2.sensor.lego import UltrasonicSensor
- from ev3dev2.sound import Sound
- from ev3dev2.button import Button
-
- ON = True
- OFF = False
-
-
- def debug_print(*args, **kwargs):
- print(*args, **kwargs, file=sys.stderr)
-
-
- def reset_console():
- print('\x1Bc', end='')
-
-
- def set_cursor(state):
- if state:
- print('\x1B[?25h', end='')
- else:
- print('\x1B[?25l', end='')
-
-
- def set_font(name):
- '''Sets the console font
-
- A full list of fonts can be found with `ls /usr/share/consolefonts`
- '''
- os.system('setfont ' + name)
-
- def raise_ramp():
- print("Raising ramp")
-
- def get_closest_time(times, time):
- closest = 0
- times = [datetime.datetime.strptime(i,"%H:%M") for i in times]
- time = datetime.datetime.strptime(time,"%H:%M")
- for i in times:
- if i.hour < time.hour or (i.hour == time.hour and i.minute < time.minute):
- continue
- else:
- if closest == 0:
- closest = i
- continue
- if abs(i.hour - time.hour) < abs(closest.hour - time.hour):
- closest = i
- continue
- elif abs(i.hour - time.hour) == abs(closest.hour - time.hour):
- if i.minute - time.minute < closest.minute - time.minute:
- closest = i
-
- return closest.strftime("%H:%M")
-
-
- def time_diff(t1, t2):
- time1 = datetime.datetime.strptime(t1, "%H:%M")
- time2 = datetime.datetime.strptime(t2, "%H:%M")
- response = ""
- if abs(time2.hour - time1.hour) < 10:
- response += "0"
- if time2.minute - time1.minute >= 0:
- response += str(abs(time2.hour - time1.hour))
- else:
- response += str(abs(time2.hour - time1.hour) - 1)
-
- response += ":"
-
- if abs(time2.minute - time1.minute) < 10:
- response += "0"
-
- response += str(abs(time2.minute - time1.minute))
-
- return response
-
-
- def raise_ramp(motor1):
- motor1.on_for_rotations(SpeedPercent(75), 5)
-
- def main():
-
- start = time.time()
- file = open("times.json","r")
- time_data = json.loads(file.read())
- stop_data = [i for i in time_data.keys()]
- debug_print(stop_data)
- file.close()
- time_start = "10:02"
- debug_print('Started Code')
- reset_console()
- set_cursor(OFF)
- set_font('Lat15-Terminus24x12')
- alarms = [0,0,0]
- stop = "11222"
-
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
-
- print('AKILLI DURAK')
-
- sound = Sound()
-
-
- us = UltrasonicSensor(INPUT_2)
- us.MODE_US_DIST_CM
- btn = Button()
- m1 = LargeMotor(OUTPUT_A)
-
- ts = TouchSensor(INPUT_1)
-
- while 1:
- if us.distance_centimeters < 15:
- sound.speak("Please select a stop")
- i = 0
- reset_console()
- print(stop_data[i%len(stop_data)])
- while not btn.enter:
- if btn.up:
- i += 1
- reset_console()
- print(stop_data[i%len(stop_data)])
- time.sleep(0.1)
- if btn.down:
- i -= 1
- reset_console()
- print(stop_data[i%len(stop_data)])
- time.sleep(0.1)
- closest = datetime.datetime.strptime(time_diff(time_start,get_closest_time(time_data[stop_data[i%len(stop_data)]]["weekday"][:],time_start)),"%H:%M")
- difference = datetime.timedelta(hours=closest.hour,minutes=closest.minute).total_seconds()+start
-
- if not difference in alarms:
- alarms[i%len(stop_data)] = difference
- r = requests.get("https://192.168.44.50:5000/bus?line={}&stop={}".format(stop_data[i%len(stop_data)],stop), verify=False)
-
- print(difference-time.time())
- time.sleep(1)
- reset_console()
- print("AKILLI DURAK")
-
- for i in range(len(alarms)):
- if alarms[i] == 0:
- continue
- else:
- if alarms[i]-time.time()<0:
- reset_console()
- print("Bus no {} has arrived".format(stop_data[i%len(stop_data)]))
- sound.speak("Bus no {} has arrived".format(stop_data[i%len(stop_data)]))
- sound.speak("Would you like a ramp?")
- waiter = time.time()
- pressed = True
- while time.time()-waiter < 10 and pressed:
- if ts.is_pressed:
- pressed = False
- raise_ramp(m1)
- reset_console()
- print("AKILLI DURAK")
- alarms[i] = 0
-
-
- if __name__ == '__main__':
- main()
|