# RC Masinky - Instalační a Provozní Příručka

Systém pro ovládání modelové železnice přes Wi-Fi pomocí Raspberry Pi 3 (Server) a ESP32 (Mašinky/Výhybky).

## 1. Hardware Požadavky

### Server (Centrála)
- Raspberry Pi 3 (nebo novější)
- MicroSD karta (16GB+) s Raspberry Pi OS
- Napájecí adaptér 5V/2.5A

### Mašinka (Loco)
- ESP32 Development Board
- H-Bridge Motor Driver (např. L298N nebo mini L293D)
- MOSFET tranzistory (např. IRLZ44N) pro světla
- DC Motor mašinky
- LEDs (Přední/Zadní světla)
- Baterie (LiPo 2S/3S) nebo sběr z kolejí + Step-Down konvertor

### Výhybka (Switch)
- ESP32 Development Board
- Servo motor (SG90)
- LEDs pro indikaci směru
- 5V napájení

---

## 2. Příprava Raspberry Pi 3

1. **Instalace OS:** Nahraj Raspberry Pi OS Lite (bez desktopu stačí) na SD kartu pomocí Raspberry Pi Imager.
2. **Síť:** Připoj RPi k routeru kabelem (doporučeno pro stabilitu) nebo nastav Wi-Fi.
3. **Instalace Prerekvizit:**

   Připoj se přes SSH a spusť:
   ```bash
   sudo apt update && sudo apt upgrade -y
   sudo apt install mosquitto mosquitto-clients python3-pip git -y
   sudo systemctl enable mosquitto
   sudo systemctl start mosquitto
   ```

4. **Konfigurace Mosquitto:**
   Ujisti se, že `mosquitto` poslouchá na všech rozhraních. Edituj `/etc/mosquitto/conf.d/default.conf`:
   ```text
   listener 1883
   allow_anonymous true
   ```
   Restart: `sudo systemctl restart mosquitto`

5. **Instalace Web Aplikace:**
   
   Vytvoř složku a nahraj soubory z `webApp/`:
   ```bash
   mkdir -p ~/rcmasinky
   # (Sem nahraj soubory app.py, templates/, static/)
   ```

   Nainstaluj Python knihovny:
   ```bash
   pip3 install flask flask-socketio eventlet paho-mqtt
   ```

6. **Spuštění:**
   ```bash
   cd ~/rcmasinky
   python3 app.py
   ```
   Webové rozhraní je nyní dostupné na `http://<IP_RPI>:5000`.

---

## 3. Příprava ESP32 (Firmware)

Používáme Arduino IDE.

1. **Instalace Knihoven:**
   - `PubSubClient` (pro MQTT)
   - `ESP32Servo` (pro ovládání serva)

2. **Konfigurace Kódu (`rcmasinky.ino`):**
   - Otevři soubor `rcmasinky.ino`.
   - Nastav Wi-Fi údaje: `const char* nazev_wifi = "..."` a `heslo_wifi`.
   - Nastav IP adresu RPi: `const char* mqtt_server_ip`.
   - Odkomentuj `#define` podle typu zařízení (`TYP_ZARIZENI_MASINA` nebo `TYP_ZARIZENI_VYHYBKA`).
   - Nastav unikátní `ID_ZARIZENI` pro každé zařízení.

3. **Nahrání:**
   - Vyber desku "DOIT ESP32 DEVKIT V1" (nebo odpovídající).
   - Nahraj sketch.

---

## 4. Zapojení (Wiring)

### A) Mašinka (Loco)
* **Motor Driver (L298N):**
    * ENA -> GPIO 18 (PWM)
    * IN1 -> GPIO 19
    * IN2 -> GPIO 21
    * OUT1/OUT2 -> DC Motor
* **Světla:**
    * Přední LED (+) -> MOSFET Drain / přímo GPIO 22 (přes rezistor)
    * Zadní LED (+) -> GPIO 23

### B) Výhybka (Switch)
* **Servo:**
    * Signal (Orange) -> GPIO 18
    * VCC (Red) -> 5V
    * GND (Brown) -> GND
* **Indikace:**
    * LED Straight -> GPIO 19
    * LED Diverge -> GPIO 21

---

## 5. Jak to používat

1. Zapni RPi a spusť Python skript.
2. Zapni ESP32 zařízení.
3. Otevři v prohlížeči na mobilu/PC adresu RPi (např. `192.168.1.100:5000`).
4. Uvidíš ovládací karty pro nakonfigurované mašinky a výhybky.
5. **Jedem!** 🚂💨
