Réglages niveau log reste en warning

Voici un premier exemple avec Jeedom Connect :

[2026-09-21 12:44:28]WARNING : Client must always be masked.

Le niveau de log est configuré sur AUCUN et pourtant j’obtiens quand même un WARNING.

Ce WARNING se produit systématiquement à chaque fermeture de l’application mobile.

Voici le log en mode DEBUG mais il est incomplet car extrêmement verbeux :

[2026-09-21 12:44:28]WARNING : Client must always be masked.
[2026-09-21 12:52:29] INFO  : Start daemon
[2026-09-21 12:52:29] INFO  : Log level : debug
[2026-09-21 12:52:29] DEBUG  : Socket port : 58090
[2026-09-21 12:52:29] DEBUG  : PID file : /tmp/jeedom/JeedomConnect/deamon.pid
[2026-09-21 12:52:29] DEBUG  : ** Starting Jeedom daemon **
[2026-09-21 12:52:29] INFO  : ** Jeedom daemon started **
[2026-09-21 12:52:29] DEBUG  : ** Starting JC Websocket daemon **
[2026-09-21 12:52:29] INFO  : ** JC Websocket daemon started **
[2026-09-21 12:52:29] DEBUG  : Starting loop to retrieve all events
[2026-09-21 12:52:29] DEBUG  : Start listening
[2026-09-21 12:53:13] INFO  : New connection: #1 from IP: ('192.168.0.127', 50994)
[2026-09-21 12:53:13] INFO  : Number of client connected #1
[2026-09-21 12:53:13]WARNING : Clients not authenticated #1
[2026-09-21 12:53:13] DEBUG  : [WEBSOCKET RECEIVE] message: {"method":"CONNECT","params":{"apiKey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","deviceId":"4XXXXXXX-XXXX-XXX-XXXX-XXXXXXXXXXXX","deviceName":"iPhone","userHash":"x6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr","appVersion":"1.29.0","pluginRequire":"1.7.1","token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","platformOs":"ios","osVersion":"27.0","appTypeVersion":"stable","buildVersion":"115"},"jsonrpc":"2.0","id":1789987992090}

Je n’ai plus trop de temps maintenant aussi reviendrai-je plus tard.

Bonjour,

Ton daemon JC démarre en debug et pas du tout en error. Du coup ça ne m’étonne pas que tu vois les logs de type, debug, info, warning, error …

J’ai fais quelques essai pour voir :

Je me suis mis en debug au niveau du « Démon » et j’ai sauvegardé la configuration

Les logs du daemon sont bien en debug :

[2026-09-21 13:52:15] INFO  : Start daemon
[2026-09-21 13:52:15] INFO  : Log level : debug
[2026-09-21 13:52:15] DEBUG  : Socket port : 58090
[2026-09-21 13:52:15] DEBUG  : PID file : /tmp/jeedom/JeedomConnect/deamon.pid
[2026-09-21 13:52:15] DEBUG  : ** Starting Jeedom daemon **
[2026-09-21 13:52:15] INFO  : ** Jeedom daemon started **
[2026-09-21 13:52:15] DEBUG  : ** Starting JC Websocket daemon **
[2026-09-21 13:52:15] INFO  : ** JC Websocket daemon started **
[2026-09-21 13:52:15] DEBUG  : Starting loop to retrieve all events
[2026-09-21 13:52:15] DEBUG  : Start listening

Je suis passé en Info et j’ai sauvegardé : J’ai bien un niveau de log Info (je ne vois plus les lignes DEBUG

[2026-09-21 13:53:29] INFO  : Start daemon
[2026-09-21 13:53:29] INFO  : Log level : info
[2026-09-21 13:53:29] INFO  : ** Jeedom daemon started **
[2026-09-21 13:53:29] INFO  : ** JC Websocket daemon started **

Je suis passé en Erreur et j’ai sauvegardé

Le daemon a bien redémarré mais je n’ai pas de nouveau log disponible, les derniers sont à 13:53:29 car ensuite il ne log plus ce qui est en dessous de ERROR

Donc chez moi en résumé je ne détecte pas de soucis et il faut chercher pourquoi ton daemon démarre en log level = debug

Tu peux passer en Infos au niveau du Démon puis Sauvegarder (au bon endroit à droite de « Configuraton » dans la barre bleue)

Le daemon doit redémarrer tout seul, regarde les logs et tu devrais voir un niveau de logs Info. Si ce n’est pas le cas … ce n’est pas normal.

Si c’est bon alors attend 1mn puis passe à nouveau en Erreur, sauvegarde et vérifie les logs. Tu ne devrais pas voir le « Start daemon » malgré que l’heure du démarrage te montre que ce soit bien fait.

Bonjour,

Je suis d’accord avec toi et j’aurais dû être plus précis. Si tu regardes bien :

A ce moment là le niveau de log est fixé sur AUCUN donc il ne devrait pas y avoir ce WARNING qui se produit à chaque fermeture de l’application mobile. Je ne peux évidemment pas montrer que j’ai redémarré le daemon juste avant puisque j’ai positionné les logs sur AUCUN.

Ce n’est qu’après que j’ai remis les logs en DEBUG pour voir si cela pouvait donner une piste.

1 « J'aime »

On y arrive…

Donc il n’était pas sur ERROR ! Contrairement à ce qui était affirmé.

Le fait est qu’en mettant sur AUCUN, les démons python qui étaient copiés/inspirés du plugin template il y a des mois voir années ont tous copiés un comportement qui était le suivant: aucun était transformé en Debug (ou notset ce qui revient au même en python) car « aucun » ca n’existe pas en python (car ca n’a pas de sens)

Mais ce n’est donc pas une généralité sur jeedom, c’est un cas bien particulier à un plugin (la plupart à présent force le mode error voir critical pour simuler aucun)

Donc créez un post concernant plugin-jeedomconnect si ce comportement est toujours appliqué.

Salut Mips,

Mais ça influence le démon le comportement que tu indiques ?

Parce que dans son 1er post il avait bien mis le réglage des logs du démon de JC sur Erreur et on le voit sur la capture.

JC ne propose pas de « Aucun » à ce niveau

Et même s’il avait choisi « Même que le plugin » et que le plugin était sur « Aucun », j’ai été regardé dans le code python et sauf erreur de ma part c’est forcé à CRITICAL

La ligne de warning qu’il a est bien sensé être envoyé en warning dans le fichier websocket_server.py de JC : logger.warning("Client must always be masked.")

C’est quand même un peu curieux cette affaire :thinking:
Il doit y avoir un détail qui m’échappe et qui est en relation avec ce que tu dit mais je ne trouve pas où dans JC.

@goulouche,

Est-ce que tu peux :

  • Montrer la capture de ce que tu as dans la partie « Logs et surveillance de JC »
  • Montrer la capture de ce que tu as dans la partie « Personnalisation Démon »
  • Modifier la ligne 311 de ce fichier : plugins/JeedomConnect/resources/venv/lib/python3.11/site-packages/websocket_server/websocket_server.py :
    Actuellement : logger.warning("Client must always be masked.")
    Met : logger.error("Client must always be masked.")
  • Redémarrer le Démon
  • Montrer la capture qui montre le dernier lancement du Démon
  • Simuler ton problème (en te déconnectant de l’application donc)
  • Envoyer les logs du Démon (JeedomConnect_Daemon)

ce que je demande @goulouche depuis des jours: des logs complets = on peut voir le loglevel envoyé/reçu par le démon et un log qui ne correspond pas à ce niveau.

ce que je lis comme info:

=> cf. ma réponse, ce n’est pas un problème sur le core (sujet du jour), mais un comportement à vérifier sur le démon python d’un plugin particulier.

log en DEBUG => message warning, normal (donc en fait aucun intérêt de nous montrer ce log…

  • j’ai lu plusieurs fois que @goulouche parle d’un problème général, JC ne serait qu’un exemple.
  • la config que tu montres est propre à JC, ca n’existe pas en standard

donc

  • soit c’est un problème générale et il faut beaucoup plus d’exemple sur d’autres plugins, j’ai déjà demandé ça aussi mais sans réponse.
  • soit c’est un problème JC et post à créer avec les infos du plugin.

Bonjour à tous, @Mips @Bison et merci de votre intérêt.

Je vais essayer de faire ça dans la journée.

@Mips

Si je comprends bien, tu souhaites un log DEBUG du daemon Jeedon Connect. Comme je l’ai déjà dit, celui-ci est très verbeux et je ne pourrai donc pas le mettre ici en texte formaté. Je pourrais évidemment joindre un fichier txt mais ce log contient des informations sensibles (identifiants, mots de passe, clés api, token…) et je ne souhaite naturellement pas diffuser tout cela sur le net. Si cela te convient, je pourrai mettre le fichier texte dans une archive RAR avec un mot de passe que je t’enverrai par MP.

Bonsoir,

Voici les captures :

Modifier la ligne 311 de ce fichier : plugins/JeedomConnect/resources/venv/lib/python3.11/site-packages/websocket_server/websocket_server.py

C’est fait et voici le log du daemon après avoir fermé l’application mobile ;

[2026-09-22 18:49:02] ERROR  : Client must always be masked.

Bonsoir,

A la lecture de tes réponses, je dois réviser mes propos puisque je crois comprendre que le niveau de réglage des logs sur AUCUN n’est pas fonctionnel car en vérité inexistant.

C’est ce qui m’a trompé. En effet, lassé de collectionner le WARNING de Jeedom Connect même avec un réglage sur ERREUR j’ai décidé de passer sur le réglage à AUCUN en pensant que ça me débarrasserait définitivement dudit WARNING.

Constatant que cela n’avait aucun effet, je me suis demandé si c’était particulier à Jeedom Connect.

C’est ainsi que j’ai expérimenté le réglage AUCUN sur d’autres plugins tels Harmony ou Z-Wave JS qui produisent quelques erreurs.

A cause de mon ignorance, j’ai été surpris de voir des erreurs remontées quand même.

J’en ai déduit qu’il y avait un problème alors qu’il s’agit d’une situation normale.

Petite question tout de même pour finir : Ne serait-il pas mieux de supprimer l’option AUCUN ? Ça aurait au moins le mérite d’éviter les malentendus.

OK donc là c’est cohérent. Le log devait passer en Error et comme tu as paramétré en Error, tu le vois.

Est-ce que tu peux laisser comme ça et remettre juste la ligne logger.warning("Client must always be masked.") puis redémarrer le Démon et reproduire ton soucis ?

Comme les logs du plugin et du démon sont en Error, le Warning ne devrait pas arriver.

Reprends le temps, stp, de refaire les mêmes captures :slight_smile:

Une dernière question me vient à l’esprit.

Dois-je remettre la ligne 311 du fichier plugins/JeedomConnect/resources/venv/lib/python3.11/site-packages/websocket_server/websocket_server.py à son état d’origine ?

Y aurait-il un inconvénient à ce que je la modifie comme suit :

logger.info("Client must always be masked.")

Ainsi, avec un niveau de log réglé sur ERREUR, adieu au WARNING intempestif.

Je sais bien que cette solution durera jusqu’à une prochaine mise à jour du plugin mais c’est toujours ça.

22:58:30 modification ligne 311 et redémarrage du daemon

[2026-09-22 23:00:46]WARNING : Client must always be masked.

Il est revenu.

Bonsoir,

J’ai regardé le code de JeedomConnect pour essayer de comprendre (car ce fil m’intrigue :stuck_out_tongue: )

J’ai eu un cas un peu similaire à traiter lorsque j’ai implémenté le filtrage et le changement de niveau de log à la volée dans certains de mes plugins et de leur démon Python :

Le démon de Jeedom Connect (en Python donc) embarque son code, cela parait évident mais intègre également le code d’une lib externe, websocket_server (qui je pense doit gérer la connexion avec l’appli mobile).

Dans le code, chaque morceau de code (démon + lib externe) écrit ses log via son propre “logger” : il y a celui du code du démon de Jeedom Connect et celui de la librairie websocket.

Au-dessus de ces deux codes (celui du démon en lui-même et celui de la lib websocket), en python il y a un logger dit “racine”, qui fixe le niveau par défaut pour tous ceux (ceux = code, lib externe utilisée, etc…) qui n’ont pas de réglage défini “en propre”. (réglage par défaut dit autrement)

Quand on choisit ERREUR dans la configuration du plugin, ce niveau est actuellement appliqué uniquement au logger du code du démon de Jeedom Connect.

Le logger de la librairie websocket n’a pas de réglage propre : il suit donc le logger racine, qui est fixé dans le code (WARNING par défaut, DEBUG si le paramètre “trace” est activé au lancement du démon).

Or le message que l’on voit dans les logs « Client must always be masked » est émis par la librairie websocket, pas par le code du démon de Jeedom Connect en lui-même.

Il passe donc par un logger non impacté par le réglage de l’utilisateur (le réglage qui dit “même que plugin” ou autre), et ce message de log s’affiche donc quel que soit le niveau choisi par l’utilisateur (ERREUR, AUCUN…).

Ce n’est donc à priori ni un problème du core, ni une erreur de réglage de l’utilisateur : c’est l’application du niveau de log à la lib websocket qui n’est pas prise en compte.

Si c’est bien ca, il y a une ligne à ajouter dans le démon pour setter le niveau de log de cette lib websocket (et un import logging en entête).

TiTidom.

1 « J'aime »

Bonsoir,

Le plugin prévoit effectivement 2 modes de connexion. Le premier en http et le second en websocket. En http, on n’a pas ce problème.

@goulouche, le démon n’est nécessaire que pour la connexion en websocket oui.
Passer la ligne en logger.info n’aura surement pas d’impact puisque le niveau WARNING est déjà en dessous du niveau ERROR et qu’il apparait quand même.
Par contre tu peux la commenter … mais ce serait bien de finir par trouver la root cause.

Merci pour ton analyse @TiTidom, c’est en effet une piste très intéressante, je vais voir si je peux en parler à Jared ou Tomitomas concernant JC :+1:

1 « J'aime »

Bonjour,

Si tu veux tester une des corrections possibles, il y a 2 lignes à ajouter :

vers la ligne 423 du fichier “resources/JeedomConnectd/JeedomConnectd.py”, tu dois avoir une ligne avec ce code :

logger.setLevel(jeedom_utils.convert_log_level(_log_level)) 

juste APRES (sur une nouvelle ligne), il faudrait ajouter la ligne suivante :

logging.getLogger('websocket_server').setLevel(jeedom_utils.convert_log_level(_log_level))

et ne pas oublier ce second changement :

Vers la ligne 10 du même fichier, tu as :

import uuid

juste APRES (sur une nouvelle ligne), il faudrait ajouter :

import logging

Tu sauvegardes le fichier, tu redémarres le démon, et à partir de là, le niveau de log de la lib sera calqué sur celui du démon JC :+1:

TiTidom.

1 « J'aime »

Bonjour,

Pourtant je te confirme que le WARNING n’apparaît plus avec cette configuration :

logger.info("Client must always be masked.")

Re,

Oui normal : le niveau de log de la lib websocket par défaut est warning, donc tout ce qui est d’un niveau supérieur (ici INFO) ne s’affichera plus, mais cela ne fait que masquer un problème, et tu pourrais avec d’autres messages si la root cause n’est pas corrigée comme le précisait @Bison.

TiTidom.

Bonjour,

J’ai modifié le fichier JeedomConnectd.py comme tu l’as suggéré. Cela règle effectivement le problème du WARNING.

Cependant, on constate des erreurs dans le log JeedomConnect (pas JeedomConnect_daemon) :

[2026-09-23 09:15:58] ERROR  TypeError: Cannot convert undefined value to object
[2026-09-23 09:16:36] ERROR  TypeError: Cannot convert undefined value to object
[2026-09-23 09:17:49] ERROR  TypeError: Cannot convert undefined value to object
[2026-09-23 09:18:05] ERROR  TypeError: Cannot convert undefined value to object
[2026-09-23 09:40:32] ERROR  TypeError: Cannot convert undefined value to object

Par ailleurs, on observe également un dysfonctionnement de l’application mobile :

EDIT 10:02

Curieusement, ces erreurs ne disparaissent pas après avoir remis le fichier JeedomConnectd dans son état d’origine.

EDIT 13:49

Désolé mais fausse alerte. Le bouton encadré dans l’image ci-dessus sert à afficher les résumés. Ca ne fonctionne pas sur iPhone 1 (14 Pro - IOS 27) mais ça fonctionne sur iPhone 2 (13 - IOS 27).

C’est donc un problème de paramétrage sur iPhone 1. Il faut que je fouille.

Ces échanges ne concernent plus le core (et tous les autres plugins), mais uniquement plugin-jeedomconnect ; posts déplacés