Bonjour,
J’ai acheté le plugin « hikvision » mais comme il ne fonctionnait pas, j’ai aussi acheté le plugin officiel « camera » qui me permet d’accéder aux images ou flux temps réel depuis mon mobile avec le plugin mobile (sans exposer la camera à internet)
Ce qu’il n’y a pas dans le plugin camera est la lecture des évènements de la camera, et c’est aussi ce qui m’intéresse.
Cela permet de laisser la camera faire la détection (ce qu’elle fait très bien), et de pouvoir réagir dans jeedom, par exemple par l’envoi d’une notification (au travers d’un scénario) vers l’application mobile.
C’est donc pour comprendre cette lecture d’évènements que je ne n’ai pas laché l’affaire avec ce plugin. Ci-dessous, quelques infos que je partage pour ceux qui l’ont déjà acheté et veulent les évènements.
Prérequis, tester la caméra:
Mon analyse du fonctionnement général:
-
KO pour le démarrage du deamon du plugin si l’ip saisie pour la camera ne répond pas au ping. Il y a les images mais pas les évènement (pas d’erreur dans le log)
-
KO pour la communication avec la camera sur le port 443
-
KO pour l’envoi des évènement si jeedom est configuré en https avec un certificat let’s encrypt ou qui ne contient pas localhost en altname
(le client/plugin se connecte sur localhost mais rejette la connexion car le serveur renvoie le certificat avec le hostname externe)
-
La remontée des évènements ne fonctionne pas et ne peut pas fonctionner (je suppose sur les cameras récentes ou firmware de caméra récent suite à des corrections et améliorations de la part de Hikvision):
Mon analyse de la lecture des évènements:
- les évènements retournés commencent par une entête non xml (–boundary …) alors que le code exige un format complètement xml
extraction du xml essentiel au plugin à ajouter avant parseString :
data = data.toString().match(new RegExp(/<channelID>(.*)<.eventDescription>/gs)); if(data!=null) data = '<EventNotificationAlert>'+data+'</EventNotificationAlert>';
/var/www/html/plugins/hikvision/resources/node_modules/cameraeventhandler/dist/cameraEventHandler.js line 54
- il y a un algo de traitement des évènements que je n’ai pas trop cherché à comprendre, mais il y a des soucis:
soit
- remplacer
if(count==0)
par if(count==1)
/var/www/html/plugins/hikvision/resources/node_modules/cameraeventhandler/dist/cameraEventHandler.js line 97
et/ou
- pour éviter que seuls les évènements qui datent de plus de 2s soient traités, supprimer le test de date
/var/www/html/plugins/hikvision/resources/node_modules/cameraeventhandler/dist/cameraEventHandler.js line 150
- certains évènements peuvent ne pas remonter (les plus intéressants en fait)
- dans le flux, la camera envoie en plus du xml, les images liées aux évènements, ce qui ne semble pas prévu dans le plugin
(pas trouvé pour désactiver cet envoi côté camera mais c’est contourné avec la correction 1)
- certains évènements peuvent ne pas remonter car l’envoi du message xml peut se faire en plusieurs blocs (dans différents messages),
la correction du 1 devrait limiter les loupés mais une correction propre et plus profonde serait nécessaire.
Environnement:
Camera DS-2CD2046G2-I / Firmware V5.5.160 build 210108
Jeedom 4.1.22 sur un Rapsberry Pi 4 tournant sur un disque SSD sous Linux raspberrypi 5.10.17
Jeedom 4.1.22 sur FreeboxDelta