lint(standard): corrections completes mode standard

- Em dashes: 1712 remplaces par tirets simples (86 fichiers + _index.md,
  en-tete section Limagrain conserve)
- Checklists: 24 '- [ ]' -> '- ☐' (3 pages operations, plus de todos Obsidian)
- Ancres: 33 reparees (slugs GitHub + ancres HTML <a id> reconnues),
  1 reciblee (manuel de reten)
- related: tenseflow -> tense-flow, pie -> mechanical-elements,
  group.md retire (doublon shipping)
- Registre: compteur global 122 -> 131 pages
- Rapport racine _lint_report.md mis a jour (scan v2 + re-scan final: 0 anomalie)
- Aucun fichier limagrain/ modifie (cloisonnement)
This commit is contained in:
2026-07-20 13:01:21 +02:00
parent 7496aafe64
commit 9ce6ae37be
88 changed files with 1769 additions and 1871 deletions
+34 -34
View File
@@ -1,5 +1,5 @@
---
title: "AGV Module Installation Guide"
title: "AGV Module - Installation Guide"
type: operation
sources:
- sources/archives/Documentation Module AGV.md
@@ -10,11 +10,11 @@ related:
last_compiled: "2026-05-15"
---
# AGV Module Installation Guide
# AGV Module - Installation Guide
## Overview
This guide covers the end-to-end installation of the AGV module for Easy WMS. The module relies on a PostgreSQL intermediary database, an ODBC driver, an Oracle DBLink (dg4odbc), the Gateway AGV Windows service, and the AGV application package deployed into Easy WMS. For the functional description of the module, see [AGV Automated Guided Vehicles](../modules/agv.md).
This guide covers the end-to-end installation of the AGV module for Easy WMS. The module relies on a PostgreSQL intermediary database, an ODBC driver, an Oracle DBLink (dg4odbc), the Gateway AGV Windows service, and the AGV application package deployed into Easy WMS. For the functional description of the module, see [AGV - Automated Guided Vehicles](../modules/agv.md).
## Prerequisites
@@ -35,7 +35,7 @@ dir C:\Mecalux\Motor\oracle\Product\
> Throughout this guide, `[ORACLE_HOME]` refers to the full path, e.g. `C:\Mecalux\Motor\oracle\Product\19.27.0.0\dbhome_1`. **Always replace** `[ORACLE_HOME]` **with your actual path** - leaving the placeholder is a frequent cause of failure.
## Step 1 Install PostgreSQL
## Step 1 - Install PostgreSQL
Download PostgreSQL >= 14 from the official EDB site and install with default options. Note the listening port - this is critical: PostgreSQL <= 17 uses port **5432**, while **PostgreSQL 18+ defaults to port 5433**.
@@ -63,13 +63,13 @@ netsh advfirewall firewall add rule name="PostgreSQL AGV" dir=in action=allow pr
Adjust the port number if using PostgreSQL 18+ (5433).
## Step 2 Install the PostgreSQL ODBC driver
## Step 2 - Install the PostgreSQL ODBC driver
> The download link in the official MSS documentation is dead. Go to the PostgreSQL ODBC releases page and download the latest `psqlodbc_x64.msi` (not the wrapper setup.exe).
Install the MSI with default options.
## Step 3 Configure the System DSN (64-bit ODBC)
## Step 3 - Configure the System DSN (64-bit ODBC)
Open **ODBC Data Sources (64-bit)** (`C:\Windows\System32\odbcad32.exe`), go to the **System DSN** tab (not User DSN), click **Add**, and select the **PostgreSQL Unicode(x64)** driver.
@@ -84,11 +84,11 @@ Open **ODBC Data Sources (64-bit)** (`C:\Windows\System32\odbcad32.exe`), go to
In the **Datasource** tab, **uncheck "Bools as Char"**. Click **Test** to verify the connection.
> **Critical DSN name case**: the name `PostgreSQL35W` (capital P and W) is used verbatim in **5 different Oracle configuration files**. The case must be **absolutely consistent** across all files. Using `POSTGRESQL35W` (all caps) or `postgresql35w` (all lowercase) will cause a silent dg4odbc failure. See the Troubleshooting section for details.
> **Critical - DSN name case**: the name `PostgreSQL35W` (capital P and W) is used verbatim in **5 different Oracle configuration files**. The case must be **absolutely consistent** across all files. Using `POSTGRESQL35W` (all caps) or `postgresql35w` (all lowercase) will cause a silent dg4odbc failure. See the Troubleshooting section for details.
## Step 4 Install and start the Gateway AGV
## Step 4 - Install and start the Gateway AGV
### 4.1 Verify the configuration file
### 4.1 - Verify the configuration file
The config file is located at `C:\ProgramData\Mecalux\EasyWMS GatewayAGV 2015\`. The XML file must contain exactly **one** `<AGVConfig>` section. If it contains two (e.g., for two stations), the provider will not initialize and the service will crash with `Migration DataBase Provider No Initialized`.
@@ -121,7 +121,7 @@ Verify that the connection string points to the correct PostgreSQL database:
> If using **PostgreSQL 18+** (port 5433), add the port explicitly: `Host=localhost;Port=5433;user id=mecaluxAGV;...`
### 4.2 First startup (table creation)
### 4.2 - First startup (table creation)
Start the Gateway AGV service (`services.msc` > EasyWMS GatewayAGV). Check the log at `C:\ProgramData\Mecalux\EasyWMS GatewayAGV 2015\Logs\AllLog.log` for successful migration lines:
@@ -132,15 +132,15 @@ Start the Gateway AGV service (`services.msc` > EasyWMS GatewayAGV). Check the l
If these lines appear, the tables were created successfully. Errors after these lines are normal (the Gateway tries to communicate with the fleet manager which is not yet connected). **Stop the service** after verification.
### 4.3 Verify created tables
### 4.3 - Verify created tables
In PgAdmin4, under the AGV database > Schemas > public > Tables, there should be 7 tables: `agv_age`, `agv_ags`, `agv_eag`, `agv_inputqueue`, `agv_maintenance`, `agv_outputqueue`, `std_migrationinfo`. And 6 sequences: `agv_age_id_seq`, `agv_ags_id_seq`, `agv_eag_id_seq`, `agv_inputqueue_id_seq`, `agv_maintenance_id_seq`, `agv_outputqueue_id_seq`.
### 4.4 Execute PostgreSQL scripts
### 4.4 - Execute PostgreSQL scripts
Open the Query Tool in PgAdmin4 on the AGV database and execute:
**Script 1 Notification function** (publishes an event on every row change):
**Script 1 - Notification function** (publishes an event on every row change):
```sql
CREATE FUNCTION public."NotifyOnDataChange"()
@@ -165,7 +165,7 @@ END
$BODY$;
```
**Script 2 Trigger on the inputqueue table**:
**Script 2 - Trigger on the inputqueue table**:
```sql
CREATE TRIGGER "OnDataChange"
@@ -174,19 +174,19 @@ FOR EACH ROW
EXECUTE PROCEDURE public."NotifyOnDataChange"();
```
## Step 5 Configure the external PostgreSQL user
## Step 5 - Configure the external PostgreSQL user
This user will be used by the Oracle DBLink to access the AGV tables from the WMS.
### 5.1 Create the user
### 5.1 - Create the user
In PgAdmin4: create a login role `externalAGV` with a password and login privilege.
### 5.2 Grant CONNECT on the database
### 5.2 - Grant CONNECT on the database
In the AGV database properties > Security tab, add `externalAGV` with the **CONNECT** privilege.
### 5.3 Grant permissions on tables and sequences
### 5.3 - Grant permissions on tables and sequences
**Quick option (dev environment)**:
@@ -211,11 +211,11 @@ GRANT ALL ON agv_ags_id_seq TO "externalAGV";
GRANT ALL ON agv_inputqueue_id_seq TO "externalAGV";
```
## Step 6 Configure the Oracle DBLink to PostgreSQL
## Step 6 - Configure the Oracle DBLink to PostgreSQL
This is the most delicate step. Oracle uses the **dg4odbc** component (Database Gateway for ODBC) to connect to PostgreSQL via the ODBC DSN created in Step 3. The configuration touches 3 Oracle files and requires a Listener restart.
### 6.1 Edit tnsnames.ora
### 6.1 - Edit tnsnames.ora
File: `[ORACLE_HOME]\network\admin\tnsnames.ora`
@@ -234,7 +234,7 @@ Leave a blank line between the previous entry and this one. `(HS=OK)` is mandato
> **Common error**: if the identifier is indented (space or tab before `PostgreSQL35W =`), Oracle returns `ORA-12154: TNS:could not resolve the connect identifier specified`. This is a subtle trap because the rest of the file works fine with indentation.
### 6.2 Edit listener.ora
### 6.2 - Edit listener.ora
File: `[ORACLE_HOME]\network\admin\listener.ora`
@@ -250,7 +250,7 @@ Add a `SID_DESC` block in the existing `SID_LIST_LISTENER` section:
> **Critical**: the `ORACLE_HOME` path in this block must be the **real, complete path** of your Oracle installation. Never leave a placeholder like `[VERSION]` - this causes `TNS-12518` / `ORA-28545` errors. The listener starts without error and the SID appears in `lsnrctl status`, making the problem hard to diagnose. **Verify** that the `ORACLE_HOME` in the PostgreSQL35W block is **identical** to the other `SID_DESC` blocks in the file.
### 6.3 Create initPostgreSQL35W.ora
### 6.3 - Create initPostgreSQL35W.ora
Go to `[ORACLE_HOME]\hs\admin\`, duplicate the file `initdg4odbc.ora`, rename the copy to `initPostgreSQL35W.ora` (name must match the SID_NAME exactly, case-sensitive), and replace all content with:
@@ -261,7 +261,7 @@ HS_FDS_TRACE_LEVEL = 0
Do not leave the template lines from the original file. For debugging, temporarily set `HS_FDS_TRACE_LEVEL = 4` for detailed dg4odbc traces. Reset to 0 after diagnosis.
### 6.4 Restart the Oracle Listener
### 6.4 - Restart the Oracle Listener
```
lsnrctl stop
@@ -276,7 +276,7 @@ lsnrctl status
Expected output: `Service "PostgreSQL35W" has 1 instance(s). Instance "PostgreSQL35W", status UNKNOWN, has 1 handler(s) for this service...` The UNKNOWN status is normal for a Heterogeneous Service - the process is launched on demand.
### 6.5 Grant CREATE DATABASE LINK to db_read
### 6.5 - Grant CREATE DATABASE LINK to db_read
Connect as **sysdba** and grant:
@@ -286,7 +286,7 @@ GRANT CREATE DATABASE LINK TO db_read;
> The target user is **db_read** (the Easy WMS read model schema). The database link and synonyms must be owned by db_read. Do not create the link under SYS - it will not be visible from db_read.
### 6.6 Create the Database Link
### 6.6 - Create the Database Link
Connect as **db_read** (not sysdba):
@@ -298,7 +298,7 @@ CREATE DATABASE LINK AGV
> **Double quotes** around the user and password are **mandatory**. Oracle converts identifiers to uppercase by default, but PostgreSQL is case-sensitive. Without quotes, Oracle sends `EXTERNALAGV` instead of `externalAGV` and authentication fails.
### 6.7 Test the DBLink
### 6.7 - Test the DBLink
```sql
SELECT * FROM "agv_inputqueue"@AGV;
@@ -306,7 +306,7 @@ SELECT * FROM "agv_inputqueue"@AGV;
If the query returns `no rows selected`, the link works. The tables are simply empty at this stage.
### 6.8 Create Oracle synonyms
### 6.8 - Create Oracle synonyms
Still connected as **db_read**:
@@ -322,9 +322,9 @@ CREATE SYNONYM agv_outputqueue FOR "agv_outputqueue"@AGV;
Verify all synonyms: `SELECT * FROM agv_inputqueue;` (repeat for each). All queries must pass without error (`no rows selected` is expected).
## Step 7 Install the AGV module in Easy WMS
## Step 7 - Install the AGV module in Easy WMS
### 7.1 Modify response.xml
### 7.1 - Modify response.xml
Add the AGV entries in the deployment `response.xml`:
@@ -340,11 +340,11 @@ Add the AGV entries in the deployment `response.xml`:
</Modules>
```
### 7.2 Run the deploy
### 7.2 - Run the deploy
Execute the deploy using **option 16 Install application**.
Execute the deploy using **option 16 - Install application**.
### 7.3 Restart the Gateway AGV
### 7.3 - Restart the Gateway AGV
After the deploy completes, restart the Gateway AGV service in `services.msc`.
@@ -413,5 +413,5 @@ If this test passes but the Oracle DBLink fails, the problem is in the dg4odbc c
## Related
- [AGV Automated Guided Vehicles](../modules/agv.md) Functional documentation: architecture, protocol, monitoring, errors
- [Stations](../concepts/stations.md) Station types including AGV (type 65), equipment groups, routes
- [AGV - Automated Guided Vehicles](../modules/agv.md) - Functional documentation: architecture, protocol, monitoring, errors
- [Stations](../concepts/stations.md) - Station types including AGV (type 65), equipment groups, routes