Aller au contenu principal

Intégration domotique PJLink Projectors, gratuite et open source

Intégration PJLink Projectors pour Gladys Assistant

Vidéoprojecteurs PJLink en local : marche, veille, entrée, sourdine A/V, lampe, erreurs.

Pilotez vos vidéoprojecteurs PJLink depuis Gladys, en local, sans aucun cloud : allumage, mise en veille, entrée, sourdine A/V, heures de lampe et rapport d'erreurs. PJLink est le standard de contrôle réseau de nombreux vidéoprojecteurs et de certains écrans (Epson, Panasonic, NEC / Sharp, Sony, BenQ, Canon, Hitachi / Maxell, Optoma, Ricoh, Christie...), classe 1 et classe 2.

Important. Cette intégration n'a jamais été testée avec un vrai appareil : elle a été écrite d'après la spécification publique PJLink, recoupée avec la bibliothèque pypjlink2 (celle qu'utilise Home Assistant), et testée contre un faux vidéoprojecteur seulement. Vos retours sont les bienvenus. Intégration non officielle, sans lien avec la JBMIA (l'association à l'origine de PJLink) ni avec un fabricant de vidéoprojecteurs.

Installation​

  1. Sur le vidéoprojecteur, activez PJLink (selon la marque : Réseau > Contrôle réseau, PJLink, Commande...) et la veille réseau (par exemple Mode veille : Réseau activé). Sans elle, le vidéoprojecteur quitte le réseau en veille et ne peut pas être allumé depuis Gladys.
  2. Donnez à chaque vidéoprojecteur une adresse IP fixe dans votre box (bail DHCP réservé).
  3. Dans Gladys, installez l'intégration PJLink Projectors, puis ouvrez sa configuration.
  4. Saisissez les adresses IP, séparées par des virgules (par exemple 192.168.1.60, 192.168.1.61, 10 au plus). Ajoutez :port seulement si le vidéoprojecteur n'utilise pas le port PJLink, 4352.
  5. Si un mot de passe PJLink protège vos vidéoprojecteurs, saisissez-le (32 caractères au plus, sans accents, le même pour tous).
  6. Ouvrez l'onglet Découverte et lancez la recherche : les vidéoprojecteurs apparaissent, créez-les.

L'intégration parle au vidéoprojecteur en PJLink (port TCP 4352) : une connexion à la fois (un vidéoprojecteur n'en accepte qu'une), fermée après 3 s de silence. Elle lit l'état à l'intervalle de rafraîchissement de la configuration (60 s par défaut, 30 s au moins).

Ce que vous obtenez​

FonctionType GladysRemarque
Marcheétat binaire (lecture)1 allumé ou en préchauffage, 0 en veille ou refroidissement
Allumerboutonenvoyé seulement depuis la veille
Mettre en veilleboutonla commande protectrice, voir plus bas
Étattexte (lecture)Standby, Warming up, On, Cooling down, Unreachable...
Entréelisteles entrées que liste le vidéoprojecteur, avec leur nom
Sourdine A/Vbouton (sourdine)chaque appui lit l'état, puis règle l'inverse
Heures de lampedurée en heuresla première lampe ; absente sur les modèles qui ne la donnent pas
Erreurstexte (lecture)OK, ou par exemple Lamp: warning, Filter: error

Volontairement, pas d'interrupteur : un « tout éteindre » ou « tout allumer » d'un assistant vocal ou d'une scène n'allume ni ne coupe votre vidéoprojecteur.

L'entrée et la sourdine A/V ne sont lues et réglées que vidéoprojecteur allumé. Les noms des entrées viennent du vidéoprojecteur (classe 2 : HDMI 1...) ; sur un vidéoprojecteur de classe 1, elles sont nommées par type (Digital 1, RGB 1...). Ils sont lus quand vous lancez la recherche dans l'onglet Découverte.

Chaque vidéoprojecteur est reconnu par son numéro de série (classe 2), ou par son adresse (classe 1, ou un vidéoprojecteur qui n'en donne pas). Avant de publier ou d'envoyer quoi que ce soit (hors mise en veille), l'intégration vérifie une fois par connexion qu'elle parle au même vidéoprojecteur : le numéro de série, ou la marque et le modèle pour un vidéoprojecteur reconnu par son adresse. Un autre numéro de série à l'adresse : le vidéoprojecteur est marqué « Another projector at this address » et rien ne lui est envoyé ; saisissez sa nouvelle adresse et relancez la recherche. Illisible : son état affiche « Identity not confirmed » et rien ne lui est envoyé sauf la mise en veille.

Commandes​

Allumer, l'entrée et la sourdine A/V lisent l'état de marche juste avant, puis la valeur en cours, et décident sur ce qu'elles lisent. Une commande n'est réussie qu'une fois que le vidéoprojecteur montre la valeur demandée à la relecture ; Gladys donne 5 secondes à une commande, chaque commande reçoit donc sa réponse en 3,5 s, avec exactement ce qui est su :

  • « rien envoyé » : le vidéoprojecteur n'a pas répondu, un mot de passe manque ou est refusé, l'identité n'est pas confirmée, une mise en veille a été demandée entre-temps ou n'est pas encore confirmée (entrée et sourdine A/V), ou il ne restait plus de temps ;
  • « envoyée, sans confirmation » ou « pas encore appliquée » : la commande est partie ; le vidéoprojecteur est relu 5 s et 20 s plus tard ;
  • « refusée par le vidéoprojecteur (ERR3) » : le vidéoprojecteur a répondu par une erreur (ERR3 veut dire « pas maintenant », par exemple pendant le préchauffage).

Les commandes à un même vidéoprojecteur partent une à la fois.

La mise en veille, commande protectrice​

La mise en veille n'est retenue ni par une lecture ou une commande en cours, ni par les commandes en attente, ni par la configuration pas encore lue, ni par un état pas encore lu :

  • elle passe devant tout ce qui attend pour ce vidéoprojecteur ; les commandes demandées avant elle et encore en attente sont annulées (« rien envoyé ») : rien de ce qui a été demandé avant une mise en veille ne part après elle ;
  • une lecture bloquée depuis 1 s (aucun octet du vidéoprojecteur) est coupée, et la mise en veille part sur une nouvelle connexion une fois l'ancienne fermée ;
  • POWR 0 est envoyé sans rien lire avant, puis l'état de marche est relu : « Standby » ou « Cooling down » la confirme ;
  • quand aucune connexion ne s'établit, elle est réessayée toutes les 250 ms dans ses 3,2 s.

Une mise en veille acceptée par le vidéoprojecteur (OK) n'est jamais renvoyée à l'aveugle : si l'état relu le montre encore allumé, elle n'est renvoyée que par une lecture qui le montre encore allumé, sans lecture échouée entre-temps ; une lecture qui échoue, ou qui le montre en préchauffage (un allumage lancé depuis, par la télécommande ou par Gladys), l'abandonne. Acceptée mais pas relue (beaucoup de vidéoprojecteurs quittent le réseau pendant le refroidissement) : elle n'est pas renvoyée.

Une mise en veille non acceptée (refusée par ERR3 pendant le préchauffage, ou sans connexion, ou sans réponse) est gardée (dans les données de l'intégration : un redémarrage la garde aussi) et renvoyée par les lectures suivantes qui montrent le vidéoprojecteur allumé : ses propres lectures de l'état de marche toutes les 12 s (quel que soit l'intervalle de rafraîchissement, arrêtées dès qu'elle est confirmée ou abandonnée) et les lectures habituelles, 3 fois au plus, les refus ERR3 (préchauffage ou refroidissement) n'étant pas comptés, pendant 2 minutes au plus (comptées sur une horloge monotone tant que l'intégration tourne). Tant que le vidéoprojecteur préchauffe, elle attend. Elle est abandonnée dès qu'une lecture montre le vidéoprojecteur en veille ou en refroidissement, ou quand un « Allumer » envoyé depuis Gladys après elle est accepté.

Au redémarrage, une mise en veille gardée non acceptée est décidée sur une lecture de l'état d'abord, avant la lecture de la configuration et avant toute lecture : envoyée seulement si le vidéoprojecteur est encore allumé. Une mise en veille acceptée est abandonnée au redémarrage.

Les cas où une mise en veille ne part pas (« rien envoyé », gardée et renvoyée comme ci-dessus) :

  1. l'adresse du vidéoprojecteur est inconnue (un autre vidéoprojecteur y répond, preuve à l'appui) ;
  2. le vidéoprojecteur demande un mot de passe et aucun n'est saisi, ou celui saisi a été refusé (un mot de passe refusé n'est pas renvoyé par une mise en veille ; juste après un redémarrage, un vidéoprojecteur qui demande un mot de passe reçoit la mise en veille une fois la configuration lue) ;
  3. aucune connexion dans ses 3,2 s (injoignable).

Mots de passe​

Un mot de passe manquant ou refusé bloque son vidéoprojecteur : ni lecture, ni commande, ni nouvel essai automatique, reconnexion ou redémarrage compris. L'état de l'intégration le dit. Le blocage est levé quand vous changez le mot de passe dans la configuration, ou quand le bouton Vérifier les vidéoprojecteurs réussit (chaque appui fait un essai ; après un redémarrage, un nouveau mot de passe est reconnu par sa marque, voir plus bas, et dans 1 cas sur 64 il est pris pour l'ancien : appuyez alors sur le bouton). Le mot de passe est gardé par Gladys dans sa base, jamais réaffiché, envoyé seulement aux vidéoprojecteurs sous la forme MD5 qu'utilise PJLink, jamais écrit dans les journaux ni dans les données de l'intégration. Pour savoir après un redémarrage si le mot de passe a changé, l'intégration garde seulement une marque de 6 bits d'un mot de passe refusé (une valeur parmi 64, qui n'identifie rien), effacée dès qu'un mot de passe est accepté.

Vérifier les vidéoprojecteurs​

Le bouton Vérifier les vidéoprojecteurs montre l'état de chaque vidéoprojecteur. Un vidéoprojecteur lu il y a moins d'un intervalle de rafraîchissement est montré tel que lu, sans être réinterrogé ; une recherche, une reconnexion ou une configuration enregistrée ne le font pas lire plus tôt non plus.

Pas encore pris en charge​

Le volume, le gel d'image, les heures de filtre, les notifications de la classe 2 (recherche par diffusion UDP, état poussé par le vidéoprojecteur), un mot de passe par vidéoprojecteur. Voir le TODO.md du projet.

Paramètres de configuration​

Voici les paramètres demandés par PJLink Projectors dans son écran de configuration dans Gladys.

ParamètreTypeObligatoireDescription
Vos vidéoprojecteurs PJLink, sur votre réseau localsectionNonPJLink est le standard de contrôle réseau de nombreux vidéoprojecteurs (Epson, Panasonic, NEC, Sony, BenQ, Canon, Hitachi, Optoma...) : port TCP 4352, sans aucun cloud. Sur le vidéoprojecteur, activez PJLink (souvent dans Réseau > Contrôle réseau ou PJLink) et la veille réseau, sinon il quitte le réseau en veille. Donnez à chaque vidéoprojecteur une adresse IP fixe dans votre box, saisissez les adresses ci-dessous, puis lancez la recherche dans l'onglet Découverte. Intégration non officielle, sans lien avec la JBMIA ni avec un fabricant de vidéoprojecteurs.
Adresses IP des vidéoprojecteursstringNonSéparées par des virgules, par exemple 192.168.1.60, 192.168.1.61 (10 au plus). Ajoutez :port seulement si votre vidéoprojecteur n'utilise pas 4352.
Mot de passe PJLink (facultatif)secretNonSeulement si un mot de passe PJLink protège vos vidéoprojecteurs (32 caractères au plus, le même pour tous). Gardé par Gladys dans sa base, jamais réaffiché, envoyé seulement aux vidéoprojecteurs sur votre réseau local (sous la forme MD5 qu'utilise PJLink), jamais écrit dans les journaux. Un mot de passe refusé n'est pas réessayé tant que vous ne le changez pas ici ou n'appuyez pas sur « Vérifier les vidéoprojecteurs ».
Intervalle de rafraîchissement (s)numberNonFréquence de lecture de l'état des vidéoprojecteurs, en secondes (30 à 600).
  1. Dans Gladys, ouvrez Intégrations : PJLink Projectors apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
  2. Cliquez sur Installer. Gladys télécharge l'image Docker (ghcr.io/lm1lc3n7/gladys-pjlink:0.1.2), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration).
  3. Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
  4. Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/LM1LC3N7/gladys-pjlink.

PJLink Projectors nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.

Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.

À propos des intégrations externes​

PJLink Projectors est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par LM1LC3N7, et non par l'équipe cœur de Gladys.

Inscrivez-vous à la newsletter Gladys Assistant

Quelques emails par mois sur les nouveautés et l'actualité du projet. Envoyés par Pierre-Gilles Leymarie, le fondateur du projet. Désinscription possible à tout moment 🙂