Demon NOK sur Jeedom en Debian11

Bonjour

J’ai récemment migré mon Jeedom vers un nouveau serveur Proxmox et profité de l’occasion pour passer sur Debian11.

Version Jeedom 4.3.20
Version OS debian 11.8
Version database 10.5.21-MariaDB-0+deb11u1
Version OS Linux Jeedom 5.10.0-26-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64 GNU/Linux [11.8]

Je constate que le Demon est NOK dès que j’active l’équipement.

Evok est à jour en 2.4.34

Et malgré que le démon soit NOK les commandes passent immédiatement et les retours d’infos mettent un long moment à remonter.

En résumé sur Debian 10 tout est ok et le même jeedom sous Debian 11 pose ce soucis.

Comment puis corriger ce soucis.

Merci à vous

David

Hello @David_R,

Pour ma part, j’ai dû faire un restore le 5 décembre à cause d’un ssd HS et j’ai voulu faire un upgrade également coté Debian mais j’ai vu que la version supportée par Jeedom était toujours Debian 10 (Buster) du coup je suis resté en Debian 10.13.

Cette version de Debian étant toujours supportée en « oldoldstable » pour moi c’est ok pour le moment.

Note: D’ailleurs j’ai vu lors mes recherches sur le Forum que des plugins peuvent avoir des problèmes de compatibilité liés à l’utilisation de Python2 : cf .Debian 11 ou 12? - Utilisation du core de Jeedom - Communauté Jeedom

Ce qui m’a conforté à rester en Buster du coup.

Je modère ma précédente réponse car moi je suis sur Raspberry PI pour Jeedom. Sur Promox, Debian 11 doit être supporté par Jeedom. Mais le problème doit rester le même pour les plugins…

Merci pour ta réponse, mais comme il est aussi clairement indiqué sur le site officiel que Jeedom est fonctionnel et stable sur Debian 11, j’ai un peu d’espoir pour qu’on puisse trouver un solution afin que le plugin Unipi fonctionne à 100% comme sur debian10. :crossed_fingers:

Jeedom peut être installé sur différents composants hardware :

  • un Raspberry Pi 2, 3 ou 4
  • un NAS Synology
  • tout système Linux basé sur Debian 11 (Bullseye)
  • Freebox Delta

Yes, aucun problème pour Jeedom en tant que plateforme seule.
Par contre, pour les plugins développés par des tiers, il faut qu’ils soient également compatibles Debian 11 pour ne pas avoir de problème.

N’ayant pas l’utilité du plugin Unipi de mon coté, je ne l’ai pas sur mes installations.
@lunarok il serait intéressant de voir si le problème vient de là ou c’est juste complètement hors-scope.

@David_R as tu des choses qui remontent dans les logs en mode debug ?

Oui tu as raison j’ai oublié de l’indiquer

J’ai ça qui remonte

[2023-12-11 15:38:42][ERROR] : Impossible de lancer un démon unipi, vérifiez le port
[2023-12-11 15:40:01][DEBUG] : Vérification de l'état du Unipi : 1922
[2023-12-11 15:40:01][INFO] : Scan de Unipi addr 192.168.1.210
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input11 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input10 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input12 avec valeur 0
[2023-12-11 15:40:01][ERROR] : Attention je pense qu'il y a un soucis avec le démon que j'ai relancé plus de 3 fois consécutivement
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input1 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input3 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input2 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input5 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input4 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input7 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input6 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input9 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : input8 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay1 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay3 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay2 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay5 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay4 avec valeur 0
[2023-12-11 15:40:01][INFO] : Arrêt du service unipi
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay7 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay6 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : relay8 avec valeur 0
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : ai1 avec valeur 0.56945226266946
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : ai2 avec valeur 0.0012173357271908
[2023-12-11 15:40:01][DEBUG] : Matériel trouvé : ao1 avec valeur 0
[2023-12-11 15:40:01][INFO] : Lancement du démon unipi
[2023-12-11 15:40:01][DEBUG] : Lancement démon unipi : nice -n 19 python /var/www/html/plugins/unipi/resources/unipi.py 192.168.1.210 http://127.0.0.1:80/plugins/unipi/core/api/unipi.php?apikey=K4W9faWMPEqk9THQe7T6ISbQWRvPy8tROhv5cp8JjAiP0IcugpAqaqyH5khwBDUm
[2023-12-11 15:40:32][ERROR] : Impossible de lancer un démon unipi, vérifiez le port

Je pense pas que ça soit grand chose vu qu’il y a tout de même des échanges avec l’API Evok.

Mais je ne sais pas quoi modifier ou changer pour résoudre ce dysfonctionnement

En espérant que @lunarok passe par là pour ton problème :crossed_fingers:

Je cherche toujours à résoudre mon soucis et je trouve des pistes.

Je pense qu’il faut corriger les dépendances comme ceci

{
    "apt" : {
      "python3-websockets" : {}  
    }
  }

Ensuite le problème doit se trouver la mais ou ???

import websocket
import threading
import time
import sys
import json
import urllib.request

try:
    addr = sys.argv[1]
    unipi = 'ws://' + addr + '/ws'
except IndexError:
    print('Il faut donner un unipi')
    sys.exit(3)

try:
    jeedom = sys.argv[2]
except IndexError:
    print('Il faut donner un jeedom')
    sys.exit(3)

def on_message(ws, message):
    obj = json.loads(message)
    dev = obj['dev']
    circuit = obj['circuit']
    value = obj['value']
    appel = f"{jeedom}&type=unipi&messagetype=saveValue&addr={addr}&id={dev}{circuit}&value={value}"
    # print(appel)
    opener = urllib.request.FancyURLopener({})
    f = opener.open(appel)
    f.close()

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### closed ###")

if __name__ == "__main__":
    # websocket.enableTrace(True)
    ws = websocket.WebSocketApp(unipi,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)

    ws.run_forever()

ET donner le log d’install des dépendances ?

Avec le plugin d’origine les dépendances font appel uniquement à

python-websockets

Qui ne s’installe pas sur Debian 11

Donc j’imagine que : python3-websockets doit être préférable et ça s’installe très bien

Tu veux dire que cela a résolu ton problème ou c’est une piste ?

C’est une piste problème non résolu pour le moment

Salut à tous.

1er jour de vacances pour moi je peux enfin prendre du temps pour réfléchir à ma domotique et mon soucis Unipi.

Bonne nouvelle j’ai trouvé la solution, cela fonctionne à nouveau parfaitement. :grinning:

J’ai corrigé le fichier **html/plugins/unipi/resources/unipi.py** comme ceci

import websocket
import sys
import json
import urllib.request

try:
    addr = sys.argv[1]
    unipi = 'ws://' + addr + '/ws'
except IndexError:
    print('Il faut donner un unipi')
    exit(3)

try:
    jeedom = sys.argv[2]
except IndexError:
    print('Il faut donner un jeedom')
    exit(3)

def on_message(ws, message):
    obj = json.loads(message)
    dev = obj['dev'] 
    circuit = obj['circuit'] 
    value = obj['value']
    appel = '{jeedom}&type=unipi&messagetype=saveValue&addr={addr}&id={dev}{circuit}&value={value}'.format(jeedom=jeedom, addr=addr, dev=dev, circuit=circuit, value=value)
    # print(appel)
    with urllib.request.urlopen(appel) as f:
        f.read()

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### closed ###")

if __name__ == "__main__":
    # websocket.enableTrace(True)
    ws = websocket.WebSocketApp(unipi,
                                on_message=on_message,
                                on_error=on_error,
                                on_close=on_close)

    ws.run_forever()

Dans **html/plugins/unipi/plugin_info/packages.json**

il faut appeler ce package

{
    "apt" : {
      "python3-websocket" : {}
    }
  }

Et enfin il faut corriger ceci : **html/plugins/unipi/core/class/unipi.class.php**

ligne 62 $cmd = 'nice -n 19 python**3** ' . $service_path . '/unipi.py ' . $addr . ' ' . $url;

Chez moi tout fonctionne à nouveau. @lunarok comment puis-je puplier une mise à jour ou faire corriger ?
Ce serait dommage de ne pas en faire profiter d’autre utilisateur.

plugin-unipi python #debian11

1 « J'aime »

Hello,

j’ai mis à jour la beta de cette nuit avec tes modifs, merci

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.