summaryrefslogtreecommitdiff
path: root/tools/mcuota.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mcuota.py')
-rwxr-xr-xtools/mcuota.py98
1 files changed, 0 insertions, 98 deletions
diff --git a/tools/mcuota.py b/tools/mcuota.py
deleted file mode 100755
index 46968a8..0000000
--- a/tools/mcuota.py
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env python3
-import sys
-import os.path
-sys.path.extend([
- os.path.realpath(
- os.path.join(os.path.dirname(os.path.join(__file__)), '..')
- )
-])
-
-from time import sleep
-from argparse import ArgumentParser
-from src.home.config import config
-from src.home.mqtt import MqttRelay
-from src.home.mqtt.esp import MqttEspDevice
-
-
-def guess_filename(product: str, build_target: str):
- return os.path.join(
- products_dir,
- product,
- '.pio',
- 'build',
- build_target,
- 'firmware.bin'
- )
-
-
-def relayctl_publish_ota(filename: str,
- device_id: str,
- home_secret: str,
- qos: int):
- global stop
-
- def published():
- global stop
- stop = True
-
- mqtt_relay = MqttRelay(devices=MqttEspDevice(id=device_id, secret=home_secret))
- mqtt_relay.configure_tls()
- mqtt_relay.connect_and_loop(loop_forever=False)
- mqtt_relay.push_ota(device_id, filename, published, qos)
- while not stop:
- sleep(0.1)
- mqtt_relay.disconnect()
-
-
-stop = False
-products = {
- 'relayctl': {
- 'build_target': 'esp12e',
- 'callback': relayctl_publish_ota
- }
-}
-
-products_dir = os.path.join(
- os.path.dirname(__file__),
- '..',
- 'platformio'
-)
-
-
-def main():
- parser = ArgumentParser()
- parser.add_argument('--filename', type=str)
- parser.add_argument('--device-id', type=str, required=True)
- parser.add_argument('--product', type=str, required=True)
- parser.add_argument('--qos', type=int, default=1)
-
- config.load('mcuota_push', parser=parser)
- arg = parser.parse_args()
-
- if arg.product not in products:
- raise ValueError(f'invalid product: \'{arg.product}\' not found')
-
- if arg.device_id not in config['mqtt']['home_secrets']:
- raise ValueError(f'home_secret for home {arg.device_id} not found in config!')
-
- filename = arg.filename if arg.filename else guess_filename(arg.product, products[arg.product]['build_target'])
- if not os.path.exists(filename):
- raise OSError(f'file \'{filename}\' does not exists')
-
- print('Please confirm following OTA params.')
- print('')
- print(f' Device ID: {arg.device_id}')
- print(f' Product: {arg.product}')
- print(f'Firmware file: {filename}')
- print('')
- input('Press any key to continue or Ctrl+C to abort.')
-
- products[arg.product]['callback'](filename, arg.device_id, config['mqtt']['home_secrets'][arg.device_id], qos=arg.qos)
-
-
-if __name__ == '__main__':
- try:
- main()
- except Exception as e:
- print(str(e), file=sys.stderr)
- sys.exit(1)