Raspberry Pi 3 - Gateway IoT¶
Vue d'ensemble¶
Raspberry Pi 3 dédié à deux fonctions IoT critiques : passerelle SMS (alertes domotiques) et contrôle des volets Somfy RTS via RFLink.
graph TB
subgraph rpi3["Raspberry Pi 3 - 192.168.1.26"]
direction TB
subgraph services["🔧 Services"]
SMS[Gammu-SMSD<br/>Gateway SMS]
RFLink[RFLink TCP<br/>Port 8844]
end
subgraph hardware["📟 Matériel USB"]
GSM[Modem GSM<br/>SIM800 CH340<br/>/dev/sms]
RF[RFLink Arduino<br/>Mega 2560<br/>/dev/volets]
end
end
subgraph boot["🖥️ Boot Réseau"]
LXC141[LXC 141<br/>pxe-rpi<br/>TFTP + DHCP]
NFS[Proxmox<br/>NFS Server<br/>/srv/nfs/rpi3]
end
subgraph integration["🏠 Intégration"]
HA[Home Assistant<br/>VM 100]
Somfy[Volets Somfy<br/>433.42 MHz]
end
LXC141 --> |PXE Boot| rpi3
NFS --> |Root NFS| rpi3
SMS --> |Webhook| HA
RFLink --> |TCP 8844| HA
RF --> |RF 433.42 MHz| Somfy
Spécifications matérielles¶
| Ressource | Valeur |
|---|---|
| Modèle | Raspberry Pi 3 Model B |
| CPU | ARM Cortex-A53 (4 cores @ 1.2 GHz) |
| RAM | 1 GB |
| Stockage | Boot réseau (NFS) |
| OS | Raspberry Pi OS Bookworm (ARM64) |
Informations système¶
| Propriété | Valeur |
|---|---|
| IP | 192.168.1.26 (DHCP réservé) |
| Boot | PXE via LXC 141 (192.168.1.191) |
| Root | NFS depuis Proxmox (192.168.1.32:/srv/nfs/rpi3) |
Accès¶
SSH¶
Depuis Proxmox (rootfs NFS)¶
# Accès direct aux fichiers du Pi
ls /srv/nfs/rpi3/
# Éditer config sans reboot
nano /srv/nfs/rpi3/etc/gammu-smsdrc
Architecture Boot Réseau¶
┌─────────────────────────────────────────────────────────────────┐
│ Proxmox (.32) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ LXC 141 - pxe-rpi (.191) │ │
│ │ ├─ dnsmasq : TFTP + Proxy DHCP (PXE options) │ │
│ │ └─ /srv/tftp : bootloader + kernel Pi3 │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ├─ NFS Server : /srv/nfs/rpi3 (rootfs Raspberry Pi OS) │
│ └─ IP Proxmox : 192.168.1.32 │
└─────────────────────────────────────────────────────────────────┘
│
│ PXE Boot + NFS Root
▼
┌─────────────────────────────────────────────────────────────────┐
│ Raspberry Pi 3 (.26) │
│ ├─ Boot TFTP : récupère kernel + initramfs depuis .191 │
│ ├─ Root NFS : monte /srv/nfs/rpi3 depuis .32 │
│ ├─ /dev/sms (ttyUSB0) : Modem GSM CH340 (Gammu) │
│ └─ /dev/volets (ttyUSB1) : RFLink CH340 → TCP:8844 │
└─────────────────────────────────────────────────────────────────┘
Périphériques USB¶
| Port USB | Device | Symlink | Usage |
|---|---|---|---|
| 1-1.3 | CH340 (1a86:7523) | /dev/sms |
Modem GSM SIM800 |
| 1-1.5 | CH340 (1a86:7523) | /dev/volets |
RFLink Arduino Mega |
| 1-1.2.4 | SIM7600 (1e0e:9001) | /dev/smsbackup |
Modem 4G backup |
Règles udev¶
# /srv/nfs/rpi3/etc/udev/rules.d/90-usb-serial.rules
# RFLink (CH340 sur port USB 1-1.5) -> /dev/volets
SUBSYSTEM=="tty", KERNELS=="1-1.5:1.0", SYMLINK+="volets", MODE="0666"
# Modem SMS SIM800 (CH340 sur port USB 1-1.3) -> /dev/sms
SUBSYSTEM=="tty", KERNELS=="1-1.3:1.0", SYMLINK+="sms", MODE="0666"
# SIM7600 Modem 4G (backup) -> /dev/smsbackup
SUBSYSTEM=="tty", ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9001", \
ATTR{bInterfaceNumber}=="02", SYMLINK+="smsbackup", MODE="0666"
Services¶
1. Gateway SMS (Gammu-SMSD)¶
Envoi et réception de SMS pour alertes domotiques.
| Propriété | Valeur |
|---|---|
| Service | gammu-smsd.service |
| Config | /etc/gammu-smsdrc |
| Port modem | /dev/sms |
| Numéro | 0685397996 |
Configuration (/etc/gammu-smsdrc) :
[gammu]
port = /dev/sms
connection = at
synchronizetime = yes
[smsd]
PhoneId = 0685397996
Service = files
RunOnReceive = /var/www/html/sms/receive.sh
RunOnFailure = /var/www/html/sms/error.sh
# Répertoires spool
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/
Service systemd :
[Unit]
Description=Gammu SMS Daemon
After=network.target dev-sms.device
Wants=dev-sms.device
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
ExecStartPre=/bin/sleep 3
ExecStart=/usr/bin/gammu-smsd --config /etc/gammu-smsdrc
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Intégration Home Assistant :
rest_command:
send_sms:
url: "http://192.168.1.26/sms/send.php"
method: GET
params:
numero: "{{ numero }}"
texte: "{{ message }}"
2. Contrôle Volets Somfy (RFLink TCP)¶
Bridge série→TCP pour RFLink Arduino contrôlant les volets Somfy RTS.
| Propriété | Valeur |
|---|---|
| Service | rflink-tcp.service |
| Port série | /dev/volets (57600 baud) |
| Port TCP | 8844 |
| Protocole | Somfy RTS (433.42 MHz) |
Service systemd :
[Unit]
Description=RFLink to TCP Bridge (socat)
After=network.target dev-volets.device
Wants=dev-volets.device
[Service]
Type=simple
ExecStart=/usr/bin/socat /dev/volets,b57600,raw,echo=0 TCP-LISTEN:8844,reuseaddr,fork
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Volets configurés :
| Volet | ID RTS | Entité Home Assistant |
|---|---|---|
| Bureau | RTS_FAF22D_0 |
cover.volet_bureau |
| Chambre | RTS_7DCE35_0 |
cover.volet_chambre |
| Studio | RTS_E32A50_0 |
cover.volet_studio |
| Groupe | - | cover.volets_bas |
Configuration Home Assistant (rflink.yaml) :
Commandes utiles¶
Diagnostic général¶
# Connexion SSH
ssh root@192.168.1.26
# Statut des services
systemctl status gammu-smsd rflink-tcp
# Vérifier les devices USB
lsusb
ls -la /dev/sms /dev/volets
Gateway SMS¶
# Statut service
systemctl status gammu-smsd
# Envoi SMS manuel
gammu-smsd-inject TEXT 0612345678 -text "Test SMS"
# Vérifier le modem
gammu --identify
# Logs
journalctl -u gammu-smsd -f
# Qualité signal GSM
gammu --getsignal
Contrôle volets¶
# Test connexion RFLink (pas d'émission RF)
echo -e '10;PING;\r\n' | nc localhost 8844
# Réponse attendue : 20;XX;PONG;
# Lister les devices RTS enregistrés
echo -e '10;RTSSHOW;\r' | nc localhost 8844
# Commander un volet (ATTENTION: actionne le volet!)
echo -e '10;RTS;FAF22D;0;UP;\r' | nc localhost 8844 # Monter
echo -e '10;RTS;FAF22D;0;DOWN;\r' | nc localhost 8844 # Descendre
echo -e '10;RTS;FAF22D;0;STOP;\r' | nc localhost 8844 # Stop
Boot réseau¶
# Vérifier le montage NFS (depuis le Pi)
mount | grep nfs
# Accès rootfs depuis Proxmox
ls /srv/nfs/rpi3/
# Modifier config sans reboot du Pi
nano /srv/nfs/rpi3/etc/gammu-smsdrc
ssh root@192.168.1.26 systemctl restart gammu-smsd
Dépannage¶
Pi ne boot pas¶
- Vérifier LXC 141 (pxe-rpi) est démarré
- Vérifier le service dnsmasq dans LXC 141
- Vérifier le serveur NFS sur Proxmox
- Brancher écran/clavier pour voir les erreurs boot
SMS non envoyés¶
- Vérifier signal GSM :
gammu --getsignal - Vérifier carte SIM active et avec crédit
- Vérifier le device :
ls -la /dev/sms - Redémarrer le service :
systemctl restart gammu-smsd
Volets ne répondent pas¶
- Tester le PING RFLink
- Vérifier rolling code (peut être désynchronisé)
- Réappairer si nécessaire (commande PAIR)
# Test RFLink
echo -e '10;PING;\r\n' | nc localhost 8844
# Si désynchronisé : appuyer 3s sur PROG télécommande Somfy, puis :
echo -e '10;RTS;FAF22D;0;PAIR;\r' | nc localhost 8844
Maintenance¶
Sauvegarde¶
Le rootfs est sur NFS, donc sauvegardé avec Proxmox :
Mise à jour¶
# SSH sur le Pi
apt update && apt upgrade -y
# Ou depuis Proxmox (chroot)
chroot /srv/nfs/rpi3 apt update
Redémarrage¶
# Reboot propre
ssh root@192.168.1.26 reboot
# Si bloqué, reboot électrique
# (boot PXE reprendra automatiquement)
Notes¶
- Boot NFS : Pas de carte SD, tout est sur le réseau
- Dépendance LXC 141 : Le Pi ne boot pas sans le serveur PXE
- Dépendance Proxmox NFS : Le Pi ne boot pas sans le NFS
- Deux CH340 identiques : Différenciés par port USB physique (règles udev)
- Rolling code RFLink : Stocké dans l'EEPROM Arduino, incrémente automatiquement
- Criticité moyenne : Alertes SMS et volets, mais pas critique pour la domotique de base