first commit
Some checks are pending
Tasmota Docker test / build (ubuntu-20.04, 3.10) (push) Waiting to run
Tasmota Docker test / build (ubuntu-20.04, 3.11) (push) Waiting to run
Tasmota Docker test / build (ubuntu-22.04, 3.10) (push) Waiting to run
Tasmota Docker test / build (ubuntu-22.04, 3.11) (push) Waiting to run
Publish Docker / build (push) Waiting to run

This commit is contained in:
Lukas Endigo 2024-10-29 09:28:22 +05:00
commit 3a1224ff29
12 changed files with 770 additions and 0 deletions

26
.github/workflows/docker-image.yml vendored Normal file
View File

@ -0,0 +1,26 @@
name: Tasmota Docker test
on:
push:
workflow_dispatch: # Manually start a workflow
jobs:
build:
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, ubuntu-20.04]
python-version: ["3.10", "3.11"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Docker container
run: docker build -t docker-tasmota .
- name: Clone Tasmota repo
run: git clone https://github.com/arendst/Tasmota.git
- name: Build a firmware
run: bash ./compile.sh tasmota tasmota32

16
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Publish Docker
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@v5
with:
name: blakadder/docker-tasmota
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
platforms: linux/amd64,linux/arm64

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
Tasmota/
*.log
user_config_override.h
*.bin
*.bin.gz

30
Dockerfile Normal file
View File

@ -0,0 +1,30 @@
FROM python:latest
LABEL description="Docker Container with a complete build environment for Tasmota using PlatformIO" \
version="13.0" \
maintainer="blakadder_" \
organization="https://github.com/tasmota"
# Install platformio.
RUN pip install --upgrade pip &&\
pip install --upgrade platformio
# Init project
COPY init_pio_tasmota /init_pio_tasmota
# Install project dependencies using a init project.
RUN cd /init_pio_tasmota &&\
platformio upgrade &&\
pio pkg update &&\
pio run &&\
cd ../ &&\
rm -fr init_pio_tasmota &&\
cp -r /root/.platformio / &&\
mkdir /.cache /.local &&\
chmod -R 777 /.platformio /usr/local/lib /.cache /.local
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]

186
README.md Normal file
View File

@ -0,0 +1,186 @@
# Docker-Tasmota
Быстрая настройка среды для сборки [Tasmota](https://github.com/arendst/Tasmota) с использованием Docker.
## le_compile.sh и compile.sh
Этот скрипт на bash облегчает процесс компиляции, избавляя от необходимости вводить длинные команды каждый раз.
le_compile.sh и compile.sh предназначен для запуска на Linux-системе с установленными Docker и Git. Если каких-то из них не хватает, скрипт выдаст предупреждение с инструкциями по установке.
При первом запуске скрипт загрузит последний контейнер blakadder/docker-tasmota (можно изменить скрипт для использования собственного контейнера), клонирует последнюю ветку разработки Tasmota (для клонирования последней стабильной версии установите `USE_STABLE=1` *?(работает только когда используете скрипт compile.sh) ) и скопирует файлы platformio_override.ini и user_config_override.h в папку Tasmota.
Запуск скрипта с указанием одного или нескольких имен сборок (как указано в platformio_tasmota_env.ini) в качестве параметров скомпилирует только эти сборки, независимо от платформы, указанной в platformio.ini или platformio_override.ini.
Новый вариант скрипта:
`./le_compile.sh -stable=1 -tasmota=v14.2.0 -bins=tasmota-ir`
компилирует tasmota-sensors.bin и португальскую версию Tasmota:
`./compile.sh tasmota-sensors tasmota-PT`
Если у вас есть файлы `user_config_override.h` или `platformio_override.ini` с пользовательскими настройками, поместите их в папку скрипта, и они будут использованы при следующем запуске.
Скрипт будет обновлять папку репозитория до актуальной версии при каждом запуске.
Чтобы проверить логи компиляции, используйте `tail -f docker-tasmota.log` или `cat docker-tasmota.log`.
## Вариант 1: Настройка готового Docker-контейнера с использованием le_compile.sh
1. Клонируйте этот репозиторий и перейдите в каталог, где он был клонирован (оригинальая версия: https://github.com/tasmota/docker-tasmota):
```
git clone https://mygit.lkaz.ru/lukas91/docker-Tasmota-platformio-esp8266-esp32
cd docker-tasmota
```
2. Обновите файлы `user_config_override.h` и/или `platformio_override.ini` с вашими настройками сборки.
3. Запустите le_compile.sh с нужным именем сборки, например:
```
./le_compile.sh -bins=tasmota
```
или
```
./compile.sh tasmota
```
При необходимости скрипт `le_compile.sh` установит контейнер и репозиторий Tasmota, если вы введете «yes», когда будет предложено.
5. По завершении компиляции скомпилированные бинарные файлы и архивы будут находиться в `Tasmota/build_output/firmware`, и их можно будет прошить на устройства.
Примечание: Чтобы обновить ранее установленный образ Docker с помощью скрипта `compile.sh`, выполните:
```
docker pull blakadder/docker-tasmota
```
## Вариант 2: Настройка Docker-контейнера с нуля
1. Клонируйте этот репозиторий и перейдите в каталог, где он был клонирован (оригинальая версия: https://github.com/tasmota/docker-tasmota):
```
git clone https://mygit.lkaz.ru/lukas91/docker-Tasmota-platformio-esp8266-esp32
cd docker-tasmota
```
2. Запустите следующую команду для сборки Docker-контейнера:
`docker build -t docker-tasmota .`
3. Перейдите в директорию, куда вы хотите клонировать репозиторий Tasmota:
```
git clone https://github.com/arendst/Tasmota.git
```
Если у вас есть файлы `user_config_override.h` или `platformio_override.ini` с пользовательскими настройками, поместите их в папку `Tasmota/tasmota`.
4. Из той же директории выполните команду для компиляции нужной сборки:
`docker run -ti --rm -v $(pwd)/Tasmota:/tasmota -u $UID:$GID docker-tasmota -e tasmota-PT`
> `-e <buildname>`, где <buildname> может быть любой из [сборок, указанных в platformio.ini](https://github.com/arendst/Tasmota/blob/063611314777d4dd9dc8c25905f19f8b25f510aa/platformio.ini#L18). Если сборка не указана, будет скомпилирована ***каждая***.
5. По завершении компиляции скомпилированные бинарные файлы и архивы будут находиться в `Tasmota/build_output/firmware` для прошивки на устройства.
## Переход на ветку, отличную от development
`cd Tasmota`
Просмотрите доступные ветки с помощью `git branch -a`.
Перейдите на ветку release с командой:
`git checkout release`
Соберите и запустите:
```docker
docker run -ti --rm \
-v $(pwd)/Tasmota:/tasmota \
-u $UID:$GID docker-tasmota
```
# ENG:
# Docker-Tasmota
Quick setup for building [Tasmota](https://github.com/arendst/Tasmota) using Docker.
## le_compile.sh and compile.sh
This bash script simplifies the compilation process, avoiding the need to type long commands every time.
le_compile.sh and compile.sh are designed to run on a Linux system with Docker and Git installed. If any are missing, the script will show a warning with installation instructions.
When run for the first time, the script will pull the latest blakadder/docker-tasmota container (you can modify the script to use your own container), clone the latest Tasmota development branch (for cloning the latest stable version, set `USE_STABLE=1` *?(only works when using the compile.sh script) ), and copy the platformio_override.ini and user_config_override.h files into the Tasmota folder.
Running the script with one or more build names (as listed in platformio_tasmota_env.ini) as parameters will compile only those builds, regardless of platformio.ini or platformio_override.ini.
New script variant:
`./le_compile.sh -stable=1 -tasmota=v14.2.0 -bins=tasmota-ir`
compiles the tasmota-sensors.bin and Portuguese version of Tasmota:
`./compile.sh tasmota-sensors tasmota-PT`
If you have `user_config_override.h` or `platformio_override.ini` files with custom settings, place them in the script folder, and they will be used on the next run.
The script will update the repository folder with the latest version every time it runs.
To check compilation logs, use `tail -f docker-tasmota.log` or `cat docker-tasmota.log`.
## Option 1: Setup the prebuilt Docker container using le_compile.sh
1. Clone this repository and go to the directory where it was cloned (original version: https://github.com/tasmota/docker-tasmota):
```
git clone https://mygit.lkaz.ru/lukas91/docker-Tasmota-platformio-esp8266-esp32
cd docker-tasmota
```
2. Update the `user_config_override.h` and/or `platformio_override.ini` files with your custom build settings.
3. Run le_compile.sh with the desired build name, for example:
```
./le_compile.sh -bins=tasmota
```
or
```
./compile.sh tasmota
```
If necessary, the `le_compile.sh` script will install the container and Tasmota repository if you type "yes" when prompted.
5. When compilation finishes, the compiled binaries and gzipped files will be in `Tasmota/build_output/firmware` and can be flashed to your devices.
Note: To update a previously installed Docker image with the `compile.sh` script, run:
```
docker pull blakadder/docker-tasmota
```
## Option 2: Setting up a Docker container from scratch
1. Clone this repository and go to the directory where it was cloned (original version: https://github.com/tasmota/docker-tasmota):
```
git clone https://mygit.lkaz.ru/lukas91/docker-Tasmota-platformio-esp8266-esp32
cd docker-tasmota
```
2. Run the following command to build the Docker container:
`docker build -t docker-tasmota .`
3. Go to the directory where you want to clone the Tasmota repository:
```
git clone https://github.com/arendst/Tasmota.git
```
If you have `user_config_override.h` or `platformio_override.ini` files with custom settings, place them under `Tasmota/tasmota`.
4. From the same directory, run the command to compile the desired build:
`docker run -ti --rm -v $(pwd)/Tasmota:/tasmota -u $UID:$GID docker-tasmota -e tasmota-PT`
> `-e <buildname>`, where <buildname> can be any of the [builds listed in platformio.ini](https://github.com/arendst/Tasmota/blob/063611314777d4dd9dc8c25905f19f8b25f510aa/platformio.ini#L18). If no build is specified, ***every*** build will be compiled.
5. When compilation finishes, the compiled binaries and gzipped files will be in `Tasmota/build_output/firmware` for flashing to devices.
## Switching to a branch other than development
`cd Tasmota`
View available branches with `git branch -a`.
Switch to the release branch with:
`git checkout release`
Build it and run:
```docker
docker run -ti --rm \
-v $(pwd)/Tasmota:/tasmota \
-u $UID:$GID docker-tasmota
```

134
compile.sh Executable file
View File

@ -0,0 +1,134 @@
#!/bin/bash
# Copy this bash script to a directory below /Tasmota and run from there
CHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
rundir=$(dirname $(readlink -f $0))
# use default docker-tasmota image from hub.docker.com
DOCKER_IMAGE=${DOCKER_IMAGE:="blakadder/docker-tasmota"}
# uncomment and change if you want to run a locally built image
# or set DOCKER_IMAGE as environment variable before starting this script
#DOCKER_IMAGE=docker-tasmota
# Set to `1=true` to use latest stable release tag
# Set to `0=false` to use `development` branch (default)
# USE_STABLE=${USE_STABLE:="0"}
USE_STABLE=1
TASMOTA_BRANCH="v14.2.0"
USE_VOLUME=${USE_VOLUME:="`pwd`/Tasmota"}
## Check whether Tasmota/ exists and fetch newest Tasmota version from development branch
if test -d "`pwd`/Tasmota"; then
cd Tasmota
git fetch https://github.com/arendst/Tasmota.git development
git fetch --all --tags
if [ "$USE_STABLE" = "1" ]; then
if [ -z "${TASMOTA_BRANCH}" ]; then
echo -e "Checking Tasmota GitHub for the most recent release version"
TASMOTA_BRANCH=$(wget -qO - https://api.github.com/repos/arendst/Tasmota/releases/latest | grep -oP 'tag_name"\s*:\s*"\K[^"]+')
else
echo -e "getting version \"${TASMOTA_BRANCH}\" from GitHub"
fi
git checkout --force $TASMOTA_BRANCH >/dev/null 2>&1
else
echo -e "Checking Tasmota GitHub for the most recent development version"
TASMOTA_BRANCH=development
git reset --hard origin/$TASMOTA_BRANCH > /dev/null 2>&1
git pull origin $TASMOTA_BRANCH > /dev/null 2>&1
fi
if [ -z "$TASMOTA_BRANCH" ]; then
echo -e "Failed to fetch/set Tasmota branch! Check internet connection and try again."
exit 1
fi
cd $rundir
echo -e "\nRunning Docker Tasmota on Tasmota version $TASMOTA_BRANCH\n"
# Check if docker installed
if [[ "$(type -t docker)" == "file" ]] ; then
## Display builds
if [ $# -eq 0 ]; then
## Check script dir for platformio_override.ini
if test -e "platformio_override.ini"; then
echo -e "Compiling builds defined in platformio_override.ini. Default file is overwritten.\n"
cp platformio_override.ini Tasmota/platformio_override.ini
else
echo -e "\e[31mCompiling ALL BUILDS!!!!\n\n\e[7mIf you wish to quit use ctrl+C\e[0m"
sleep 4
fi
else
## Display chosen builds
echo -e "Compiling builds:"
for build in "$@"
do
echo -e "$build"
sleep 1
done
echo -e "\n"
fi
## Check script dir for custom user_config_override.h
if test -e "user_config_override.h"; then
## new Tasmota builds have this enabled as default
## sed -i 's/^; *-DUSE_CONFIG_OVERRIDE/ -DUSE_CONFIG_OVERRIDE/' Tasmota/platformio.ini
cp user_config_override.h Tasmota/tasmota/user_config_override.h
echo -e "Using your user_config_override.h and overwriting the existing file\n"
fi
## Run container with provided arguments
echo -n "Compiling..."
test -t 1 && DOCKER_TTY="-it"
if [ $# -ne 0 ]; then
if [[ $@ == "tasmota"* ]]; then
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' $@) 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' $@) 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Finished! \tCompilation log in docker-tasmota.log\n"
else
echo -e "\\r\e[31mNot a valid build environment."
exit 1
fi
else
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Finished! \tCompilation log in docker-tasmota.log\n"
echo -e "Find your builds in $rundir/Tasmota/build_output/firmware\n"
fi
## After docker is completed copy firmware to script dir and rename to buildname
for build in "$@"
do
cp "$rundir"/Tasmota/build_output/firmware/"$build"* "$rundir"/
if test -e "$build".bin; then
echo -e "Completed! Your firmware is in $rundir/$build.bin\n"
else
echo -e "\e[31m\e[5mWARNING:\e[0m"
echo -e "Something went wrong while compiling $build. Check compilation log\n"
fi
done
else
echo -e "\nNo Docker detected. Please install docker:\n\n\tcurl -fsSL https://get.docker.com -o get-docker.sh\n\tsh get-docker.sh\n"
# fi
fi
else
if [[ "$(type -t git)" == "file" ]] ; then
echo -e "\nNo Tasmota Git repository found in directory.\nDo you wish to clone Tasmota GitHub repository to current directory?"
read -p "Enter to exit, "yes" to proceed: " answer
case ${answer:0:1} in
y|yes )
git clone https://github.com/arendst/Tasmota.git --branch development
bash $(basename $0) && exit
;;
* )
exit 1
;;
esac
else
echo -e "\nPlease install "git" to proceed:\n\n\tDebian/Ubuntu/Mint:\tsudo apt-get install git\n\tFedora:\t\t\tsu -c 'yum install git'\n\topenSUSE:\t\tsudo zypper in git\n"
exit 1
fi
fi

14
entrypoint.sh Normal file
View File

@ -0,0 +1,14 @@
# Оригинальный entrypoint.sh
#!/bin/bash
TASMOTA_VOLUME='/tasmota'
if [ -d $TASMOTA_VOLUME ]; then
cd $TASMOTA_VOLUME
echo "Compiling Tasmota ..."
echo "Arguments received by entrypoint: $@"
pio run "$@"
echo "All done! Find your builds in Tasmota/build_output/firmware/"
else
echo ">>> NO TASMOTA VOLUME MOUNTED --> EXITING"
exit 0
fi

View File

@ -0,0 +1,6 @@
; env used ONLY to install core dependencies on container build
[env:esp8266]
platform=https://github.com/tasmota/platform-espressif8266/releases/download/2024.01.01/platform-espressif8266.zip
board=esp01_1m
framework=arduino

View File

@ -0,0 +1,3 @@
#include <Arduino.h>
void setup() {}
void loop() {}

161
le_compile.sh Executable file
View File

@ -0,0 +1,161 @@
#!/bin/bash
# Начальные переменные
CHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
rundir=$(dirname $(readlink -f $0))
DOCKER_IMAGE=${DOCKER_IMAGE:="blakadder/docker-tasmota"}
USE_STABLE=0 # По умолчанию development
TASMOTA_BRANCH="development" # По умолчанию ветка разработки
USE_VOLUME=${USE_VOLUME:="`pwd`/Tasmota"}
# Функция завершения, вызываемая при прерывании
cleanup() {
echo -e "\nСкрипт был прерван пользователем. Завершение..."
exit 1
}
# Перехват сигнала SIGINT для обработки прерывания
trap cleanup SIGINT
# Парсинг аргументов командной строки
for arg in "$@"
do
case $arg in
-stable=*)
USE_STABLE="${arg#*=}"
shift
;;
-tasmota=*)
TASMOTA_BRANCH="${arg#*=}"
shift
;;
-bins=*)
BIN_FILES="${arg#*=}"
shift
;;
*)
echo "Неизвестный параметр: $arg"
exit 1
;;
esac
done
## Проверка наличия каталога Tasmota и обновление
if test -d "`pwd`/Tasmota"; then
cd Tasmota
git fetch https://github.com/arendst/Tasmota.git development
git fetch --all --tags
# Проверка на стабильную версию или ветку разработки
if [ "$USE_STABLE" = "1" ]; then
if [ -z "${TASMOTA_BRANCH}" ]; then
echo -e "Проверка последней стабильной версии на GitHub"
TASMOTA_BRANCH=$(wget -qO - https://api.github.com/repos/arendst/Tasmota/releases/latest | grep -oP 'tag_name"\s*:\s*"\K[^"]+')
else
echo -e "Используется версия \"${TASMOTA_BRANCH}\""
fi
git checkout --force $TASMOTA_BRANCH >/dev/null 2>&1
else
echo -e "Используется версия разработки"
TASMOTA_BRANCH="development"
git reset --hard origin/$TASMOTA_BRANCH > /dev/null 2>&1
git pull origin $TASMOTA_BRANCH > /dev/null 2>&1
fi
if [ -z "$TASMOTA_BRANCH" ]; then
echo -e "Ошибка при получении ветки Tasmota. Проверьте подключение к интернету и повторите попытку."
exit 1
fi
cd $rundir
echo -e "\nЗапуск Docker Tasmota на версии $TASMOTA_BRANCH\n"
# Проверка наличия Docker
if [[ "$(type -t docker)" == "file" ]] ; then
## Проверка и копирование platformio_override.ini
if test -e "platformio_override.ini"; then
echo -e "Используется platformio_override.ini для определения сборок."
cp platformio_override.ini Tasmota/platformio_override.ini
fi
## Проверка и копирование user_config_override.h
if test -e "user_config_override.h"; then
echo -e "Используется пользовательская конфигурация user_config_override.h."
cp user_config_override.h Tasmota/tasmota/user_config_override.h
fi
## Компиляция указанных сборок
if [ -n "$BIN_FILES" ]; then
IFS=',' read -r -a builds <<< "$BIN_FILES"
echo -e "Компиляция следующих сборок:"
for build in "${builds[@]}"
do
echo -e "$build"
sleep 1
done
echo -e "\n"
else
# Если сборки не указаны, по умолчанию компилируем все
echo -e "\e[31mКомпиляция ВСЕХ СБОРОК!!!!\n\n\e[7mДля выхода используйте ctrl+C\e[0m"
sleep 4
fi
## Запуск контейнера Docker с компиляцией
echo -n "Компиляция..."
test -t 1 && DOCKER_TTY="-it"
if [ -n "$BIN_FILES" ]; then
if [[ "${builds[0]}" == "tasmota"* ]]; then
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
else
echo -e "\\r\e[31mНедействительная сборочная среда."
exit 1
fi
else
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
echo -e "Сборки находятся в $rundir/Tasmota/build_output/firmware\n"
fi
## Копирование прошивки после завершения Docker
for build in "${builds[@]}"
do
cp "$rundir"/Tasmota/build_output/firmware/"$build"* "$rundir"/
if test -e "$build".bin; then
echo -e "Завершено! Прошивка доступна в $rundir/$build.bin\n"
else
echo -e "\e[31m\e[5mПРЕДУПРЕЖДЕНИЕ:\e[0m"
echo -e "Произошла ошибка при компиляции $build. Проверьте лог компиляции\n"
fi
done
else
echo -e "\nDocker не найден. Установите его с помощью:\n\n\tcurl -fsSL https://get.docker.com -o get-docker.sh\n\tsh get-docker.sh\n"
fi
else
# Клонирование репозитория Tasmota, если каталог отсутствует
if [[ "$(type -t git)" == "file" ]] ; then
echo -e "\nРепозиторий Tasmota не найден в текущем каталоге.\nКлонировать его с GitHub в текущий каталог?"
read -p "Нажмите Enter для выхода или \"yes\" для продолжения: " answer
case ${answer:0:1} in
y|Y )
git clone https://github.com/arendst/Tasmota.git --branch development
bash $(basename $0) && exit
;;
* )
exit 1
;;
esac
else
echo -e "\nУстановите \"git\" для продолжения:\n\n\tDebian/Ubuntu/Mint:\tsudo apt-get install git\n\tFedora:\t\t\tsu -c 'yum install git'\n\topenSUSE:\t\tsudo zypper in git\n"
exit 1
fi
fi

139
le_compile.sh2 Executable file
View File

@ -0,0 +1,139 @@
#!/bin/bash
# Начальные переменные
CHECK_MARK="\033[0;32m\xE2\x9C\x94\033[0m"
rundir=$(dirname $(readlink -f $0))
DOCKER_IMAGE=${DOCKER_IMAGE:="blakadder/docker-tasmota"}
USE_STABLE=0 # По умолчанию development
TASMOTA_BRANCH="development" # По умолчанию ветка разработки
USE_VOLUME=${USE_VOLUME:="`pwd`/Tasmota"}
# Парсинг аргументов командной строки
for arg in "$@"
do
case $arg in
-stable=*)
USE_STABLE="${arg#*=}"
shift
;;
-tasmota=*)
TASMOTA_BRANCH="${arg#*=}"
shift
;;
-bins=*)
BIN_FILES="${arg#*=}"
shift
;;
*)
echo "Неизвестный параметр: $arg"
exit 1
;;
esac
done
## Проверка наличия каталога Tasmota и обновление
if test -d "`pwd`/Tasmota"; then
cd Tasmota
git fetch https://github.com/arendst/Tasmota.git development
git fetch --all --tags
# Проверка на стабильную версию или ветку разработки
if [ "$USE_STABLE" = "1" ]; then
if [ -z "${TASMOTA_BRANCH}" ]; then
echo -e "Проверка последней стабильной версии на GitHub"
TASMOTA_BRANCH=$(wget -qO - https://api.github.com/repos/arendst/Tasmota/releases/latest | grep -oP 'tag_name"\s*:\s*"\K[^"]+')
else
echo -e "Используется версия \"${TASMOTA_BRANCH}\""
fi
git checkout --force $TASMOTA_BRANCH >/dev/null 2>&1
else
echo -e "Используется версия разработки"
TASMOTA_BRANCH="development"
git reset --hard origin/$TASMOTA_BRANCH > /dev/null 2>&1
git pull origin $TASMOTA_BRANCH > /dev/null 2>&1
fi
if [ -z "$TASMOTA_BRANCH" ]; then
echo -e "Ошибка при получении ветки Tasmota. Проверьте подключение к интернету и повторите попытку."
exit 1
fi
cd $rundir
echo -e "\nЗапуск Docker Tasmota на версии $TASMOTA_BRANCH\n"
# Проверка наличия Docker
if [[ "$(type -t docker)" == "file" ]] ; then
## Компиляция указанных сборок
if [ -n "$BIN_FILES" ]; then
IFS=',' read -r -a builds <<< "$BIN_FILES"
echo -e "Компиляция следующих сборок:"
for build in "${builds[@]}"
do
echo -e "$build"
sleep 1
done
echo -e "\n"
else
# Если сборки не указаны, по умолчанию компилируем все
echo -e "\e[31mКомпиляция ВСЕХ СБОРОК!!!!\n\n\e[7mДля выхода используйте ctrl+C\e[0m"
sleep 4
fi
## Запуск контейнера Docker с компиляцией
echo -n "Компиляция..."
test -t 1 && DOCKER_TTY="-it"
if [ -n "$BIN_FILES" ]; then
if [[ "${builds[0]}" == "tasmota"* ]]; then
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE $(printf ' -e %s' "${builds[@]}") 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
else
echo -e "\\r\e[31mНедействительная сборочная среда."
exit 1
fi
else
if [ "${USE_TEE}" = "1" ]; then
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 | tee ${TEE_PARAMETER} docker-tasmota.log
else
docker run ${DOCKER_TTY} --rm -v "${USE_VOLUME}":/tasmota -u $UID:$GID $DOCKER_IMAGE 2>&1 > docker-tasmota.log
fi
echo -e "\\r${CHECK_MARK} Готово! Лог компиляции записан в docker-tasmota.log\n"
echo -e "Сборки находятся в $rundir/Tasmota/build_output/firmware\n"
fi
## Копирование прошивки после завершения Docker
for build in "${builds[@]}"
do
cp "$rundir"/Tasmota/build_output/firmware/"$build"* "$rundir"/
if test -e "$build".bin; then
echo -e "Завершено! Прошивка доступна в $rundir/$build.bin\n"
else
echo -e "\e[31m\e[5mПРЕДУПРЕЖДЕНИЕ:\e[0m"
echo -e "Произошла ошибка при компиляции $build. Проверьте лог компиляции\n"
fi
done
else
echo -e "\nDocker не найден. Установите его с помощью:\n\n\tcurl -fsSL https://get.docker.com -o get-docker.sh\n\tsh get-docker.sh\n"
fi
else
# Клонирование репозитория Tasmota, если каталог отсутствует
if [[ "$(type -t git)" == "file" ]] ; then
echo -e "\nРепозиторий Tasmota не найден в текущем каталоге.\nКлонировать его с GitHub в текущий каталог?"
read -p "Нажмите Enter для выхода или \"yes\" для продолжения: " answer
case ${answer:0:1} in
y|Y )
git clone https://github.com/arendst/Tasmota.git --branch development
bash $(basename $0) && exit
;;
* )
exit 1
;;
esac
else
echo -e "\nУстановите \"git\" для продолжения:\n\n\tDebian/Ubuntu/Mint:\tsudo apt-get install git\n\tFedora:\t\t\tsu -c 'yum install git'\n\topenSUSE:\t\tsudo zypper in git\n"
exit 1
fi
fi

View File

@ -0,0 +1,50 @@
#ifndef _USER_CONFIG_OVERRIDE_H_
#define _USER_CONFIG_OVERRIDE_H_
#define USE_IR_RECEIVE // Включает функциональность для приема ИК-сигнала
#define USE_IR_REMOTE // Включает функциональность ИК-пульта
#define USE_IR_REMOTE_FULL
#define USE_IR_SEND_BANG_OLUFSEN // Включает отправку ИК-сигналов для устройств Bang & Olufsen (аудио- и видеотехника)
#define USE_IR_SEND_BOILER // Включает отправку ИК-сигналов для котлов отопления и обогревателей, использующих ИК-управление
#define USE_IR_SEND_CARRIER // Включает отправку ИК-сигналов для кондиционеров Carrier
#define USE_IR_SEND_CONVOTHERM // Включает отправку ИК-сигналов для устройств Convotherm (используется в профессиональной кухонной технике)
#define USE_IR_SEND_COOLIX // Включает отправку ИК-сигналов в формате Coolix (используется в кондиционерах, часто китайского производства)
#define USE_IR_SEND_DAIKIN // Включает отправку ИК-сигналов для кондиционеров Daikin
#define USE_IR_SEND_DAIKIN2 // Включает отправку ИК-сигналов для кондиционеров Daikin (альтернативный формат)
#define USE_IR_SEND_DENON // Включает отправку ИК-сигналов в формате Denon (для устройств Denon, часто в аудиооборудовании)
#define USE_IR_SEND_DISH // Включает отправку ИК-сигналов для устройств Dish Network
#define USE_IR_SEND_ELECTROLUX // Включает отправку ИК-сигналов для кондиционеров и устройств Electrolux
#define USE_IR_SEND_FUJITSU // Включает отправку ИК-сигналов для кондиционеров Fujitsu
#define USE_IR_SEND_GREE // Включает отправку ИК-сигналов для кондиционеров Gree
#define USE_IR_SEND_HAIER // Включает отправку ИК-сигналов для кондиционеров Haier
#define USE_IR_SEND_HITACHI // Включает отправку ИК-сигналов для кондиционеров Hitachi
#define USE_IR_SEND_HITACHI_AC // Включает отправку ИК-сигналов в специфичном формате для кондиционеров Hitachi
#define USE_IR_SEND_KELVINATOR // Включает отправку ИК-сигналов для кондиционеров Kelvinator
#define USE_IR_SEND_LG // Включает отправку ИК-сигналов в формате LG (используется в устройствах LG)
#define USE_IR_SEND_METZ // Включает отправку ИК-сигналов для устройств Metz (телевизоры)
#define USE_IR_SEND_MIDEA // Включает отправку ИК-сигналов для кондиционеров Midea
#define USE_IR_SEND_MITSUBISHI // Включает отправку ИК-сигналов для устройств Mitsubishi (в основном для кондиционеров)
#define USE_IR_SEND_NEC // Включает отправку ИК-сигналов в формате NEC (используется в устройствах LG, Samsung, Apple и других)
#define USE_IR_SEND_NIKAI // Включает отправку ИК-сигналов для устройств Nikai (в основном бытовая техника)
#define USE_IR_SEND_ONIDA // Включает отправку ИК-сигналов для устройств Onida (телевизоры)
#define USE_IR_SEND_PANASONIC // Включает отправку ИК-сигналов в формате Panasonic (используется в устройствах Panasonic)
#define USE_IR_SEND_RC5 // Включает отправку ИК-сигналов в формате RC5 (используется в устройствах Philips)
#define USE_IR_SEND_RC6 // Включает отправку ИК-сигналов в формате RC6 (также используется Philips, улучшенная версия RC5)
#define USE_IR_SEND_RCA // Включает отправку ИК-сигналов для устройств RCA (в основном телевизоры)
#define USE_IR_SEND_RENEWTABLE // Включает отправку ИК-сигналов для восстановления или обновления таблиц пультов
#define USE_IR_SEND_SAMSUNG // Включает отправку ИК-сигналов в формате Samsung (используется в устройствах Samsung)
#define USE_IR_SEND_SAMSUNG_AC // Включает отправку ИК-сигналов в специфичном формате для кондиционеров Samsung
#define USE_IR_SEND_SANYO // Включает отправку ИК-сигналов для кондиционеров и устройств Sanyo
#define USE_IR_SEND_SHARP // Включает отправку ИК-сигналов в формате Sharp (используется в устройствах Sharp)
#define USE_IR_SEND_SHARP_AC // Включает отправку ИК-сигналов для кондиционеров Sharp
#define USE_IR_SEND_SHERWOOD // Включает отправку ИК-сигналов в формате Sherwood (используется в аудиоустройствах Sherwood)
#define USE_IR_SEND_SKYWORTH // Включает отправку ИК-сигналов для устройств Skyworth (телевизоры и аудиооборудование)
#define USE_IR_SEND_SONY // Включает отправку ИК-сигналов в формате Sony SIRC (используется в устройствах Sony)
#define USE_IR_SEND_TCL // Включает отправку ИК-сигналов для устройств TCL (в основном кондиционеры)
#define USE_IR_SEND_TECO // Включает отправку ИК-сигналов для кондиционеров Teco
#define USE_IR_SEND_TOSHIBA // Включает отправку ИК-сигналов для кондиционеров Toshiba
#define USE_IR_SEND_UNIVERSAL // Включает отправку универсальных ИК-сигналов для различных совместимых устройств
#define USE_IR_SEND_VESTEL // Включает отправку ИК-сигналов для устройств Vestel (в основном телевизоры)
#define USE_IR_SEND_WHYNTER // Включает отправку ИК-сигналов для кондиционеров Whynter
#endif