86 lines
No EOL
3 KiB
Python
86 lines
No EOL
3 KiB
Python
import sys
|
|
import os
|
|
import logging
|
|
|
|
from os.path import expanduser
|
|
|
|
sys.path.append(expanduser("~") + '/.platformio/packages/framework-arduinoespressif32/tools')
|
|
|
|
from zeroconf import ServiceBrowser, ServiceListener, Zeroconf
|
|
from requests import request
|
|
import espota
|
|
import argparse
|
|
import random
|
|
import subprocess
|
|
|
|
FLASH = 0
|
|
SPIFFS = 100
|
|
|
|
PROGRESS = True
|
|
TIMEOUT = 10
|
|
|
|
revision = (
|
|
subprocess.check_output(["git", "rev-parse", "HEAD"])
|
|
.strip()
|
|
.decode("utf-8")
|
|
)
|
|
|
|
class Listener(ServiceListener):
|
|
|
|
def update_service(self, zc: Zeroconf, type_: str, name: str) -> None:
|
|
print(f"Service {name} updated")
|
|
|
|
def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None:
|
|
print(f"Service {name} removed")
|
|
|
|
def add_service(self, zc: Zeroconf, type_: str, name: str) -> None:
|
|
global PROGRESS
|
|
PROGRESS = True
|
|
espota.PROGRESS = True
|
|
global TIMEOUT
|
|
TIMEOUT = 10
|
|
espota.TIMEOUT = 10
|
|
info = zc.get_service_info(type_, name)
|
|
if (name.startswith('btclock-')):
|
|
print(f"Service {name} added")
|
|
print("Address: " + str(info.parsed_addresses()))
|
|
# python ~/.platformio/packages/framework-arduinoespressif32/tools/espota.py -i 192.168.20.231 -f .pio/build/lolin_s3_mini_qr/firmware.bin -r
|
|
#arguments = [f"-i {str()} -f -r"]
|
|
namespace = argparse.Namespace(
|
|
esp_ip=info.parsed_addresses()[0],
|
|
image=f"{os.getcwd()}/.pio/build/lolin_s3_mini_qr/firmware.bin",
|
|
littlefs=f"{os.getcwd()}/.pio/build/lolin_s3_mini_qr/littlefs.bin",
|
|
progress=True
|
|
)
|
|
if (str(info.properties.get(b"version").decode())) != "3.0":
|
|
print("Too old version")
|
|
return
|
|
|
|
if (str(info.properties.get(b"rev").decode())) == revision:
|
|
print("Newest version, skipping but updating LittleFS")
|
|
espota.serve(namespace.esp_ip, "0.0.0.0", 3232, random.randint(10000,60000), "", namespace.littlefs, SPIFFS)
|
|
|
|
else:
|
|
print("Different version, going to update")
|
|
#espota.serve(namespace.esp_ip, "0.0.0.0", 3232, random.randint(10000,60000), "", namespace.littlefs, SPIFFS)
|
|
|
|
#espota.serve(namespace.esp_ip, "0.0.0.0", 3232, random.randint(10000,60000), "", namespace.image, FLASH)
|
|
#print(arguments)
|
|
|
|
#logging.basicConfig(level = logging.DEBUG, format = '%(asctime)-8s [%(levelname)s]: %(message)s', datefmt = '%H:%M:%S')
|
|
|
|
#espota.serve(namespace.esp_ip, "0.0.0.0", 3232, random.randint(10000,60000), "", namespace.image, FLASH)
|
|
#address = "http://" + info.parsed_addresses()[0]+"/api/restart"
|
|
#response = request("GET", address)
|
|
#espota.main(namespace)
|
|
|
|
zconf = Zeroconf()
|
|
|
|
serviceListener = Listener()
|
|
|
|
browser = ServiceBrowser(zconf, "_http._tcp.local.", serviceListener)
|
|
|
|
try:
|
|
input("Press enter to exit...\n\n")
|
|
finally:
|
|
zconf.close() |