/
acc1408
/
esp32
Обзор
Документация
Войти
/
acc1408
/
esp32
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
boot.py
511 строк
42 KB
Aleksey
last my work rev
23 апр 2024, 01:10
23 апр 2024, 01:10
7b45dcd
Код
Авторство
О чём код?
# This file is executed on every boot (including wake-boot from deepsleep) #import esp #esp.osdebug(None) #import webrepl #webrepl.start() from machine import Pin, I2C, Timer, reset import array import time try: import usocket as socket except: import socket import network import io import esp esp.osdebug(None) import gc gc.collect() #ssid = 'MicroPython-AP' #password = 'eeworldonline' #time.sleep_ms(2000) #Настройка точки доступа ap_if = network.WLAN(network.AP_IF) ap_if.active(True) ap_if.config(essid="MyPoint", password="12345678") #Настройка проверки пароля точки доступа #ap_if.config(authmode=network.AUTH_WPA_WPA2_PSK) # Настройка I2C i2c = I2C(0, scl=Pin(18), sda=Pin(19), freq=100000) # сканирование адресов #lst=i2c.scan() #for i in lst: # print(f"adress {i:#04x}") #adr=i2c.readfrom_mem(104,0,17) #print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x}") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"Коррекция {adr[16]:#02x}") #while True: # pass # адрес часов i=104 # настройка часов #p12=Pin(12, Pin.IN, Pin.PULL_UP) # Датчик света #print("wait press pin12") #while True: # if p12.value()==0: # print(f"пин12 {p12.value()}") # # sec, min, hour,dayWeek, day, mon,year # data = bytearray([0x30, 0x46,0x18,0x07, 0x13, 0x04,0x24 ]) # i2c.writeto_mem(104,0x0,data) # # Корретировка частоты # data = bytearray([0x00 ]) # i2c.writeto_mem(104,0x10,data) # print("Настройка завершена") # break #----------------------- logList=[] # список файлов i=0; # счетчик файлов while True: filename="log_"+f"{i}"+".txt" try: f=open(filename,'r') f.close() i=i+1 logList.append(filename) except OSError: # Если нет ни одного файла для лога то создаем файл для записи # читаем данные часов if i==0: adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x}") print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"Коррекция {adr[16]:#02x}") #--запись данных в лог файл------- st =f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Button</p>\n" st2=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Restart</p>\n" f=open(filename,"w") f.write(st) f.write(st2) f.close() logList.append(filename) del st del st2 del filename break #p16 = Pin(16, Pin.IN) # Выключение светодиода #-------------------------------------------- # функция сохранения лога def saveLog(st): # читаем данные из последнего файла global logList logData=[] with open(logList[len(logList)-1],'r') as file: while True: dt=file.readline() if len(dt)>0: logData.append(dt) del dt else: del dt break if (len(logData)<40): # кол-во записей в одном файле with open(logList[len(logList)-1],'w') as file: file.write(st) for i in range(0,len(logData)): file.write(logData[i]) else: filename="log_"+str(len(logList))+".txt" logList.append(filename) del filename with open(logList[len(logList)-1],'w') as file: file.write(st) del logData return #-------------------- # инициализация пинов p22=Pin(22, Pin.IN, Pin.PULL_UP) # Датчик света p16 = Pin(16, Pin.IN) # Выключение светодиода p17 = Pin(17, Pin.IN) # Включение автоматического режима p4 = Pin(4, Pin.IN) # Включение светодиода led=Pin(2,Pin.OUT) #led.value(0) # светодиод отключен #--------------------------------- #--чтение данных из лог файл для восставноления состояния------- with open(logList[len(logList)-1],'r') as file: st=file.readline() #-----Восстановление режима работы #mode_last=0 # режим работы лампы # 0 - ручной режим led выключен # 1 - ручной режим led включен # 2 - авторежим led выключен # 3 - авторежим led включен if st.find("Auto")>0: mode_last=2 stateMode="Auto" else: mode_last=0 if st.find("Web")>0: stateMode="Web" else: stateMode="Button" if st.find("On")>0: mode_last=mode_last+1 led.value(1) stateLed="On" else: led.value(0) stateLed="Off" #-------- Конец поиска------------- #-------------------------- # читаем данные часов adr=i2c.readfrom_mem(104,0,17) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x}") print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") print(f"Коррекция {adr[16]:#02x}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} {stateLed} {stateMode}</p>\n" st=st+f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Restart</p>\n" saveLog(st) del st #print("inf loop") #while True: # pass #--------------------------- # Обработчик прерывания нажатия кнопки включения def ledOn(pin): global led_last global mode_last if (mode_last==1): return else: mode_last=1 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Button") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Button</p>\n" saveLog(st) print(st) del st led.value(1) return #------------------------------------------------- # обработчик кнопки выключения def ledOff(pin): global led_last global mode_last if (mode_last==0): return else: mode_last=0 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Button") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Button</p>\n" saveLog(st) print(st) del st led.value(0) return #------------------------------- # обработчик кнопки авто включения countLed=0 # счетчик срабатывания включения def autoMode(pin): global led_last global mode_last global countLed if (p22.value()==1): if (mode_last==3): # режим авто светодиод горит return else: countLed=3 mode_last=3 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Auto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On ButtonAuto</p>\n" saveLog(st) print(st) del st led.value(1) return else: if (mode_last==2): # режим авто светодиод негорит return else: countLed=0 mode_last=2 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Auto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off ButtonAuto</p>\n" saveLog(st) print(st) del st led.value(0) return #---------------------------------- # -- регистрация прерываний по нажатию кнопки p16.irq(handler=ledOff, trigger=Pin.IRQ_FALLING) p17.irq(handler=autoMode, trigger=Pin.IRQ_FALLING) p4.irq(handler=ledOn, trigger=Pin.IRQ_FALLING) #--------------------------- #print("inf loop") #while True: # pass #------------------------ #------------------------------------------ # обработчик прерываний таймера def autoEn(t): #print("timer1") global mode_last global countLed if mode_last==3: if (p22.value()==0): countLed=countLed-1 if countLed==0: mode_last=2 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Auto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Auto</p>\n" saveLog(st) print(st) del st led.value(0) else: countLed=3 return if mode_last==2: if (p22.value()==1): countLed=countLed+1 if countLed==3: mode_last=3 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Auto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Auto</p>\n" saveLog(st) print(st) del st led.value(1) else: countLed=0 return # регистрация прерываний таймер tim1 = Timer(1) tim1.init(period=200, mode=Timer.PERIODIC, callback=autoEn) #----------------- #print("inf loop") #while True: # pass #=============================== # шаблон страницы # Первая часть страницы html1=""" <!DOCTYPE HTML><html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ESP32 File Server</title> </head> <body> <h1>Управление освещением</h1> <p>""" # Сохраняем картинки # Последняя часть страницы html2=""" </p> <p> <a href=\"?led=on\"><button>ON</button></a> <a href=\"?led=off\"><button>OFF</button></a> <a href=\"?led=auto\"><button>AUTO</button></a> </p> <p></p> <p> <a href=\ ><button>Обновить</button></a> </p> <p> """ html3=""" </p> <!-- <script> setTimeout(function(){location.reload();}, 10000); </script> --> </body></html>""" # конец страницы #============================= # Создание сервера while ap_if.active() == False: pass print('Connection successful') print(ap_if.ifconfig()) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.bind(('', 80)) except OSError: reset() s.listen(5) while True: #if gc.mem_free() < 102000: gc.collect() conn, addr = s.accept() print('Got a connection from %s' % str(addr)) request = conn.recv(1024) # conn.settimeout(None) request = str(request) print('Content = %s' % request) led_on = request.find('/?led=on') led_off = request.find('/?led=off') led_auto = request.find('/?led=auto') if led_on == 6: print('LED ON') if (mode_last==1): pass else: mode_last=1 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Web") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On Web</p>\n" saveLog(st) print(st) del st led.value(1) if led_off == 6: print('LED OFF') if (mode_last==0): pass else: mode_last=0 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Web") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off Web</p>\n" saveLog(st) print(st) del st led.value(0) if led_auto == 6: if (p22.value()==1): if (mode_last==3): # режим авто светодиод горит pass else: countLed=3 mode_last=3 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On WebAuto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} On WebAuto</p>\n" saveLog(st) print(st) del st led.value(1) else: if (mode_last==2): # режим авто светодиод негорит pass else: countLed=0 mode_last=2 adr=i2c.readfrom_mem(104,0,7) print(f"Время {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off WebAuto") #print(f"Дата {adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x}") #print(f"День недели {adr[3]}") st=f"<p>{adr[4]:02x}.{adr[5]:02x}.{adr[6]:02x} {adr[2]:02x}:{adr[1]:02x}:{adr[0]:02x} Off WebAuto</p>\n" saveLog(st) print(st) del st led.value(0) conn.send('HTTP/1.1 200 OK\n') conn.send('Content-Type: text/html\n') conn.send('Connection: close\n\n') #conn.sendall(response) #conn.send(html1) st=html1 # Отправка картинки if mode_last==0: st=st+"""<img src="data:image/jpeg;base64,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">""" #conn.send(ManOff) #st=st+ManOff #del ManOff if mode_last==1: st=st+"""<img src="data:image/jpeg;base64,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">""" #conn.send(ManOn) #st=st+ManOn #del ManOn if mode_last==2: st=st+"""<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gA8Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAKAP/hC/9FeGlmAABJSSoACAAAAAIAMgECABQAAAAmAAAAaYcEAAEAAAA6AAAAQAAAADIwMjQ6MDQ6MDggMDA6MzM6NDAAAAAAAAAAAwADAQQAAQAAAAYAAAABAgQAAQAAAGoAAAACAgQAAQAAAIULAAAAAAAA/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKiFxEZTEJEMqjJQMMgeuKlHNABXO/ELxPD4N8Harr9zC06WUW8RKcF2JCque2SRzXRV5h+0t/yRPxP/1zi/8ARyUAcd8D/jzd+PfF76DrGl2trLLE8ttLasxHyDJVg3tk5Hp0r6Ar4O/ZN/5LVpf/AF73P/oo1940AFFFNd1RSzEBQMkk4xQA6imRSpKgeJ1dG5DKcg/jT6ACiiigAqK5EhgkELBZSp2E9AccZ/GpaCMigD839U1DxZ4J+Idzd3txd2niW1uC8szsSztnOTnhkYfgQa+0vgn8VdO+I2i4/d2uuW6j7XZ7vw8xPVD+h4PYlfjX8KdO+I2i8bLXXLZD9kvMf+Q39UP6HkdwfiHHiL4beNMDz9L1zTZfy/oyMPwINAH6V9a8w/aW/wCSJ+J/+ucX/o5K0/g347Xx/wCBrfWntxa3Cu0F1GD8gkXGSpP8JBB56dO1c78S/i18NYtPv9C1/U01OK4Robi1skM3HpuX5QQffIIoA+bf2Thj41aX/wBe9z/6KNfeFfJHwq8Z/BfwPrk1/pj+IEvJVMS3OowCQQoTyFCdM8c4Jr6c8MeKdE8U2H2vw9qlrqEA4YwvkqfRl6qfqBQBqX13BY2k1zdzRw28KF5JZG2qijkknsK+Jf2gfjTceNbuTRvD0skHhyFsFhlWvWH8Teiei/ifQXP2nPitqGv+IL/wppzPbaNp85hnAOGupVPJb/ZB6D8T2wz9nn4KS+MLiLxB4mieLw9G2Yojw16wPT2j9T36DuaAPTf2NdP1628K6rc6l5yaJcyobBJScEgMJHQHop+UehI9q+i6htLeK1gjht41ihiUIkaKFVVHAAA6AVNQAUUUUAFFc74x8aeH/BttDP4l1S3sI5mKxiTJZyOuFAJOPXFcn/wvn4bf9DND/wCA83/xFAHp1cH8S/hh4a8fx276/byrcWwIjurdxHIq91JwQV74I4rN/wCF8fDc9PE0P/gPL/8AE1n/ABx8d2sPwQ1PWfDt/Hcx6gi2dtcwPkfvDtYg9iFDe4NAHzX8VPiHb29m3gj4es9h4RsnZHkjc+Zfvn5ndupUnoO/U8YA8eJzQTk0lAH2d+y54Y0LXvg+v9s6Pp18Wvp1LXFujtj5eMkZqXxt8Ep/Dl0fE/wiup9J1m2y509ZC0VwvdFz6/3TlT7Vp/sgf8kgj/6/5/8A2WvbuooA+cPAXhLwH8Zbh/FOqabcWviG3mCavpyTFImnH8TJjOGx6joQeQc/RVtbw20EcNvGkUMahERF2qqjgAAdAK8H1C3XwN+0/pdxZfutO8XWrx3Ea8L565+bHqSFP/Am9a9E8TfFfwV4Y1R9N1zxBbW99GBvhCvIyZ7NtBwfY80AdzRXmP8Awvn4bf8AQzQ/+A83/wARU9h8bfh5f3kVtbeJrXzpWCJ5kckaknp8zKAPxoA9HopFORkc/SigDwD9pj4S6/491HStV8NvDNLbQG2ktZZRHxu3B1J474I9hXh3/DOPxG/6Bdp/4HRf41940UAfB4/Zx+I2f+QXaf8AgdF/jXc/ED4dan4I/ZjbT9SnWa8TV47+4WJiyQhgU2g9+q5Pqa+t6xPGeg2vinwtqmiX3EF9A0JYdVJ6MPcHB/CgD8xzSVteL/Duo+FfEN7o+sQmK8tZCjZ6MOzL6qRyD71i0Afc37IH/JII/wDr/n/9lr27NeI/sgf8kfj/AOv+f/2WvVfFviTS/CuhXOra3dpa2cAyWbqx7Ko/iY9gKAPIvi641D4+/CzTbf5p7eSW8kA/hTIOT/37avL/AIn/ALPnjPUPHGsajoaW2oWN9cvdJJJcrG67zuKsGxyCcZHbFel/Auw1Dxn411j4o69btbx3am00iBx/q4BwW/IYz3Jc172PagD4O/4Zx+I3/QLtP/A6L/GrFj+zZ8QZruKK4tLG1hdgHme8Rgg7nC5J+gr7pooApaNZf2dpFlZeY8v2aBIfMf7z7VC5PucZoq6KKACiimyOERmYhVAySegFAEV9dwWNpNc3c0cFvChkklkbaqKOSSewr4x+Nfx81XX9Zax8F391pujW7YFxAxjlum/vE9VX0H4n0FL9oP4zXHje9l0TQZHh8OQvgkHDXjA/eb/Y9F/E9sWv2efgpL4wuIvEHiaJ4vD0bZiiPytesPT0jB6nv0Hc0AejeDPBLfGv4QWF74286LXYZJYrLVwg82SEEbS/99c7h74yD6+QeK/2d/HeiXD/AGGwj1i1B+WaykGSPdGIYH6Zr7rtbeK1t44LeNIoYlCJGi7VVQMAADoK4z42a/e+GPhf4g1fSnEd9BCBDIRnYzOq7h7jdke9AHz78Mbv4x+EPCw8N+H/AAPtBmeX7VfRFSpbGerquBiu40P4NeIvFusQa38Y9cOo+Sd0WlW7/uU9mIwAPUKOe5rzz9lvx/4m1H4mrpGq6xeajY30Mzul3K0u11XcGUnoeCOOOa+xu1AHw78W/iR448O/FTUrWz1K70mz0yfyrKxh+SAQLjZ8nRgy4PPrX0r8FPitp3xG0b+C11y2Ufa7PP8A5ET1Q/mOh7Enxr+FOnfEfRv4LXXLZT9kvMf+Q5PVD+YPI7g/EP8AxUfw28af8t9L1vTZfy/oyMPwINAH6Vg5orzf4I/E20+JPhxrgRi21S02x3tuPuqxBw6f7LYPuMEe59IoAKKKKACmTRrNE8cihkdSrA9weCKfRQB86aZ+y7odt4t+3Xeqz3WipJ5iaeYgrEZyEaTPK/QAkV9C2ttFa28cEEaRQxqEjjRQqooGAAB0AqaigArzD9pb/kifif8A65xf+jkr0+vOP2iLO4vvg34ngs4Xmm8hJNiDJKrIrMcewBNAHyr+yb/yWrS/+ve5/wDRRr7xr4W/ZHsrib4xWlxDEzw21rO8zqMhAUKjJ9yQK+6aAA815v8AGD4T6R8SdPiW6Y2WqW4xb30aBmVf7jDjcvtng9O9ekUUAeZ/BT4U2fwx069jivXv769ZTPcMmwALnaqrk4HJOc85r0yiigAooooAKKKKADvRRRQAUjAEEHkUUUAU9P0uw04S/wBn2VraeY25/IhWPefU4Ayau0UUAFFFFABRRRQAUUUUAf/Zqf0IoA/UIHL/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKiFxEZTEJEMqjJQMMgeuKlHNABXO/ELxPD4N8Harr9zC06WUW8RKcF2JCque2SRzXRV5h+0t/yRPxP/1zi/8ARyUAcd8D/jzd+PfF76DrGl2trLLE8ttLasxHyDJVg3tk5Hp0r6Ar4O/ZN/5LVpf/AF73P/oo1940AFFFNd1RSzEBQMkk4xQA6imRSpKgeJ1dG5DKcg/jT6ACiiigAqK5EhgkELBZSp2E9AccZ/GpaCMigD839U1DxZ4J+Idzd3txd2niW1uC8szsSztnOTnhkYfgQa+0vgn8VdO+I2i4/d2uuW6j7XZ7vw8xPVD+h4PYlfjX8KdO+I2i8bLXXLZD9kvMf+Q39UP6HkdwfiHHiL4beNMDz9L1zTZfy/oyMPwINAH6V9a8w/aW/wCSJ+J/+ucX/o5K0/g347Xx/wCBrfWntxa3Cu0F1GD8gkXGSpP8JBB56dO1c78S/i18NYtPv9C1/U01OK4Robi1skM3HpuX5QQffIIoA+bf2Thj41aX/wBe9z/6KNfeFfJHwq8Z/BfwPrk1/pj+IEvJVMS3OowCQQoTyFCdM8c4Jr6c8MeKdE8U2H2vw9qlrqEA4YwvkqfRl6qfqBQBqX13BY2k1zdzRw28KF5JZG2qijkknsK+Jf2gfjTceNbuTRvD0skHhyFsFhlWvWH8Teiei/ifQXP2nPitqGv+IL/wppzPbaNp85hnAOGupVPJb/ZB6D8T2wz9nn4KS+MLiLxB4mieLw9G2Yojw16wPT2j9T36DuaAPTf2NdP1628K6rc6l5yaJcyobBJScEgMJHQHop+UehI9q+i6htLeK1gjht41ihiUIkaKFVVHAAA6AVNQAUUUUAFFc74x8aeH/BttDP4l1S3sI5mKxiTJZyOuFAJOPXFcn/wvn4bf9DND/wCA83/xFAHp1cH8S/hh4a8fx276/byrcWwIjurdxHIq91JwQV74I4rN/wCF8fDc9PE0P/gPL/8AE1n/ABx8d2sPwQ1PWfDt/Hcx6gi2dtcwPkfvDtYg9iFDe4NAHzX8VPiHb29m3gj4es9h4RsnZHkjc+Zfvn5ndupUnoO/U8YA8eJzQTk0lAH2d+y54Y0LXvg+v9s6Pp18Wvp1LXFujtj5eMkZqXxt8Ep/Dl0fE/wiup9J1m2y509ZC0VwvdFz6/3TlT7Vp/sgf8kgj/6/5/8A2WvbuooA+cPAXhLwH8Zbh/FOqabcWviG3mCavpyTFImnH8TJjOGx6joQeQc/RVtbw20EcNvGkUMahERF2qqjgAAdAK8H1C3XwN+0/pdxZfutO8XWrx3Ea8L565+bHqSFP/Am9a9E8TfFfwV4Y1R9N1zxBbW99GBvhCvIyZ7NtBwfY80AdzRXmP8Awvn4bf8AQzQ/+A83/wARU9h8bfh5f3kVtbeJrXzpWCJ5kckaknp8zKAPxoA9HopFORkc/SigDwD9pj4S6/491HStV8NvDNLbQG2ktZZRHxu3B1J474I9hXh3/DOPxG/6Bdp/4HRf41940UAfB4/Zx+I2f+QXaf8AgdF/jXc/ED4dan4I/ZjbT9SnWa8TV47+4WJiyQhgU2g9+q5Pqa+t6xPGeg2vinwtqmiX3EF9A0JYdVJ6MPcHB/CgD8xzSVteL/Duo+FfEN7o+sQmK8tZCjZ6MOzL6qRyD71i0Afc37IH/JII/wDr/n/9lr27NeI/sgf8kfj/AOv+f/2WvVfFviTS/CuhXOra3dpa2cAyWbqx7Ko/iY9gKAPIvi641D4+/CzTbf5p7eSW8kA/hTIOT/37avL/AIn/ALPnjPUPHGsajoaW2oWN9cvdJJJcrG67zuKsGxyCcZHbFel/Auw1Dxn411j4o69btbx3am00iBx/q4BwW/IYz3Jc172PagD4O/4Zx+I3/QLtP/A6L/GrFj+zZ8QZruKK4tLG1hdgHme8Rgg7nC5J+gr7pooApaNZf2dpFlZeY8v2aBIfMf7z7VC5PucZoq6KKACiimyOERmYhVAySegFAEV9dwWNpNc3c0cFvChkklkbaqKOSSewr4x+Nfx81XX9Zax8F391pujW7YFxAxjlum/vE9VX0H4n0FL9oP4zXHje9l0TQZHh8OQvgkHDXjA/eb/Y9F/E9sWv2efgpL4wuIvEHiaJ4vD0bZiiPytesPT0jB6nv0Hc0AejeDPBLfGv4QWF74286LXYZJYrLVwg82SEEbS/99c7h74yD6+QeK/2d/HeiXD/AGGwj1i1B+WaykGSPdGIYH6Zr7rtbeK1t44LeNIoYlCJGi7VVQMAADoK4z42a/e+GPhf4g1fSnEd9BCBDIRnYzOq7h7jdke9AHz78Mbv4x+EPCw8N+H/AAPtBmeX7VfRFSpbGerquBiu40P4NeIvFusQa38Y9cOo+Sd0WlW7/uU9mIwAPUKOe5rzz9lvx/4m1H4mrpGq6xeajY30Mzul3K0u11XcGUnoeCOOOa+xu1AHw78W/iR448O/FTUrWz1K70mz0yfyrKxh+SAQLjZ8nRgy4PPrX0r8FPitp3xG0b+C11y2Ufa7PP8A5ET1Q/mOh7Enxr+FOnfEfRv4LXXLZT9kvMf+Q5PVD+YPI7g/EP8AxUfw28af8t9L1vTZfy/oyMPwINAH6Vg5orzf4I/E20+JPhxrgRi21S02x3tuPuqxBw6f7LYPuMEe59IoAKKKKACmTRrNE8cihkdSrA9weCKfRQB86aZ+y7odt4t+3Xeqz3WipJ5iaeYgrEZyEaTPK/QAkV9C2ttFa28cEEaRQxqEjjRQqooGAAB0AqaigArzD9pb/kifif8A65xf+jkr0+vOP2iLO4vvg34ngs4Xmm8hJNiDJKrIrMcewBNAHyr+yb/yWrS/+ve5/wDRRr7xr4W/ZHsrib4xWlxDEzw21rO8zqMhAUKjJ9yQK+6aAA815v8AGD4T6R8SdPiW6Y2WqW4xb30aBmVf7jDjcvtng9O9ekUUAeZ/BT4U2fwx069jivXv769ZTPcMmwALnaqrk4HJOc85r0yiigAooooAKKKKADvRRRQAUjAEEHkUUUAU9P0uw04S/wBn2VraeY25/IhWPefU4Ayau0UUAFFFFABRRRQAUUUUAf/Z">""" #conn.send(AutoOff) #st=st+AutoOff #del AutoOff if mode_last==3: st=st+"""<img src="data:image/jpeg;base64,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">""" #conn.send(AutoOn) #st=st+AutoOn #del AutoOn #conn.send(html2) st=st+html2 #for i in range(1,3,1): # try: # with open(logList[len(logList)-i],'r') as file: # st=st+file.read() # except: # break with open(logList[len(logList)-1],'r') as file: st=st+file.read() if len(logList)>1: with open(logList[len(logList)-2],'r') as file: st=st+file.read() #if len(logList)>2: # with open(logList[len(logList)-3],'r') as file: # st=st+file.read() st=st+html3 try: conn.sendall(st) except OSError: reset() del st conn.close() # if __name__ == "__main__": # print("main txt")