Автоматический перезапуск python и новое окно tkinter - PullRequest
0 голосов
/ 03 мая 2020

Здравствуйте, я ненавижу заканчивать здесь, но этот я не могу решить самостоятельно.

У меня есть скрипт python, запущенный с использованием tkinter для пользовательского интерфейса. Он подключен к устройству Bluetooth и к разъему Wi-Fi. BT выдает температуру и влажность, штекер включает вытяжку при достижении определенного значения температуры / влажности. К сожалению, иногда устройство BT выдает значение NoneType, или невозможно подключиться к Wi-Fi-разъему. Поэтому скрипт вылетает. Я установил скрипт bash, который автоматически перезапускает скрипт python, но, похоже, он не обновляет окно tkinter и не запускает его снова! Как я могу этого достичь? Спасибо!

import pandas as pd
import time
import datetime
import pyHS100
from pyHS100 import SmartPlug
from beewi_smartclim import BeewiSmartClimPoller
import datetime as dt
from tkinter import *
from PIL import ImageTk, Image

plug_temp = SmartPlug('192.168.0.21')

result = time.strftime("%I:%M")

env_exp = []

window = Tk()

window.title('green room')

lab_text = Label(window, width = 10)
lab_text.grid(column=0, row=0)
lab = Label(window, width = 10)
lab.grid(column=0, row=1)

lab_h_text = Label(window, width = 10)
lab_h_text.grid(column=1, row=0)
lab_h = Label(window, width = 10)
lab_h.grid(column=1, row=1)

lab_t_text = Label(window, width = 10)
lab_t_text.grid(column=2, row=0)
lab_t = Label(window, width = 10)
lab_t.grid(column=2, row=1)

img_on = ImageTk.PhotoImage(Image.open('/home/pi/on.png'))
img_off = ImageTk.PhotoImage(Image.open('/home/pi/off.png'))

lab_plug_text = Label(window, width = 10)
lab_plug_text.grid(column=3, row=0)
lab_plug = Label(window, width = 50)
lab_plug.grid(column=3, row=1)



def UI():
    b = BeewiSmartClimPoller("F0:C7:7F:85:B4:79")
    time_day = dt.datetime.now().strftime('%H:%M:%S')
    temp_c = b.get_temperature()
    humidity = b.get_humidity()
    b.update_sensor()
    env = [temp_c, humidity, time_day]
    env_exp.append(env)
    df = pd.DataFrame(env_exp)
    df.to_csv ('/home/pi/env_export.csv', index = False, header=['Temp', 'H', 'Time'])
    temp = (temp_c,'°C')
    hum = (humidity,'%')
    if temp_c > 25 or humidity > 48:
        plug_temp.turn_on()

    else:
        plug_temp.turn_off()

    lab_text.config(text = 'Time')
    lab.config(text = time_day)
    lab_h_text.config(text = 'Humidity')
    lab_h.config(text = hum)
    lab_t_text.config(text = 'Temperature')
    lab_t.config(text = temp)
    lab_plug_text.config(text = 'Status')
    if plug_temp.state == 'ON':
        lab_plug.config(image = img_on)  
    else:
        lab_plug.config(image = img_off)

    window.after(120000, UI)

UI()
window.mainloop()

и bash код:

until python3 flowerbeewi.py; do
 echo "Crashed with exit code $?/ restarting..." >&2
 sleep 3
done
...