Dans une architecture domotique moderne intégrant des protocoles hétérogènes comme KNX (bus 24V DC, topologie en étoile ou ligne), Z-Wave (868 MHz, mesh réseau), Zigbee (2.4 GHz, coordinateur centralisé) et des onduleurs SMA Sunny Portal (Modbus TCP/IP, tension AC 230V), l’accès distant sécurisé à Home Assistant (HA) tout en garantissant une intégration transparente avec le LAN local représente un défi technique majeur. Le problème central réside dans la fragmentation des flux réseau : les requêtes API REST de HA, les trames KNX/IP (port UDP 3671), les paquets Z-Wave (via le contrôleur USB Aeotec Gen5) et les échanges Modbus (port TCP 502) doivent coexister sans latence ni exposition aux attaques par force brute ou MITM. Une solution basée sur WireGuard (VPN overlay, chiffrement ChaCha20/Poly1305) couplée à un reverse proxy Nginx (pour le chiffrement TLS 1.3 et la terminaison SSL) et une segmentation réseau Ubiquiti UniFi (VLANs, firewall rules) permet de résoudre cette équation en garantissant une connectivité seamless tout en respectant les contraintes de sécurité industrielle (ISO 27001, IEC 62443).
🛒 NOMENCLATURE MATÉRIEL (BOM)
Équipements requis pour cette intégration, classés par couche OSI :
- Couche 1-2 (Physique/Liaison) :
- Routeur Ubiquiti UniFi Dream Machine Pro (UDM-Pro) : Gestion des VLANs (802.1Q), firewall stateful, et contrôleur UniFi intégré (firmware ≥ 3.1.12).
- Switch PoE+ Ubiquiti UniFi USW-Pro-24-POE : 24 ports Gigabit avec 8 ports PoE++ (60W/port) pour alimenter les points d’accès (U6-Pro) et les passerelles KNX/IP (ex: Weinzierl 730).
- Câblage structuré : Cat6a S/FTP (blindage individuel + global) pour les liaisons backbone (10Gbps), avec connecteurs RJ45 certifiés ISO/IEC 11801 Classe EA. Sectionneurs de terre (ex: Hager ADS320) pour les armoires électriques.
- Couche 3 (Réseau) :
- Couche 7 (Application) :
- Contrôleur KNX : Weinzierl 730 (KNX/IP Interface) avec alimentation 24V DC (ex: Mean Well LRS-100-24).
- Passerelle Zigbee : Sonoff ZBBridge-P (coordinateur Zigbee 3.0) ou ConBee II (pour une intégration native avec HA via ZHA).
- Contrôleur Z-Wave : Aeotec Z-Stick Gen5+ (USB, série ZW090) ou Zooz ZST10 700 (pour le support S2 Security).
- Onduleur SMA Sunny Boy Storage 5.0 (Modbus TCP/IP, tension AC 230V) avec carte SMA Data Manager M.
- Sécurité physique :
- Armoire réseau Rittal TS IT (IP55) avec climatisation active (ex: Rittal SK 3232.200).
- Disjoncteurs différentiels type A (30mA) pour les circuits 230V AC et 24V DC (ex: Schneider Acti9 iID).
⚠️ PRÉREQUIS & SÉCURITÉ
Avant toute implémentation, validez les points suivants pour éviter des vulnérabilités critiques :
- Segmentation réseau :
- Créez 3 VLANs distincts sur l’UDM-Pro :
VLAN 10 (Management): Adressage 10.0.10.0/24 (UDM-Pro, NAS, contrôleurs KNX/IP).VLAN 20 (IoT): Adressage 10.0.20.0/24 (Zigbee, Z-Wave, SMA Sunny Portal).VLAN 30 (Guest): Adressage 10.0.30.0/24 (isolé, sans accès aux VLANs 10/20).
- Configurez des règles firewall strictes :
# Exemple de règles UDM-Pro (UniFi CLI) set firewall name LAN_IN rule 10 action accept set firewall name LAN_IN rule 10 description "Allow KNX/IP from VLAN10 to VLAN20" set firewall name LAN_IN rule 10 source address 10.0.10.0/24 set firewall name LAN_IN rule 10 destination address 10.0.20.0/24 set firewall name LAN_IN rule 10 destination port 3671 set firewall name LAN_IN rule 10 protocol udp
- Créez 3 VLANs distincts sur l’UDM-Pro :
- Sécurité électrique :
- Isolez les circuits 24V DC (KNX) des circuits 230V AC (alimentation des switchs/routeurs) via des transformateurs séparés (ex: Mean Well DR-120-24).
- Utilisez des parafoudres (ex: Dehn DEHNguard M TT 275) pour protéger les équipements contre les surtensions.
- Habilitations :
- Pour les interventions sur le bus KNX, une habilitation électrique
BR(basse tension) est requise (norme NF C 18-510). - Pour les modifications du firewall UniFi, un accès administrateur avec MFA (TOTP) est obligatoire.
- Pour les interventions sur le bus KNX, une habilitation électrique
- Compatibilité protocolaire :
- Vérifiez que votre contrôleur KNX/IP supporte le
KNXnet/IP Routing(et non seulement le tunneling) pour éviter les latences. - Pour Z-Wave, activez le chiffrement S2 (Security 2) sur tous les nœuds critiques (ex: serrures, alarmes).
- Vérifiez que votre contrôleur KNX/IP supporte le
1. Configuration du VPN WireGuard (Overlay Network)
WireGuard crée un tunnel chiffré entre le client distant (smartphone, laptop) et le LAN, avec une latence inférieure à 10ms. Voici la configuration côté serveur (Raspberry Pi/VM) :
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = 10.8.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.8.0.2/32, 10.0.10.0/24, 10.0.20.0/24
PersistentKeepalive = 25
Côté client (ex: smartphone Android) :
[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 10.0.10.1 # Adresse de l'UDM-Pro pour la résolution locale
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = votre-domaine.com:51820
AllowedIPs = 0.0.0.0/0 # Tout le trafic passe par le VPN
PersistentKeepalive = 25
Activez le routage IP sur le serveur WireGuard :
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Ouvrez le port UDP 51820 sur l’UDM-Pro et redirigez-le vers l’IP du serveur WireGuard (10.0.10.50) :
# Règle NAT sur l'UDM-Pro
set port-forward wan-interface eth8
set port-forward lan-interface switch0
set port-forward forward-to address 10.0.10.50
set port-forward forward-to port 51820
set port-forward original-port 51820
set port-forward protocol udp
2. Segmentation réseau UniFi et règles firewall
Configurez les VLANs dans l’interface UniFi Controller (Settings > Networks) :
- VLAN 10 (Management) :
- Subnet : 10.0.10.0/24
- Gateway : 10.0.10.1
- DHCP Range : 10.0.10.100-10.0.10.200
- DNS : 10.0.10.1 (UDM-Pro) + 1.1.1.1 (Cloudflare)
- VLAN 20 (IoT) :
- Subnet : 10.0.20.0/24
- Gateway : 10.0.20.1
- DHCP Range : 10.0.20.100-10.0.20.200
- DNS : 10.0.10.1 (pour la résolution des noms locaux)
Créez des règles firewall pour autoriser uniquement les flux nécessaires :
# Autoriser WireGuard (VLAN10) à accéder à VLAN20 (IoT)
set firewall name LAN_IN rule 20 action accept
set firewall name LAN_IN rule 20 description "Allow WireGuard to IoT VLAN"
set firewall name LAN_IN rule 20 source address 10.8.0.0/24
set firewall name LAN_IN rule 20 destination address 10.0.20.0/24
# Bloquer tout le reste par défaut
set firewall name LAN_IN default-action drop
3. Configuration de Nginx Proxy Manager (NPM)
NPM agit comme un reverse proxy pour exposer Home Assistant (port 8123) et SMA Sunny Portal (port 80/443) de manière sécurisée. Installez NPM via Docker :
docker run -d \
--name=nginx-proxy-manager \
-p 80:80 -p 443:443 -p 81:81 \
-v npm_data:/data \
-v npm_letsencrypt:/etc/letsencrypt \
--restart unless-stopped \
jc21/nginx-proxy-manager:latest
Configurez un proxy host pour Home Assistant :
- Domain :
ha.votre-domaine.com - Scheme :
http - Forward Hostname/IP :
10.0.10.100(IP de HA dans VLAN10) - Forward Port :
8123 - SSL : Activez Let’s Encrypt (TLS 1.3, certificat ECDSA P-384).
- Custom Locations :
location /api/websocket { proxy_pass http://10.0.10.100:8123/api/websocket; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
Pour SMA Sunny Portal (Modbus TCP/IP), créez un second proxy host :
- Domain :
sma.votre-domaine.com - Scheme :
http - Forward Hostname/IP :
10.0.20.50(IP de l’onduleur SMA) - Forward Port :
80 - SSL : Activez Let’s Encrypt.
- Custom Headers :
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
4. Intégration des protocoles domotiques dans Home Assistant
Configurez les intégrations dans configuration.yaml :
# KNX (via KNX/IP Interface)
knx:
tunneling:
host: 10.0.10.20 # IP de la passerelle Weinzierl 730
port: 3671
local_ip: 10.0.10.100 # IP de HA
# Z-Wave (via Aeotec Z-Stick Gen5+)
zwave:
usb_path: /dev/ttyACM0
network_key: "0xXX,0xXX,0xXX,..." # Clé S2 générée aléatoirement
# Zigbee (via ZHA)
zha:
database_path: /config/zigbee.db
port: /dev/ttyUSB0
baudrate: 115200
radio_type: ezsp
# SMA Sunny Portal (Modbus TCP/IP)
modbus:
- name: sma
type: tcp
host: 10.0.20.50
port: 502
sensors:
- name: "SMA Power AC"
slave: 3
address: 30775
input_type: input
unit_of_measurement: W
scale: 1
precision: 0
5. Tests de résilience et optimisation
Validez la configuration avec les tests suivants :
- Latence WireGuard :
ping 10.0.10.100 # Depuis le client distant (doit être < 20ms) - Chiffrement TLS :
openssl s_client -connect ha.votre-domaine.com:443 -tls1_3 -servername ha.votre-domaine.comVérifiez que le certificat est valide et que le cipher utilisé est
TLS_AES_256_GCM_SHA384. - Accès KNX :
knxtool groupread ip:10.0.10.20 1/1/1 # Lire une adresse de groupe KNX - Modbus SMA :
mbpoll -a 3 -r 30775 -t 4 -c 1 10.0.20.50 # Lire la puissance AC
Optimisez les performances en :
- Activant le
hardware offloadingsur l’UDM-Pro pour le trafic WireGuard. - Configurant des
keepalivepour les connexions WebSocket de HA :# Dans configuration.yaml http: keepalive: 60 - Utilisant un DNS dynamique (ex: Cloudflare) pour résoudre
votre-domaine.comvers votre IP publique.
Conclusion : Résilience et évolutivité
Cette architecture résout le problème de connectivité distante seamless en combinant :
- Sécurité : Chiffrement de bout en bout (WireGuard + TLS 1.3), segmentation réseau (VLANs), et règles firewall granulaires.
- Performance : Latence < 20ms pour les requêtes API et les trames KNX/IP, grâce à l’overlay WireGuard et au routage optimisé UniFi.
- Interopérabilité : Intégration native des protocoles KNX, Z-Wave, Zigbee et Modbus dans Home Assistant, avec une exposition sécurisée via Nginx Proxy Manager.
- Résilience : Redondance électrique (onduleur APC), tolérance aux pannes réseau (keepalive WireGuard), et sauvegardes automatiques (NAS Synology).
Pour une évolutivité future, envisagez :
- L’ajout d’un second serveur WireGuard en
active-activeavecwg-quicketsystemd. - L’intégration d’un IDS (Intrusion Detection System) comme
Suricatasur l’UDM-Pro. - La migration vers IPv6 (WireGuard supporte nativement IPv6).
Cette solution est adaptée aux installations professionnelles (bureaux, hôtels, smart buildings) où la sécurité et la fiabilité sont critiques, tout en restant accessible aux particuliers exigeants.

