aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-05-31 09:22:00 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-06-10 02:07:23 +0300
commitf29e139cbb7e4a4d539cba6e894ef4a6acd312d6 (patch)
tree6246f126325c5c36fb573134a05f2771cd747966 /tools
parent3e3753d726f8a02d98368f20f77dd9fa739e3d80 (diff)
WIP: big refactoring
Diffstat (limited to 'tools')
-rwxr-xr-xtools/mcuota.py98
-rwxr-xr-xtools/mcuota.sh14
2 files changed, 0 insertions, 112 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)
diff --git a/tools/mcuota.sh b/tools/mcuota.sh
deleted file mode 100755
index b2e7910..0000000
--- a/tools/mcuota.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-
-. "$DIR/lib.bash"
-
-if [ -d "$DIR/../venv" ]; then
- echoinfo "activating python venv"
- . "$DIR/../venv/bin/activate"
-else
- echowarn "python venv not found"
-fi
-
-"$DIR/mcuota.py" "$@" \ No newline at end of file