def get_next_departure(sched, start_station_id, end_station_id):
    """Get the next departure for the given sched."""
    origin_station = sched.stops_by_id(start_station_id)[0]
    destination_station = sched.stops_by_id(end_station_id)[0]

    now = datetime.datetime.now()
    day_name = now.strftime("%A").lower()
    now_str = now.strftime("%H:%M:%S")

    from sqlalchemy.sql import text

    sql_query = text("""
    SELECT trip.trip_id, trip.route_id,
           time(origin_stop_time.departure_time),
           time(destination_stop_time.arrival_time),
           time(origin_stop_time.arrival_time),
           time(origin_stop_time.departure_time),
           origin_stop_time.drop_off_type,
           origin_stop_time.pickup_type,
           origin_stop_time.shape_dist_traveled,
           origin_stop_time.stop_headsign,
           origin_stop_time.stop_sequence,
           time(destination_stop_time.arrival_time),
           time(destination_stop_time.departure_time),
           destination_stop_time.drop_off_type,
           destination_stop_time.pickup_type,
           destination_stop_time.shape_dist_traveled,
           destination_stop_time.stop_headsign,
           destination_stop_time.stop_sequence
    FROM trips trip
    INNER JOIN calendar calendar
               ON trip.service_id = calendar.service_id
    INNER JOIN stop_times origin_stop_time
               ON trip.trip_id = origin_stop_time.trip_id
    INNER JOIN stops start_station
               ON origin_stop_time.stop_id = start_station.stop_id
    INNER JOIN stop_times destination_stop_time
               ON trip.trip_id = destination_stop_time.trip_id
    INNER JOIN stops end_station
               ON destination_stop_time.stop_id = end_station.stop_id
    WHERE calendar.{day_name} = 1
               AND time(origin_stop_time.departure_time) > time(:now_str)
    AND start_station.stop_id = :origin_station_id
               AND end_station.stop_id = :end_station_id
    ORDER BY origin_stop_time.departure_time LIMIT 1;
    """.format(day_name=day_name))
    result = sched.engine.execute(sql_query, now_str=now_str,
                                  origin_station_id=origin_station.id,
                                  end_station_id=destination_station.id)
    item = {}
    for row in result:
        item = row

    today = datetime.datetime.today().strftime("%Y-%m-%d")
    departure_time_string = "{} {}".format(today, item[2])
    arrival_time_string = "{} {}".format(today, item[3])
    departure_time = datetime.datetime.strptime(departure_time_string,
                                                TIME_FORMAT)
    arrival_time = datetime.datetime.strptime(arrival_time_string,
                                              TIME_FORMAT)

    seconds_until = (departure_time-datetime.datetime.now()).total_seconds()
    minutes_until = int(seconds_until / 60)

    route = sched.routes_by_id(item[1])[0]

    origin_stoptime_arrival_time = "{} {}".format(today, item[4])

    origin_stoptime_departure_time = "{} {}".format(today, item[5])

    dest_stoptime_arrival_time = "{} {}".format(today, item[11])

    dest_stoptime_depart_time = "{} {}".format(today, item[12])

    origin_stop_time_dict = {
        "Arrival Time": origin_stoptime_arrival_time,
        "Departure Time": origin_stoptime_departure_time,
        "Drop Off Type": item[6], "Pickup Type": item[7],
        "Shape Dist Traveled": item[8], "Headsign": item[9],
        "Sequence": item[10]
    }

    destination_stop_time_dict = {
        "Arrival Time": dest_stoptime_arrival_time,
        "Departure Time": dest_stoptime_depart_time,
        "Drop Off Type": item[13], "Pickup Type": item[14],
        "Shape Dist Traveled": item[15], "Headsign": item[16],
        "Sequence": item[17]
    }

    return {
        "trip_id": item[0],
        "trip": sched.trips_by_id(item[0])[0],
        "route": route,
        "agency": sched.agencies_by_id(route.agency_id)[0],
        "origin_station": origin_station,
        "departure_time": departure_time,
        "destination_station": destination_station,
        "arrival_time": arrival_time,
        "seconds_until_departure": seconds_until,
        "minutes_until_departure": minutes_until,
        "origin_stop_time": origin_stop_time_dict,
        "destination_stop_time": destination_stop_time_dict
    }
dataset/ETHPy150Open home-assistant/home-assistant/homeassistant/components/sensor/gtfs.py/get_next_departure/original