Problème installation des dépendances en Debian 12

Bonjour,

Sur RPI5, Debian 12.5, Python 3.1.2, j’ai un problème d’installation des dépendances :
Merci d’avance pour votre aide.

*************************************
*   Launch install of dependencies  *
*************************************
Tue Jun 18 17:27:36 CEST 2024
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Hit:4 http://archive.raspberrypi.com/debian bookworm InRelease
Hit:5 https://deb.nodesource.com/node_18.x nodistro InRelease
Reading package lists...
*****************************
Install modules using apt-get
*****************************
Reading package lists...
Building dependency tree...
Reading state information...
python3 is already the newest version (3.11.2-1+b1).
python3-requests is already the newest version (2.28.1+dfsg-1).
python3-pip is already the newest version (23.0.1+dfsg-1+rpt1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
*************************************
Install the required python libraries
*************************************
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Tue Jun 18 17:27:41 CEST 2024
***************************
*      Install ended      *
***************************

Avez vous essayer la correction que le message vous suggère ?

Que veux-tu dire exactement?
Que l’utilisateur créé lui même un environnement virtuel et adapte le plugin en conséquence?

╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

les paquets nécessaires ne sont probablement pas dispo sur les repo debian, ce sont des librairies tierces, elles doivent s’installer depuis les repos utilisés par pip (pypi principalement), donc installer via apt ne fonctionnera pas.

la solution est de mettre à jour le plugin pour qu’il utilise un env virtuel, cela va être obligatoire pour la compatibilité debian12. le dev peut faire cela de 3 façon:

1 « J'aime »

Ok je vois
Je le note sur ma TODO!

Si jamais un dev veux apporter sa PR sur ce sujet je suis preneur. :slightly_smiling_face:

Je continue de faire le minimum sur ce plugin mais ayant quitté Jeedom, et revendu toutes mes caméras Reolink cela devient compliqué pour moi de continuer a apporter de la maintenance sur ce plugin.

Merci à vous.

Je veux bien regarder si je peux facilement faire le PR mais je serai incapable de tester n’ayant pas le matériel
sais-tu donner le lien vers le repo?

J’ai fait un pr, les dépendances s’installent mais à tester si ca tourne: il pourrait y avoir d’autres changements à effectuer

1 « J'aime »

Top merci :+1:
Si quelqu’un peux valider le test de la branche beta ca serait cool, c’est pareil pour moi j’ai ni matériel, ni Jeedom :slight_smile:

As tu envoyé la béta sur le market ? Si oui je teste tout de suite sur un Jeedom de test en debian 12, sinon j’attends demain et je teste.
Je n’utilisais pas le plugin mais j’ai une E1 Zoom (en fait j’en ai 8) donc supportée donc je peux tester.

1 « J'aime »

Je testerai de mon côté ce weekend.
Merci.

1 « J'aime »

Je viens de tester, les dépendances semblent bien s’installer

======================================================================
== 20/06/2024 08:23:22 == Dependencies installation for reolink
======================================================================

[  5% ] : Clean apt...
[  9% ] : Clean apt : [  OK  ]
[ 10% ] : Update apt...
[ 19% ] : Update apt : [  OK  ]
[ 20% ] : Init python3 & prerequisites...
[ 31% ] : Init python3 & prerequisites : [  OK  ]
[ 32% ] : Init pyEnv...
** PyEnv not required: 3.11.2 >= 3.11.2 **
** python3 path: python3 **
[ 43% ] : Init pyEnv : [  OK  ]
[ 44% ] : Setting up virtual environment...
** Version of python in VENV: Python 3.11.2
[ 79% ] : Setting up virtual environment : [  OK  ]
[ 80% ] : Install the required python packages...
[ 89% ] : Install the required python packages : [  OK  ]
[ 90% ] : Summary of installed packages...
aiohttp==3.9.5
aiosignal==1.3.1
anyio==4.4.0
attrs==23.2.0
certifi==2024.6.2
charset-normalizer==2.1.1
click==8.1.7
fastapi==0.78.0
frozenlist==1.4.1
h11==0.14.0
idna==3.7
multidict==6.0.5
pydantic==1.10.16
requests==2.31.0
sniffio==1.3.1
starlette==0.19.1
typing_extensions==4.12.2
urllib3==1.26.19
uvicorn==0.29.0
yarl==1.9.4
[ 99% ] : Summary of installed packages : [  OK  ]
[100% ] : Finished !

======================================================================
== OK == Installation Successful 
======================================================================

Mais après avoir installé une caméra E1 Zoom qui est bien reconnue (les infos remontent) le démon ne démarre pas et le path ne me semble pas correct

sh: 1: /var/www/html/plugins/reolink/core/class/../../resources/venv/bin/python3/var/www/html/plugins/reolink/resources/demond/reolinkd.py: not found

A mon avis il manque un espace dans la la ligne 600 du fichier class

$cmd = self::PYTHON_PATH . $path . '/reolinkd.py';

Je ne sais pas s’il y a d’autres problèmes. Je vais editer le fichier et continuer à tester.

Avec la correction, le démon démarre mais le log semble remonter des problèmes (j’ai caché l’APIKey même si je ne suis pas sûr que çà ait un intérêt)

[2024-06-20 08:59:56][DEBUG] : Init request module v2.31.0
[2024-06-20 08:59:56][INFO] : Start demond
[2024-06-20 08:59:56][INFO] : Log level : debug
[2024-06-20 08:59:56][INFO] : Socket port : 44009
[2024-06-20 08:59:56][INFO] : Socket host : localhost
[2024-06-20 08:59:56][INFO] : PID file : /tmp/jeedom/reolink/deamon.pid
[2024-06-20 08:59:56][INFO] : Apikey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[2024-06-20 08:59:56][INFO] : Device : auto
[2024-06-20 08:59:56][INFO] : Webhook IP : 192.168.1.208
[2024-06-20 08:59:56][INFO] : Webhook port : 44010
[2024-06-20 08:59:56][INFO] : Write creds file for camhook
[2024-06-20 08:59:56][DEBUG] : Writing PID 407568 to /tmp/jeedom/reolink/deamon.pid
[2024-06-20 08:59:56][DEBUG] : Socket interface started
[2024-06-20 08:59:56][INFO] : Starting webhook...
[2024-06-20 08:59:56][DEBUG] : LoopNetServer Thread started
[2024-06-20 08:59:56][DEBUG] : Listening on: [localhost:44009]
[2024-06-20 08:59:56][DEBUG] : Using selector: EpollSelector
[2024-06-20 08:59:56][DEBUG] : Init request module v2.31.0
INFO:     Started server process [407570]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.11/logging/__init__.py", line 1110, in emit
    msg = self.format(record)
          ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 953, in format
    return fmt.format(record)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 687, in format
    record.message = record.getMessage()
                     ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/logging/__init__.py", line 377, in getMessage
    msg = msg % self.args
          ~~~~^~~~~~~~~~~
TypeError: %d format: a real number is required, not str
Call stack:
  File "/var/www/html/plugins/reolink/resources/demond/reolinkd.py", line 258, in <module>
    start_uvicorn()
  File "/var/www/html/plugins/reolink/resources/demond/reolinkd.py", line 129, in start_uvicorn
    proc.start()
  File "/usr/lib/python3.11/multiprocessing/process.py", line 121, in start
    self._popen = self._Popen(self)
  File "/usr/lib/python3.11/multiprocessing/context.py", line 224, in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
  File "/usr/lib/python3.11/multiprocessing/context.py", line 281, in _Popen
    return Popen(process_obj)
  File "/usr/lib/python3.11/multiprocessing/popen_fork.py", line 19, in __init__
    self._launch(process_obj)
  File "/usr/lib/python3.11/multiprocessing/popen_fork.py", line 71, in _launch
    code = process_obj._bootstrap(parent_sentinel=child_r)
  File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/reolink/resources/demond/reolinkd.py", line 123, in run_uvicorn
    uvicorn.run(app="camhook:app", host="0.0.0.0", port=_webhook_port, log_level=get_logger_text())
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/main.py", line 575, in run
    server.run()
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
  File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "/usr/lib/python3.11/asyncio/base_events.py", line 640, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
    self._run_once()
  File "/usr/lib/python3.11/asyncio/base_events.py", line 1922, in _run_once
    handle._run()
  File "/usr/lib/python3.11/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/server.py", line 69, in serve
    await self._serve(sockets)
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/server.py", line 84, in _serve
    await self.startup(sockets=sockets)
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/server.py", line 179, in startup
    self._log_started_message(listeners)
  File "/var/www/html/plugins/reolink/resources/venv/lib/python3.11/site-packages/uvicorn/server.py", line 214, in _log_started_message
    logger.info(
Message: 'Uvicorn running on %s://%s:%d (Press CTRL+C to quit)'
Arguments: ('http', '0.0.0.0', '44010')
[2024-06-20 09:00:01][DEBUG] : Client connected to [127.0.0.1:56486]
[2024-06-20 09:00:01][DEBUG] : Client disconnected from [127.0.0.1:56486]
[2024-06-20 09:00:01][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2024-06-20 09:00:01][DEBUG] : Requested to set the webhook inside CAM IP=192.168.1.240
[2024-06-20 09:00:01][DEBUG] : Using selector: EpollSelector
[2024-06-20 09:00:01][DEBUG] : Request subscription_manager to set webhook on camera = 192.168.1.240:8000
[2024-06-20 09:00:01][DEBUG] : SMAN : Reolink host 192.168.1.240 (Subscription) request
[2024-06-20 09:00:02][DEBUG] : SMAN : Reolink host 192.168.1.240 (Subscription) got response status: 200.
[2024-06-20 09:00:02][DEBUG] : SMAN : Local time: 2024-06-20 07:00, camera time: 2024-06-20 07:00 (difference: 0.20824599266052246), termination time: 2024-06-20 07:15
[2024-06-20 09:00:02][DEBUG] : Starting local hook on : http://192.168.1.208:44010/inbound_events
[2024-06-20 09:00:02][DEBUG] : Subscribe OK
[2024-06-20 09:00:02][DEBUG] : Send to jeedom :  {'message': 'subscription', 'ip': '192.168.1.240', 'state': 1}
[2024-06-20 09:00:02][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2024-06-20 09:00:02][DEBUG] : http://127.0.0.1:80 "POST /plugins/reolink/core/php/jeeReolink.php?apikey=OZJsMrs5Les4ITR8zKcCV3N5a2aDAQ3KJeF7dC67TIuEw3hhNg2JALJE1l5HIIgS HTTP/1.1" 200 0
[2024-06-20 09:00:02][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
INFO:     192.168.1.240:54384 - "POST /inbound_events HTTP/1.1" 200 OK

Mes maigres connaissances en Python ne me permettent pas d’aller plus loin.

Je viens de remarquer aussi qu’aucune commande n’est créée pour la E1 Zoom. C’est normal ? (désolé je ne connais pas le plugin, ne l’ayant jamais utilisé)

correct, j’ai inclus la correction


A mon avis c’est python 3.11 qui est plus strict sur les types;
peux-tu essayer de modifier la ligne 231 en faisant un cast en int et pas str:

if args.webhook_port:
    _webhook_port = int(args.webhook_port)

=> c’est un numéro de port donc ca doit être un int et on voit dans ton log que la lib uvicorn a reçu une « str » mais ensuite traite la valeur comme si c’était un nombre 'Uvicorn running on %s://%s:%d (Press CTRL+C to quit)' => le %d;
c’est ca qui raise l’exception; probablement un petit soucis qui pourrait/devrait être fixé dans cette lib mais ca va être plus simple de directement lui passer un entier.

Des events semblent bien remonter
Log du démon

[2024-06-20 09:50:01][DEBUG] : Client connected to [127.0.0.1:47084]
[2024-06-20 09:50:01][DEBUG] : Client disconnected from [127.0.0.1:47084]
[2024-06-20 09:50:01][DEBUG] : Message received in socket JEEDOM_SOCKET_MESSAGE
[2024-06-20 09:50:01][DEBUG] : Requested to set the webhook inside CAM IP=192.168.1.240
[2024-06-20 09:50:01][DEBUG] : Using selector: EpollSelector
[2024-06-20 09:50:01][DEBUG] : Request subscription_manager to set webhook on camera = 192.168.1.240:8000
[2024-06-20 09:50:01][DEBUG] : SMAN : Reolink host 192.168.1.240 (Subscription) request
[2024-06-20 09:50:01][DEBUG] : SMAN : Reolink host 192.168.1.240 (Subscription) got response status: 200.
[2024-06-20 09:50:01][DEBUG] : SMAN : Local time: 2024-06-20 07:50, camera time: 2024-06-20 07:50 (difference: -0.6616349220275879), termination time: 2024-06-20 08:05
[2024-06-20 09:50:01][DEBUG] : Starting local hook on : http://192.168.1.208:44010/inbound_events
[2024-06-20 09:50:01][DEBUG] : Subscribe OK
[2024-06-20 09:50:01][DEBUG] : Send to jeedom :  {'message': 'subscription', 'ip': '192.168.1.240', 'state': 1}
[2024-06-20 09:50:01][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2024-06-20 09:50:01][DEBUG] : http://127.0.0.1:80 "POST /plugins/reolink/core/php/jeeReolink.php?apikey=xxxxx HTTP/1.1" 200 0
[2024-06-20 09:50:01][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
INFO:     192.168.1.240:54586 - "POST /inbound_events HTTP/1.1" 200 OK
[2024-06-20 09:50:12][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
[2024-06-20 09:50:12][DEBUG] : Send to jeedom :  {'message': 'motion', 'ip': '192.168.1.240', 'motionstate': 1}
INFO:     192.168.1.240:54588 - "POST /inbound_events HTTP/1.1" 200 OK
[2024-06-20 09:50:12][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2024-06-20 09:50:12][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
INFO:     192.168.1.240:54590 - "POST /inbound_events HTTP/1.1" 200 OK
[2024-06-20 09:50:12][DEBUG] : http://127.0.0.1:80 "POST /plugins/reolink/core/php/jeeReolink.php?apikey=xxxxx HTTP/1.1" 200 0
[2024-06-20 09:50:16][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
[2024-06-20 09:50:16][DEBUG] : Send to jeedom :  {'message': 'motion', 'ip': '192.168.1.240', 'motionstate': 0}
INFO:     192.168.1.240:54594 - "POST /inbound_events HTTP/1.1" 200 OK
[2024-06-20 09:50:16][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2024-06-20 09:50:16][DEBUG] : Incoming XML camera event on webhook from IP=192.168.1.240
INFO:     192.168.1.240:54596 - "POST /inbound_events HTTP/1.1" 200 OK
[2024-06-20 09:50:16][DEBUG] : http://127.0.0.1:80 "POST /plugins/reolink/core/php/jeeReolink.php?apikey=xxxxx HTTP/1.1" 200 0

log reolink

[2024-06-20 09:15:01][DEBUG] : #### CRON refresh [salon][essai salon 3]
[2024-06-20 09:15:01][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:15:01][DEBUG] : Rafraichissement des informations de la caméra...
[2024-06-20 09:15:01][DEBUG] : ============================================================
[2024-06-20 09:16:20][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:16:20][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:16:20][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:16:20][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:16:20][DEBUG] : HTTP code 200 OK
[2024-06-20 09:16:20][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:16:20][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:16:20][DEBUG] : ============================================================
[2024-06-20 09:16:22][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:16:22][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:16:22][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:16:22][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:16:22][DEBUG] : HTTP code 200 OK
[2024-06-20 09:16:22][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:16:22][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:16:22][DEBUG] : ============================================================
[2024-06-20 09:16:23][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:16:23][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:16:23][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:16:23][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:16:23][DEBUG] : HTTP code 200 OK
[2024-06-20 09:16:23][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:16:23][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:16:23][DEBUG] : ============================================================
[2024-06-20 09:16:24][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:16:24][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:16:24][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:16:24][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:16:24][DEBUG] : HTTP code 200 OK
[2024-06-20 09:16:24][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":1,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:16:24][DEBUG] : Cam AI : Evènements Motion | Personne : 1 / Vehicule : 0
[2024-06-20 09:16:24][DEBUG] : ============================================================
[2024-06-20 09:20:01][DEBUG] : CRON mise à jour souscription ONVIF events Cam=192.168.1.240
[2024-06-20 09:20:46][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:20:46][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:20:46][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:20:46][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:20:47][DEBUG] : HTTP code 200 OK
[2024-06-20 09:20:47][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:20:47][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:20:47][DEBUG] : ============================================================
[2024-06-20 09:20:47][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:20:47][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:20:47][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:20:47][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:20:47][DEBUG] : HTTP code 200 OK
[2024-06-20 09:20:47][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:20:47][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:20:47][DEBUG] : ============================================================
[2024-06-20 09:24:29][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:24:29][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:24:29][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:24:29][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:24:30][DEBUG] : HTTP code 200 OK
[2024-06-20 09:24:30][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:24:30][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:24:30][DEBUG] : ============================================================
[2024-06-20 09:24:36][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:24:36][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:24:36][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:24:36][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:24:36][DEBUG] : HTTP code 200 OK
[2024-06-20 09:24:36][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:24:36][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:24:36][DEBUG] : ============================================================
[2024-06-20 09:24:37][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:24:37][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:24:37][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:24:37][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:24:37][DEBUG] : HTTP code 200 OK
[2024-06-20 09:24:37][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:24:37][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:24:37][DEBUG] : ============================================================
[2024-06-20 09:24:40][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:24:40][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:24:40][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:24:40][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:24:40][DEBUG] : HTTP code 200 OK
[2024-06-20 09:24:40][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:24:40][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:24:40][DEBUG] : ============================================================
[2024-06-20 09:30:01][DEBUG] : #### CRON refresh [salon][essai salon 3]
[2024-06-20 09:30:01][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:30:01][DEBUG] : Rafraichissement des informations de la caméra...
[2024-06-20 09:30:01][DEBUG] : ============================================================
[2024-06-20 09:30:01][DEBUG] : CRON mise à jour souscription ONVIF events Cam=192.168.1.240
[2024-06-20 09:30:55][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:30:55][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:30:55][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:30:55][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:30:55][DEBUG] : HTTP code 200 OK
[2024-06-20 09:30:55][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:30:55][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:30:55][DEBUG] : ============================================================
[2024-06-20 09:30:56][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:30:56][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:30:56][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:30:56][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:30:57][DEBUG] : HTTP code 200 OK
[2024-06-20 09:30:57][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:30:57][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:30:57][DEBUG] : ============================================================
[2024-06-20 09:36:34][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:36:34][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:36:34][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:36:34][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:36:34][DEBUG] : HTTP code 200 OK
[2024-06-20 09:36:34][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:36:34][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:36:34][DEBUG] : ============================================================
[2024-06-20 09:36:34][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:36:34][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:36:34][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:36:34][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:36:34][DEBUG] : HTTP code 200 OK
[2024-06-20 09:36:34][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:36:34][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:36:34][DEBUG] : ============================================================
[2024-06-20 09:40:01][DEBUG] : CRON mise à jour souscription ONVIF events Cam=192.168.1.240
[2024-06-20 09:41:30][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:41:30][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:41:30][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:41:30][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:41:30][DEBUG] : HTTP code 200 OK
[2024-06-20 09:41:30][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:41:30][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:41:30][DEBUG] : ============================================================
[2024-06-20 09:41:30][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:41:30][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:41:30][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:41:30][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:41:30][DEBUG] : HTTP code 200 OK
[2024-06-20 09:41:30][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":1,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:41:30][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:41:30][DEBUG] : ============================================================
[2024-06-20 09:45:01][DEBUG] : #### CRON refresh [salon][essai salon 3]
[2024-06-20 09:45:01][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:45:01][DEBUG] : Rafraichissement des informations de la caméra...
[2024-06-20 09:45:01][DEBUG] : ============================================================
[2024-06-20 09:50:01][DEBUG] : CRON mise à jour souscription ONVIF events Cam=192.168.1.240
[2024-06-20 09:50:12][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=1
[2024-06-20 09:50:12][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:50:12][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:50:12][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:50:12][DEBUG] : HTTP code 200 OK
[2024-06-20 09:50:12][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:50:12][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:50:12][DEBUG] : ============================================================
[2024-06-20 09:50:16][DEBUG] : Evènement MotionState reçu depuis le daemon. Cam IP=192.168.1.240 état=0
[2024-06-20 09:50:16][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-06-20 09:50:16][DEBUG] : URL de requête => https://192.168.1.240:443/cgi-bin/api.cgi?user=admin&password=******
[2024-06-20 09:50:16][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
[2024-06-20 09:50:16][DEBUG] : HTTP code 200 OK
[2024-06-20 09:50:16][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":1},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":0}}}]
[2024-06-20 09:50:16][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
[2024-06-20 09:50:16][DEBUG] : ============================================================

Je remarque Personne : 0 Vehicules : 0 mais pas de mention des animaux pourtant chien et chats passent sans arrêt devant cette caméra.

Oui c’est normal, à l’epoque de l’ecriture du plugin les cameras ne prenaient pas en charge l’IA pour les animaux.
La détection animaux n’est pas supporté par le plugin

avec la modif str / int ou sans?

Je n’avais pas vu ton message donc c’est sans la modif. Je vais la faire.
J’ai regardé le code et il semble assez simple d’ajouter le support des animaux avec la clé « dog_cat » je remarque aussi une autre clé « face » qui pourrait être intéressante.
Je vais essayer car en fait les animaux c’est ma principale utilisation de mes 12 (oui je sais c’est beaucoup pour un appartement) caméras. Si çà marche je ferai un PR.
J’ai des trackmix sur la terrasse mais comme je comprends ces modèles ne sont pas supportés car l’API est différente en plus ce sont des modèles sur batterie et panneau solaire donc vraiment très différents.