commit a20074360c99676c93bb533639bbac301bc39eb7 Author: Aleksander Cynarski Date: Sat Jan 24 13:48:00 2026 +0100 initial commit diff --git a/.tasks/docker.yml b/.tasks/docker.yml new file mode 100644 index 0000000..be8b22b --- /dev/null +++ b/.tasks/docker.yml @@ -0,0 +1,29 @@ +version: '3' + +tasks: + build: + desc: Build Docker image + cmds: + - docker-compose build + + run: + desc: Run container and compile project + cmds: + - docker-compose run --rm platformio pio run + + shell: + desc: Open shell in Docker container + cmds: + - docker-compose run --rm platformio bash + + clean: + desc: Clean Docker containers and images + cmds: + - docker-compose down + - docker-compose rm -f + + flash: + desc: Compile in Docker, upload locally (recommended for macOS) + cmds: + - task: run + - pio run --target upload diff --git a/.tasks/pio.yml b/.tasks/pio.yml new file mode 100644 index 0000000..a647422 --- /dev/null +++ b/.tasks/pio.yml @@ -0,0 +1,95 @@ +version: '3' + +tasks: + init: + desc: Initialize PlatformIO project for ESP32 WROOM 32 + cmds: + - pio project init --board {{.BOARD}} + status: + - test -f platformio.ini + + build: + desc: Compile the project + cmds: + - pio run + + upload: + desc: Upload program to ESP32 + cmds: + - pio run --target upload + deps: + - build + + monitor: + desc: Monitor serial port + cmds: + - pio device monitor + + clean: + desc: Clean build files + cmds: + - pio run --target clean + + flash: + desc: Compile and upload program (build + upload) + cmds: + - task: build + - task: upload + + flash-monitor: + desc: Compile, upload and monitor + cmds: + - task: flash + - task: monitor + + erase: + desc: Erase entire ESP32 flash memory + cmds: + - pio run --target erase + + erase-flash: + desc: Erase flash and upload firmware (fixes LittleFS) + cmds: + - pio run --target erase + - pio run --target upload + - pio run --target uploadfs + + uploadfs: + desc: Upload filesystem (data/) to ESP32 + cmds: + - pio run --target uploadfs + + format-flash: + desc: Format only LittleFS (requires esptool.py) + cmds: + - esptool.py --port /dev/cu.SLAB_USBtoUART erase_region 0x110000 0x2F0000 + + deps: + desc: Install project dependencies (Docker) + cmds: + - docker-compose run --rm platformio pio pkg install + + update: + desc: Update platforms and libraries (Docker) + cmds: + - docker-compose run --rm platformio pio pkg update + + list-ports: + desc: List available serial ports + cmds: + - pio device list + + lib-search: + desc: Search for a library (Docker) + cmds: + - docker-compose run --rm platformio pio pkg search "{{.CLI_ARGS}}" + + lib-install: + desc: Install a library (Docker) + cmds: + - docker-compose run --rm platformio pio pkg install --library "{{.CLI_ARGS}}" + + lib-list: + desc: List installed libraries (Docker) + cmds: + - docker-compose run --rm platformio pio pkg list diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..77751fe --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# Force x86_64 architecture for full PlatformIO compatibility +FROM --platform=linux/amd64 python:3.11-slim + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + curl \ + build-essential \ + usbutils \ + && rm -rf /var/lib/apt/lists/* + +# Install PlatformIO +RUN pip install --no-cache-dir platformio + +# Set working directory +WORKDIR /project + +# Copy configuration files +COPY platformio.ini . + +# Pre-download platforms and tools (optional, speeds up subsequent builds) +RUN pio pkg install --skip-dependencies || true + +# Default command +CMD ["pio", "run"] diff --git a/Taskfile.yml b/Taskfile.yml new file mode 100644 index 0000000..5eda036 --- /dev/null +++ b/Taskfile.yml @@ -0,0 +1,16 @@ +version: '3' + +vars: + PLATFORM: esp32 + BOARD: esp32dev + UPLOAD_PORT: '{{.UPLOAD_PORT | default "/dev/cu.usbserial-*"}}' + +includes: + pio: .tasks/pio.yml + docker: .tasks/docker.yml + +tasks: + default: + desc: Display available tasks + cmds: + - task --list diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0a8b4a9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +services: + platformio: + platform: linux/amd64 # Wymuś x86_64 dla pełnej kompatybilności + build: + context: . + platforms: + - linux/amd64 + image: pio-project:latest + container_name: pio-project + volumes: + - .:/project + - platformio-cache:/root/.platformio + working_dir: /project + command: pio run + stdin_open: true + tty: true + # UWAGA: Docker Desktop na macOS nie wspiera 'devices' ani USB passthrough + # Do wgrywania używaj lokalnego PlatformIO: pio run --target upload + +volumes: + platformio-cache: + driver: local