braga_firmware/flash.sh
2026-03-08 16:03:33 +04:00

67 lines
2.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
if read -p "Подключите плату к USB и нажмите ENTER: " start; then
line=$(dmesg | grep 'ttyUSB' | tail -1)
if [[ $line == *"attached"* ]]; then
port=`echo "$line" | sed 's/.*ttyUSB\(.\)$/\1/'`
else
printf '\033[91mУстройство не найдено!\033[0m\n'
exit 0
fi
printf '\033[92mУстройство найдено на порту: '$port'\033[0m\n'
fi
if read -p "Для начала прошивки нажмите ENTER: " start; then
cd Firmware
firmware=($(find -name '*.bin'))
if [[ $firmware == *"nodemcu"* ]]; then
printf '\033[92mНайдена прошивка: '$firmware'\033[0m\n\n'
printf '\n\033[92mСтираем существующую прошивку:\033[0m\n\n'
python3 -m esptool --port /dev/ttyUSB$port erase_flash
if [ $? -ne 0 ]; then
printf '\033[91mОшибка устройства!\033[0m\n'
exit 0
fi
printf '\n\033[92mЗаливаем прошивку nodemcu для Lua:\033[0m\n\n'
python3 -m esptool --port /dev/ttyUSB$port write_flash -fm dio 0x00000 $firmware
if [ $? -ne 0 ]; then
printf '\033[91mОшибка устройства!\033[0m\n'
exit 0
fi
else
printf '\033[91mПрошивка не найдена!\033[0m\n'
exit 0
fi
fi
cd ../
if read -p "Для начала заливки скетча нажмите ENTER: " start; then
echo 'Заливаем Lua скетч:'
python2 luatool.py --port /dev/ttyUSB$port --src init.lua --dest init.lua --verbose --restart --baud 115200
if [ $? -ne 0 ]; then
printf '\033[91mОшибка заливки скетча!\033[0m\n'
exit 0
fi
fi
printf '\n\033[92mЖдем перезагрузки устройства:\033[0m\n\n'
sleep 5
mac=$(python3 -m esptool --port /dev/ttyUSB$port read_mac)
if [ $? -ne 0 ]; then
printf '\033[91mОшибка чтения из устройства!\033[0m\n'
exit 0
fi
guid=`echo "$mac" | grep -m 1 MAC | sed 's/\://g' | sed 's/MAC //g'`
echo 'GUID устройства: '$guid
first_byte=${guid:0:2}
new_byte=$((16#$first_byte + 2 | bc))
new_first_byte=`echo "ibase=10; obase=16; ${new_byte}" | bc | sed 's/[A-Z]/\L&/g'`
if (( ${#new_first_byte} == 1 )); then
new_first_byte='0'$new_first_byte
fi
guid=`echo "$guid" | sed 's/^'$first_byte'/'$new_first_byte'/'`
printf '\033[92mОпределен guid устройства: '$guid' \033[0m\n'
printf '\033[92mУстановка успешно завершена, ID устройства: \033[0m'$guid'\n'