Beispiel #1
0
 def __init__(self):
     # instance into_db object
     self.db = Helper(host='',
                      user='******',
                      password='******',
                      database='raspberrypi',
                      port=3306)
     self.db.connect()
Beispiel #2
0
 def __init__(self):
     # instance into_db object
     self.db = Helper(host='',
                      user='******',
                      password='******',
                      database='monitoring_test',
                      port=30106)
     self.db.connect()
Beispiel #3
0
 def __init__(self, root):
     super().__init__(root)
     self.helper = Helper()
     self.root = root
     root.attributes('-zoomed', True)
     root.title('Car manager')
     root.iconphoto(True, tk.PhotoImage(file='Resources/car_logo.png'))
     root.bind('<Control-x>', self.close_app)
     root.columnconfigure(1, weight=1)
     root.rowconfigure(2, weight=1)
     self.create_widgets()
     self.show_cars()
    def __init__(self, root, parent):
        self.top_level = tk.Toplevel(root)
        self.helper = Helper()
        self.parent = parent
        x = self.top_level.winfo_screenwidth()
        y = self.top_level.winfo_screenheight()
        geometry = '+{}+{}'.format(int((x / 2) - 100),
                                   int((y / 2) - 100))
        size = self.top_level.geometry(geometry)
        self.top_level.title('Add car')
        self.top_level.grab_set()
        label_make = tk.Label(self.top_level, text='Make: ',
                              font=12, padx=20, pady=10).grid(row=0, column=0)
        label_model = tk.Label(self.top_level, text='Model: ',
                               font=12, padx=20, pady=10).grid(row=1, column=0)
        label_year = tk.Label(self.top_level, text='Year: ',
                              font=12, padx=20, pady=10).grid(row=2, column=0)
        label_vrn = tk.Label(self.top_level, text='VRN: ',
                             font=12, padx=20, pady=10).grid(row=3, column=0)
        label_vin = tk.Label(self.top_level, text='VIN: ',
                             font=12, padx=20, pady=10).grid(row=4, column=0)
        self.make_sv = tk.StringVar()
        self.model_sv = tk.StringVar()
        self.year_sv = tk.StringVar()
        self.vrn_sv = tk.StringVar()
        self.vin_sv = tk.StringVar()
        self.info_sv = tk.StringVar()

        entry_make = tk.Entry(
            self.top_level, text=self.make_sv)
        entry_make.focus_set()
        entry_make.grid(row=0, column=1)
        entry_model = tk.Entry(
            self.top_level, text=self.model_sv).grid(row=1, column=1)
        entry_year = tk.Entry(
            self.top_level, text=self.year_sv).grid(row=2, column=1)
        entry_vrn = tk.Entry(
            self.top_level, text=self.vrn_sv).grid(row=3, column=1)
        entry_vin = tk.Entry(
            self.top_level, text=self.vin_sv).grid(row=4, column=1)

        info_label = tk.Label(self.top_level, textvariable=self.info_sv,
                              font=12, padx=10, pady=10, fg='red').grid(row=5, column=0, columnspan=2)
        save_button = tk.Button(self.top_level, text='Save',
                                command=self.save_new_car)
        save_button.bind('<Return>', self.save_new_car)
        save_button.grid(row=6, column=1, sticky='W', padx=10)
        cancel_button = tk.Button(self.top_level, text='Cancel',
                                  command=self.top_level.destroy)
        cancel_button.grid(row=6, column=1, sticky='W', padx=70)
        cancel_button.bind('<Return>', self.top_level.destroy)
Beispiel #5
0
    def __init__(self, root, car):
        self.top_level = tk.Toplevel(root)
        self.root = root
        self.top_level.title('Repairs')
        self.top_level.grab_set()
        self.car = car
        self.helper = Helper()

        x = self.top_level.winfo_screenwidth()
        y = self.top_level.winfo_screenheight()
        geometry = '+{}+{}'.format(int((x / 2) - 150), int((y / 2) - 150))
        size = self.top_level.geometry(geometry)

        toolbox_frame = tk.Frame(self.top_level)
        toolbox_frame.grid(column=0, row=0, sticky='W')
        self.add_repair_img = tk.PhotoImage(file='Resources/add_repair.gif')
        add_repair_button = tk.Button(toolbox_frame,
                                      image=self.add_repair_img,
                                      command=self.add_repair)
        add_repair_button.grid(column=0, row=0, sticky='W')
        add_repair_button.bind('<Return>', self.add_repair)
        add_repair_button.bind('<KP_Enter>', self.add_repair)
        if car.sold:
            add_repair_button.config(state='disabled')

        col_headers = ('No', 'Date', 'Description')
        self.repairs_tv = ttk.Treeview(self.top_level,
                                       columns=col_headers,
                                       show='headings',
                                       selectmode='none')
        self.repairs_tv.tag_configure('c1', background='ivory2')
        self.repairs_tv.tag_configure('c2', background='ivory3')
        for i, col in enumerate(col_headers):
            self.repairs_tv.heading(col, text=col)
            self.repairs_tv.column(col, anchor='center')
            if i == 0:
                self.repairs_tv.column(col, width=50, stretch='NO')
        self.repairs_tv.grid(column=0, row=2, sticky='NSWE')

        scrollbar = tk.Scrollbar(self.top_level, command=self.repairs_tv.yview)
        scrollbar.grid(column=1, row=2, sticky='NS')

        self.show_repairs()
Beispiel #6
0
class Motor():
    def __init__(self):
        # instance into_db object
        self.db = Helper(host='',
                         user='******',
                         password='******',
                         database='raspberrypi',
                         port=3306)
        self.db.connect()

    def insert_data(self, data_dict):
        # insert data into database
        try:
            # U, I, T, R
            for i in range(4):
                sql = "INSERT INTO {}(crt_time, value) VALUES('{}', '{}')"\
                    .format(data_dict["order"][i], data_dict["time"], data_dict["data"][i])
                self.db.insert(sql)

            # Vibration
            interval = int(1000 / len(data_dict["Vibration"]))
            print(interval)

            for i in range(len(data_dict["Vibration"])):
                vib_time = data_dict["time"] + '.' + str(interval * i)
                sql1 = "INSERT INTO Vibration(crt_time, value) VALUES('{}', '{}')"\
                    .format(vib_time, data_dict["Vibration"][i])
                self.db.insert(sql1)
        except:
            print('no data')
Beispiel #7
0
class Motor():
    def __init__(self):
        # instance into_db object
        self.db = Helper(host='',
                         user='******',
                         password='******',
                         database='monitoring_test',
                         port=30106)
        self.db.connect()

    # reconnect to database
    def reconn_db(self):
        try:
            self.db.conn.ping()
        except:
            self.db.connect()

    def insert_data(self, data_dict):
        self.reconn_db()
        # insert data into database
        try:
            serial_number = data_dict.pop('serial_number')
            create_time = data_dict.pop('create_time')

            # insert data into every table
            for sub_name in data_dict.keys():
                table_name = serial_number + '_' + sub_name
                value_list = data_dict[sub_name].split('/')
                insert_datalist = []
                for value in value_list:
                    data_tuple = (create_time, value)
                    insert_datalist.append(data_tuple)
                sql = "INSERT INTO monitoring_test.{}(create_time, value) VALUES(%s, %s)".format(
                    table_name)
                self.db.insert_many(sql, insert_datalist)

                #for value in value_list:
                #    sql = "INSERT INTO monitoring_Spike.{}(create_time, value) VALUES('{}', '{}')"\
                #        .format(table_name, create_time, value)
                #    self.db.insert(sql)

        except:
            logging.error('no data')
Beispiel #8
0
class CarManager(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.helper = Helper()
        self.root = root
        root.attributes('-zoomed', True)
        root.title('Car manager')
        root.iconphoto(True, tk.PhotoImage(file='Resources/car_logo.png'))
        root.bind('<Control-x>', self.close_app)
        root.columnconfigure(1, weight=1)
        root.rowconfigure(2, weight=1)
        self.create_widgets()
        self.show_cars()

    def create_widgets(self):
        # create menu
        menubar = tk.Menu(self.root)
        self.root.config(menu=menubar)
        file_menu = tk.Menu(menubar, tearoff=0)
        file_menu.add_command(label='Exit', command=exit, accelerator="Ctrl+x")
        menubar.add_cascade(label="File", menu=file_menu)

        # create toolbar
        tbar_frame = tk.Frame(root, height=10)
        tbar_frame.grid(row=0, column=0)

        self.add_car_img = tk.PhotoImage(file='Resources/add_car.gif')
        self.remove_car_img = tk.PhotoImage(file='Resources/remove_car.gif')
        self.repairs_img = tk.PhotoImage(file='Resources/repairs.gif')
        self.sold_img = tk.PhotoImage(file='Resources/sold.gif')

        add_car_button = tk.Button(tbar_frame,
                                   image=self.add_car_img,
                                   command=self.add_car).grid(row=0,
                                                              column=0,
                                                              sticky='W')
        del_car_button = tk.Button(tbar_frame,
                                   image=self.remove_car_img,
                                   command=self.del_car).grid(row=0,
                                                              column=0,
                                                              sticky='W',
                                                              padx=30)
        repairs_button = tk.Button(tbar_frame,
                                   image=self.repairs_img,
                                   command=self.show_repairs).grid(row=0,
                                                                   column=0,
                                                                   sticky='W',
                                                                   padx=60)
        sold_button = tk.Button(tbar_frame,
                                image=self.sold_img,
                                command=self.sell_car).grid(row=0,
                                                            column=0,
                                                            sticky='W',
                                                            padx=90)

        # create search entry
        self.search_variable = tk.StringVar()
        self.search_entry = tk.Entry(root, textvariable=self.search_variable)
        self.search_entry.config(fg='grey')
        # search_variable.trace("w", callback)
        self.search_variable.set("Search car by VRN")
        self.search_entry.bind('<FocusIn>', self.on_entry_in)
        self.search_entry.bind('<FocusOut>', self.on_entry_out)
        self.search_entry.bind('<Return>', self.on_entry_return)
        self.search_entry.bind('<KP_Enter>', self.on_entry_return)
        self.search_entry.grid(row=0, column=1, sticky='E', ipadx=20)

        # create TreeView with Scrollbar
        col_headers = ('No', 'Make', 'Model', 'Year', 'VRN', 'VIN', 'Sold')
        self.car_tview = ttk.Treeview(self.root,
                                      columns=col_headers,
                                      show='headings',
                                      selectmode='browse')
        self.car_tview.columnconfigure(0, weight=1)
        self.car_tview.rowconfigure(0, weight=1)
        # set column headers
        for i, col in enumerate(col_headers):
            self.car_tview.heading(col, text=col)
            self.car_tview.column(col, anchor='center')
            if i == 0:
                self.car_tview.column(col, width=50, stretch='NO')
        self.car_tview.grid(row=2, column=0, columnspan=2, sticky='NSWE')

        scrollbar = tk.Scrollbar(self.root, command=self.car_tview.yview)
        scrollbar.grid(column=3, row=2, sticky='NS')

    def close_app(self, event):
        result = tk.messagebox.askyesno('Exit', 'Close application?')
        if result:
            self.root.destroy()

    def show_cars(self):
        all_cars = self.helper.show_all_cars()
        self.car_tview.delete(*self.car_tview.get_children())
        for i, car in enumerate(all_cars, start=1):
            car = list(car)
            car.insert(0, i)
            if i % 2:
                self.car_tview.insert('', 'end', values=car, tag='c2')
            else:
                self.car_tview.insert('', 'end', values=car, tag='c1')
            self.car_tview.tag_configure('c1', background='ivory3')
            self.car_tview.tag_configure('c2', background='ivory2')

    def __get_car_from_selection(self):
        selected_item = self.car_tview.focus()
        if selected_item == '':
            messagebox.showinfo('Information', 'No item selected')
        else:
            selection_dict = self.car_tview.item(selected_item)
            selection = selection_dict.get('values')
            i, *args = selection
            car = Car.from_list(args)
            return car

    def add_car(self):
        add_car = NewCarWindow(self.root, self)

    def del_car(self):
        car = self.__get_car_from_selection()
        if car and messagebox.askyesno('Delete', 'Delete selected car?'):
            self.helper.del_car(car)
            self.show_cars()

    def show_repairs(self):
        car = self.__get_car_from_selection()
        if car:
            repairs = RepairsWindow(self.root, car)

    def sell_car(self):
        car = self.__get_car_from_selection()
        if car and car.sold:
            messagebox.showinfo('Information', 'Already marked as sold')
        elif car and messagebox.askyesno('Sell', 'Mark car as sold?'):
            self.helper.set_sold(car)
            self.show_cars()

    def on_entry_return(self, event):
        vrn = self.search_variable.get()
        if vrn == '':
            self.show_cars()
        else:
            car = self.helper.search_by_vrn(vrn)
            self.car_tview.delete(*self.car_tview.get_children())
            if car:
                car = list(car)
                car.insert(0, 1)
                self.car_tview.insert('', 'end', values=car)

    def on_entry_in(self, event):
        self.search_entry.config(fg='black')
        self.search_variable.set('')

    def on_entry_out(self, event):
        self.search_entry.config(fg='grey')
        self.search_variable.set('Search car by VRN')
Beispiel #9
0
class RepairsWindow():
    def __init__(self, root, car):
        self.top_level = tk.Toplevel(root)
        self.root = root
        self.top_level.title('Repairs')
        self.top_level.grab_set()
        self.car = car
        self.helper = Helper()

        x = self.top_level.winfo_screenwidth()
        y = self.top_level.winfo_screenheight()
        geometry = '+{}+{}'.format(int((x / 2) - 150), int((y / 2) - 150))
        size = self.top_level.geometry(geometry)

        toolbox_frame = tk.Frame(self.top_level)
        toolbox_frame.grid(column=0, row=0, sticky='W')
        self.add_repair_img = tk.PhotoImage(file='Resources/add_repair.gif')
        add_repair_button = tk.Button(toolbox_frame,
                                      image=self.add_repair_img,
                                      command=self.add_repair)
        add_repair_button.grid(column=0, row=0, sticky='W')
        add_repair_button.bind('<Return>', self.add_repair)
        add_repair_button.bind('<KP_Enter>', self.add_repair)
        if car.sold:
            add_repair_button.config(state='disabled')

        col_headers = ('No', 'Date', 'Description')
        self.repairs_tv = ttk.Treeview(self.top_level,
                                       columns=col_headers,
                                       show='headings',
                                       selectmode='none')
        self.repairs_tv.tag_configure('c1', background='ivory2')
        self.repairs_tv.tag_configure('c2', background='ivory3')
        for i, col in enumerate(col_headers):
            self.repairs_tv.heading(col, text=col)
            self.repairs_tv.column(col, anchor='center')
            if i == 0:
                self.repairs_tv.column(col, width=50, stretch='NO')
        self.repairs_tv.grid(column=0, row=2, sticky='NSWE')

        scrollbar = tk.Scrollbar(self.top_level, command=self.repairs_tv.yview)
        scrollbar.grid(column=1, row=2, sticky='NS')

        self.show_repairs()

    def add_repair(self, event=None):
        self.add_repair_frame = tk.Frame(self.top_level)
        self.add_repair_frame.grid(column=0, row=1, pady=20, sticky='WE')

        date_label = tk.Label(self.add_repair_frame,
                              text='Date:').grid(column=0, row=2)
        self.date_sv = tk.StringVar()
        self.date_entry = tk.Entry(self.add_repair_frame, text=self.date_sv)
        self.date_entry.focus_set()
        self.date_entry.grid(column=1, row=2, sticky='W')

        self.cal_img = tk.PhotoImage(file='Resources/calendar.gif')
        show_cal_btn = tk.Button(self.add_repair_frame,
                                 image=self.cal_img,
                                 command=self.show_cal,
                                 relief='flat').grid(column=1,
                                                     row=2,
                                                     sticky='W',
                                                     padx=170)

        description_label = tk.Label(self.add_repair_frame,
                                     text='Description:').grid(column=0, row=3)
        self.description_sv = tk.StringVar()
        self.description_entry = tk.Entry(self.add_repair_frame,
                                          text=self.description_sv)
        self.description_entry.grid(column=1, row=3, ipadx=200)
        save_button = tk.Button(self.add_repair_frame,
                                text='Save',
                                command=self.save_repair)
        save_button.grid(column=1, row=4, pady=10, sticky='E')
        save_button.bind('<Return>', self.save_repair)
        save_button.bind('<KP_Enter>', self.save_repair)
        cancel_button = tk.Button(self.add_repair_frame,
                                  text='Cancel',
                                  command=self.cancel_repair)
        cancel_button.grid(column=1, row=4, sticky='E', padx=60)
        cancel_button.bind('<Return>', self.cancel_repair)
        cancel_button.bind('<KP_Enter>', self.cancel_repair)

    def cancel_repair(self, event=None):
        self.add_repair_frame.grid_remove()

    def save_repair(self, event=None):
        if self.date_sv.get() and self.description_sv.get():
            self.helper.add_repair(self.car, self.date_sv.get(),
                                   self.description_sv.get())
            self.show_repairs()

            self.add_repair_frame.grid_remove()

    def show_repairs(self):
        repairs = self.helper.show_repairs(self.car)
        self.repairs_tv.delete(*self.repairs_tv.get_children())
        for i, repair in enumerate(repairs, start=1):
            repair = (i, repair[0], repair[2])
            if i % 2:
                self.repairs_tv.insert('', 'end', values=repair, tag='c1')
            else:
                self.repairs_tv.insert('', 'end', values=repair, tag='c2')

    def show_cal(self, event=None):
        date_picker = DatePicker(self.top_level, self.date_entry, '%d-%m-%Y')
        self.description_entry.focus_set()