def get_entries(from_list, to_list, degrees_list, day_type):
    result = []

    for i in range(len(from_list)):
        for j in range(i+1,len(from_list)):
            if from_list[i].get() == from_list[j].get() or from_list[i].get() == to_list[i].get():
                messagebox.showerror("Error", "Not possible, try again.")
                return

            elif from_list[i].get() == '' and to_list[i].get() != '':
                messagebox.showerror("Error", "Not possible, try again.")
                return

            elif from_list[i].get() == '' and degrees_list[i].get() != '':
                messagebox.showerror("Error", "Not possible, try again.")
                return

    if int(from_list[0].get()) != 0 or int(to_list[len(from_list)-1].get()) != 0:
        messagebox.showerror("Error", "Make sure every hour has a temperature")
        return

    for i in range(len(from_list)-1):
        for j in range(int(to_list[i].get())-int(from_list[i].get())):
            result.append(degrees_list[i].get())

    for i in range(24-int(from_list[len(from_list)-1].get())):
        result.append(degrees_list[len(from_list)-1].get())

    messagebox.showinfo("Confirmed","Succesfully saved")

    if day_type == 'week':
        Gebruikersscherm.change_temperature_week(result)

    if day_type == 'weekend':
        Gebruikersscherm.change_temperature_weekend(result)
def data_device(device):
    global usage, on
    usage = Gebruikersscherm.usage(device)
    on = Gebruikersscherm.plot_day_output(device)
    if on is None:
        messagebox.showinfo("info", "Usage is being calculated")
    for i in range(len(on)):
        on[i] = on[i] * usage
    return on
def temperature_graph():

    canvas = Canvas(temp_schedule_root, width=400, height=300, highlightthickness=0)
    canvas.place(x=20, y=120)

    day_type = Klok.day_type()

    if day_type == 'week':
        temperatures = Gebruikersscherm.temperature_week()
    elif day_type == 'weekend':
        temperatures = Gebruikersscherm.temperature_weekend()

    hours = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
    f = matplotlib.figure.Figure((4, 4), dpi=100)
    a = f.add_subplot(111)
    a.plot(hours, temperatures)

    canvas2 = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(f, canvas)
    canvas2.get_tk_widget().pack(side=TOP, fill=BOTH, expand=TRUE)
    canvas2._tkcanvas.pack(side=TOP, fill=BOTH, expand=TRUE)

    a.set_xlabel("Time (h)")
    a.set_ylabel("Temperature (°C)")
    a.set_xticks(hours, minor=True)
def get_temperature_scheme(day_type):

    global temperature_list
    temperature_list = []
    key_positions = []
    result = []

    if day_type == 'week':

        temperature_list = Gebruikersscherm.temperature_week()

    elif day_type == 'weekend':

        temperature_list = Gebruikersscherm.temperature_weekend()

    for i in range(1,len(temperature_list)):
        if temperature_list[i] != temperature_list[i-1]:
            key_positions.append(i)
    length = len(key_positions)

    for i in range(number_of_entries-length):
        key_positions.append(None)

    return key_positions
def make_graph_total():
    global usage, on
    usage = Gebruikersscherm.total_usage()
    price = Optimalisatie.electricity_price()
    fig, ax = plt.subplots()
    if (hours is None) or (usage is None):
        messagebox.showinfo("Info", "Usage is being calculated")
    else:
        ax.plot(hours, usage)
        ax.set_xlabel("time (h)")
        ax.set_ylabel("usage (kWh)")
        plt.title("Total Usage")
        plt.plot(price)
        plt.show()
        graph()
def make_graph_solar_panels(canvas2):
    on = Gebruikersscherm.plot_solar_panels()
    if on is None:
        none_label = Label(canvas2, text="making graph")
        none_label.place()
    else:
        f = matplotlib.figure.Figure((4, 4), dpi=100)
        a = f.add_subplot(111)

        a.plot(hours, on)
        a.set_xlabel("time (h)")
        a.set_ylabel("usage (kWh)")
        canvas = matplotlib.backends.backend_tkagg.FigureCanvasTkAgg(
            f, canvas2)
        canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=TRUE)
        canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=TRUE)
Exemple #7
0
def machines():
    """
    Returns in a dictionary the vectors of the standard machines used in the mini house.
    The key is the name of the machine in string form followed by the vector in string form as value.

    The standard machines in order: 'windmolen', 'auto', 'verwarming', 'batterij', 'koelkast', 'vriezer', 'oven', 'kookplaat', 'wasmachine', 'afwasmachine',
    'droogkast', 'boiler', 'TV'.
    """
    i = dict()
    i['uur'] = kl.datetime_now()
    date_1 = kl.date_now()
    date_2 = date_1 + ' 00:00:00'
    machines = [
        'auto', 'batterij', 'koelkast', 'vriezer', 'oven', 'kookplaat',
        'wasmachine', 'afwasmachine', 'droogkast', 'boiler', 'TV'
    ]
    existing_machines = dt.machines.read_variable('machine')

    i['licht_berging'] = dt.lights.select_data('status', 'room', 'berging')
    i['licht_living'] = dt.lights.select_data('status', 'room', 'living')
    i['licht_keuken'] = dt.lights.select_data('status', 'room', 'keuken')
    i['licht_slaapkamer'] = dt.lights.select_data('status', 'room',
                                                  'slaapkamer')
    i['licht_badkamer'] = dt.lights.select_data('status', 'room', 'badkamer')
    i['verwarming'] = heating_system(date_2)
    i['windmolen'] = windmill(date_1)

    for machine in machines:
        if machine in existing_machines:
            vector = list_converter(
                dt.vectors.select_data(machine, 'date', date_2))
            i[machine] = vector
        elif machine is 'batterij':
            vector = list_converter(
                dt.vectors.select_data('batterij', 'date', date_2))
            i[machine] = vector
        elif machine is 'auto' and gb.existing_car() is not None:
            vector = list_converter(
                dt.vectors.select_data(machine, 'date', date_2))
            i[machine] = vector
        else:
            vector = 24 * [0]
            i[machine] = vector
    return i
def getWeekend():
    if getschedule() is None:
        return
    else:
        Gebruikersscherm.change_machines_weekend(getschedule())
def getManual():
    if getschedule() is None:
        return
    else:
        Gebruikersscherm.change_machines_manual(getschedule())
        Gebruikersscherm.set_manual_date_machines()
def add_weekend(button):
    if check_entry(button):
        new_schedule = [[str(new_device_name), int(plus_entryh.get()) + 1, int(plus_entry_untilh.get()) + 1]]
        Gebruikersscherm.change_machines_weekend(new_schedule)
def add_manual(button):
    if check_entry(button):
        new_schedule = [[str(new_device_name), int(plus_entryh.get()) + 1, int(plus_entry_untilh.get()) + 1]]
        Gebruikersscherm.change_machines_manual(new_schedule)
        Gebruikersscherm.set_manual_date_machines()