SenseCAP Gateway OS est un système d'exploitation de passerelle IoT multi-protocole conçu pour les scénarios industriels intérieurs. Basé sur OpenWrt, il fournit une base logicielle standardisée couvrant trois capacités clés : passerelle LoRaWAN, acquisition de données de bus industriel et rapports de conformité des bâtiments.
Le système adopte une architecture légère innovante combinant un hôte Debian avec un seul conteneur LXC (OpenWrt). Toute la logique métier est encapsulée et s'exécute dans un seul conteneur OpenWrt, tandis que le système hôte est uniquement responsable de l'abstraction matérielle et de la gestion des conteneurs. Cette conception permet une utilisation optimale des ressources, une forte isolation de sécurité et une flexibilité opérationnelle.
English | 中文 | 日本語 | Français | Português | Español
- Caractéristiques
- Matériel recommandé
- Capacités et feuille de route
- Structure des répertoires
- Démarrage
- Déploiement
- Modules fonctionnels
- Description des feeds
- FAQ
- Liens associés
- Licence
- Contribution
- Système hôte minimal : L'hôte Debian ne conserve que le noyau, la chaîne d'outils LXC, les pilotes matériels et la surveillance UPS, sans exécuter de services applicatifs.
- Architecture à conteneur unique : Tous les services (services LoRaWAN, réseau, gestion des périphériques et services Web) s'exécutent dans un seul conteneur LXC en tant que packages OpenWrt natifs.
- Opérations simplifiées : La conception à conteneur unique simplifie la gestion de la configuration, le rollback des mises à jour et le dépannage, réduisant la complexité opérationnelle.
Note : Le diagramme ci-dessus illustre uniquement les composants logiciels s'exécutant à l'intérieur du conteneur LXC (OpenWrt). La couche du système hôte (Debian) — incluant le noyau Linux, les pilotes matériels, le runtime LXC, le moniteur UPS et le stockage des données utilisateur — est affichée séparément en haut et ne fait pas partie de l'image du conteneur.
| Appareil | Lien |
|---|---|
| reComputer R1225 Passerelle LoRaWAN & Contrôleur industriel (US915-4G) | Acheter |
| reComputer R1225 Passerelle LoRaWAN & Contrôleur industriel (US915) | Acheter |
| reComputer R1225 Passerelle LoRaWAN & Contrôleur industriel (EU868-4G) | Acheter |
| reComputer R1225 Passerelle LoRaWAN & Contrôleur industriel (EU868) | Acheter |
Wiki du reComputer R1225 : https://wiki.seeedstudio.com/r1225_introduction/
SenseCAP Gateway OS n'est pas seulement le système dédié au R1225, mais aussi une solution logicielle de passerelle portable. Il peut être adapté à différentes plateformes matérielles, permettant aux partenaires de personnaliser et d'étendre rapidement le système.
🔜 Prochaines étapes :
- Ajout du support de configuration Web pour le protocole BACnet
- Optimisation de la logique de configuration Web pour les ports série et Modbus
- Ajout d'un service de watchdog réseau 4G
recomputer-gateway/
├── .config # Configuration de compilation OpenWrt
├── .github/
│ └── workflows/
│ └── build.yml # Workflow de compilation GitHub Actions
├── feeds.conf.default # Configuration des feeds
├── feeds/
│ ├── chirpstack/ # Packages liés à ChirpStack
│ ├── lorawan-gateway/ # Services backend de la passerelle LoRaWAN
│ └── luci-lorawan-gateway/ # Extensions de l'interface Web LuCI
│ ├── luci-app-gateway/ # Application de configuration principale
│ ├── luci-app-lora/ # Affichage du statut LoRa
│ ├── luci-app-lte/ # Configuration LTE
│ ├── luci-app-ups/ # Gestion de l'alimentation UPS
│ ├── luci-app-rs485/ # Configuration RS485
│ ├── luci-app-terminal/ # Terminal Web
│ ├── luci-app-ota/ # Mise à jour OTA
│ ├── luci-app-multiwan/ # Configuration Multi WAN
│ ├── luci-app-routing/ # Configuration du routage
│ └── luci-theme-sensecap/ # Thème SenseCap
├── openwrt/ # Source OpenWrt (téléchargé lors de la compilation)
└── README.md # Ce document
- OS : Ubuntu/Debian Linux
- Espace disque : > 50 Go recommandé
- Mémoire : > 8 Go recommandé
sudo apt-get update
sudo apt-get install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses5-dev \
libssl-dev rsync unzip zlib1g-dev file wgetgit submodule update --init --recursivegit clone https://github.com/openwrt/openwrt.git -b openwrt-24.10
cd openwrt
rm -r feeds.conf.default
cp ../feeds.conf.default feeds.conf.default./scripts/feeds update -a
./scripts/feeds install -acp ../.config .config
make defconfigsed -i 's/--set=llvm.download-ci-llvm=true/--set=llvm.download-ci-llvm=false/' \
feeds/packages/lang/rust/Makefileunset CI GITHUB_ACTIONS CONTINUOUS_INTEGRATION
make -j$(nproc)Après la compilation, le firmware se trouve à :
openwrt/bin/targets/armsr/armv8/openwrt-armsr-armv8-generic-rootfs.tar.gz
Pour personnaliser le firmware (ajouter des packages, modifier les paramètres du noyau), exécutez menuconfig dans le répertoire openwrt :
cd openwrt
make menuconfigLe firmware est déployé sur l'appareil via un conteneur LXC :
sudo lxc-stop -n SenseCAPsudo rm -rf /var/lib/lxc/SenseCAP/rootfs
sudo mkdir -p /var/lib/lxc/SenseCAP/rootfssudo tar -xzf /path/to/openwrt-armsr-armv8-generic-rootfs.tar.gz \
-C /var/lib/lxc/SenseCAP/rootfssudo lxc-start -n SenseCAPsudo lxc-attach -n SenseCAP# Logs du packet forwarder LoRa
logread | grep lora
# Logs système
logreadAccédez à http://[IP_ADDRESS]/cgi-bin/luci pour :
- Vue d'ensemble : Statut LoRa, connexions réseau, statistiques de paquets
- Services : Configuration LoRa, réseau et autres
- Fichier de configuration :
/etc/config/lora_pkt_fwd - Service :
lorawan_gateway - UI : Application LuCI Gateway
- Cible :
seeed-gateway - Service :
chirpstack-concentratord
- Configuration :
/etc/config/network - Pare-feu : Règles de pare-feu ajoutées pour les réseaux LTE et WWAN
Supporte plusieurs configurations WAN incluant LTE et Ethernet, avec équilibrage de charge et capacités de basculement.
Le reComputer R1225 est équipé de deux ports Ethernet physiques (ETH0 et ETH1). Ces ports remplissent des rôles différents selon l'architecture hôte-conteneur :
| Port | Rôle | Description |
|---|---|---|
| ETH0 | Interface conteneur (LXC) | Cette interface est directement mappée (passthrough) du matériel vers le conteneur LXC via la configuration réseau LXC de l'hôte. Le conteneur OpenWrt a un contrôle total sur cette interface, la gérant comme un port WAN ou LAN standard. Tout le trafic applicatif (uplink LoRaWAN, MQTT, accès Web UI, etc.) passe par ce port. |
| ETH1 | Interface hôte (Debian) | Cette interface est gérée par le système hôte Debian. Elle est utilisée pour les tâches d'administration au niveau de l'hôte telles que l'accès SSH, les opérations de gestion des conteneurs, les mises à jour du firmware et la communication de surveillance UPS. Elle reste isolée de la pile réseau du conteneur. |
Cette séparation garantit que même si le réseau du conteneur est mal configuré ou inaccessible, l'interface de gestion de l'hôte reste accessible pour la récupération et la maintenance.
- Fichiers de configuration :
/etc/config/rs485-module(série, MQTT, protocole) - Services :
rs485-module,rs485-modbus - UI : Application LuCI RS485 (Paramètres série, Paramètres de protocole, Paramètres MQTT, Journal MQTT)
Le module RS485 supporte les protocoles industriels incluant Modbus RTU et BACnet MS/TP :
- Modbus RTU : Interrogation et analyse des registres Modbus via l'interface série RS485, avec transfert de données via uplink/downlink MQTT.
- BACnet MS/TP : Support du protocole BACnet sur RS485 pour l'intégration de l'automatisation des bâtiments (configuration Web en cours).
Ce projet utilise trois feeds OpenWrt personnalisés. Ils sont définis dans feeds.conf.default et installés dans le système de compilation OpenWrt via ./scripts/feeds update && ./scripts/feeds install.
Intégration de l'écosystème ChirpStack LoRaWAN, incluant le serveur réseau, le démon concentrateur, les packet forwarders et leurs frontends LuCI.
| Package | Description |
|---|---|
chirpstack |
Serveur réseau ChirpStack LoRaWAN |
chirpstack-concentratord |
Démon packet forwarder du concentrateur (avec builds ciblés par matériel) |
chirpstack-mqtt-forwarder |
Packet forwarder basé sur MQTT (variantes single / slot1 / slot2 / mesh) |
chirpstack-udp-forwarder |
Packet forwarder basé sur UDP (variantes single / slot1 / slot2) |
chirpstack-gateway-mesh |
Extension de réseau mesh LoRaWAN |
chirpstack-rest-api |
Service API REST pour ChirpStack |
lorawan-devices |
Profils de dispositifs LoRaWAN et définitions de codecs |
node-red |
Plateforme d'automatisation visuelle Node-RED |
libloragw-sx1301 / sx1302 / 2g4 |
Bibliothèques HAL LoRa Semtech |
luci-app-chirpstack-* |
Interfaces Web LuCI pour tous les composants ChirpStack |
luci-theme-argon |
Thème Argon pour LuCI |
Intégration matérielle de la passerelle et services système backend.
| Package | Description |
|---|---|
lora |
Service de pile radio LoRa (Rust) |
packetforwarder |
Packet forwarder LoRa |
chirpstack-concentratord-target-seeed-gateway |
Build concentrateur spécifique Seeed gateway |
chirpstack-gateway-bridge |
Bridge passerelle ChirpStack (backend MQTT/UDP) |
basicstation_ubus |
Protocole Basic Station avec service RPC ubus |
lte-serve |
Service de gestion du module cellulaire LTE |
rs485-module |
Service de communication série RS485 (Rust) |
rs485-modbus |
Implémentation du protocole Modbus RS485 (Rust) |
bacnet-stack |
Pile protocole BACnet pour l'automatisation des bâtiments |
ups-module |
Service de gestion de l'alimentation UPS (Rust) |
hardware-info |
Lecteur EEPROM pour SN, EUI et infos matérielles de la passerelle |
ubus-serve |
Service RPC ubus pour la gestion système |
wifi-module |
Configuration WiFi automatique via détection de clé USB |
Applications d'interface Web LuCI et thème pour la gestion de la passerelle.
| Package | Description |
|---|---|
luci-app-gateway |
Configuration principale du système de passerelle |
luci-app-lora |
Statut et configuration radio LoRa |
luci-app-chirpstack-concentratord-target-seeed-gateway |
Configuration du concentrateur Seeed gateway |
luci-app-lte |
Configuration cellulaire LTE/4G |
luci-app-multiwan |
Basculement Multi-WAN et équilibrage de charge |
luci-app-routing |
Configuration du routage réseau |
luci-app-rs485 |
Configuration de l'interface RS485/Modbus |
luci-app-bacnet |
Configuration du protocole BACnet |
luci-app-ups |
Gestion de l'alimentation UPS |
luci-app-ota |
Mise à jour OTA du firmware |
luci-app-terminal |
Console terminal basée sur le Web |
luci-theme-sensecap |
Thème personnalisé SenseCAP |
Problème : Erreurs pendant la compilation
Solution :
- Vérifier l'espace disque (> 50 Go recommandé)
- S'assurer que les sous-modules sont à jour :
git submodule update --init --recursive - La compilation Rust est lente, désactiver le téléchargement CI LLVM pour accélérer
Problème : Impossible d'accéder à l'interface Web après le démarrage du conteneur
Solution :
- Vérifier le statut du conteneur LXC :
sudo lxc-ls -f - Afficher les logs du conteneur :
sudo lxc-info -n SenseCAP - Vérifier que la configuration réseau est correcte
Problème : Pas de données sur la page de statut LoRa
Solution :
- Vérifier le statut du service concentrateur
- Afficher les logs :
logread | grep -i lora - Vérifier que la configuration de la passerelle est correcte
Ce projet suit les exigences de licence du projet OpenWrt.
Les Issues et Pull Requests sont les bienvenus !





