🔥 WTTC · Webasto Thermo Top C über Bluetooth und WLAN

Ersetzt die originale Zeitschaltuhr der Standheizung Thermo Top C durch einen ESP32, der ihr W-Bus-Protokoll spricht, und steuert sie per Android-App über Bluetooth oder im Browser über WLAN. Open Source: github.com/matatunos/wttc.
Unten der Simulator: links die Webseite der Firmware, unverändert; rechts eine virtuelle Webasto, die auf ihre Telegramme antwortet. Du kannst die Zeit beschleunigen und Fehler auslösen.
Der gesamte Code und Inhalt von WTTC (Firmware, App, Server, diese Webseite und ihre Dokumentation) ist vollständig mit Claude erzeugt (Anthropic). Weiter unten findest du die Downloads, den Einbau und die Bedienungsanleitung. Wie viele nutzen es? Öffentliche Statistik (auf Spanisch). Du hast eine Platine? Meine Statistiken (auf Spanisch). Zeigt deine Webasto einen Fehler? Fehlercodes der Thermo Top C. Willst du es bauen? Die Firmware im Browser installieren, ohne Arduino IDE. Ohne Kabel und Module? Es gibt eine fertig bestellbare Platine (ungetestetes Design).
⚠️ Vorab: Das ist ein privates Projekt, kein Produkt. WTTC steuert eine Heizung, die in deinem Fahrzeug Diesel verbrennt, und wird ohne jede Gewährleistung und als Testversion bereitgestellt. Wenn du es einbaust, tust du das vollständig auf eigene Verantwortung. Lies den Haftungsausschluss, bevor du ein einziges Kabel anfasst.
WTTC · 192.168.4.1
Webseite, die der ESP32 ausliefert (wörtliche Kopie aus der Firmware).
Ihre Aufrufe an /api/… beantwortet der simulierte ESP32.
--:--:--simulierte Zeit

Webasto Thermo Top C (virtuell)

--°Kühlwasser
Aus
Leistung
0 W
Batterie
--
Stromaufnahme
--
Aktiver Befehl
—

Platine: Display, LED und Thermometer

LED der Platine
Innen (real)
--
Innen setzen auf
Das Display wird Pixel für Pixel wie auf der Platine gezeichnet (das SSD1327 mit 128×128 in Graustufen oder das mit 128×64, wenn in den Einstellungen gewählt; gleiche Schrift und gleiche Texte). Im Automatikmodus bleibt es an, solange die Webseite links offen ist, genau wie bei der echten Platine mit offener Webseite. Wird ein Teil entfernt, gilt es nach wenigen Sekunden als getrennt, und was davon abhängt, verschwindet von der Webseite; wieder angeschlossen, wird es innerhalb einer halben Minute erkannt.

Tests und PDF-Bericht

Außen °C Innen zu Beginn °C Bis Dauer Batterie V
„Test ausführen“ schaltet mit diesen Werten ein und springt mit der simulierten Zeit sofort bis zum Ende (ein paar Sekunden); dann wird ein PDF mit Diagrammen zu Temperaturen, Starts, Leistung, Diesel und Batterie, der Tabelle der Starts und dem Protokoll der Platine heruntergeladen. „Aufzeichnen, was ich tue“ hält fest, was passiert, während du den Simulator benutzt (bei jeder Geschwindigkeit), bis du es beendest. Das Wärmemodell ist ungefähr.

Telegram (simuliert)

Was auf deinem Handy ankäme. Der Simulator sendet nichts wirklich.

Fehler auslösen

Außentemperatur 5 °C Batterie in Ruhe 12,6 V

W-Bus-Verkehr · 2400 Baud 8E1

Blau: was der ESP32 sendet (F4 = von der Diagnose an die Heizung). Grau: das Echo, das die Firmware verwirft. Grün: die Antwort der Webasto (4F, Befehl | 0x80). Das letzte Byte ist das XOR aller vorherigen.

Serielle Konsole (115200)

Es ist dieselbe Konsole, die du beim ersten Test benutzt, mit dem ESP32 per USB am Laptop. Ihre Befehle und Meldungen sind auf Spanisch.

Schaltplan (für den Einbau)

Stecker der Bedieneinheit(Fahrzeugseite, Bedieneinheit abgezogen) braunschwarzrotgelb⚠ Die Webasto hat keinen Strom (Sicherung) TJA1020-Platine (Gutol)Schraubklemmen auf beiden Seiten GNDGND LINRX INHSLP 12VTX TJA1020 47µF INH: nicht anschließen LM2596-Regler IN− IN+ OUT+ OUT− 470 100µF Schraube:5,0 V ESP32-S3 DevKitC-1 N16R8 (44 Pins)liegend gezeichnet: Antenne links, USB rechts ESP32-S3-WROOM-1N16R8 · 16 MB BOOTRST UARTUSB GND TX RX IO1 IO2 IO42 IO41 IO40 IO39 IO38 IO37 IO36 IO35 IO0 IO45 IO48 IO47 IO21 IO20 IO19 GND GND 3V3 3V3 RST IO4 IO5 IO6 IO7 IO15 IO16 IO17 IO18 IO8 IO3 IO46 IO9 IO10 IO11 IO12 IO13 IO14 5V GND 5 4 1 2 3 gelb: mit Band isolieren, wird nicht benutzt W-Bus lose 7 6 10 SLP offen: ⑩ fehlt 11 98 98⑧ und ⑨ vertauscht Optional: Display und Thermometer (I2C-Bus), „Heizen“-Taste und CO-Sensorgestrichelte Kabel: der Aufbau funktioniert ohne sie 12 13 14 15 21,4° GND VCC SCL SDA I2C-OLED-Display (SSD1327 1,5") VIN GND SCL SDA Thermometer SHT31 oder AHT20 16 17 „Heizen“-Taste (Taster) 20 18 19 VIN GND TXD CO-Sensor ZE07-COTXD → IO15 · VIN an 5 V
Die Platinen können die Klemmen an anderen Stellen haben: richte dich nach der Beschriftung neben jeder Klemme bzw. jedem Pin, nicht nach der Position in der Zeichnung. Die Zeichnung zeigt den ESP32-S3 DevKitC-1: alle Pins, die WTTC nutzt, liegen auf derselben Seite. Auf Basisplatinen mit Schraubklemmen sind sie beschriftet (der 5-V-Pin heißt manchmal „5Vin“). Seit Version 0.2.0 wird nur der ESP32-S3 unterstützt. Was im gestrichelten Kasten steht (Display und Thermometer, Kabel ⑫–⑮; „Heizen“-Taste, ⑯–⑰, und CO-Sensor, ⑱–⑳), ist optional: der Aufbau funktioniert auch ohne. Die Farben der Kabel ⑥–⑪ sind ein Vorschlag (Dupont-Kabel). Die des Fahrzeugsteckers sind unbestätigt: mit dem Multimeter messen.

Kabelliste

Nr.KabelVonNach
1braunbraun vom Fahrzeug (Masse)TJA1020-Platine, Klemme GND (Seite 12V/LIN)
2schwarzschwarz vom Fahrzeug (W-Bus)TJA1020-Platine, Klemme LIN
3rotrot vom Fahrzeug (+12 V)TJA1020-Platine, Klemme 12V
4rotrot vom Fahrzeug (abgezweigt von ③)LM2596, IN+
5braunbraun vom Fahrzeug (abgezweigt von ①)LM2596, IN−
6orangeLM2596 OUT+ (5,0 V)ESP32, Pin 5V
7grauLM2596 OUT−ESP32, Pin GND (beliebig)
8grünTJA1020-Platine, Klemme TXESP32, Pin IO16 (RX2)
9blauTJA1020-Platine, Klemme RXESP32, Pin IO17 (TX2)
10violettTJA1020-Platine, Klemme SLPESP32, Pin 3V3
11grauTJA1020-Platine, Klemme GND (Seite TX/RX)ESP32, Pin GND (ein anderer oder derselbe)
—gelbgelb vom Fahrzeugnicht benutzt: mit Band isolieren
——TJA1020-Platine, Klemme INHnicht anschließen
Optional: Display und Thermometer (gestrichelter Kasten im Schaltplan). Alle vier gehen an denselben I2C-Bus: jedes Kabel verbindet den Pin des ESP32 mit dem des Displays und dem des Thermometers.
12rosaESP32, Pin 3V3 (der andere)Display VCC und Thermometer VIN
13grauESP32, Pin GND (oder Abzweig von ⑦)Display GND und Thermometer GND
14türkisESP32, Pin IO4 (SDA)Display SDA und Thermometer SDA
15goldESP32, Pin IO5 (SCL)Display SCL und Thermometer SCL
16magentaESP32, Pin IO7„Heizen“-Taste: ein Bein
17grau„Heizen“-Taste: das andere BeinMasse: Abzweig von ⑬ (oder ein GND-Pin)
Optional: Kohlenmonoxid-Sensor Winsen ZE07-CO (elektrochemisch, gibt ppm seriell aus; ein MQ-7 reicht nicht). Steigt das CO, schaltet die Platine die Webasto aus, meldet es per Telegram und sperrt das Einschalten. Er ersetzt keinen zugelassenen CO-Melder mit eigenem Alarm: zusätzlich einbauen.
18orangeAbzweig von ⑥ (5 V vom LM2596)CO-Sensor, VIN (5 V)
19grauAbzweig von ⑬ (Masse)CO-Sensor, GND
20hellgrünCO-Sensor, TXDESP32, Pin IO15

Schritte, der Reihe nach

  1. Zuallererst prüfen, ob deine Heizung W-Bus spricht. Die der VW T5 mit ab Werk eingebauter Zeitschaltuhr (Teilenr. 7H0 010 398 J) tut es, und jemand hat sie bereits mit einem ESP eingeschaltet, aber es heißt auch, dass manche ältere Thermo Top C ein anderes Protokoll nutzen. Der erste Test weiter unten (nur status und errores) klärt das, ohne etwas einzuschalten: antwortet die Webasto mit Temperatur und Spannung, geht es weiter; kommt bei bereits geprüfter Verkabelung nur das Echo und „sin respuesta“ (keine Antwort), ist deine vielleicht keine W-Bus-Heizung.
  2. Den Stecker der Bedieneinheit mit dem Multimeter messen, bei angeschlossener Webasto: ein Kabel führt dauerhaft +12 V (das „rote“), eines hat Durchgang zur Karosserie (das „braune“) und der W-Bus in Ruhe zeigt fast dasselbe wie die Batterie (das „schwarze“). Stimmen die Farben nicht, zählt die Messung, nicht die Zeichnung.
  3. Den LM2596 einstellen, bevor irgendetwas daran hängt: nur die Kabel ④ und ⑤ anschließen, zwischen OUT+ und OUT− messen und an der goldenen Schraube drehen, bis 5,0 V anliegen. Ist es zu viel, brennt der ESP32 durch.
  4. Abklemmen und die TJA1020-Platine verdrahten: ① ② ③ an die Klemme auf der Seite 12V/LIN (INH frei) und ⑧ ⑨ ⑩ ⑪ an die der anderen Seite.
  5. Zum Schluss ⑥ und ⑦ an den ESP32. Für den ersten Test weglassen: den ESP32 per USB vom Laptop versorgen (beim ESP32-S3 über den mit UART oder COM beschrifteten USB-Anschluss) und in der Konsole status eingeben.
  6. Zeigt die Konsole nicht einmal das Echo, ⑧ und ⑨ tauschen (passiert oft wegen der TX/RX-Beschriftung dieser Platinen). Kommt ein Echo, aber „sin respuesta“ (keine Antwort), ② und die Masse prüfen.
  7. Optional, wenn das Grundlegende läuft: das OLED-Display und das Thermometer (SHT31 oder AHT20) mit ⑫–⑮, und die „Heizen“-Taste mit ⑯–⑰ (beliebiger Taster; einstellen unter Einstellungen). Die Platine erkennt sie beim Start selbst (oder 30 s nach dem Anschließen). Das Thermometer eine Handbreit von Platine und Regler entfernt anbringen, die warm werden. Ohne Thermometer funktioniert alles gleich, außer „Heizen bis X °C“.
  8. Optional: CO-Sensor (Winsen ZE07-CO) mit ⑱–⑳: 5 V vom Regler, Masse und sein TXD an IO15 (sein RXD und die anderen Pins bleiben frei). Sein Ausgang hat 3,3 V: direkt an den ESP32. Die Platine erkennt ihn, sobald er Daten sendet; seine ersten 3 Minuten zählen nicht (er wärmt sich auf). Innen anbringen, auf Kopfhöhe beim Schlafen und weg vom Kocher; nicht neben dem Warmluftaustritt. Sendet er einmal keine Daten mehr, schalten Zeitpläne nicht mehr selbst ein, bis er zurück ist (oder bis du in den Einstellungen «Ich habe keinen CO-Sensor mehr» wählst). Zusätzlich einen zugelassenen CO-Melder (EN 50291) mit eigenem Alarm einbauen: fällt die Platine aus, nützt dieser Sensor nichts.
Schaltplan als PDF herunterladen Zeichnung, Kabelliste und Schritte, zum Ausdrucken und Mitnehmen in den Bus

Testen ohne Bus: eine falsche Webasto

Ein zweiter ESP32 (beliebig, der klassische oder ein S3) kann sich am W-Bus als Webasto ausgeben: er startet, zündet, regelt, läuft nach und meldet Störungen wie eine echte (dasselbe Modell wie der Simulator oben, abgeglichen mit libwbus). So lässt sich ganz WTTC auf dem Tisch testen, ohne Diesel und ohne Bus. Über seine USB-Konsole löst man Fehler aus (kein Diesel, Flammabriss, kein Strom, loses Kabel, schwache Batterie) und beschleunigt die Zeit. Sketch, Anleitung und Testliste: herramientas/webasto_falsa.

A) Direkt, ohne Transceiver (am einfachsten) Vorher die TJA1020-Platine von WTTC abnehmen (oder ihr TX und RX trennen) · Echo an (ab Werk) Falscher ESP32 (beliebig: klassisch oder S3) TX · IO17 RX · IO16 GND USB zum PC: Konsole 115200 WTTC · ESP32-S3 ohne die TJA1020-Platine IO16 (hört) IO17 (sendet) GND 1 2 3 ① was die falsche Webasto antwortet · ② was WTTC sendet · ③ gemeinsame Masse alles mit 3,3 V: sonst nichts nötig (das Bus-Echo gibt die falsche Webasto zurück) Strom: jeder ESP32 über sein eigenes USB (Computer oder Ladegerät). Die 5 V nicht verbinden: die Masse ③ genügt. B) Über den echten Bus, mit einem zweiten TJA1020 Testet auch den Transceiver und das W-Bus-Kabel · TX und RX wie bei WTTC (die TX-Klemme des Moduls geht an RX des ESP32) · in seiner Konsole: eco no Falscher ESP32 IO16 (RX) IO17 (TX) 3V3 GND TJA1020 TX RX SLP GND LIN 12V GND TJA1020 von WTTC LIN 12V GND WTTC wie im Bus W-Bus (LIN an LIN) 12-V-Netzteil(+ und −) Strom: beide ESP32 über USB. Das 12-V-Netzteil versorgt nur die TJA1020 (den Bus). WTTC kann die 5 V auch von seinem LM2596 an diesem Netzteil nehmen, wie im Bus (dann ohne sein USB). In beiden Fällen: die falsche Webasto wird über ihre USB-Konsole bedient (Fehler, Batterie, Temperatur, schnellere Zeit)
Am einfachsten: im Browser installieren (Chrome oder Edge, klassischer ESP32 oder S3). Er lässt sich auch mit der Arduino IDE (esp32-Core 3.x) flashen, wie WTTC. Hat dein ESP32 IO16 und IO17 nicht frei, in seiner Konsole mit pines <rx> <tx> ändern; für die Verbindung über den Bus (B) eco no. Beides bleibt gespeichert.

Das Protokoll über USB ansehen (serielle Konsole)

Am einfachsten: die serielle Konsole dieser Website (Chrome oder Edge auf einem Computer): verbindet beide Platinen gleichzeitig, erkennt welche welche ist, färbt jede Zeile und speichert als .txt oder .md. Nichts zu installieren.

Beide Platinen (WTTC und die falsche Webasto) melden über ihr USB alles, was sie tun. Unter Windows mit PuTTY:

  1. Die Platine per USB an den Computer anschließen (beim ESP32-S3 den mit UART oder COM beschrifteten USB-Anschluss).
  2. Im Geräte-Manager → Anschlüsse (COM & LPT) die Nummer ablesen (z. B. COM5; meist CP210x, CH340/CH343 oder „USB Serial“). Fehlt sie, den Treiber installieren (CP210x oder CH343).
  3. In PuTTY, Session: Connection type Serial, Serial line COM5 (deine) und Speed 115200.
  4. Connection → Serial: Flow control None.
  5. Terminal: Local echo und Local line editing auf Force on (man sieht, was man tippt, und es wird mit Enter gesendet).
  6. Zum Speichern in einer Datei (und um sie bei Problemen zu schicken): Session → Logging → „All session output“ und Datei wählen.
  7. Zurück in Session einen Namen vergeben („Falsche Webasto“, „WTTC“), Save, dann Open. ayuda (falsche Webasto) oder info (WTTC) eingeben und Enter.

Beim Öffnen des Ports startet die Platine neu: das ist normal. Den Port kann nur ein Programm gleichzeitig nutzen: vorher den seriellen Monitor von Arduino oder das Installationsfenster schließen. Mit beiden Platinen am selben Computer hat jede ihren eigenen COM: zwei PuTTY-Fenster öffnen. Unter Linux oder Mac: screen /dev/ttyUSB0 115200 (beenden: Strg+A, dann K).

Downloads · Version 0.3.18

Firmware für den ESP32 Ordner WTTC/ mit WTTC.ino und web.h · 164 KB · 21/10/2026 ⬇ WTTC-firmware.zip
Android-App (APK) Android 8 oder neuer · Handy, Tablet oder Autoradio · noch keine Platine? Demomodus ausprobieren ⬇ WTTC.apk
Kabelloses Update (.ota) Für die Webseite der Platine (Einstellungen → Firmware aktualisieren), falls sie es nicht selbst herunterladen kann. Signiert: nur das offizielle wird installiert · 1.618 KB ⬇ WTTC-0.3.18-s3.ota
Quellcode Firmware, App und diese Dokumentation · freie Software, Lizenz GPL v3 GitHub ↗
Versionen und Änderungen (auf Spanisch)

Todas las versiones de WTTC (firmware del ESP32 y app Android van con el mismo número).

Formato: la versión más reciente arriba. Cada versión publicada tiene su Release en GitHub con el APK y el firmware.

Mientras la versión empiece por 0, es una versión de prueba: compila y funciona en el simulador, pero aún no se

ha comprobado con una Webasto real. La 1.0.0 llegará cuando alguien lo haya probado montado en un vehículo.

Version 0.3.18 · 2026-10-18 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Programas para dormir dentro: con temperatura, hasta 12 horas. Por ejemplo «mantener 20 °C de 22:00 a 7:00, de lunes a viernes» (temporada de esquí). Dentro de esa ventana hace de termostato como siempre: enciende si hace frío, apaga al llegar y vuelve a encender al enfriarse, con encendidos de 60 minutos como mucho.
  • Las ventanas de más de 4 horas («noche») exigen el sensor de CO y batería, sin elección: solo se guardan con el sensor de CO montado y mandando datos y con la batería mínima en 12,0 V o más (para que por la mañana arranque el motor). Mientras haya alguno, la batería mínima no se puede bajar de 12,0 V. Si llega la hora y el sensor no está mandando datos, no empieza; si deja de mandar datos durante la noche, apaga la calefacción y avisa.
  • La Webasto falsa ya no enseña en su registro un «último mantenimiento hace 3,3 s» congelado durante el postbarrido (parecía que WTTC seguía mandándolo): dice que apagándose ya no hace falta.

Version 0.3.17 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Prohibido que los programas se pisen. Antes solo se avisaba; ahora no se pueden guardar (ni desde la web, ni desde la app, ni por Bluetooth: la placa lo comprueba siempre). Cada programa ocupa su rato: uno normal, de su hora a su final; uno con «hora de salida», los 90 minutos antes de la salida (lo más pronto que puede encender). Entre el final de uno y el principio del siguiente tiene que haber al menos 5 minutos (el postbarrido de la Webasto y margen), también cruzando la medianoche (domingo por la noche y lunes de madrugada, por ejemplo). La web y la app marcan en rojo los dos que chocan.
  • «Salgo a las…» tampoco puede pisar un programa, ni un programa la salida que ya esté puesta.
  • Programas guardados con versiones anteriores que se pisen: al arrancar, la placa desactiva el segundo de cada pareja y lo apunta en el registro («Programa de las 16:15 desactivado: se pisaba con el de las 16:05»).

Version 0.3.16 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Un programa que llega con la calefacción ya encendida queda apuntado («Programa de las 16:15: ya estaba calentando, no hace nada»). No se apaga ni se alarga lo que está en marcha, igual que antes, pero antes no dejaba rastro y parecía que no había funcionado.
  • «Saltar la próxima» se cumple también si en ese momento ya calentaba: esa vez ya pasó, así que se quita la marca. Antes se quedaba puesta y se saltaba el programa del día siguiente.
  • Varios programas a la misma hora: si uno se salta (por «saltar la próxima» o por «solo si hace frío»), los demás se siguen mirando.

Version 0.3.15 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • «Guardar programas» se bloquea mientras guarda: varias pulsaciones seguidas lo guardaban varias veces (visto en una prueba en la mesa).
  • En la web: consola serie (wttc.favala.es/consola.php) para ver por USB las dos placas a la vez, con colores, y guardarlo en .txt o .md.

Version 0.3.14 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La consola por USB funciona con PuTTY (y con screen o cualquier terminal), en WTTC y en la Webasto falsa: las letras se juntan hasta el Enter. Antes solo iba bien el Monitor serie de Arduino, que manda la línea entera; PuTTY manda cada tecla y la orden llegaba a trozos.
  • En la web, cómo ver el registro por USB con PuTTY (instalar.php y la sección «Probar sin furgoneta»): qué COM, velocidad, ajustes y cómo guardarlo en un fichero.

Version 0.3.13 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba. Es la 0.3.12 (abajo) con su firmware: la Release 0.3.12 salió solo con la app, porque el análisis

estático paró la compilación por unos formatos de texto de la Webasto falsa.

Version 0.3.12 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La Webasto falsa cuenta todo lo que pasa por su consola USB: cada orden de WTTC y su respuesta, traducidas (encender, mantenimiento con el tiempo desde el anterior, sensores con sus valores, averías…); cada cambio de estado de la caldera y por qué (bujía caliente, ¡llama!, agua a 85 °C, fin del postbarrido…); las averías al guardarse; las órdenes que ignora y por qué; avisos si WTTC no renueva la orden, si llegan tramas malas o si en 30 s no llega nada (con lo que hay que revisar). Con hora en cada línea, nivel de detalle log 0–log 3 (guardado) y la orden resumen.
  • Los dibujos de conexión de la Webasto falsa dicen cómo se alimenta cada placa: cada ESP32 por su USB; la fuente de 12 V, solo para el bus.
  • El firmware de la placa no cambia (solo el número de versión).

Version 0.3.11 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La Webasto falsa se instala desde el navegador: en wttc.favala.es/instalar.php hay un segundo botón, «Instalar la Webasto falsa», para el otro ESP32 (el clásico o un S3) que hace de caldera en la mesa. El eco del bus y los pines del W-Bus ya no hay que tocarlos en el código: se cambian en su consola (eco no para la conexión por el bus, pines 16 17) y se quedan guardados.
  • El instalador graba siempre la versión que anuncia. La página decía una versión, pero el botón cogía el manifiesto común en el momento de pulsar: si entre medias salía otra, instalaba esa. Ahora cada versión tiene su manifiesto.
  • El firmware de la placa no cambia (solo el número de versión).

Version 0.3.10 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba. Es la 0.3.9 (abajo) con el firmware ya compilando: la Release 0.3.9 salió solo con la app, porque el

firmware de ese commit no compiló (el generador de prototipos del IDE tropezaba con las variables nuevas del sensor de CO).

Version 0.3.9 · 2026-10-17 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real ni con el sensor de CO).

  • Sensor de monóxido de carbono opcional (Winsen ZE07-CO, electroquímico): 5 V del regulador, masa y su TXD a IO15; la placa lo detecta sola, como el termómetro. Sus 3 primeros minutos no cuentan (se calienta).

- 30 ppm durante 2 min: aviso por Telegram para ventilar.

- Alarma (300 ppm dos lecturas seguidas, 100 ppm 30 s o 50 ppm 3 min): apaga la Webasto, corta el termostato y lo aplazado, avisa por Telegram, lo pone en la pantalla y el LED parpadea en rojo y azul. No deja encender, ni a mano, hasta 5 min seguidos por debajo de 20 ppm.

- Si el sensor que tenía deja de mandar datos, avisa y los encendidos sin nadie delante (programas, «Salgo a las…», termostato) no se hacen; a mano, sí. En Configuración, «Ya no tengo sensor de CO» si se ha quitado a propósito.

- Se ve en la web de la placa, en la app y en el chequeo de la Webasto. En las estadísticas, el encendido sale como «Monóxido (CO) alto».

- No sustituye a un detector de CO homologado con su propia alarma: si la placa falla, este sensor no sirve de nada.

  • Esquema de conexiones en PDF (botón en la sección «Montaje» de wttc.favala.es, en español, inglés y alemán): dibujo, lista de cables y pasos, para imprimirlo. El esquema incluye el sensor de CO (cables ⑱–⑳).

Version 0.3.8 · 2026-10-16 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Chequeo de la Webasto al conectar la placa, con el informe por Telegram. A los 20 s de arrancar, la placa le pregunta a la Webasto y comprueba: que el W-Bus contesta (si no, dice si el fallo parece de la placa o del cable, o de la Webasto o su fusible), qué calefactor es y su fecha de fabricación, la batería, la temperatura del agua, la resistencia de la bujía, que no haya llama estando apagada, horas de uso y arranques, y las averías guardadas con su nombre en español, inglés o alemán (y para las primeras, a qué tensión y temperatura pasaron). Termina con un veredicto (bien, revisar, mal) y consejos: si está bloqueada, cómo desbloquearla; si tuvo fallos de arranque, qué mirar; y, tras mucho tiempo parada, cómo hacer el primer encendido. Si la Webasto no contesta en 20 min, avisa igual. Nunca hace pruebas de componentes (bomba, bujía, ventilador) por su cuenta.
  • A mano cuando quieras: botón «Chequeo de la Webasto» en Diagnóstico (también lo manda por Telegram), orden chequeo en la consola y check en la app. Si está calentando, se hace al apagarse.
  • Borrar averías (Diagnóstico, con confirmación; consola borrar averias): borra la memoria de averías de la Webasto, que es lo que la desbloquea tras varios fallos seguidos. Solo con la calefacción parada.
  • Los avisos de Telegram admiten textos más largos (el informe del chequeo).

Version 0.3.7 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La app tiene modo claro y sigue el modo noche del sistema. Nuevo ajuste «Tema de la app»: automático (de fábrica), siempre oscuro o siempre claro. En automático cambia sola cuando el móvil, o la radio Android del coche, pasa a modo noche (muchas radios lo hacen al encender las luces). Si en ese momento hay programas sin guardar, espera a que se guarden. Los colores son los de la web de la placa, que ya seguía el modo del sistema.
  • El firmware no cambia (solo el número de versión).

Version 0.3.6 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La hora de salida aprende de tu furgoneta. Con termómetro dentro y «hasta X °C», cada encendido apunta cuánto tardó en llegar. Tras 3 encendidos así, la placa calcula a cuántos °C por minuto se calienta tu furgoneta (la mediana de los 10 últimos) y enciende con esa antelación, más un 15 % y 5 min de margen (entre 10 y 90 min). Hasta entonces, o sin termómetro, usa la fórmula de siempre. La web dice cuánto ha aprendido y el registro, cada vez que lo usa.
  • «Solo si hace frío» en cada programa: encender solo si dentro hay menos de X °C (sin termómetro, el agua del motor). Sin dato, enciende igual. Si se lo salta, lo apunta en el registro.
  • Saltar la próxima vez un programa, sin desactivarlo, y pausar los programas hasta un día (vacaciones): vuelven solos. «Salgo a las…» suelta funciona aunque estén en pausa.
  • Más cómodo de editar: plantillas al añadir (laborables saliendo a las 7:30, fin de semana, noche hasta 18 °C), botón «Duplicar» y aviso si dos programas activos se pisan el mismo día.
  • En la web de la placa y en la app. Una app anterior sigue funcionando con la placa nueva, y al guardar programas no borra la condición de frío de los que no cambia.

Version 0.3.5 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • No se manda encender durante el postbarrido. Tras apagarse, la Webasto sigue unos 2 min soplando para enfriarse e ignora una orden de encender (así lo hace libwbus, la referencia del protocolo W-Bus). WTTC la mandaba igual, creía que calentaba y, al acabar el postbarrido, avisaba de una avería que no era. Ahora, a mano (web, app, botón, consola) contesta «La Webasto está terminando de apagarse: prueba en N s»; los programas y «Salgo a las…» esperan solos y encienden al terminar.
  • Webasto falsa (herramientas/webasto_falsa): un segundo ESP32 que hace de Webasto en el W-Bus para probar WTTC en la mesa, con consola para provocar averías (sin gasoil, llama que se apaga, sin corriente, cable suelto, batería baja) y el tiempo acelerado. Su modelo se prueba en GitHub junto al código de WTTC que arma y comprueba las tramas, y se ha contrastado con libwbus: encender solo desde apagada, la orden se mantiene hasta apagarse del todo y sin renovación en 20 s apunta la avería 0x92. El simulador de la web usa ahora las mismas reglas.

Version 0.3.4 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Arregla un cuelgue al arrancar tras un reinicio pedido (actualización, orden «reiniciar», cambio de ajustes). El informe de cuelgues de una placa real (traducido con el .elf de la Release) señaló la puesta en hora por internet: se arrancaba al principio del arranque y, como tras un reinicio el reloj conserva la hora, su primera consulta coincidía con la de las órdenes remotas y la pila de red abortaba. Por eso la 0.3.3 se colgó al instalarse y la placa volvió sola a la 0.3.2. Ahora la hora por internet se arranca cuando la Wi-Fi tiene dirección, con la función de la pila de red pensada para ello, y ninguna conexión automática (órdenes, estadísticas, actualizaciones, Telegram, registro) empieza hasta que la Wi-Fi lleve 20 s conectada.
  • Incluye lo de la 0.3.3 (conexiones seguras en la PSRAM), que no llegó a funcionar en esa placa por este cuelgue.

Version 0.3.3 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Las conexiones seguras usan la PSRAM (8 MB, casi sin usar) en vez de la memoria interna. Una placa real no pudo descargar una actualización con 40 KB libres porque el mayor bloque seguido era de 13 KB (cada conexión pide bloques de unos 16 KB). Si no hay PSRAM, se usa la interna como antes.
  • El registro enviado incluye el mayor bloque libre de la memoria interna, la PSRAM libre y si las conexiones van en ella (se ve en «Mis estadísticas»).

Version 0.3.2 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Conexiones a internet de una en una. El registro de una placa real (enviado con una orden remota) mostró que, al arrancar, la memoria libre bajaba a 24 KB: coincidían varias conexiones seguras (buscar actualización, órdenes remotas, estadísticas, Telegram) y cada una necesita unos 35–45 KB. Con poca memoria, las conexiones pueden fallar y la placa colgarse. Ahora esperan su turno, y las automáticas ni se lanzan mientras otra está conectada.
  • El registro enviado y la captura del W-Bus conservan los saltos de línea (antes llegaban en una sola línea).

Version 0.3.1 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Órdenes remotas (Configuración, web y app: «Permitir órdenes remotas», apagado de fábrica). Para cuidar la placa de lejos, en cualquier Wi-Fi con internet: cada 2 minutos pregunta al servidor del proyecto si hay una orden para ella (solo salen conexiones: sin VPN ni abrir puertos). Las órdenes van firmadas con la clave de las actualizaciones, y la placa comprueba la firma, que son para su código de instalación, que no las ha hecho ya y que no han caducado (15 min). Lista cerrada: actualizar, buscar actualizaciones, enviar el registro, reiniciar (nunca calentando) y el modo diagnóstico. Nunca enciende ni apaga la calefacción. Tras cada orden, la placa manda su registro (también después de reiniciar) para ver cómo fue.
  • Pruebas automáticas también de las órdenes (formato, firma de otra placa, repetidas, caducadas, desconocidas).

Version 0.3.0 · 2026-10-10 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Solo núcleo ESP32 3.x de Arduino: quien compile desde el código con el 2.x tiene que actualizarlo (Gestor de placas → esp32 de Espressif → 3.x); el instalador web y las actualizaciones no cambian.

Control de errores

  • Si la placa se reinicia calentando (cuelgue, vigilante, orden), al arrancar apaga la Webasto, lo apunta, avisa por Telegram y lo dice en la pantalla. Antes arrancaba creyendo que estaba apagada y perdía el control hasta que se acababa el tiempo.
  • Vigilante del bucle principal: si el programa se queda atascado 30 s, la placa se reinicia sola, con el motivo y el informe de dónde estaba atascada en el registro.
  • Se comprueba todo lo que puede fallar y se apunta en el registro en vez de seguir a ciegas: la memoria de ajustes (abrirla y si se llena), las tareas de Telegram, estadísticas, actualización y envío del registro, la Wi-Fi propia y wttc.local, y la memoria para pasar el registro antiguo. Las tramas del W-Bus se arman y comprueban con límites (una orden demasiado larga ya no puede escribir fuera de su sitio), y mientras espera la respuesta la placa cede el procesador.
  • Avisos de salud: poca memoria libre (menos de 30 KB) o una tarea que va justa de pila quedan en el registro.
  • Certificado del servidor: las actualizaciones, las estadísticas y el registro solo hablan con el servidor del proyecto (Let's Encrypt o ZeroSSL). Antes no se comprobaba (la firma ya impedía instalar algo falso, pero el anuncio de versión sí se podía falsear en una red ajena).

Depuración

  • Enviar el registro (Diagnóstico, en modo diagnóstico; web y app): manda el registro, las últimas tramas del W-Bus y los datos de salud al servidor del proyecto con el código de instalación. Se ven en https://wttc.favala.es/mi.php con ese código.
  • Captura del W-Bus: las 40 últimas tramas, con su momento (web y app).
  • En Diagnóstico también la memoria de ajustes libre y la pila que les sobra a las tareas.

Botón y pantalla

  • Botón «calentar» opcional (un pulsador entre IO7 y GND): con la calefacción apagada la enciende 30 min (o lo que elijas, o «hasta X °C» con termómetro); encendida, la apaga. Hay que mantenerlo medio segundo, y si se queda pulsado (cable en corto) se ignora. Cuenta en las estadísticas como «Botón».
  • Mensajes en la pantalla: lo que acaba de hacer el botón, «La Webasto no responde», «Actualizando 40 %», «Instalando actualización» y «Reinicio calentando: apagada».

Pruebas automáticas (en cada compilación, en GitHub)

  • La lógica del termostato, las tramas del W-Bus, las versiones, el código de instalación y la antelación de la salida van aparte (logica.h) y se prueban con muchos casos (también millis() dando la vuelta), con los detectores de errores de memoria de GCC.
  • Análisis estático con cppcheck: el código queda limpio y cualquier aviso nuevo para la compilación.
  • Las acciones de GitHub, fijadas a versiones exactas; .github/ con propietario (CODEOWNERS).

Version 0.2.21 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Lo mismo que la 0.2.20, que se quedó sin la actualización firmada en su Release por un fallo al publicarla (la etiqueta acabó en un commit posterior). Ahora la Release se etiqueta siempre en el commit que se ha compilado.
  • La web y la app solo anuncian una versión nueva cuando su actualización ya se puede descargar: antes, durante unos minutos tras publicarla, la placa la veía, empezaba y luego decía que aún no estaba publicada.

Version 0.2.20 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La Wi-Fi propia se oculta estando en casa. La Wi-Fi propia y la red con internet comparten la única radio del ESP32: con las dos a la vez, la propia cambia de canal y va a trompicones mientras se busca la otra (la «Wi-Fi que se apaga sola» después de un rato). Ahora, con 2 minutos estable en la red con internet y nadie conectado a la propia, la placa la apaga (se entra por wttc.local o por Bluetooth), y la vuelve a encender sola tras 1 minuto sin esa red. Los 10 primeros minutos tras arrancar sigue siempre visible. Se puede desactivar en Configuración (web y app): «Ocultarla cuando esté conectada a la red con internet».
  • La red con internet se busca con calma: si no está, cada 20 s los primeros 5 minutos y luego cada 5 minutos, en vez de sin parar (que estorbaba a la Wi-Fi propia lejos de casa).
  • Registro permanente: se guarda en la flash (40 líneas) y sobrevive a reinicios, cuelgues y cortes de corriente; lo que no dio tiempo a guardar justo antes de un cuelgue se recupera de la memoria que aguanta los reinicios. Una línea de puntos separa lo de antes de cada arranque.
  • Informe del cuelgue: si la placa se cuelga, al volver a arrancar lee de su partición coredump qué tarea falló y por qué direcciones del programa iba, y lo apunta en el registro. Cada Release lleva ahora el .elf del firmware, y herramientas/descifrar_cuelgue.py traduce esas direcciones a nombres de función.
  • Modo diagnóstico (Configuración, apagado de fábrica): enseña en Diagnóstico el registro, las tramas del W-Bus, cuánto lleva encendida, el motivo del arranque y la memoria, y manda por Telegram el informe del cuelgue. Apagado, Diagnóstico deja solo lo útil para cualquiera (leer averías, gasoil a cero). El registro y el informe se guardan siempre.
  • Por qué arrancó la placa: el registro apunta en cada arranque el motivo (se enchufó, reinicio pedido, se colgó, la reinició el vigilante, le bajó la tensión, botón RST). Si se colgó o le faltó tensión, avisa por Telegram. En Diagnóstico se ve cuánto lleva encendida, el motivo del último arranque y la memoria libre (ahora y la más baja), y también en el resumen de la consola.

Version 0.2.19 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Los arranques fallidos también cuentan en «Mis estadísticas». Cuando la Webasto no contesta por el W-Bus al intentar encenderla («No se pudo encender…»), la placa lo apunta como un intento con su hora, quién lo pidió y la temperatura y batería de ese momento. En https://wttc.favala.es/mi.php sale aparte (no baja las medias de duración y gasoil), en «Por qué se apaga» y en la tabla como «No respondió (W-Bus)», y con un consejo de qué revisar si se repite.
  • Mientras se actualiza no se puede tocar nada. La web de la placa y la app tapan toda la pantalla con el progreso («Descargando… 40 %», «Instalando…», «Reiniciando con la versión nueva…») hasta que la placa vuelve. Además, la placa rechaza las órdenes mientras instala (salvo apagar y consultar), por si alguien las manda igualmente.

Version 0.2.18 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Resumen de arranque en la consola (USB, 115200 baudios): versión, Bluetooth y su PIN, Wi-Fi propia y su clave, modo de la Wi-Fi, red con internet y su dirección, usuario y clave de la web desde otra red, Telegram, código de «Mis estadísticas» con su enlace, piezas detectadas y actualizaciones. Avisa de lo que sigue con los valores de fábrica. La orden info lo vuelve a sacar, y al unirse a la red con internet se escribe su dirección. Solo lo ve quien tiene la placa enchufada por USB; es también la forma de recuperar una clave olvidada.
  • El simulador de la web hace lo mismo.

Version 0.2.17 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Más datos de cada encendido para «Mis estadísticas»: humedad dentro al empezar y al acabar, objetivo del termostato y minutos hasta llegar, agua del motor y batería al empezar, y potencia media. Los encendidos que ya tenía apuntados la placa se conservan (pasan solos al formato nuevo).
  • Mis estadísticas (https://wttc.favala.es/mi.php), mucho más completa:

- Consejos para ti sacados de tus datos: cuánto antes encender según el frío, si conviene «calentar hasta», cuánto gastas con y sin termostato, avisos de batería y de humedad, programas que te ahorrarían encenderla a mano, averías que se repiten y el gasto del mes con su previsión.

- Comparación con el periodo anterior, récords, calendario de uso con rachas, mapa de día y hora, cuánto tarda en calentar, coste y litros por hora por mes, termostato (objetivos que más usas y tiempo hasta llegar), humedad, agua del motor y batería por separado.

- Comparación con la media de las demás placas (cuando envíen al menos 3) y descarga de todo en CSV para Excel.

- Agrupa por día, semana o mes según el rango, con fechas concretas, y se instala como app.

  • La app invita una vez a activar «Mis estadísticas» de cada placa (dos botones iguales; se puede cambiar cuando se quiera).

Version 0.2.16 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Login en la web de la placa desde otra red. Si la placa está unida a otra red (casa, camping, el móvil como punto de acceso…), antes cualquiera en esa red podía abrir su web y manejar la calefacción. Ahora pide usuario y clave (de fábrica, wttc / wttc), y con los de fábrica obliga a cambiarlos antes de dejar hacer nada. La sesión dura 30 días en ese navegador (hasta que la placa se reinicie); 5 intentos fallidos, 5 minutos de espera. Por la Wi-Fi propia de la placa no hace falta: ya se puso su clave. Se cambian en Configuración (web y app).
  • Mis estadísticas. La placa apunta cada encendido: hora, duración, gasoil, temperatura dentro al empezar y al acabar, máxima del agua, batería mínima, quién la encendió, por qué se apagó y la avería, si la hubo (los 48 últimos, en su memoria).

- Código de instalación al azar, creado una vez y para siempre (Configuración → Mis estadísticas). Al cambiar de placa se escribe en la nueva el de la vieja y se siguen las mismas estadísticas.

- «Enviar las estadísticas de esta placa» (apagado de fábrica): la placa las envía si tiene internet; si no, la app al conectarse.

- https://wttc.favala.es/mi.php: con el código, gráficas de horas y gasoil por mes, encendidos por día, a qué hora y qué día enciende, quién la enciende, por qué se apaga, temperatura dentro, agua y batería, duración, averías y los últimos encendidos; coste estimado con el precio del gasoil que elijas. Sin el código no se puede ver nada, y se pueden borrar los datos desde la misma página.

- «Enviar el código por Telegram»: llega solo en un mensaje, para copiarlo.

Version 0.2.15 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Actualizaciones automáticas (Configuración, en la web de la placa y en la app): «No buscar», «Buscar y avisar» (por defecto) o «Buscar e instalar sola». Con la placa unida a una red con internet, busca a los 2 minutos de arrancar y luego una vez al día. Si hay versión nueva, la web y la app lo avisan con un botón para actualizar (y Telegram, si está configurado); con «instalar sola» se instala sin preguntar, nunca calentando ni con el termostato en marcha. Antes solo buscaba con Telegram configurado, y solo avisaba por ahí.
  • «Más tarde» aparca el aviso, no lo descarta: el de firmware nuevo vuelve a salir cuando la placa se reinicia (o al volver a abrir la app), y el de app nueva, la próxima vez que se abre la app.

Version 0.2.14 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La Wi-Fi de la placa viene siempre encendida por defecto (antes, solo mientras calentaba y 10 minutos después): la web de la placa y wttc.local responden siempre. Gasta algo más con la furgo parada (≈ 40–60 mA, 1–1,5 Ah al día): si va a estar parada días, mejor «Solo mientras calienta» en Configuración. Las placas en las que ya se eligió un modo lo conservan.

Version 0.2.13 · 2026-10-09 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). La 0.2.12 fue la primera actualización sin cable hecha en una placa real (subiendo el .ota desde su web).

  • «Buscar actualizaciones» ya no se queda sin memoria: la tarea que busca y descarga no liberaba su conexión segura al terminar (unos 40 KB por búsqueda); tras un par de intentos la descarga fallaba con «Error al grabar la actualización» y luego ni empezaba.
  • Se usa la PSRAM de la placa (8 MB en la N16R8, «OPI PSRAM» al compilar): más margen para las conexiones seguras con Bluetooth y Wi-Fi a la vez.
  • Los errores al buscar o grabar dicen cuánto se ha descargado y cuánta memoria queda.
  • Las actualizaciones se descargan de wttc.favala.es (copia exacta de la Release, firmada igual) en vez de directamente de GitHub, cuyas descargas redirigen a otro servidor. Esto ya vale también para las placas con versiones anteriores.
  • En la web pública, la actualización (.ota) se puede descargar desde «Descargas», para subirla a mano desde la web de la placa.
  • App en pantallas anchas (tablets, radios de coche, televisores como el Fire TV): dos columnas, con el estado y el botón a la izquierda y los programas y la configuración a la derecha, en vez de una columna estrecha en el centro. Se recoloca al girar la pantalla.

Version 0.2.12 · 2026-10-07 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Buscar actualizaciones y Telegram con el portal cautivo: desde la 0.2.9 la placa, aun unida a la red, decía «no tiene internet». Mientras sale a internet, ahora deja un momento en pausa el servidor de nombres del portal.
  • Si aun así no llega al servidor, el error dice por qué: código, a qué dirección le lleva el nombre, qué servidor de nombres usa y cuál es su router.

Version 0.2.11 · 2026-10-07 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

App

  • Avisa cuando hay una versión nueva de la app: al abrirla (una vez al día como mucho) mira cuál es la última y, si ya está publicada, enseña sus novedades con un botón para descargar el WTTC.apk, que se instala encima conservando el emparejamiento y los ajustes. «Más tarde» no vuelve a avisar de esa versión. En «Ajustes de la app» se puede buscar a mano o desactivar el aviso. Solo lee la versión en wttc.favala.es; no envía nada.

Version 0.2.10 · 2026-10-07 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • La web de la placa funciona dentro de la ventanita del portal cautivo: los avisos y las preguntas («¿Actualizar ahora?», «Guardado», errores) salen ahora en un recuadro de la propia página. Esa ventanita (Android, iPhone) no muestra los del navegador, y botones como «Buscar actualizaciones» parecían no hacer nada.
  • Barra de progreso al actualizar, en la web de la placa (también al subir el fichero .ota) y en la app.
  • Si algo falla en la página, sale un aviso con el error en vez de quedarse callada.
  • «Buscar actualizaciones» avisa de que puede tardar hasta un minuto, y si la placa no consigue unirse a la red con internet lo dice enseguida y con el nombre de la red, en vez de esperar 40 segundos y decir «sin internet».

Version 0.2.9 · 2026-10-07 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Portal cautivo en la Wi-Fi de la placa: al conectarse a la red «WTTC», el móvil (Android, iPhone) o el ordenador abre solo la web de la placa, como en la Wi-Fi de un hotel; ya no hace falta escribir 192.168.4.1. Cualquier dirección que se escriba en esa red lleva también a la placa. En el iPhone, si se cierra esa ventana con «Cancelar» se desconecta de la red: hay que elegir «Usar sin internet».

Version 0.2.8 · 2026-10-07 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). La primera grabada en una placa real: el instalador desde el navegador funciona.

  • Buscar redes Wi-Fi al configurar la red con internet, en la web de la placa y en la app: la placa busca las cercanas y las enseña por orden de señal (con candado si llevan clave); al tocar una se rellena su nombre. Si la Wi-Fi estaba apagada por ahorro, la enciende unos minutos para buscar.

Version 0.2.7 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Cambio de licencia.

  • WTTC pasa a ser software libre con licencia GPL v3 o posterior (antes, MIT). Se puede usar, modificar y distribuir, pero quien distribuya una versión, modificada o no, tiene que hacerlo con la misma licencia y dar su código fuente: así el proyecto y sus derivados siguen siendo libres. Las versiones hasta la 0.2.6 siguen teniendo la licencia MIT con la que se publicaron.

Version 0.2.6 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Termostato: el agua cuenta como caliente (mínimo de 5 min por encendido) desde 30 °C, no desde 50 °C. Con pausas largas (fuera templado) el agua bajaba de 50 °C entre ciclos, volvía el mínimo de 15 min y se pasaba del objetivo. En el simulador, «hasta 20 °C» durante 4 h queda entre 18 y 20 °C con cualquier temperatura de fuera (de −10 a 15 °C).

Version 0.2.5 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Termostato más fino: el mínimo de 15 min por encendido queda solo para cuando arranca con el agua fría. Si el agua ya está caliente (50 °C o más, lo normal en los ciclos del termostato), el mínimo es de 5 min y apaga al llegar. Antes, con «hasta 25 °C», cada ciclo se pasaba hasta unos 27 °C; ahora se queda entre 23,5 y 25 °C y gasta menos.
  • Simulador: a velocidad ×10 o ×60 la pantalla ya no se apaga y enciende sola (la web del simulador consulta en tiempo real, no en tiempo simulado).

Version 0.2.4 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • El gasoil del mes y el total se mandan con dos decimales, como el del encendido: redondeados a uno, el total podía salir menor que el encendido (0,24 l frente a 0,2 l).
  • «Gasoil a cero» pone a cero también el encendido en marcha: antes, pulsado mientras calentaba, el gasoil de ese encendido podía salir mayor que el del mes y el total.

Version 0.2.3 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • Pantalla SSD1327 de 1,5" (128×128, 16 grises): por I2C con los mismos cuatro cables, con letras suavizadas (DejaVu Sans, generadas con herramientas/generar_fuentes.py, sin librerías), barra del tiempo que queda y franja de aviso. Solo se mandan las filas que cambian. Se elige en Configuración → Tipo de pantalla; las de 128×64 siguen valiendo.
  • Simulador: dibuja la SSD1327 en grises (la que lleva por defecto) igual que la placa.

Version 0.2.2 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

  • El botón BOOT enciende la pantalla un minuto en cualquier modo, también con la pantalla «apagada» en Configuración (que pasa a ser «solo con el botón»). Antes, en ese modo, no había forma de verla.
  • Simulador: avisa de que la pantalla está desactivada o de que se está detectando (la placa busca piezas nuevas cada 30 s).

Version 0.2.1 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Arreglo de la web de la placa.

Web de la placa

  • La lista de programas volvía a salir: desde la traducción a tres idiomas (0.1.x) no se dibujaba, y el estado salía como una sola letra («a» en vez de «Calentando»). La app no estaba afectada.
  • La fila de «Salgo a las» se ve entera en el móvil.
  • La compilación en GitHub prueba ahora la web de la placa en los tres idiomas antes de publicar nada.

Simulador (wttc.favala.es)

  • Pantalla OLED dibujada píxel a píxel como en la placa, LED de estado y botón BOOT.
  • Pantalla y termómetro se pueden conectar y quitar, y la temperatura de dentro se puede poner a mano.

Version 0.2.0 · 2026-10-06 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Pantalla, termómetro y termostato. Solo ESP32-S3.

Placas

  • Solo ESP32-S3 (DevKitC-1 N16R8). El ESP32 clásico deja de estar soportado: el firmware ya no compila para él y no hay actualización para esa placa. La 0.1.6 sigue disponible para quien lo tenga.

Opcional: pantalla, termómetro y LED

  • Pantalla OLED I2C de 128×64 (1,3" SH1106 o 0,96" SSD1306): temperatura de dentro, estado, agua, batería y lo siguiente que va a pasar. Se enciende con la calefacción, con el móvil conectado o con el botón BOOT, y se apaga al minuto (o siempre encendida, o nunca).
  • Termómetro de dentro (SHT31 o AHT20, en el mismo bus que la pantalla): temperatura y humedad en la app, la web y la pantalla. Con corrección por si mide de más.
  • LED RGB de la placa con el estado: naranja calentando, verde ya caliente, rojo si la Webasto no responde o se apagó sola, azul con la app conectada. Brillo ajustable o apagado.
  • Todo se detecta solo; sin ello, la placa funciona igual que antes.

Calefacción

  • Calentar hasta una temperatura (solo con el termómetro; de 5 a 25 °C): se enciende, se apaga al llegar y vuelve a encender si se enfría, dentro de un tiempo máximo de hasta 4 h. Cada encendido dura como mínimo 15 min (las Webasto no llevan bien los arranques cortos). Si dentro no sube medio grado en 25 min y aún no llega (mucho frío fuera, termómetro mal puesto), se apaga y avisa en vez de gastar en balde.
  • Hora de salida: «salgo a las 8:00» y la placa decide cuánto antes encender según el frío que haga (de 15 min a 1 h). Suelta o como tipo de programa, con o sin temperatura objetivo.
  • Batería vigilada mientras calienta: si baja medio voltio por debajo de la mínima, se apaga para que luego arranque el motor.
  • Aviso de «ya está caliente» por Telegram cuando el agua llega a la temperatura elegida.

App

  • Temperatura y humedad de dentro, «Hasta X °C», «Salgo a las…» y las opciones nuevas de los programas (hora de salida, temperatura objetivo). Lo que depende de una pieza opcional solo aparece si la placa la tiene.
  • Acceso rápido: botón «Webasto» en los ajustes rápidos de Android y widget para la pantalla de inicio. Se conectan a la placa y encienden (con la duración elegida en la app) o apagan si ya está encendida.
  • Notificación de «ya está caliente» con la app abierta.

Version 0.1.6 · 2026-10-05 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Primera que se puede instalar sin cable desde la 0.1.5.

Placas

  • ESP32-S3 (DevKitC-1 N16R8, 16 MB) como placa de referencia; el ESP32 DevKitC sigue valiendo. Cada una tiene su propio programa y su propia actualización sin cable; la placa descarga la suya.
  • Con los núcleos 3.x, el Bluetooth del ESP32-S3 usa la pila NimBLE: emparejar, contar y borrar emparejamientos funciona igual.

Instalación

  • Instalar desde el navegador (wttc.favala.es/instalar.php): con Chrome o Edge, pinchar la placa por USB y pulsar «Instalar». Sin Arduino IDE. Reinstalar así no borra la configuración ni el PIN.
  • Las Releases llevan ya la actualización firmada de cada placa (.ota) y el paquete para instalar desde el navegador.

Version 0.1.5 · 2026-10-05 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Actualizaciones sin cable. Esta versión hay que grabarla una

vez por USB (trae una tabla de particiones nueva); a partir de ella, las siguientes se instalan desde la app o la web.

Firmware

  • Buscar actualizaciones: con la placa unida a una red con internet, busca la versión nueva, enseña sus novedades y, si se acepta, la descarga, la instala y se reinicia sola.
  • También se puede subir el fichero .ota de una Release desde la web de la placa (Configuración → Actualizar firmware).
  • Las actualizaciones van firmadas: solo se instalan las oficiales, nunca una versión más antigua ni mientras calienta. Si la nueva no aguanta un minuto funcionando, la placa vuelve sola a la anterior.
  • Con Telegram configurado, avisa una vez al día como mucho cuando hay versión nueva, con sus novedades.
  • Tabla de particiones propia (partitions.csv, Arduino la usa sola). La configuración y el PIN no se pierden al cambiarla.

App Android

  • Buscar actualizaciones en Configuración: consulta la última versión, enseña las novedades y la placa hace el resto.

Version 0.1.4 · 2026-10-05 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real). Mejoras de seguridad.

Firmware

  • Primer uso: mientras la Wi-Fi de la placa tenga la clave de fábrica (calefaccion, que es pública), su web solo deja elegir una nueva: no admite órdenes ni enseña el PIN de Bluetooth. No se puede volver a poner la de fábrica.
  • La web de la placa rechaza órdenes enviadas desde otras webs abiertas en el móvil.
  • Los avisos de Telegram comprueban el certificado del servidor: en una red ajena nadie puede hacerse pasar por Telegram y leer el token del bot.

App Android

  • Si la placa sigue con la clave de fábrica de la Wi-Fi, la app la pide al conectar.
  • La duración de cada programa ya no sale cortada.

Version 0.1.3 · 2026-10-05 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

Idiomas

  • Firmware: habla español, inglés o alemán en el registro, los avisos de Telegram, los mensajes y su web. Se elige en Configuración; la app le pone el del móvil al conectar. La consola serie sigue en español.
  • App Android: en inglés, español y alemán según el idioma del móvil (inglés si no es ninguno de los tres). En Android 13 o posterior se puede elegir en los ajustes de la app. Los números van con la coma o el punto de ese idioma.
  • Web: wttc.favala.es también en inglés (/en/) y alemán (/de/), simulador incluido.

Version 0.1.2 · 2026-10-04 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

App Android

  • Bluetooth: una respuesta de la placa que llega tarde ya no da por terminada la orden siguiente.
  • Bluetooth: buscar placas dos veces seguidas ya no corta la segunda búsqueda antes de tiempo.
  • Estadísticas: ya no se pierden los contadores sumados mientras se envía el informe del día.

Version 0.1.1 · 2026-10-04 · Release auf GitHub ↗

Versión de prueba (sin probar con una Webasto real).

App Android

  • Modo demostración: ahora carga los programas y la configuración de ejemplo.
  • Los números salen siempre con coma decimal, aunque el móvil esté en otro idioma.

Version 0.1.0 · 2026-10-04 · Release auf GitHub ↗

Primera versión pública como WTTC. Versión de prueba: aún sin probar con una Webasto real.

Firmware

  • Bluetooth LE como vía principal, con emparejamiento por PIN de 6 cifras (generado al azar en cada placa) y conexión cifrada.
  • Wi-Fi bajo demanda para ahorrar batería: siempre encendida, solo mientras calienta o solo a petición. Tras arrancar, 10 minutos encendida en cualquier modo.
  • Estado real de la Webasto: arrancando, calentando, en pausa (agua caliente) o sin respuesta. Detecta cuando se apaga sola y lee sus averías.
  • Gasoil estimado a partir de la potencia que informa la Webasto: encendido actual, último, mes y total.
  • Avisos por Telegram (bot propio, opcional) al encender, al apagar, si se apaga sola, si deja de responder y si un programa no arranca por batería baja.
  • Configuración desde la web o la app: nombre, PIN, clave de la Wi-Fi, modo de la Wi-Fi, red con internet, Telegram y batería mínima.
  • Duración máxima por encendido: 60 minutos.
  • Procesador a 80 MHz y anuncio Bluetooth espaciado para gastar menos.
  • La web de la placa va en web.h y muestra la fecha completa en la cabecera.
  • Requiere el esquema de partición Huge APP.

App Android

  • Búsqueda y emparejamiento con la placa; se reconecta sola cuando está al alcance.
  • Estado, encendido y apagado, programas, averías, registro, gasoil estimado y configuración de la placa.
  • Avisos del sistema si la calefacción se apaga sola.
  • Estadísticas anónimas opcionales (dos botones iguales en el primer inicio; se cambia en «Ajustes de la app»).
  • Modo demostración («Probar sin placa»): una placa simulada dentro de la app, para probarla sin nada montado.

Web y proyecto

  • Web pública https://wttc.favala.es: simulador del firmware, esquema de montaje, guías de instalación (Arduino IDE y

arduino-cli en Linux y Windows) y de uso (móvil Android, iPhone y radio de coche), descargas y versiones.

  • Estadísticas públicas y agregadas en https://wttc.favala.es/estadisticas.php (sin IP).
  • Compilación automática del firmware y de la app en GitHub Actions, Releases firmadas y capturas del README.
  • Todo el código y el contenido están generados íntegramente con Claude (Anthropic) y van comentados en abundancia.

Version 0.0.1 · 2026-09-30

Versión inicial (no publicada) (como Webastot5.ino): solo Wi-Fi y web, encendido y apagado, programas semanales, temperatura, tensión, llama, potencia, averías y consola serie.

Alle veröffentlichten Versionen: github.com/matatunos/wttc/releases

Jede Änderung der Firmware wird auf GitHub automatisch mit dem ESP32-Core 3.3.12 kompiliert, und die App erscheint unter Releases. Testversion (0.x): noch nicht an einer echten Webasto erprobt. Die 1.0 kommt, wenn jemand es eingebaut getestet hat; wenn du es baust, erzähl uns, wie es lief, indem du ein Issue auf GitHub eröffnest.

Verwendete Hardware

TeilVerwendetes ModellWofür
Fahrzeug und HeizungVW T5 mit ab Werk eingebauter Wasser-Standheizung Webasto Thermo Top C (VW-Teilenr. 7H0 010 398 J), über W-Bus von der originalen Zeitschaltuhr gesteuertDas, was gesteuert wird. Der ESP32 ersetzt die Zeitschaltuhr und wird in ihren Stecker gesteckt
MikrocontrollerESP32-S3 DevKitC-1 N16R8 (16 MB Flash; am besten auf einer Basis mit Schraubklemmen, die sich bei Vibrationen nicht löst) — seit Version 0.2.0 der einzige unterstützteWLAN, Webseite, Zeitpläne, Benachrichtigungen und das W-Bus-Protokoll über seinen UART2 (IO16/IO17)
W-Bus-TransceiverModul UART ↔ LIN/K-Line mit TJA1020 (das verwendete ist von Gutol: Schraubklemmen 12V/GND/LIN/INH und TX/RX/SLP/GND, ohne VCC-Pin)Passt den 3,3-V-TTL-Pegel des ESP32 an den Eindraht-Bus mit 12 V an. Jedes Modul mit TJA1020 oder gleichwertig geht (TJA1021, MCP2003, L9637D)
Optional: DisplayI2C-OLED SSD1327 1,5" (128×128, 16 Graustufen; empfohlen) oder eines mit 128×64: 1,3" (SH1106) oder 0,96" (SSD1306). Adresse 0x3C oder 0x3DInnentemperatur, Zustand, Kühlwasser, Batterie und was als Nächstes passiert. Der Typ wird in den Einstellungen gewählt
Optional: ThermometerI2C-Modul SHT31 oder AHT20 (Temperatur und Feuchte)Innentemperatur: „Heizen bis X °C“, genauere Abfahrtszeit und Kondenswasser auf einen Blick
Optional: „Heizen“-TasteBeliebiger Taster (Schließer), zwischen IO7 und GNDEin- (30 min oder was in den Einstellungen gewählt ist) und ausschalten ohne Handy, wie die Heiztaste des Original-Bedienteils. Eine halbe Sekunde halten
StromversorgungAbwärtsregler LM2596 (Modul mit Potentiometer), eingestellt auf 5,0 VErzeugt die 5 V für den ESP32 aus dem Dauer-Plus +12 V des Steckers
VerkabelungDupont-Kabel (Buchse) für den ESP32, 0,5-mm²-Kabel für die 12-V-Seite, Verbinder oder Lüsterklemmen und Band oder SchrumpfschlauchVerbindungen laut Schaltplan und Kabelliste oben
WerkzeugMultimeter, kleiner Schraubendreher, PC mit USB (Linux oder Windows)Kabel des Steckers bestimmen, LM2596 einstellen, ESP32 programmieren und erster Test über die Konsole
Optional: ein Schalter im +12 V des ESP32, wenn das Fahrzeug wochenlang steht (siehe „Stromverbrauch“ unten), und eine träge 1-A-Sicherung in der Leitung. Das +12 V am Stecker des Bedienteils ist Dauerplus (auch bei ausgeschalteter Zündung), genau das richtige; seine Werkssicherung ist unterschiedlich (bei Webasto-Nachrüstsätzen meist klein, oft 1 A; beim werksseitig eingebauten T5 kommt es aus dem Sicherungskasten des Fahrzeugs und hängt vom Baujahr ab), daher die 1-A-Sicherung auch dann einsetzen, wenn schon eine größere vorhanden ist: sie schützt die dünnen Leitungen der Platine. Die Platine braucht etwa 0,1–0,2 A bei 12 V (kurz etwas mehr beim Senden); über den W-Bus laufen nur Daten. VCDS ist für den Betrieb nicht nötig, hilft aber beim Auslesen und Löschen von Fehlern im Steuergerät 18 (Zusatzheizung).

Firmware aufspielen: was du brauchst

  • Am einfachsten: im Browser installieren (Chrome oder Edge, ein Klick, nichts von dem Folgenden). Das Folgende ist für die Arduino IDE.
  • Arduino IDE 2 (am einfachsten) oder arduino-cli (nur Terminal).
  • Den ESP32-Core von Espressif („esp32 by Espressif Systems“), Version 2.x oder 3.x. Die IDE lädt ihn selbst herunter: mehrere hundert MB.
  • Board ESP32S3 Dev Module mit dem Partitionsschema Huge APP (3MB No OTA/1MB SPIFFS): mit Bluetooth und WLAN passt das Programm nicht in die normale Partition.
  • Ein USB-Datenkabel: viele Ladekabel übertragen keine Daten, und der PC sieht die Platine nicht.
  • USB-Seriell-Treiber: der ESP32-S3 hat zwei USB-Anschlüsse; den mit UART oder COM beschrifteten nehmen, er hat einen CH343 oder CP2102 (der andere ist das USB des Chips selbst). Unter Linux geht es ohne Installation; unter Windows 10/11 installiert er sich meist selbst, und falls kein COM-Port erscheint, den „CP210x VCP driver“ von Silicon Labs installieren.
  • Keine zusätzlichen Bibliotheken: Bluetooth, WLAN, Webserver und Preferences kommen mit dem ESP32-Core.

Mit Arduino IDE 2 (Linux und Windows)

  1. Die IDE von arduino.cc/en/software installieren. Unter Windows mit dem .exe-Installer oder winget install ArduinoSA.IDE.stable; unter Linux das AppImage (ausführbar machen).
  2. Datei → Einstellungen → „Zusätzliche Boardverwalter-URLs“, hinzufügen:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. Werkzeuge → Board → Boardverwalter, nach „esp32“ suchen und esp32 von Espressif Systems in Version 3.x installieren (2.x geht nicht mehr: falls vorhanden, dort aktualisieren).
  4. Das Zip entpacken: es entsteht der Ordner WTTC/ mit WTTC.ino und web.h (die IDE verlangt, dass der Ordner wie die .ino heißt). WTTC.ino öffnen.
  5. Werkzeuge → Board → esp32 → ESP32S3 Dev Module und Flash Size → 16MB; PSRAM → OPI PSRAM; Werkzeuge → Partition Scheme → Huge APP (3MB No OTA/1MB SPIFFS) (nur wegen der Größengrenze: der Ordner WTTC/ bringt seine eigene Partitionstabelle mit zwei Plätzen für kabellose Updates mit, die Arduino selbst verwendet); und unter Port den des ESP32 (COMx unter Windows, /dev/ttyUSB0 unter Linux).
  6. Hochladen drücken (der Pfeil). Bleibt es bei „Connecting……“ hängen, die Taste BOOT der Platine gedrückt halten, bis das Schreiben beginnt.
  7. Werkzeuge → Serieller Monitor mit 115200 Baud: es erscheint eine Übersicht mit Version, Bluetooth-PIN, WLAN der Platine und Passwort sowie Web-Benutzer und -Passwort (notieren; info zeigt sie erneut). Für den ersten Test status eingeben.

Mit arduino-cli unter Linux

curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/.local/bin sh
arduino-cli config init
arduino-cli config add board_manager.additional_urls \
  https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core update-index
arduino-cli core install esp32:esp32

# im Ordner, der WTTC/ enthält
# ESP32-S3
FQBN=esp32:esp32:esp32s3:FlashSize=16M,PSRAM=opi,PartitionScheme=huge_app
arduino-cli compile --fqbn $FQBN WTTC
arduino-cli upload  --fqbn $FQBN -p /dev/ttyUSB0 WTTC
arduino-cli monitor -p /dev/ttyUSB0 -c baudrate=115200
Bei „Permission denied“ auf /dev/ttyUSB0: sudo usermod -aG dialout $USER und neu anmelden. Unter Ubuntu, wenn der Port erscheint und verschwindet, brltty deinstallieren.

Mit arduino-cli unter Windows (PowerShell)

winget install ArduinoSA.CLI
arduino-cli config init
arduino-cli config add board_manager.additional_urls `
  https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core update-index
arduino-cli core install esp32:esp32

# im Ordner, der WTTC\ enthält
# ESP32-S3
$FQBN = "esp32:esp32:esp32s3:FlashSize=16M,PSRAM=opi,PartitionScheme=huge_app"
arduino-cli compile --fqbn $FQBN WTTC
arduino-cli upload  --fqbn $FQBN -p COM3 WTTC
arduino-cli monitor -p COM3 -c baudrate=115200
COM3 durch den Port ersetzen, den arduino-cli board list anzeigt (oder im Geräte-Manager → Anschlüsse (COM & LPT)). Nach der Installation mit winget eine neue PowerShell öffnen, damit sie arduino-cli findet.

Bedienung

📱 Android-Handy oder -Tablet (App, über Bluetooth)

  1. WTTC.apk auf dem Handy herunterladen und öffnen. Android fragt nach der Erlaubnis, „unbekannte Apps zu installieren“ aus dem Browser: für diese Installation erlauben.
  2. WTTC öffnen und die Berechtigungen für Geräte in der Nähe (Bluetooth) und Benachrichtigungen erteilen.
  3. Platine suchen antippen, dein WTTC wählen und die 6-stellige PIN eingeben (steht beim Start im seriellen Monitor und auf der Webseite der Platine, Abschnitt Einstellungen).
  4. Fertig: ab dann verbindet sich die App von selbst, wenn die Platine in Reichweite ist (10–20 m durch die Karosserie), und stellt ihre Uhr.
  5. Schaltet sich die Heizung bei geöffneter App selbst ab, zeigt Android eine Benachrichtigung mit dem Grund und ihren Fehlercodes.
  6. Noch keine Platine? Ohne Platine testen startet den Demomodus: eine simulierte Platine, um zu sehen, wie die App funktioniert.
  7. Firmware aktualisieren: Einstellungen → Nach Updates suchen. Gibt es eine neue Version, zeigt sie die Neuerungen und, wenn du zustimmst, lädt die Platine sie herunter, installiert sie und startet selbst neu (sie muss mit einem Netz mit Internet verbunden sein). Mit Telegram meldet sich die Platine außerdem selbst, wenn eine erscheint.

🍏 iPhone (Webseite, über WLAN)

  1. Es gibt keine iPhone-App: man nutzt die Webseite der Platine, dieselbe wie im Simulator.
  2. Einstellungen → WLAN → Netz WTTC (Passwort ab Werk calefaccion: beim ersten Mal verlangt die Webseite, es zu ändern, bevor man sie bedienen kann) und in Safari http://192.168.4.1 öffnen.
  3. Teilen → Zum Home-Bildschirm: dann verhält sie sich wie eine App.
  4. Damit das Netz der Platine verfügbar ist, wenn du es brauchst, das WLAN auf „Immer an“ oder „Nur während des Heizens“ stellen (siehe Stromverbrauch). Bei „Nur auf Anfrage“ ist es nur die 10 Minuten nach dem Start da.
  5. Wenn die Platine sich mit dem Hotspot des iPhones verbindet, antwortet sie auch unter http://wttc.local, ohne das Netz zu wechseln.
  6. Zum Aktualisieren: Einstellungen → Nach Updates suchen (Platine mit einem Netz mit Internet verbunden) oder die .ota-Datei der neuesten Version im selben Abschnitt hochladen.

🚐 Android-Autoradio im Fahrzeug

  1. Zuerst prüfen, ob sein Bluetooth für Apps taugt: nRF Connect (Play Store, kostenlos) auf dem Radio installieren und Scan antippen. Erscheinen BLE-Geräte, funktioniert die WTTC-App.
  2. Die APK installieren: im Browser des Radios herunterladen oder auf einen USB-Stick kopieren und mit seinem Dateimanager öffnen.
  3. Koppeln wie am Handy. Die Oberfläche passt sich an das Radio an (zentrierte Spalte, große Tasten).
  4. Sieht nRF Connect nichts, ist das Bluetooth des Radios ein eigenes Modul nur für Telefonie und Musik. Dann die Webseite nutzen: das Radio mit dem WLAN WTTC verbinden und http://192.168.4.1 öffnen. Solange hat das Radio kein Internet über WLAN.

Stromverbrauch und WLAN-Modi

Modus (Einstellungen)Wann das WLAN an istCa. Verbrauch im Stand
Immer an (Standard)Die ganze Zeit≈ 40–60 mA (1–1,5 Ah/Tag)
Nur während des Heizens (am besten bei tagelangem Stillstand)Beim Heizen und 10 min danach≈ 15–25 mA nur mit Bluetooth
Nur auf AnfrageWenn du es in der App anforderst (15 min) und ein paar Minuten zum Senden von Benachrichtigungen≈ 15–25 mA
Geschätzte Werte bei 12 V, LM2596 inklusive; miss deinen mit dem Multimeter in Reihe. In allen Modi ist das WLAN nach dem Start 10 Minuten an, als Rettungsweg, falls dein Handy nicht gekoppelt ist. Der Prozessor läuft mit 80 MHz, um weniger zu verbrauchen.

Telegram-Benachrichtigungen (optional)

  1. In Telegram mit @BotFather schreiben, /newbot senden und den Schritten folgen: er gibt dir den Token deines Bots.
  2. Den Chat mit deinem neuen Bot öffnen und Starten antippen (sonst kann der Bot dir nicht schreiben).
  3. Deine Chat-ID: dem Bot etwas schreiben und https://api.telegram.org/bot<TOKEN>/getUpdates öffnen; es ist die Zahl in "chat":{"id":…}.
  4. In der App oder auf der Webseite der Platine → Einstellungen: Token, Chat-ID und ein Netzwerk mit Internet (zum Beispiel der Hotspot des Handys). Speichern und Telegram testen antippen.
  5. Sie meldet sich beim Einschalten, beim Ausschalten, wenn sie sich selbst abschaltet (mit ihren Fehlern), wenn sie nicht mehr antwortet und wenn ein Zeitplan wegen schwacher Batterie nicht startet.

Sicherheit

Telegramme der Firmware

AktionTelegrammAntwort der Webasto
Telegramm mit Prüfsumme
—

Was simuliert wird

  • Diesel: geschätzt aus der von der Webasto gemeldeten Leistung (≈ 0,62 l/h bei 5 kW laut Datenblatt); die Platine führt den aktuellen Lauf, den letzten, den Monat und die Summe. Es ist eine Schätzung (±20 %), keine Tankmessung.
  • Nicht simuliert: Bluetooth (die Android-App) und das Abschalten des WLANs zum Sparen: hier erreicht die Webseite des Handys die Platine immer.
  • Wie im Code: Webseite, API und Konsole sind die der Firmware: Wiederholungen, Echo, Weckimpuls nach 10 s Stille, Keep-Alive alle 5 s, Sensoren alle 8 s, Zeitpläne, Abschaltung bei Batterie < 12,0 V und eine Uhr, die beim Neustart verloren geht.
  • Wie im Protokoll: Telegrammformat und Antworten für Sensoren (0x50/05) und Fehler (0x56/01) laut libwbus.
  • Näherungsweise: Start- und Nachlaufzeiten, Regelschwellen (Volllast bis 75 °C, Teillast bis 85 °C, Wiederanlauf bei 70 °C), die Erwärmung des Kreislaufs und dass sich die Webasto nach 20 s ohne Keep-Alive abschaltet (Wert aus libwbus, an deiner nicht geprüft).
  • Echter Zustand: die Firmware wertet die Keep-Alive-Antwort aus (01 = die Webasto hat den Befehl nicht mehr) sowie die Flamme: „Startet“, „Heizt“, „Pause“ (keine Flamme bei Kühlwasser ≥ 65 °C) oder „Keine Antwort“. Schaltet sie sich selbst ab (probier „Kein Diesel“), zeigt die Webseite das mit ihren Fehlern an und meldet es über Telegram. Dass die Thermo Top C mit 01 auf das Keep-Alive antwortet, stammt aus libwbus: tut deine das nicht, bleibt die Flamme als Rückfallebene (5 min ohne Flamme bei kaltem Kühlwasser).

Haftungsausschluss

WTTC · freie Software (GPL v3) auf GitHub · Code und Inhalt vollständig mit Claude (Anthropic) erzeugt · privates Projekt ohne Verbindung zu Webasto oder Volkswagen.