wifi_ir: progetto Go.Comma R9 - documentazione, script flash e setup
This commit is contained in:
commit
e510529685
6 files changed
+301
No files matched your search
@@ -0,0 +1,42 @@
|
||||
# wifi_ir — Controllo IR locale via Go.Comma R9
|
||||
|
||||
Trasforma il Go.Comma R9 Smart Remote in un controller IR locale: cattura comandi del climatizzatore e li riproduce via webapp. Niente cloud, niente app proprietaria.
|
||||
|
||||
## Stato
|
||||
|
||||
- **Go.Comma R9**: identificato (ESP8266 TYWE3S, 2MB flash)
|
||||
- **Flash OTA (tuya-convert)**: tentato, fallito — firmware Tuya troppo recente
|
||||
- **Flash seriale**: **in attesa di USB-UART** — acquistare cavetto CH340/CP2102 (~3€)
|
||||
|
||||
## Hardware
|
||||
|
||||
| Componente | Dettaglio |
|
||||
|---|---|
|
||||
| Telecomando | Go.Comma R9 Smart Remote |
|
||||
| Modulo | ESP8266 TYWE3S (2MB flash) |
|
||||
| IR TX | GPIO14 (7 LED IR) |
|
||||
| IR RX | GPIO5 |
|
||||
| LED | GPIO4 |
|
||||
| Pulsante | GPIO13 |
|
||||
|
||||
## Contenuto
|
||||
|
||||
- `docs/hardware.md` — Specifiche e pinout
|
||||
- `docs/flash.md` — Guida al flash Tasmota via seriale
|
||||
- `docs/tuya-convert.md` — Tentativo OTA fatto
|
||||
- `scripts/flash.sh` — Script per flashare Tasmota
|
||||
- `scripts/setup.sh` — Setup Rock Pi 4
|
||||
|
||||
## Roadmap
|
||||
|
||||
1. ✅ Hardware identificato
|
||||
2. ✅ Tentativo OTA (tuya-convert) — fallito
|
||||
3. ⬜ Flash Tasmota via seriale (con USB-UART)
|
||||
4. ⬜ Sviluppo webapp IR (cattura/riproduzione comandi)
|
||||
5. ⬜ Opzionale: database IR per codici predefiniti
|
||||
|
||||
## Ambiente
|
||||
|
||||
- **Rock Pi 4 C Plus**: rock@10.6.133.56 (ZeroTier) / 192.168.0.215 (LAN)
|
||||
- **Ollama**: 192.168.0.50:11434
|
||||
- **Proxmox container**: 192.168.0.240
|
||||
@@ -0,0 +1,75 @@
|
||||
# Flash Tasmota via Seriale
|
||||
|
||||
## Prerequisiti
|
||||
|
||||
- [ ] USB-UART (CH340G o CP2102, ~3€)
|
||||
- [ ] 3 fili jumper femmina-femmina
|
||||
- [ ] Go.Comma R9 aperto (4 viti sotto piedini in gomma)
|
||||
- [ ] Rock Pi 4 acceso e raggiungibile
|
||||
|
||||
## Passi
|
||||
|
||||
### 1. Collega USB-UART al Rock Pi
|
||||
|
||||
Inserisci il cavetto in una porta USB del Rock Pi.
|
||||
Verifica con:
|
||||
|
||||
```bash
|
||||
ls /dev/ttyUSB* # o /dev/ttyACM*
|
||||
```
|
||||
|
||||
### 2. Collega i fili al Go.Comma R9
|
||||
|
||||
Vedi `docs/hardware.md` per lo schema esatto.
|
||||
|
||||
**Attenzione**: GPIO0 va collegato a GND prima di accendere per entrare in flash mode.
|
||||
|
||||
### 3. Installa esptool.py (già fatto)
|
||||
|
||||
```bash
|
||||
pip3 install esptool
|
||||
```
|
||||
|
||||
### 4. Verifica connessione
|
||||
|
||||
```bash
|
||||
esptool.py --port /dev/ttyUSB0 flash_id
|
||||
```
|
||||
|
||||
Dovresti vedere il chip ID dell'ESP8266.
|
||||
|
||||
### 5. Scarica Tasmota
|
||||
|
||||
```bash
|
||||
wget https://github.com/arendst/Tasmota/releases/download/v14.4.0/tasmota.bin
|
||||
```
|
||||
|
||||
### 6. Flasha Tasmota
|
||||
|
||||
```bash
|
||||
esptool.py --port /dev/ttyUSB0 --baud 115200 \
|
||||
write_flash --flash_size=2MB 0x0 tasmota.bin
|
||||
```
|
||||
|
||||
### 7. Template Tasmota
|
||||
|
||||
Dopo il flash, connettiti al WiFi `tasmota-XXXX` e configura il template:
|
||||
|
||||
```json
|
||||
{"NAME":"Go.Comma R9","GPIO":[1,1,1,1,1,1,1,1,1,1,1,1,1,1],"FLAG":0,"BASE":18}
|
||||
```
|
||||
|
||||
| GPIO | Funzione |
|
||||
|---|---|
|
||||
| GPIO14 | IRsend |
|
||||
| GPIO5 | IRrecv |
|
||||
| GPIO4 | LED (opzionale) |
|
||||
| GPIO13 | Button (opzionale) |
|
||||
|
||||
### 8. Alternative: ESPHome
|
||||
|
||||
In alternativa a Tasmota, si può usare ESPHome con il componente `ir_transmitter` e `ir_receiver_climate`.
|
||||
|
||||
## Script automatizzato
|
||||
|
||||
Vedi `scripts/flash.sh` per una versione automatizzata.
|
||||
@@ -0,0 +1,47 @@
|
||||
# Hardware Go.Comma R9
|
||||
|
||||
## Specifiche
|
||||
|
||||
| Specifica | Valore |
|
||||
|---|---|
|
||||
| Modello | Go.Comma R9 Smart Remote |
|
||||
| Chip WiFi | ESP8266 (Tensilica Xtensa LX106) |
|
||||
| Modulo | TYWE3S (2MB flash) |
|
||||
| LED IR | 7 LED a 38KHz |
|
||||
| Ricevitore IR | TSOP38238 o equivalente (38KHz) |
|
||||
| Tensione | 5V (USB) / 3.3V (modulo) |
|
||||
|
||||
## Pinout TYWE3S sul PCB
|
||||
|
||||
Il modulo TYWE3S ha 14 pin a semicerchio. Sui pad del PCB sono serigrafate le connessioni:
|
||||
|
||||
| Pin TYWE3S | Funzione Go.Comma | Utilizzo flashing |
|
||||
|---|---|---|
|
||||
| TX (GPIO1) | — | ← RX USB-UART |
|
||||
| RX (GPIO3) | — | → TX USB-UART |
|
||||
| GND | — | GND |
|
||||
| GPIO0 | Flash mode | → GND (per flash) |
|
||||
| GPIO14 | **IR TX** (7 LED) | — |
|
||||
| GPIO5 | **IR RX** (ricevitore) | — |
|
||||
| GPIO4 | **LED** (indicatore) | — |
|
||||
| GPIO13 | **Pulsante** (fisico) | — |
|
||||
| 3.3V | Alimentazione modulo | Già alimentato |
|
||||
| RST | Reset | — |
|
||||
| EN (CH_PD) | Chip enable | — |
|
||||
|
||||
## Schema collegamenti USB-UART
|
||||
|
||||
```
|
||||
USB-UART (CH340/CP2102) Go.Comma R9 (PCB)
|
||||
══════════════════════ ═════════════════
|
||||
TX ─────────────────▶ RX (pad sul PCB)
|
||||
RX ◀───────────────── TX (pad sul PCB)
|
||||
GND ───────────────── GND
|
||||
GND ───────────────── GPIO0 (pad, per flash mode)
|
||||
```
|
||||
|
||||
**Note**:
|
||||
- Usare 3.3V, NON 5V — l'ESP8266 lavora a 3.3V
|
||||
- Collegare GPIO0 a GND PRIMA di accendere il telecomando
|
||||
- Il telecomando ha la sua alimentazione (pile), non serve VCC esterno
|
||||
- Rimuovere GPIO0 da GND dopo il flash
|
||||
@@ -0,0 +1,39 @@
|
||||
# Tentativo Flash OTA via tuya-convert
|
||||
|
||||
## Setup
|
||||
|
||||
- Clonato tuya-convert v2.4.6 su Rock Pi: `/home/rock/tuya-convert/`
|
||||
- NetworkManager configurato, WiFi power management disabilitato
|
||||
- Config: `WLAN=wlan0`, `AP=vtrust-flash`
|
||||
|
||||
## Esecuzione
|
||||
|
||||
Dispositivo messo in pairing mode (LED lampeggio veloce) ed eseguito:
|
||||
|
||||
```bash
|
||||
./setup.sh
|
||||
```
|
||||
|
||||
## Risultato: FALLITO
|
||||
|
||||
```
|
||||
Your device's firmware is too new. Tuya patched the PSK vulnerability
|
||||
that we use to establish a connection. You might still be able to
|
||||
flash this device over serial.
|
||||
```
|
||||
|
||||
## Causa
|
||||
|
||||
Il Go.Comma R9 monta un firmware Tuya recente che ha la vulnerabilità PSK-Identity-02
|
||||
corretta. tuya-convert sfrutta questa falla per intercettare l'handshake WiFi
|
||||
durante il pairing — con la correzione, l'attacco non funziona più.
|
||||
|
||||
## Conclusione
|
||||
|
||||
- ✅ tuya-convert non supporta ESP8266 con firmware recente
|
||||
- ❌ CloudCutter non supporta ESP8266 (solo Beken/Realtek)
|
||||
- ✅ **Unica strada**: flash seriale con USB-UART (~3€)
|
||||
|
||||
Riferimenti:
|
||||
- https://github.com/ct-Open-Source/tuya-convert
|
||||
- https://github.com/tuya-cloudcutter/tuya-cloudcutter
|
||||
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
# Script per flashare Tasmota su Go.Comma R9 via seriale
|
||||
# Uso: ./flash.sh [porta]
|
||||
# Default: /dev/ttyUSB0
|
||||
|
||||
PORT="${1:-/dev/ttyUSB0}"
|
||||
BAUD=115200
|
||||
TASMOTA_URL="https://github.com/arendst/Tasmota/releases/download/v14.4.0/tasmota.bin"
|
||||
TASMOTA_FILE="tasmota.bin"
|
||||
|
||||
echo "=== Flash Tasmota su Go.Comma R9 ==="
|
||||
echo "Porta: $PORT"
|
||||
echo ""
|
||||
|
||||
# Verifica porta
|
||||
if [ ! -e "$PORT" ]; then
|
||||
echo "ERRORE: $PORT non trovato."
|
||||
echo "Collega USB-UART e verifica con: ls /dev/ttyUSB*"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verifica esptool
|
||||
if ! command -v esptool.py &> /dev/null; then
|
||||
echo "esptool.py non trovato. Installo..."
|
||||
pip3 install esptool
|
||||
fi
|
||||
|
||||
# Verifica connessione
|
||||
echo "Verifico connessione..."
|
||||
esptool.py --port "$PORT" flash_id
|
||||
if [ $? -ne 0 ]; then
|
||||
echo ""
|
||||
echo "ERRORE: connessione fallita. Verifica:"
|
||||
echo " 1. GPIO0 è collegato a GND?"
|
||||
echo " 2. TX↔RX collegati correttamente?"
|
||||
echo " 3. Il telecomando è acceso (con pile)?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Scarica Tasmota
|
||||
if [ ! -f "$TASMOTA_FILE" ]; then
|
||||
echo "Scarico Tasmota..."
|
||||
wget "$TASMOTA_URL" -O "$TASMOTA_FILE"
|
||||
fi
|
||||
|
||||
# Flash
|
||||
echo "Flash in corso..."
|
||||
esptool.py --port "$PORT" --baud "$BAUD" \
|
||||
write_flash --flash_size=2MB 0x0 "$TASMOTA_FILE"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo ""
|
||||
echo "✓ Flash completato!"
|
||||
echo "1. Rimuovi GPIO0 da GND"
|
||||
echo "2. Spegni e riaccendi il telecomando"
|
||||
echo "3. Connettiti al WiFi 'tasmota-XXXX'"
|
||||
echo "4. Vai a http://192.168.4.1 e configura"
|
||||
else
|
||||
echo ""
|
||||
echo "ERRORE: flash fallito."
|
||||
exit 1
|
||||
fi
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# Setup Rock Pi 4 C Plus per progetto wifi_ir
|
||||
# Eseguito già manualmente, tenuto per ripristino futuro
|
||||
|
||||
echo "=== Setup Rock Pi per wifi_ir ==="
|
||||
|
||||
# Install dipendenze base
|
||||
echo "Installazione dipendenze..."
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq git python3 python3-pip screen
|
||||
|
||||
# Docker
|
||||
echo "Installazione Docker..."
|
||||
curl -fsSL https://get.docker.com | sudo bash
|
||||
|
||||
# esptool
|
||||
echo "Installazione esptool..."
|
||||
pip3 install --user esptool
|
||||
|
||||
# Disabilita WiFi power management
|
||||
echo "Disabilito WiFi power management..."
|
||||
sudo iw dev wlan0 set power_save off
|
||||
|
||||
# NetworkManager (per tuya-convert)
|
||||
echo "Configurazione NetworkManager..."
|
||||
sudo systemctl enable NetworkManager
|
||||
sudo systemctl start NetworkManager
|
||||
|
||||
echo ""
|
||||
echo "✓ Setup completato"
|
||||
echo "Rock Pi pronto per flash Tasmota via seriale."
|
||||
echo ""
|
||||
echo "Comandi utili:"
|
||||
echo " ls /dev/ttyUSB* — verifica USB-UART"
|
||||
echo " esptool.py flash_id — verifica ESP8266"
|
||||
echo " ./scripts/flash.sh — flasha Tasmota"
|
||||
Reference in new issue
Block a user