DIY: Weban kauko-ohjaus kännykällä

  • Keskustelun aloittaja Keskustelun aloittaja jugih
  • Aloituspäivä Aloituspäivä

jugih

The IT Crowd
Ylläpito
Liittynyt
20.03.2024
Viestejä
627
-15.3.2026-
* Päivitetty postausta. Lisättu toiminnallisuuksia, kuten akun varauksen kysely.

-23.2.2026-
* Päivitetty Arduinon koodi täydelliseksi

-29.12.2024-
* Tehty viimeiset asennukset.
* Homma maalissa

-18.12.2024-
* Päivitetty Arduinon koodi.

-16.12.2024-
* Lisätty uusi kuva, jossa kaikki juotettuna.
* Lisätty Arduinon koodi.

Rakentelenpa tälläisen helpon modin vastalauseena volkkarin kalliille We Connect vuositilaukselle. Itsellä ainoa tarve tuosta tilauksesta on juurikin weban kaukokäynnistys, eikä muuta. GSM-ohjaukseen on vaikka mitä ratkaisuja ja halvimmillaan GSM-vastaanottimeksi käy (toistaiseksi) GPRS-vastaanotin. Näitä saa AliExpressistä postikuluineen alle kympillä. Jos haluaa tehdä tuon 4G-versiolla, niin hinta nouseen noin kolmeen kymppiin.

Kasasin vastaanottimen Arduinon Uno R.3 boardista, johon päälle tulee SIMCOM900 GSM-moduli ja kaiken päälle vielä "suojaksi" Shield V.5 protoboardi.
Arduinon jänniteregulaattori on speksattu max 12 V, joten se tarvitsee toisen regulaattorin/muuntajan syöttöön.
Laitoin 5 V regulaattorin syöttöön, mikä kestää max 35 V. Se toki lämpenee hieman esim. 15 voltilla.

Lisäsin myös jännitteenjakan, joka skaalaa auton 0-20 V Arduinolle sopivaksi 0-5 V. Tähän tarkoitukseen käytin 30 kOhm ja 10 kOhm vastuksia, jotka skaalaa jännitteen 25 % Ardunon ADC muuntimelle. Jouduin tosin kalibroimaan yleismittarin kanssa pienen kertoimen vielä muunnokseen, saadakseni jännitteen tarkaksi. Kun laitteelle lähettää käynnistyskäsky tai tarkistuskäskyn, se lähettää takaisin tekstarilla myös akun varauksen.

Suosittelen käyttämään ja muokkaamaan haluamaksesi omakyhäämääni koodia. Vaihda/lisää vain sallitut puhelinnumerot. Alla löytyy myös teknologiaselostus tästä projektista englanniksi.

Webasto Control (Arduino + GSM)​

Arduino firmware for controlling a Webasto heater via SMS using a GSM modem, intended for vehicle/remote-heating use.


Table of contents​

  1. What's in this repository
  2. Hardware requirements
  3. Pin assignments
  4. Wiring / connections
  5. GSM setup (SIM / network)
  6. Supported SMS commands
  7. SMS responses
  8. Automatic alerts
  9. Configuration
  10. State machine
  11. AT command reference (useful for debugging)
  12. Build & upload
  13. Troubleshooting



Hardware requirements​

Core components​

  1. Arduino Uno / Nano (AVR-based, 5V logic)
  2. GSM modem with UART and AT command support (e.g. SIM800L / SIM900)
  3. Relay module (active-LOW; the sketch drives the relay with a LOW signal by default)
  4. Battery voltage divider — resistor network scaling vehicle voltage (0–20 V) to 0–5 V on pin A5
  5. Power supply for GSM module — dedicated regulator capable of ~4.0 V, 2 A peak (SIM800L)

Recommended additional components​

  • Logic-level converter for GSM UART (3.3 V ↔ 5 V)
  • External antenna for GSM module
  • Proper fuse(s) and automotive-rated wiring

Pin assignments​

The following pins are defined in webasto_source.ino:
SignalArduino pinDirectionNotes
GSM module TX (SoftwareSerial RX)D7InputSoftwareSerial SIM(7, 8)
GSM module RX (SoftwareSerial TX)D8OutputSoftwareSerial SIM(7, 8)
Relay controlD5OutputRELAY_PIN 5; defaults to HIGH = relay ON
Modem power keyD9OutputMODEM_PWR_PIN 9; pulled HIGH normally, pulse LOW 1.2 s to toggle
Battery voltage (ADC)A5Analog inputBATTERY_PIN A5; 0–5 V maps to 0–20 V after correction factor
Relay polarity: Most Chinese relay boards trigger on LOW. The sketch defaults to RELAY_ON HIGH / RELAY_OFF LOW. If your relay does not operate, swap these two defines in the sketch.

Wiring / connections​

GSM module ↔ Arduino​

GSM module pinArduino pin
TXDD7 (SoftwareSerial RX)
RXDD8 (SoftwareSerial TX)
GNDGND
PWR KEYD9 (via NPN transistor or direct if 5V tolerant)
  • GSM baud rate: 9600
  • SoftwareSerial RX buffer is extended to 256 bytes (_SS_MAX_RX_BUFF 256)
  • Many GSM modules use 2.8 V / 3.3 V UART — use a level shifter between Arduino D8 and GSM RXD

Relay module ↔ Arduino​

Relay board pinArduino pin
IND5
VCC5V
GNDGND
  • Relay COM/NO switches the Webasto heater control/start input
  • The relay activates for 800 ms (RELAY_PULSE_MS) and then deactivates automatically

Battery voltage sensing​

  • Connect the tap of a resistor voltage divider (scaling 0–20 V vehicle voltage to 0–5 V) to A5
  • The sketch applies a calibration factor VOLTAGE_CORRECTION = 0.7648 derived from real measurements

Power​

  • Do not power the GSM module from the Arduino 5V pin
  • Use a dedicated regulator/buck converter for the GSM module (SIM800L: ~4.0 V, 2 A peak)

GSM setup (SIM / network)​

  1. Insert a SIM card with:
    • active subscription
    • SMS enabled
    • PIN disabled (the sketch does not handle PIN entry)
  2. Attach an external antenna.
  3. Power the GSM module with a stable dedicated supply.
  4. The sketch initialises the modem with the following AT commands on every boot:
    • ATE0 — echo off
    • AT+CMGF=1 — SMS text mode
    • AT+CMEE=1 — verbose error codes
    • AT+CNMI=2,2,0,0,0 — forward new SMS directly to serial (no storage needed)
    • AT+CREG=1 — enable network registration URC

Supported SMS commands​

Only messages from authorised numbers (configured in allowedNumbers[]) are processed. All other messages are silently ignored.
Commands are case-insensitive (the sketch converts to upper-case before comparison).
SMS textAction
STARTActivates relay for 800 ms to start the Webasto heater
STOPDeactivates relay (stops the heater if currently running)
STATUSReturns battery voltage and charge status; no relay change

SMS responses​

TriggerResponse text
START (heater not already running)Webasto paalla, akun jannite X.X V. Akun varaus OK or …alhainen
STOP (heater running)Webasto pois
STATUSAkun jannite X.X V. Akun varaus OK or …alhainen
Automatic low-battery alertAuton akun varaustila alhainen: Jannite on X.X V
Battery is reported as "alhainen" (low) when voltage drops below BATTERY_LOW_THRESHOLD = 12.0 V.

Automatic alerts​

The sketch monitors battery voltage every 60 seconds while in the READY state and automatically sends an SMS to all authorised numbers when the voltage drops below BATTERY_ALERT_THRESHOLD (default 11.5 V).
  • The alert message text is: Auton akun varaustila alhainen: Jannite on X.X V
  • The alert is sent once per low-voltage event. If the voltage recovers above the threshold, the flag is reset so that the alert will fire again if the voltage drops a second time.
  • The check only runs when no incoming SMS is being collected, to avoid interfering with serial communication.

Configuration​

Open webasto_source.ino and adjust the following constants:
ConstantDefaultDescription
allowedNumbers[]two placeholder numbersPhone whitelist — replace with your own numbers
ALLOWED_COUNTautoDerived from array size; do not change manually
RELAY_PIN5Arduino pin connected to relay IN
MODEM_PWR_PIN9Arduino pin connected to modem power key
BATTERY_PINA5Analog pin for battery voltage divider
RELAY_ON / RELAY_OFFHIGH / LOWRelay polarity — swap if relay is inverted
RELAY_PULSE_MS800 msDuration of relay activation pulse
BATTERY_LOW_THRESHOLD12.0 VVoltage below which battery is flagged as low in SMS responses
BATTERY_ALERT_THRESHOLD11.5 VVoltage below which an automatic SMS alert is sent to all authorised numbers
BATTERY_CHECK_INTERVAL60 000 msHow often battery voltage is checked for the automatic alert
VOLTAGE_CORRECTION0.7648ADC calibration factor for battery voltage reading
NETWORK_CHECK_INTERVAL60 000 msHow often to verify network registration
MODEM_INIT_TIMEOUT60 000 msTime allowed for modem init before power cycling
NETWORK_LOST_TIMEOUT120 000 msTime without network before modem reboot
DAILY_RESET_INTERVAL24 hAutomatic daily modem power cycle

State machine​

The sketch runs a non-blocking state machine:
Koodi:
MODEM_BOOT (15 s wait)
    │
    ▼
MODEM_INIT  ──(timeout / error)──► power cycle → MODEM_BOOT
    │ (AT init OK)
    ▼
NETWORK_WAIT ──(timeout)──► power cycle → MODEM_BOOT
    │ (registered)
    ▼
READY ◄────── NETWORK_LOST ──(timeout)──► power cycle → MODEM_BOOT
    │ (network lost)    ▲
    └───────────────────┘ (network regained)

  • Watchdog timer (WDTO_8S) resets the MCU if the sketch hangs for more than 8 seconds.
  • A daily automatic reboot of the modem occurs every 24 hours (only when relay is inactive).

AT command reference (useful for debugging)​

You can test AT commands using a USB-to-Serial adapter directly to the GSM module.

Basic communication​

  • AT → should reply OK
  • ATI → modem identification
  • AT+CSQ → signal quality
  • AT+CREG? → network registration status (1 or 5 = registered)
  • AT+COPS? → current operator

SIM / PIN​

  • AT+CPIN? → SIM PIN status (must be READY)

SMS configuration​

  • AT+CMGF=1 — set SMS text mode
  • AT+CNMI=2,2,0,0,0 — route incoming SMS directly to serial

Send SMS (manual test)​

  • AT+CMGS="+358..."
    • type message text
    • finish with Ctrl+Z (ASCII 26)

Build & upload​

Required libraries​

  • SoftwareSerial — included with Arduino IDE (built-in)
  • avr/wdt.h — watchdog timer (built-in AVR library, no installation needed)

Arduino IDE​

  1. Open webasto_source.ino in Arduino IDE.
  2. Select Tools → Board (Uno or Nano) and Tools → Port.
  3. Upload.

Troubleshooting​

  • Random resets / modem not responding: power supply to GSM module is insufficient — use a dedicated 4 V / 2 A supply.
  • No network registration: check antenna, SIM PIN disabled, and local coverage.
  • SMS not received: verify AT+CNMI=2,2,0,0,0 is active; check operator SMS support.
  • Heater does not start: verify relay wiring (pin D5) and RELAY_ON/RELAY_OFF polarity.
  • Battery voltage reads incorrectly: adjust VOLTAGE_CORRECTION constant based on measured calibration values.




Koko viritelmä näyttää tältä:




Juotin kaikki johtimet kiinni, myös Arduinon päällä olevaan 5 V releeseen. Pitää laittaa koko viritys vielä johonkin pakasterasiaan, johon tulee tuo liitin. Kytkentä on yksinkertainen: punainen 12 V, musta 0 V ja sininen Telestartin pinni 4.

STH Telestartin boksi löytyy farkku-Passattista takakontin oikealta laidalta huoltoluukun päältä [numero 4]:



Jotta piuhoja ei tarvitse pilkkoa pitää hakea volkkarilta siniset 6-pin liittimet (uros ja naaras)



ja näihin johtimet väliin. Eli homma alkaa adapteripiuhan valmistamisella



Adapteri itsessään ryöstää käyttöjännitteen ja 0 V Arduinolle, joten mitään muita johdotuksia ei tarvita. Arduino kirjaimellisesti liitetään adapterilla (Y-kaapeli) STH-telestartin väliin ja se on siinä.
EDIT: itse en tehnyt adapteripiuhaa sittenkään, koska liikaa vaivaa. Telestarttiin on helppo liittää vain tuo yksi johdin ja laitteelle saa virran suoraan akusta.

Kiitos @M_M selvennöksestä:
Telestartin pinni 4 käynnistää 12 V pulssilla weban ja pinni 3 pysyy 12 V niin kauan kuin weba on päällä.



Tekoälyn typerännäköinen piirros, kun en itse jaksanut alkaa raapustamaan.



Kontin oikean puolen ”huoltoreikä”, jossa telestart majailee.


Sieltä sai todella helposti irroitettua telestartin liittimen


Liittimessä on tosiaan kolme piuhaa. Otetaan liitin auki


Lisätään pinniin 4 käynnistyssignaalipiuha (+12 V pulssi)


Koko komeus suljettuna pakasterasiaan ja varotoimina yön yli auton ulkopuolella :grin:




Mutta hyvin toimii! Pakasterasian ilmanvaihto on ilmeisen riittävä reikien teon jälkeen. Autossa ei vikakoodeja virran syömisestä yön yli.
Antaa sittenkin vikakoodin:
Static current too hgh
No, pitää seurata mikä meno ja haittaneeko tuo :secret:
Case closed. :drinks:
 
Viimeksi muokattu:
Riittääkö 12 V signaalin käyttäminen tuohon pinniin 2, joka menee siis Weballe suoraan. Olen jonkun ohjeen myös nähnyt, jossa Telestartin pinniin 3 annetaan pulssi. Mitä raati tuumii?
Pinnissä 2 on väyläliikennettä, vanhemmissa WBUS ja uudemmissa LIN joten sinne ei kannata jännitettä suoraan työntää. Se on telestartin pinni 4 johon pulssin antamalla telestart osaa työntää oikeat komennot väylään ja weba käynnistyy. Liitteenä tekemäni ohje joka tosin käsittelee thermoconnectin asennusta mutta ihan sama perusidea se on siinäkin. Pinnistä 3 tulee ulospäin 12 volttia kun weba on käynnissä jos sen tilaa haluaa seurata mutta käynnistämistä varten siihen ei ole pakko liittää mitään.
 

Liitetiedostot

Ok! Kiitti paljon korjauksista. Ei kerennyt tulla vahinkoa :cuul:
 
  • Tykkään
Reaktiot: M_M
Näitä voi siis sulta nyt sitten tilata läjä tänne myytäväksi? :wink:
 
Melkoista koodausta täytyy kyllä sanoa. Itseltä jäisi kyllä tekemättä. Todella ihailtavaa paneutumista asiaan ja erittäin selkeästi kuvailtu työvaiheet.
 
Vielä lisäbonuksena verrattuna VW:n omaan pieruäpsiin on että webaston käytettävyys nousee eri levelille, kun siitä tekee oikopolun Applen laitteisiin. Varmasti Androidillakin on jokin vastaava, mutta applella tuo vain toimii. Apple Watchillakin saa weban pauhaamaan yhdellä napin painalluksella. Siriä voi myös käskyttää: "Siri, lämmitä auto!".
Todella kätsyy.

Oikopolku näyttää kaikessa yksinkertaisuudessaan tältä:



Jonka saa kuvakkeena kotinäyttöön ja kelloon. Kun kuvaketta klikkaa, tulee ensin vahvistus, jonka jälkeen lämmitin alkaa tohottamaan:

 
Päivitetty aloitusta. Nyt laitteelta voi kysellä myös akun varaustilaa ja laite myös lähettää tekstarin, kun varaus (jännite) putoaa alle kynnysarvon (11.5 V). Lisäsin myös teknologiaselostuksen omalta yksityiseltä GitHub-sivultani, jolla tämä projekti elää myös.
 
Viimeksi muokattu:
Back
Ylös Pohja