Init commit

This commit is contained in:
2026-05-16 18:12:53 +02:00
parent 30a7be8cf4
commit c23a7dba91
16 changed files with 6087 additions and 1 deletions
+224
View File
@@ -0,0 +1,224 @@
# Configuración de Tasmota
ESP8266 en `192.168.1.42`, firmware Tasmota 15.4.0.
## Comandos a ejecutar (una sola vez)
Todos se ejecutan desde `http://192.168.1.42` → Consola,
o vía HTTP API: `http://192.168.1.42/cm?cmnd=<COMANDO>`
### 1. Seguridad básica
```
# Contraseña para la interfaz web
Password <tu_contraseña_web>
# Credenciales MQTT (deben coincidir con .env)
MqttUser esp8266
MqttPassword <MQTT_ESP_PASSWORD del .env>
```
### 2. Broker MQTT — apuntar a este ordenador
```
MqttHost 192.168.1.41
MqttPort 1883
```
### 3. Esquema de topics — obligatorio para que las ACLs funcionen
```
Topic riego/bomba
FullTopic %prefix%/%topic%/
```
Esto genera:
- `cmnd/riego/bomba/POWER` (recibe comandos)
- `stat/riego/bomba/POWER` (publica confirmaciones)
- `tele/riego/bomba/SENSOR` (publica telemetría)
### 4. Telemetría cada 30 segundos
```
TelePeriod 30
```
### 5. Estado seguro al arrancar — CRÍTICO
```
PowerOnState 0
```
Sin este ajuste, si la bomba estaba encendida y el ESP8266 se reinicia,
la bomba arranca automáticamente. Con `0` siempre arranca apagada.
### 6. Cableado y configuración de GPIOs
#### Hardware identificado
- Placa: **NodeMCU ESP8266**
- Relé: **SunFounder 8 Relay Module** (activo en LOW → usar `Relay1_i`)
- Sensor: **HC-SR04 estándar (5V)** → requiere divisor de tensión en Echo
#### ⚠️ Divisor de tensión — OBLIGATORIO para HC-SR04 estándar
El pin Echo del HC-SR04 devuelve 5V pero el ESP8266 soporta máximo 3.3V.
Sin el divisor puedes quemar el GPIO o dañar el chip con el tiempo.
El divisor va en el pin **Echo → D5 (GPIO14)**. Trig va directo sin resistencias.
Con **tres resistencias de 2.2 kΩ** (las dos primeras en paralelo forman 1.1 kΩ):
```
Punto A Punto B
│ │
HC-SR04 Echo ──[2.2kΩ]────────┤
├──── D5 (GPIO14) NodeMCU → 3.33 V ✓
──[2.2kΩ]────────┤
[2.2kΩ]
GND
```
- **Punto A**: pin Echo del HC-SR04 + un extremo de cada una de las dos resistencias en paralelo
- **Punto B**: el otro extremo de las dos resistencias en paralelo + un extremo de la tercera + cable a D5
Esto reduce 5V → 3.33V: `5V × 2.2kΩ/(1.1kΩ+2.2kΩ) = 3.33V`
El pin Trigger (ESP8266 → sensor) va directo: 3.3V es suficiente para activar el HC-SR04.
#### Esquema de cableado completo
Alimentación mixta:
- NodeMCU → **USB** (ordenador o cargador)
- Relay module + HC-SR04 → **fuente externa 5V / 1.5A**
```
USB ──────────────────────── NodeMCU (alimentación + lógica 3.3V)
Fuente 5V/1.5A
├── (+) 5V ──┬── Relay module VCC
│ └── HC-SR04 VCC
└── () GND ─┬── Relay module GND
├── HC-SR04 GND
├── GND divisor de tensión (extremo inferior R2)
└── NodeMCU GND ← ⚠️ OBLIGATORIO aunque NodeMCU va por USB
Sin este cable los GPIOs no funcionan
NodeMCU señales:
D1 (GPIO5) ──────────────────────── IN1 relay module (bomba)
D2 (GPIO4) ──────────────────────── Trig HC-SR04 (directo, sin resistencias)
D5 (GPIO14) ──[divisor tensión]───── Echo HC-SR04 (3.3V tras el divisor)
```
#### Resistencias disponibles: solo 2.2 kΩ
Con **dos resistencias de 2.2 kΩ en paralelo** como R1 se obtiene 1.1 kΩ,
que con una tercera de 2.2 kΩ como R2 da exactamente 3.33 V:
```
Echo HC-SR04
[2.2kΩ]──┐
│ ├── D5 (GPIO14) NodeMCU → 3.33 V ✓
[2.2kΩ]──┘
[2.2kΩ]
GND
```
Si también tienes una resistencia de **1 kΩ** úsala como R1 (es más sencillo):
R1=1kΩ + R2=2.2kΩ → 3.44 V ✓
#### Resistencias para el divisor de tensión
Necesitas dos resistencias con una relación **R2 ≈ 2 × R1**.
Cualquiera de estas combinaciones es válida:
| R1 | R2 | Tensión en Echo→ESP | Observaciones |
|---|---|---|---|
| 1 kΩ | 2 kΩ | 3.33 V ✓ | Combinación ideal |
| 1 kΩ | 2.2 kΩ | 3.44 V ✓ | Muy común en kits |
| 2.2 kΩ | 4.7 kΩ | 3.40 V ✓ | Válida |
| 10 kΩ | 20 kΩ | 3.33 V ✓ | Misma ratio, menor corriente |
| 10 kΩ | 22 kΩ | 3.44 V ✓ | Muy común |
**Cómo medir con multímetro**: selector en Ω (ohmios), puntas en los dos
extremos de la resistencia. Las más comunes en kits naranja/amarillo son
colores de 4 bandas:
| Valor | Bandas de color |
|---|---|
| 1 kΩ | Marrón Negro Rojo (tolerancia) |
| 2 kΩ | Rojo Negro Rojo (tolerancia) |
| 2.2 kΩ | Rojo Rojo Rojo (tolerancia) |
| 4.7 kΩ | Amarillo Violeta Rojo (tolerancia) |
| 10 kΩ | Marrón Negro Naranja (tolerancia) |
| 22 kΩ | Rojo Rojo Naranja (tolerancia) |
#### Configuración en Tasmota (interfaz gráfica)
Menú → **Configuración → Configurar módulo**
Seleccionar en los desplegables:
| GPIO | Función a seleccionar | Nota |
|---|---|---|
| GPIO5 | `Relay_i``1` | La **i** es crítica (inverted, SunFounder activo LOW) |
| GPIO4 | `SR04 Tri/Tx``1` | Trig — salida directa sin resistencias |
| GPIO14 | `SR04 Ech/Rx``1` | Echo — entrada con divisor de tensión obligatorio |
> ⚠️ **Importante**: Trig en GPIO4 (D2) y Echo en GPIO14 (D5), NO al revés.
> Verificado según [documentación oficial Tasmota HC-SR04](https://tasmota.github.io/docs/HC-SR04/).
Pulsar **Save** — el dispositivo reinicia.
#### Alternativa: comandos por consola
Menú → Consola (o `http://192.168.1.42/cm?cmnd=`):
```
Backlog GPIO5 Relay_i 1; GPIO4 SR04Tri 1; GPIO14 SR04Ech 1
```
#### Verificar que el sensor funciona
Tras guardar, en la consola de Tasmota:
```
Status 10
```
Debe aparecer algo como:
```json
{"StatusSNS":{"Time":"...","SR04":{"Distance":45.2}}}
```
Si no aparece `SR04`, el build estándar puede no incluirlo.
En ese caso descargar `tasmota-sensors.bin`:
```
OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-sensors.bin
Upgrade 1
```
### 7. Verificar soporte HC-SR04
> ⚠️ **Tasmota 15.4.0 estándar NO incluye SR04.** Hay que instalar `tasmota-sensors.bin`:
```
OtaUrl http://ota.tasmota.com/tasmota/release/tasmota-sensors.bin
Upgrade 1
```
Tras el reinicio, los desplegables de GPIO mostrarán `SR04 Tri/Tx` y `SR04 Ech/Rx`.
> ⚠️ La actualización OTA **borra la configuración de GPIOs**. Después del upgrade
> hay que volver a configurar GPIO4, GPIO5 y GPIO14 en Configurar módulo.
## Verificar que todo funciona
Tras guardar los cambios, Tasmota reinicia. Comprueba:
```bash
# El ESP8266 debe conectar al broker local
curl -s "http://192.168.1.42/cm?cmnd=Status%205" | python3 -m json.tool
# MqttCount debe ser > 0
```