GLPI smart home integration, free and open source

GLPI tickets: open, late, solved today; new ticket trigger; tickets created from a scene.
The tickets of your GLPI in Gladys: how many are open, pending, past their SLA, how many were solved today. A scene reacts to a new ticket, to a ticket going late or to a ticket solved, and Gladys can open a ticket by itself when it detects a failure: a water leak, a freezer too warm, a printer or an Internet box that stopped answering.
Feedback welcome. This integration was tested against real GLPI servers (the official
glpi/glpiDocker images 10.0.28, 11.0.11 and 12.0.0, October 2026), not yet day to day in a real service desk. If something does not work as described, say so on the Gladys forum or in the issues.
What you need
-
Gladys Assistant 5.1.0 or later.
-
GLPI 10, 11 or 12, self-hosted or hosted (GLPI Network Cloud), reachable from Gladys. The integration uses the legacy REST API of GLPI (
apirest.php), served by these three versions. -
A GLPI user Gladys reads and creates the tickets as. Best create one for it (
gladys):- with the Technician profile (or any profile that sees every ticket) on the entities to follow: the counters then count every ticket of these entities;
- or with the Self-Service profile: Gladys then only sees the tickets it requested, enough to open failure tickets.
The integration sees exactly what this user sees in GLPI (its default profile, its entities and their sub-entities).
Installation
In GLPI
- Setup → General → API tab:
- turn on Enable Legacy REST API (GLPI 11 and 12) or Enable Rest API (GLPI 10);
- turn on Enable login with external token.
- In the API clients list of the same tab, allow the address of Gladys: the
default client ("full access from localhost") only accepts
127.0.0.1. Add a client (or edit that one) with the address of the Gladys machine, as GLPI sees it, in IPv4 address range start and end, or leave the range empty to accept every address. If you fill in an Application token (app_token), copy it into Gladys. - Open the form of the
gladysuser (or its preferences, logged in as it). At the API token field, tick Regenerate, save, then copy the token shown.
In Gladys
- Integrations → install GLPI.
- On the Configuration screen, fill in:
- Address: the address of GLPI as in the browser, e.g.
https://helpdesk.example.orgorhttp://192.168.1.30/glpi(the/glpifolder is kept,/front/…or/apirest.phpare dropped); - User token: the API token copied at step 3;
- Application token: only if the API client has one;
- Accept self-signed certificates: for a GLPI on
https://with a self-signed certificate; - Refresh interval: 1, 2, 5 (default) or 10 minutes;
- Language of the feature names: the language of the names given to the device and of the texts sent to scenes (urgency, type, status).
- Address: the address of GLPI as in the browser, e.g.
- Test the connection tells the version of GLPI, the user and its profile, and the number of open tickets.
- Discovery tab: add the GLPI device.
Device
One GLPI device, with six counters updated at every reading:
| Feature | What it counts |
|---|---|
| Open tickets | tickets not solved: new, in progress and pending |
| New tickets | tickets with the New status |
| Tickets in progress | tickets in progress (assigned or planned) |
| Pending tickets | pending tickets |
| Late tickets | open tickets past their time to resolve (SLA) |
| Tickets solved today | tickets solved (or solved then closed) since midnight, server time |
"Late" is the Time to resolve exceeded computed by GLPI itself: a ticket without a time to resolve is never late. The counters keep their history, and serve as conditions in scenes ("if Late tickets is above 0").
Dashboard
The Latest GLPI tickets widget shows three tiles (open, late, new) and the
eight newest open tickets, with their status, urgency and entity. A late ticket
carries the "Late" badge, a ticket of high or very high urgency the badge of its
urgency. When GLPI is on https://, each ticket offers an Open in GLPI link.
Scenes
Triggers
The three triggers filter by Urgency (one or several, empty: any) and by Type (incident or request, empty: any).
- New GLPI ticket: a ticket was opened in GLPI, by a user, a mail collector or a form. The tickets created by Gladys itself fire nothing (no loop).
- GLPI ticket late: an open ticket just passed its time to resolve.
- GLPI ticket solved: a ticket open at the previous reading is now solved or closed.
Variables passed to the actions: ticket number, title, urgency (1 to 5 and in words), type, status, category, entity, requester, time to resolve, link to the ticket, and the resolution date for a solved ticket. The dates are the ones GLPI shows (time of the GLPI server).
The events are detected at every reading: they arrive at most one refresh interval after the facts. At the very first reading (or after a change of server or user), the integration takes note of what exists without firing anything. A reading fires 30 events at most (a mass import does not flood Gladys).
Actions
- Create a GLPI ticket: opens a ticket as the user of the token, who is its requester. Fields: Title (required), Description (empty: the title; scene variables are welcome), Urgency (empty: medium), Type (empty: incident), Category (name or number, optional) and Entity (name or number, empty: the default entity of the user). Outputs: the ticket number and its link.
- Add a follow-up to a GLPI ticket: adds a follow-up to the ticket given by
its number (
125or#125), as the user of the token. The number may come from a "Create a GLPI ticket" earlier in the scene, or from the trigger. Outputs: the number and the title of the ticket.
A category or an entity is given by its number, its complete name
(Root entity > Site Nord) or the last part of that name (Site Nord), case
and accents ignored.
Scene ideas
- Water leak: the leak sensor of the boiler room reports a leak → Create a GLPI ticket "Water leak in the boiler room", very high urgency, category "Building", description with the time; then a Gladys message with the link to the ticket.
- Internet box down: the ping of the box fails for 10 minutes → ticket "No Internet at the office"; when the ping is back, Add a follow-up "Back online at 2:32 pm" to the same ticket.
- On call: New GLPI ticket filtered on high and very high urgencies → a Telegram message to the technician on call with the title, the requester and the link; GLPI ticket late → turn the open-space lamp red.
Troubleshooting
- "no GLPI API at this address": check the address (with the
/glpifolder if any) by opening…/apirest.phpin a browser: GLPI answers with its API documentation page. - "the REST API is off": see step 1 in GLPI.
- "no API client accepts the address of Gladys": the address range of the API client (step 2) does not hold the address of Gladys as GLPI sees it (behind a proxy or a NAT, the address of that proxy or router).
- "application token missing or wrong": the API client has an application token, to copy into the configuration, or it is not that one.
- "user token refused": the token was regenerated since, or login with an external token is off (step 1).
- "the profile of the GLPI user lacks a right": the profile may not create a ticket or add a follow-up (or not in that entity).
- The counters stay at zero: the user does not see the tickets (Self-Service profile, or an entity without its sub-entities).
- The requester is empty in scenes: the profile may not read users; the rest works.
Limits
- One GLPI per installation, and one device for every ticket the user sees (no device per entity: use a user limited to one entity to follow only that one).
- The 5,000 newest tickets (open, and solved today) are counted.
- "Solved today" and "late" follow the time of the GLPI server.
- Not yet on the new API of GLPI 11 (OAuth2): the legacy REST API is enough and exists in GLPI 10, 11 and 12.
- A ticket opened then solved between two readings fires "New GLPI ticket" but not "solved".
This integration is not affiliated with Teclib' or the GLPI project.
Configuration settings
These are the settings GLPI asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Your GLPI | section | No | GLPI 10 or later, self-hosted or GLPI Network Cloud. In GLPI: turn on the REST API (Setup, General, API), then copy the API token of a user (its preferences). See the documentation. |
| Address | string | Yes | Address of GLPI as in the browser, with https:// for HTTPS and the /glpi folder if any. |
| User token | secret | Yes | The API token of the GLPI user Gladys acts as: in its preferences, API token, Regenerate, then copy. |
| Application token | secret | No | Only if the API client of GLPI has one (Setup, General, API, API clients). |
| Options | section | No | |
| Accept self-signed certificates | boolean | No | For an https:// address whose certificate is self-signed. Tick only for your own server. |
| Refresh interval | select | No | How often GLPI is read: the counters and the scene triggers follow it. |
| Language of the feature names | select | No | Names given to the features when the device is added, and texts sent to scenes. |
How to install GLPI in Gladys
- In Gladys, open Integrations: GLPI appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-glpi:1.0.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-glpi.
GLPI requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
GLPI is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation