fix(ci): l'entrée Waveshare bloquait toute la chaîne — retirée, CI débloquée

validate_entries() arrête la génération quand une entrée de PORTING_STATUS d'un
canal autre que nightly n'a pas son integrationplugin*.json dans --src. L'entrée
waveshare-relay-d8 était en `channel: testing` pour un plugin qui n'a JAMAIS été
livré : la CI a donc échoué chaque nuit du 2026-08-02 au 2026-10-13, et le site de
doc est resté gelé au build du 1er août. Dix semaines, en silence.

Le garde-fou avait raison. C'est l'entrée qui était fausse, pas le contrôle — d'où
le choix de retirer l'entrée plutôt que de la basculer en nightly (ce qui aurait
publié « portage en cours » là où il n'y a pas de portage) ou d'assouplir
validate_entries() (ce qui aurait échangé un échec visible contre une doc
silencieusement incomplète).

Retirés : l'entrée de PORTING_STATUS — remplacée par le motif complet, sur place,
pour que personne ne la réintroduise sans savoir — et les trois fiches
smart/waveshare.{md,de.md,en.md}. Le reste des mentions vivait dans du contenu
généré (SUMMARY.md, index de catégorie, matrice de compatibilité) et a disparu à
la régénération.

Au passage, deux choses trouvées en nettoyant :
- `appareils/index.md` citait « SmartDevices — Waveshare » comme exemple de la
  catégorie ; remplacé par Shelly, Tasmota, GPIO, qui sont en canal stable.
- cette même page n'avait AUCUNE variante traduite : une entrée de nav de premier
  niveau servie en français sous /de/ et /en/. Traduite.

Chaîne CI rejouée en entier dans l'ordre, après correction : génération appareils
OK, génération API OK, `mkdocs build --strict` sans aucun avertissement,
contrôle d'idempotence OK.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-13 07:43:31 +02:00
parent 325409dd3f
commit 0c8c814f75
14 changed files with 34 additions and 246 deletions

View File

@ -131,12 +131,21 @@
# ── SmartDevices (pilotage, relais, thermostats) ──────────────────────────────
- repo: etm-powersync-plugins-modbus
plugin: waveshare-relay-d8
slug: waveshare
name: Waveshare relais
channel: testing
category: smartdevice
# Waveshare D8 — entrée RETIRÉE le 2026-10-13.
# Le plugin n'a jamais été livré : il a été sorti de `main` de
# etm-powersync-plugins-modbus le 2026-08-02 (997ea13) parce qu'il était
# « built by nothing, absent from both PLUGIN_DIRS and debian/control, so no
# package has ever shipped it ». Vérifié : 0 occurrence dans modbus.pri et
# debian/control sur main, aucun paquet installé sur le banc (dont les relais
# sont en GPIO). L'AGENTS.md du moteur le classe en DÉFÉRÉ (chantier transport
# Modbus RTU/RS485, session dédiée).
#
# Tant que cette entrée disait `channel: testing`, validate_entries() arrêtait
# TOUTE la chaîne — la CI a échoué chaque nuit du 2026-08-02 au 2026-10-13 et
# le site de doc est resté gelé au build du 1er août. Le garde-fou avait raison.
#
# À réintroduire le jour où le plugin est réellement construit et empaqueté,
# avec le canal qui correspondra à sa maturité d'alors.
- repo: nymea-plugins
plugin: shelly

View File

@ -23,7 +23,6 @@
* [PhoenixConnect](bornes/phoenixconnect.md)
* [INRO](bornes/inro.md)
* [SmartDevices](smart/index.md)
* [Waveshare relais](smart/waveshare.md)
* [Shelly](smart/shelly.md)
* [Tasmota](smart/tasmota.md)
* [Tuya](smart/tuya.md)

View File

@ -64,7 +64,6 @@ Jedes Gerät trägt drei unabhängige Badges:
| Brand / Model | Protocol | Channel | Origin | Stability |
|---|---|---|---|---|
| Waveshare relais | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| Shelly | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| Tasmota | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| Tuya | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -64,7 +64,6 @@ Every device carries three independent badges:
| Brand / Model | Protocol | Channel | Origin | Stability |
|---|---|---|---|---|
| Waveshare relais | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| Shelly | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| Tasmota | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| Tuya | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -64,7 +64,6 @@ Chaque appareil porte trois badges indépendants :
| Brand / Model | Protocol | Channel | Origin | Stability |
|---|---|---|---|---|
| Waveshare relais | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| Shelly | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| Tasmota | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| Tuya | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -0,0 +1,9 @@
# Geräte
ETM PowerSync kommuniziert mit den Geräten über Modbus (TCP/RTU) und
herstellereigene Protokolle, mithilfe der mitgelieferten Plugins.
- [Kompatibilität](compatibilite.md) — vollständige Matrix mit APT-Kanälen
- [Zähler](compteurs/index.md) — Eastron SDM, ABB B2x
- [Wallboxen](bornes/index.md) — ABB Terra AC, Keba
- [SmartDevices](smart/index.md) — Shelly, Tasmota, GPIO

View File

@ -0,0 +1,9 @@
# Devices
ETM PowerSync talks to equipment over Modbus (TCP/RTU) and vendor-specific
protocols, through the bundled plugins.
- [Compatibility](compatibilite.md) — full matrix with APT channels
- [Meters](compteurs/index.md) — Eastron SDM, ABB B2x
- [EV chargers](bornes/index.md) — ABB Terra AC, Keba
- [SmartDevices](smart/index.md) — Shelly, Tasmota, GPIO

View File

@ -6,4 +6,4 @@ propriétaires, grâce aux plugins embarqués.
- [Compatibilité](compatibilite.md) — matrice complète avec canaux APT
- [Compteurs](compteurs/index.md) — Eastron SDM, ABB B2x
- [Bornes de recharge](bornes/index.md) — ABB Terra AC, Keba
- [SmartDevices](smart/index.md) — Waveshare
- [SmartDevices](smart/index.md) — Shelly, Tasmota, GPIO

View File

@ -8,7 +8,6 @@ hide:
<!-- BEGIN GENERATED: __index_smartdevice__ -->
| Device | Protocol | Channel | Origin | Stability |
| --- | --- | --- | --- | --- |
| [Waveshare relais](waveshare.md) | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| [Shelly](shelly.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| [Tasmota](tasmota.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| [Tuya](tuya.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -8,7 +8,6 @@ hide:
<!-- BEGIN GENERATED: __index_smartdevice__ -->
| Device | Protocol | Channel | Origin | Stability |
| --- | --- | --- | --- | --- |
| [Waveshare relais](waveshare.md) | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| [Shelly](shelly.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| [Tasmota](tasmota.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| [Tuya](tuya.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -10,7 +10,6 @@ Modules de pilotage de charges supportés par ETM PowerSync.
<!-- BEGIN GENERATED: __index_smartdevice__ -->
| Device | Protocol | Channel | Origin | Stability |
| --- | --- | --- | --- | --- |
| [Waveshare relais](waveshare.md) | Modbus RTU | <span class="badge testing">TESTING</span> | <span class="badge origin-etm">ETM</span> | <span class="badge experimental">EXPERIMENTAL</span> |
| [Shelly](shelly.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge consumer">CONSUMER</span> |
| [Tasmota](tasmota.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |
| [Tuya](tuya.md) | — | <span class="badge stable">STABLE</span> | <span class="badge origin-nymea">NYMEA</span> | <span class="badge community">COMMUNITY</span> |

View File

@ -1,78 +0,0 @@
# Waveshare-Relais
<!-- BEGIN GENERATED: __badges_waveshare-relay-d8__ -->
<span class="badge testing">TESTING</span> <span class="badge origin-etm">ETM</span> <span class="badge experimental">EXPERIMENTAL</span>
<!-- END GENERATED -->
Waveshare-Relaismodul (Variante mit 8 Kanälen, RS485), Ansteuerung über
**Modbus RTU**.
## 1. Benötigte Hardware
- Waveshare 8-Channel Relay Module (RS485)
- USB↔RS485-Adapter auf Hub-Seite
- 12-V-DC-Versorgung + Buskabel (A/B)
## 2. RS485-Anschluss
A↔A, B↔B, gemeinsame Masse, **120 Ω** am Busende.
12 V DC an die Klemmen VCC/GND des Moduls.
## 3. Modbus-Adressierung
Standardadresse: **1**. Einstellbar über das Waveshare-Dienstprogramm oder per
Modbus-Befehl zur Adressänderung.
Parameter: **9600 bps, 8N1**.
## 4. Hinzufügen in PowerSync
Manuelles Hinzufügen (serieller Port, Slave-Adresse).
Siehe [Gerät hinzufügen](../../installation/application.md).
---
## Referenz
<!-- BEGIN GENERATED: integrationpluginwaveshare-relay-d8.json -->
**Manufacturer:** Waveshare
**Plugin:** `WaveshareRelayD8`
#### Supported models
| Model | Role | Transport | Pairing | Quantities |
| --- | --- | --- | --- | --- |
| **Waveshare Relay D8** | — | Modbus RTU | Auto-discovery | 17 |
#### Per-model detail
??? abstract "Waveshare Relay D8 — `waveshareRelayD8`"
_Settings:_
| Key | Label | Type | Range | Default | Read-only |
| --- | --- | --- | --- | --- | --- |
| `rtuMaster` | Modbus RTU master UUID | QString | — | — | no |
| `slaveAddress` | Modbus slave address | int | 1–247 | `1` | no |
_Measured quantities:_
| Key | Quantity | Type | Unit |
| --- | --- | --- | --- |
| `connected` | Connected | bool | — |
| `relay1State` | Relay 1 | bool | — |
| `relay2State` | Relay 2 | bool | — |
| `relay3State` | Relay 3 | bool | — |
| `relay4State` | Relay 4 | bool | — |
| `relay5State` | Relay 5 | bool | — |
| `relay6State` | Relay 6 | bool | — |
| `relay7State` | Relay 7 | bool | — |
| `relay8State` | Relay 8 | bool | — |
| `input1State` | Input 1 | bool | — |
| `input2State` | Input 2 | bool | — |
| `input3State` | Input 3 | bool | — |
| `input4State` | Input 4 | bool | — |
| `input5State` | Input 5 | bool | — |
| `input6State` | Input 6 | bool | — |
| `input7State` | Input 7 | bool | — |
| `input8State` | Input 8 | bool | — |
<!-- END GENERATED -->

View File

@ -1,77 +0,0 @@
# Waveshare relays
<!-- BEGIN GENERATED: __badges_waveshare-relay-d8__ -->
<span class="badge testing">TESTING</span> <span class="badge origin-etm">ETM</span> <span class="badge experimental">EXPERIMENTAL</span>
<!-- END GENERATED -->
Waveshare relay module (8-channel RS485 variant), driven over **Modbus RTU**.
## 1. Hardware required
- Waveshare 8-Channel Relay Module (RS485)
- A USB↔RS485 adapter on the hub side
- 12 V DC supply + bus cable (A/B)
## 2. RS485 wiring
A↔A, B↔B, common ground, **120 Ω** at the end of the bus.
12 V DC to the module's VCC/GND terminals.
## 3. Modbus addressing
Default address: **1**. Configurable from the Waveshare utility, or by the
Modbus address-change command.
Parameters: **9600 bps, 8N1**.
## 4. Adding in PowerSync
Manual addition (serial port, slave address).
See [Adding a device](../../installation/application.md).
---
## Reference
<!-- BEGIN GENERATED: integrationpluginwaveshare-relay-d8.json -->
**Manufacturer:** Waveshare
**Plugin:** `WaveshareRelayD8`
#### Supported models
| Model | Role | Transport | Pairing | Quantities |
| --- | --- | --- | --- | --- |
| **Waveshare Relay D8** | — | Modbus RTU | Auto-discovery | 17 |
#### Per-model detail
??? abstract "Waveshare Relay D8 — `waveshareRelayD8`"
_Settings:_
| Key | Label | Type | Range | Default | Read-only |
| --- | --- | --- | --- | --- | --- |
| `rtuMaster` | Modbus RTU master UUID | QString | — | — | no |
| `slaveAddress` | Modbus slave address | int | 1–247 | `1` | no |
_Measured quantities:_
| Key | Quantity | Type | Unit |
| --- | --- | --- | --- |
| `connected` | Connected | bool | — |
| `relay1State` | Relay 1 | bool | — |
| `relay2State` | Relay 2 | bool | — |
| `relay3State` | Relay 3 | bool | — |
| `relay4State` | Relay 4 | bool | — |
| `relay5State` | Relay 5 | bool | — |
| `relay6State` | Relay 6 | bool | — |
| `relay7State` | Relay 7 | bool | — |
| `relay8State` | Relay 8 | bool | — |
| `input1State` | Input 1 | bool | — |
| `input2State` | Input 2 | bool | — |
| `input3State` | Input 3 | bool | — |
| `input4State` | Input 4 | bool | — |
| `input5State` | Input 5 | bool | — |
| `input6State` | Input 6 | bool | — |
| `input7State` | Input 7 | bool | — |
| `input8State` | Input 8 | bool | — |
<!-- END GENERATED -->

View File

@ -1,77 +0,0 @@
# Waveshare relais
<!-- BEGIN GENERATED: __badges_waveshare-relay-d8__ -->
<span class="badge testing">TESTING</span> <span class="badge origin-etm">ETM</span> <span class="badge experimental">EXPERIMENTAL</span>
<!-- END GENERATED -->
Module de relais Waveshare (modèle 8 canaux RS485), pilotage via **Modbus RTU**.
## 1. Matériel requis
- Module Waveshare 8-Channel Relay (RS485)
- Adaptateur USB↔RS485 côté hub
- Alimentation 12 V DC + câble bus (A/B)
## 2. Raccordement RS485
A↔A, B↔B, masse commune, terminaison **120 Ω** en bout de bus.
Alimentation 12 V DC sur les bornes VCC/GND du module.
## 3. Adressage Modbus
Adresse par défaut : **1**. Configurable via l'utilitaire Waveshare ou par
commande Modbus de changement d'adresse.
Paramètres : **9600 bps, 8N1**.
## 4. Ajout dans PowerSync
Ajout manuel (port série, adresse esclave).
Voir [Ajouter un appareil](../../installation/application.md).
---
## Référence
<!-- BEGIN GENERATED: integrationpluginwaveshare-relay-d8.json -->
**Manufacturer:** Waveshare
**Plugin:** `WaveshareRelayD8`
#### Supported models
| Model | Role | Transport | Pairing | Quantities |
| --- | --- | --- | --- | --- |
| **Waveshare Relay D8** | — | Modbus RTU | Auto-discovery | 17 |
#### Per-model detail
??? abstract "Waveshare Relay D8 — `waveshareRelayD8`"
_Settings:_
| Key | Label | Type | Range | Default | Read-only |
| --- | --- | --- | --- | --- | --- |
| `rtuMaster` | Modbus RTU master UUID | QString | — | — | no |
| `slaveAddress` | Modbus slave address | int | 1–247 | `1` | no |
_Measured quantities:_
| Key | Quantity | Type | Unit |
| --- | --- | --- | --- |
| `connected` | Connected | bool | — |
| `relay1State` | Relay 1 | bool | — |
| `relay2State` | Relay 2 | bool | — |
| `relay3State` | Relay 3 | bool | — |
| `relay4State` | Relay 4 | bool | — |
| `relay5State` | Relay 5 | bool | — |
| `relay6State` | Relay 6 | bool | — |
| `relay7State` | Relay 7 | bool | — |
| `relay8State` | Relay 8 | bool | — |
| `input1State` | Input 1 | bool | — |
| `input2State` | Input 2 | bool | — |
| `input3State` | Input 3 | bool | — |
| `input4State` | Input 4 | bool | — |
| `input5State` | Input 5 | bool | — |
| `input6State` | Input 6 | bool | — |
| `input7State` | Input 7 | bool | — |
| `input8State` | Input 8 | bool | — |
<!-- END GENERATED -->