Skip to main content

Viessmann Energycal Slim W β€” Controllo Modbus

Documentazione per il controllo dei ventilconvettori Viessmann Energycal Slim W via Modbus RS485.


Hardware installato​

Modello: Viessmann Vitoset Energycal Slim W

Quantita': 5 ventilconvettori con comando autonomo touch

Comando: Comando autonomo touch con display LCD, telecomando IR, e porta Modbus RS485 sui morsetti A/B.

Dalla scheda tecnica ufficiale:

"Il morsetto AB e' anche una porta Modbus RS 485 interfacciabile con un sistema domotico esterno ed e' compatibile con il cronotermostato LCD Modbus a parete."


Foto del comando autonomo touch​

Vista frontale​

Comando autonomo touch β€” vista frontale

Tasti: fiocco neve (freddo/caldo), power, ventilatore, frecce su/giu, conferma. Display LCD al centro.

PCB interno​

PCB del comando autonomo touch

Sulla sinistra della PCB si vedono i morsetti serigrafiati A B A' B' (Modbus RS485). Sulla destra i morsetti C P + (alimentazione).

Morsetti sul retro (montato a muro)​

Morsetti sul retro del comando

6 fili totali:

PosizioneMorsettoFiliFunzione
Sinistra+ C PRosso + neroAlimentazione comando
DestraA BBianco + marroneModbus RS485 (bus dati)
CentroConnettore bianco2 fili bianchi sottiliSonda temperatura NTC ambiente

I fili bianco e marrone (A/B) vanno in daisy-chain da un ventilconvettore all'altro.


Specifiche tecniche​

Protocollo​

ParametroValore
ProtocolloModbus RTU
Baud rate9600
Data bits8
ParityNone
Stop bits1
Interfaccia fisicaRS485 (2 fili: A e B)

Registri Modbus noti​

Trovati da documentazione e forum (da verificare con scan):

RegistroDescrizioneAccessoNote
0Temperatura ambiente (T1)LetturaValore dal sensore NTC
201ConfigurazioneLettura/ScritturaBit-field (vedi sotto)
231Setpoint temperaturaLettura/ScritturaTemperatura desiderata
233Modo stagionaleLettura/ScritturaCaldo/freddo

Registro 201 β€” Bit di configurazione​

BitFunzioneValori
0-2Velocita' ventilatore0=AUTO, 1=MIN, 2=NIGHT, 3=MAX
4Blocco tastiera0=sbloccato, 1=bloccato
7Standby/ON0=standby, 1=acceso
caution

I registri sono stati ricavati da forum per ventilconvettori simili. Vanno confermati con uno scan sul proprio impianto prima di scrivere qualsiasi valore.


Architettura collegamento​

      Controller RS485
(T-CAN485 oppure Pico W + HAT)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ RS485 TX/RX β”‚
β”‚ WiFi per comunicazione β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
Viessmann bus
(9600 baud)
β”‚
A ──┬──────┬──────┬──────┬──────┐
B ──┬──────┬──────┬──────┬──────┐
β”‚ β”‚ β”‚ β”‚ β”‚
Slim W Slim W Slim W Slim W Slim W
addr 1 addr 2 addr 3 addr 4 addr 5
(stanza1)(stanza2)(stanza3)(stanza4)(stanza5)

Il controller si collega ai morsetti A e B di un qualsiasi ventilconvettore (sono tutti in daisy-chain). Da li' comunica con tutti e 5 specificando l'indirizzo Modbus. Un singolo canale RS485 e' sufficiente: tutti i dispositivi condividono lo stesso bus con indirizzi diversi (1-247).

Indirizzo Modbus​

Ogni ventilconvettore ha un indirizzo diverso (1-247), configurabile dal display del comando touch. Di default probabilmente sono tutti a indirizzo 1 β€” vanno configurati uno per uno (1, 2, 3, 4, 5).


Hardware controller β€” Due alternative​

Opzione A: LilyGo T-CAN485 (scelta attuale)​

Stato: Ordinato (ordine #F007RVXXJ, $11.86 + $8.50 spedizione)

Board all-in-one con ESP32 integrato. Non serve un microcontroller separato.

ParametroValore
MCUESP32 dual-core 240MHz, 4MB flash
WiFi802.11 b/g/n
BluetoothBLE 4.2
RS4851 canale, chip MAX13487EESA+ (auto-direction)
CAN busSN65HVD231 (disponibile per uso futuro)
SD cardSlot micro SD per log locale
USB-UARTCH9102F
Alimentazione5-12V (DC jack o morsetti)
LEDWS2812 RGB su IO4
IDEArduino IDE / PlatformIO
Repo ufficialeXinyuan-LilyGO/T-CAN485

Costo totale: ~$20.36 (board + spedizione)

Pin mapping (da pin_config.h ufficiale)​

RS485 (chip: MAX13487EESA+)

DefinePin ESP32Funzione
RS485_TXIO22TX dati verso bus
RS485_RXIO21RX dati dal bus
RS485_CALLBACK (RE)IO17Receiver Enable β€” disabilita echo (HIGH = no echo)
RS485_EN (SHUTDOWN)IO19Shutdown pin β€” abilita transceiver (HIGH = attivo)

Alimentazione (chip: ME2107A50M5G boost converter)

DefinePin ESP32Funzione
ME2107_ENIO16Enable boost 5V per RS485 + CAN (HIGH = attivo)

CAN bus (chip: SN65HVD231)

DefinePin ESP32Funzione
CAN_TXIO27TX
CAN_RXIO26RX
CAN_SPEED_MODEIO23Selezione velocita' (LOW = high speed)

SD card

DefinePin ESP32
SD_MISOIO2
SD_MOSIIO15
SD_SCLKIO14
SD_CSIO13

LED RGB (WS2812B)

DefinePin ESP32
WS2812B_DATAIO4

Collegamento fisico T-CAN485​

  1. Collegare il filo A del terminale RS485 del T-CAN485 al morsetto A del ventilconvettore
  2. Collegare il filo B del terminale RS485 del T-CAN485 al morsetto B del ventilconvettore
  3. Alimentare il T-CAN485 via USB-C (5V) o DC jack (5-12V)
LilyGo T-CAN485
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ESP32 + WiFi + BLE β”‚
β”‚ β”‚
β”‚ ME2107_EN (IO16) β†’ boost power β”‚
β”‚ RS485_EN (IO19) β†’ transceiver β”‚
β”‚ RS485_CB (IO17) β†’ no echo β”‚
β”‚ RS485: TX=IO22, RX=IO21 β”‚
β”‚ [A] [B] β”‚
β”‚ β”‚ β”‚ β”‚
β”‚ CAN: [H] [L] (futuro) β”‚
β”‚ SD: slot micro SD β”‚
β”‚ LED: WS2812 su IO4 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚β”€β”€β”€β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
Viessmann bus (daisy-chain 5x Slim W)

Esempi ufficiali dal repo GitHub​

Il repo T-CAN485 include 7 esempi Arduino (richiede arduino_esp32_v3.0.1):

EsempioCosa faUtile per noi
RS485Invia una richiesta Modbus RTU raw (0x01 0x03 0x00 0x00 0x00 0x04) e legge la risposta. Init completo di boost + transceiver.SI β€” base per lo scanner
RS485_WS2812BInvio/ricezione RS485 tra due board + LED RGB come indicatore stato (blu=invio, verde=ricezione)Si β€” test RS485 con feedback visivo
CANComunicazione CAN bus tra due board via TWAI driver ESP32 a 500kbit/sNo β€” non serve per Viessmann
SDRileva SD card, legge tipo (MMC/SDSC/SDHC) e dimensioneSi β€” per log locale
WIFI_HTTP_Download_FileConnessione WiFi + download file HTTP con misura velocita'Si β€” test connettivita' WiFi
WS2812B_BlinkLampeggio LED RGB (rosso→verde→blu→bianco→spento)Si — test LED funzionante
Original_TestTest di fabbrica completo: WiFi scan + HTTP download + SD card + RS485 loopback + CAN loopback + LEDSi β€” verifica che tutto funzioni
tip

L'esempio RS485 e' gia' un client Modbus RTU! Invia {0x01, 0x03, 0x00, 0x00, 0x00, 0x04, 0x44, 0x09} che e':

  • 0x01 = indirizzo slave 1
  • 0x03 = function code Read Holding Registers
  • 0x00 0x00 = registro iniziale 0
  • 0x00 0x04 = leggi 4 registri
  • 0x44 0x09 = CRC16

Basta cambiare il baudrate a 9600 e scansionare gli indirizzi 1-247 per trovare i ventilconvettori.

Sequenza init RS485 (dal codice ufficiale)​

// 1. Accendi boost power supply (alimenta RS485 e CAN)
pinMode(ME2107_EN, OUTPUT); // IO16
digitalWrite(ME2107_EN, HIGH);

// 2. Abilita transceiver RS485 (MAX13487E shutdown pin)
pinMode(RS485_EN, OUTPUT); // IO19
digitalWrite(RS485_EN, HIGH);

// 3. Disabilita echo (MAX13487E receiver enable)
pinMode(RS485_CALLBACK, OUTPUT); // IO17
digitalWrite(RS485_CALLBACK, HIGH);

// 4. Inizializza UART su pin RS485
Serial1.begin(9600, SERIAL_8N1, RS485_RX, RS485_TX); // IO21, IO22

Setting Arduino IDE per T-CAN485​

ParametroValore
BoardESP32 Dev Module
Upload Speed921600
CPU Frequency240MHz (WiFi)
Flash ModeQIO
Flash Size4MB (32Mb)
Core Debug LevelNone
PSRAMDisable
Arduino Runs OnCore 1
note

Se il download fallisce, tenere premuto il tasto BOOT-0 sulla board e riprovare.


Opzione B: Pico W + Waveshare Pico-2CH-RS485 HAT (alternativa)​

Richiede un Pico W separato come microcontroller. Ha 2 canali RS485 indipendenti.

ComponenteDescrizionePrezzo
Pico WMicrocontroller WiFi (RP2040)gia' in possesso
Waveshare Pico-2CH-RS485Adattatore RS485 2 canali HAT$7 (€8)
ParametroValore
TransceiverSP3485 (RS485)
Tensione operativa3.3V
Baudrate supportato300 ~ 500.000 bps
Canali RS4852 (indipendenti)
ProtezioneSMAJ12CA TVS (soppressore transienti)
MontaggioHeader femmina, si incastra direttamente sul Pico W

Pin mapping HAT RS485​

CanaleFunzionePin Pico WUART
CH0TXGP0UART0 TX
CH0RXGP1UART0 RX
CH1TXGP4UART1 TX
CH1RXGP5UART1 RX

Collegamento fisico Pico W + HAT​

  1. Montare il HAT RS485 sul Pico W (si incastra sui pin header)
  2. Collegare il filo A del terminale CH0 del HAT al morsetto A del ventilconvettore
  3. Collegare il filo B del terminale CH0 del HAT al morsetto B del ventilconvettore
  4. Alimentare il Pico W via USB (5V)
Pico W + Pico-2CH-RS485 HAT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CH0 (UART0) CH1 (UART1) β”‚
β”‚ GP0=TX GP4=TX β”‚
β”‚ GP1=RX GP5=RX β”‚
β”‚ [A] [B] [A] [B] β”‚
β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
β””β”€β”€β”€β”‚β”€β”€β”€β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚β”€β”€β”€β”‚β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ (libero per
β”‚ β”‚ SDM120, XY-MD02...)
β”‚ β”‚
Viessmann bus (daisy-chain 5x Slim W)

Confronto opzioni​

T-CAN485Pico W + HAT RS485
Prezzo totale~$20~$11 (Pico W gia' posseduto)
MCU integratoSi (ESP32)No (serve Pico W)
WiFiSiSi (Pico W)
Canali RS48512
CAN busSiNo
SD cardSiNo
LED RGBSi (WS2812)No
IDEArduino/PlatformIOMicroPython/C SDK
Esempi ModbusSi (nel repo)No

Piano di implementazione​

Step 1 β€” Ricevere T-CAN485​

LilyGo T-CAN485 CH9102F β€” ordinato ($11.86, ordine #F007RVXXJ). Spedizione YunTu Express.

Step 2 β€” Test hardware (Original_Test)​

Flashare l'esempio Original_Test dal repo per verificare che WiFi, RS485, CAN, SD e LED funzionino tutti correttamente.

Step 3 β€” Firmware scanner indirizzi (Arduino IDE)​

Partire dall'esempio RS485 del repo e adattarlo:

// T-CAN485 β€” Init sequenza (da esempio ufficiale LilyGo):
// 1. digitalWrite(ME2107_EN, HIGH); // IO16 β€” accendi boost power
// 2. digitalWrite(RS485_EN, HIGH); // IO19 β€” abilita transceiver
// 3. digitalWrite(RS485_CALLBACK, HIGH); // IO17 β€” disabilita echo
// 4. Serial1.begin(9600, SERIAL_8N1, RS485_RX, RS485_TX); // IO21, IO22
//
// Baudrate: 9600, 8N1 (come da specifica Viessmann)
// Libreria: ModbusMaster (Arduino) oppure raw come nell'esempio
//
// Per ogni indirizzo 1-247:
// - Invia richiesta Modbus RTU: read holding register 0 (temperatura)
// - Aspetta risposta (timeout 500ms come nell'esempio)
// - Se risponde β†’ ventilconvettore trovato
// - Logga indirizzo + temperatura su Serial + SD card

Step 4 β€” Firmware scanner registri​

Per ogni ventilconvettore trovato, scansionare i registri 0-300:

// Per ogni registro 0-300:
// - Leggi holding register (function code 0x03)
// - Leggi input register (function code 0x04)
// - Se risponde β†’ logga registro + valore su Serial + SD card

Questo conferma la mappa registri reale del nostro modello.

Step 5 β€” Firmware di controllo​

Firmware Arduino/PlatformIO completo che:

  • Legge temperatura da tutti e 5 i ventilconvettori
  • Cambia setpoint via WiFi (API REST o MQTT)
  • Programma accensione/spegnimento
  • Invia dati al backend VISLA
  • Logga su SD card come backup

Step 6 β€” Integrazione display​

Mostrare i dati di tutti e 5 i ventilconvettori sul display ESP32 (rotondo o rettangolare) dalla repo visla-display.


Funzionalita' finali​

  • Leggere temperatura di ogni stanza in tempo reale
  • Cambiare setpoint individuale per stanza
  • Accendere/spegnere singolarmente
  • Programmare orari (mattina, sera, notte, weekend)
  • Geofencing GPS: accendi quando arrivi a casa (integrazione con tracker VISLA)
  • Dashboard cloud via backend VISLA
  • Notifiche se temperatura fuori range

Taglie disponibili Energycal Slim W​

Dal datasheet ufficiale (04/2022):

TagliaPotenza riscaldamento (50Β°C)Potenza raffrescamentoPortata aria maxPeso
2001,05 kW0,82 kW160 mΒ³/h11,5 kg
4002,31 kW1,74 kW320 mΒ³/h13 kg
6003,12 kW2,54 kW460 mΒ³/h15,5 kg
8004,10 kW3,29 kW575 mΒ³/h18,5 kg
10004,67 kW3,78 kW650 mΒ³/h21,5 kg
14005,50 kW4,45 kW765 mΒ³/h22,5 kg
16005,90 kW4,85 kW820 mΒ³/h24 kg

Attacchi idraulici: 3/4" Eurocono per tutte le taglie. Pressione max: 10 bar.