Subscribe to ONVIF events (motion, visitor, faceDetect, ...) with Reolink Doorbell POE

J’ai testé sur mes RLC-542WA sans succès. Les commandes sont bien créé mais seul l’info Event Motion fonctionne.

C’est que la camera ne détecte pas les autres évènements.
ma Reolink C1-PRO qui a deja quelques années ne détecte aussi que le Motion.

pour vérifier les événements que la camera peut remonter en ONVIF le mieux c’est l’application ONVIF Device Manager dans la section ONVIF - Events.

Sinon il faut passer sur Frigate qui recréée toutes ces alarmes an AIML

1 « J'aime »

J’ai bien les événements Personne et Véhicule qui remonte dans les logs en Debug mais qui n’ont pas d’effet sur les commande info.

Cam AI : Evènements Motion | Personne : 1 / Vehicule : 0

Quelqu’un saurait m’aider? Je suis très intéressé par la possibilité de récupérer ces commandes infos

d’apres les specs de Reolink, cette camera ne supporte pas ONVIF :

image

pour comparaison, les specs de la doorbell PoE qui fonctionne bien avec le plugin modifié donnent ceci, ONVIF est listé:

image

c’est peut etre un oubli de leur part mais a verifier d’abord.

je conseille de tester avec ONVIF device manager (ODM) ODM download | SourceForge.net pour valider le support d’ONVIF

Merci pour ta réponse, je te confirme bien que mes caméras sont compatible ONVIF, le logiciel que tu m’as indiqué fonctionne parfaitement avec.

Comme je l’ai dit dans mon post précédent, ma caméra envoie bien les informations de détection au plugin, mais celui-ci ne les interprète pas dans les commandes info :

0992|[2024-03-23 10:21:10][DEBUG] : Cam IP=192.168.50.14 Onvif event reçu depuis le daemon. name= MDstate, état=1
0993|[2024-03-23 10:21:10][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0994|[2024-03-23 10:21:10][DEBUG] : URL de requête => http://192.168.50.14:80/cgi-bin/api.cgi?user=admin&password=******
0995|[2024-03-23 10:21:10][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
0996|[2024-03-23 10:21:10][DEBUG] : HTTP code 200 OK
0997|[2024-03-23 10:21:10][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":0},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":1}}}]
0998|[2024-03-23 10:21:10][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
0999|[2024-03-23 10:21:10][DEBUG] : ============================================================

Il y a peut-être une modification à faire dans le plugin pour que les infos envoyées par mes caméra soient prise en charge?

Dans ODM, clique sur le lien Events (en rouge) du cadre Onvif, apparait alors sur la droite la fenetre des events onvif.

pour info, voila les events onvif remontes par la Reolink Doorbell, la seule que j’ai pu tester.
Dans le plugin modifie je fais un regex sur le contenu de ces events ONVIF pour identifier et remonter les evenements , peut etre que la syntaxe est differente sur la tienne, et donc le regex ne voit rien.

Qu’obtiens tu dans la fenetre events avec ta camera ?

Voilà le résultat, je suis passé pour déclencher un mouvement et j’ai eu des event mais aucun détails sur le type dans ODM. Par contre j’ai bien le détail dans les log du plugin, donc de quoi ça peu venir?

0960|[2024-03-23 13:46:27][DEBUG] : Cam IP=192.168.50.13 Onvif event reçu depuis le daemon. name= MDstate, état=1
0961|[2024-03-23 13:46:27][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0962|[2024-03-23 13:46:27][DEBUG] : URL de requête => http://192.168.50.13:80/cgi-bin/api.cgi?user=admin&password=******
0963|[2024-03-23 13:46:27][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
0964|[2024-03-23 13:46:27][DEBUG] : HTTP code 200 OK
0965|[2024-03-23 13:46:27][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":0},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":1}}}]
0966|[2024-03-23 13:46:27][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0
0967|[2024-03-23 13:46:27][DEBUG] : ============================================================
0968|[2024-03-23 13:46:39][DEBUG] : Cam IP=192.168.50.13 Onvif event reçu depuis le daemon. name= MDstate, état=0
0969|[2024-03-23 13:46:39][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0970|[2024-03-23 13:46:39][DEBUG] : URL de requête => http://192.168.50.13:80/cgi-bin/api.cgi?user=admin&password=******
0971|[2024-03-23 13:46:39][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
0972|[2024-03-23 13:46:39][DEBUG] : HTTP code 200 OK
0973|[2024-03-23 13:46:39][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":0},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":1,"support":1},"vehicle":{"alarm_state":0,"support":1}}}]
0974|[2024-03-23 13:46:39][DEBUG] : Cam AI : Evènements Motion | Personne : 1 / Vehicule : 0
0975|[2024-03-23 13:46:39][DEBUG] : ============================================================
0976|[2024-03-23 13:46:45][DEBUG] : Cam IP=192.168.50.13 Onvif event reçu depuis le daemon. name= MDstate, état=1
0977|[2024-03-23 13:46:45][DEBUG] : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0978|[2024-03-23 13:46:45][DEBUG] : URL de requête => http://192.168.50.13:80/cgi-bin/api.cgi?user=admin&password=******
0979|[2024-03-23 13:46:45][DEBUG] : Payload => [{"cmd":"GetAiState","action":0,"param":{"channel":0}}]
0980|[2024-03-23 13:46:45][DEBUG] : HTTP code 200 OK
0981|[2024-03-23 13:46:45][DEBUG] : Réponse caméra >> [{"cmd":"GetAiState","code":0,"value":{"channel":0,"dog_cat":{"alarm_state":0,"support":0},"face":{"alarm_state":0,"support":0},"people":{"alarm_state":0,"support":1},"vehicle":{"alarm_state":0,"support":1}}}]
0982|[2024-03-23 13:46:45][DEBUG] : Cam AI : Evènements Motion | Personne : 0 / Vehicule : 0

je vois le probleme, enfin je pense…
ta camera supporte ONVIF mais d’apres les logs d’ODM elle ne remonte en ONVIF que l’evenement Motion.
pour determiner quel objet a declenche l’evenement motion, le plugin fait une requete API sur la camera apres avoir recu l’evenement Motion en ONVIF.
Tout ceci se passe dans la partie du code original du fichier jeeReolink.php qui concerne les cameras avec AI et que je n’ai pas touché :

if ($camera_AI == "Oui") {
                  $camcnx = reolink::getReolinkConnection($eqLogic->getId());
                  $channel = $eqLogic->getConfiguration('channelNum') - 1;
                  $res = $camcnx->SendCMD('[{"cmd":"GetAiState","action":0,"param":{"channel":'.$channel.'}}]');
                  if (isset($res[0]['value'])) {
                    $eqLogic->checkAndUpdateCmd('MdPersonState', $res[0]['value']['people']['alarm_state']);
                    $eqLogic->checkAndUpdateCmd('MdVehicleState', $res[0]['value']['vehicle']['alarm_state']);
                  }
                  log::add('reolink', 'debug', 'Cam AI : Evènements Motion | Personne : ' . $res[0]['value']['people']['alarm_state'] . ' / Vehicule : ' . $res[0]['value']['vehicle']['alarm_state']);
              }

Dans ce code, quand un objet Person ou Vehicle est détecté, les commandes avec logicalID ‹ MdPersonState › et ‹ MdVehicleState › sont mises a jour.
Mais ces commandes, binaires, n’existent pas !!!
elles ne sont pas créées car pas présentes dans le fichier reolinkapicmd.json

je pense qu’il faudrait rajouter 2 commandes binaires avec ces logicalID dans le fichier reolinkapicmd.json (voir ci-dessous, ne pas oublier d’ajouter une virgule avant ou/et apres) , de recreer les commandes et la detection d’objet person ou vehicle devrait etre remontee sur les 2 nouvelles commandes

je ne peux pas tester je n’ai pas de camera correspondante.


{
	"abilityneed":"alarmMd",
	"name": "AI Person (etat)",
	"type": "info",
	"subtype": "binary",
	"IsHistorized": 0,
	"isVisible": 1,
	"logicalId": "MdPersonState"
}, {
	"abilityneed":"alarmMd",
	"name": "AI Vehicle(etat)",
	"type": "info",
	"subtype": "binary",
	"IsHistorized": 0,
	"isVisible": 1,
	"logicalId": "MdVehicleState"
}

une autre approche serait de mettre a jour les 2 nouvelles commandes info binaires recemment ajoutées « event PeopleDetect (etat) » (« logicalId »: « EvPeopleDetect ») et « event VehicleDetect (etat) » (« logicalId »: « EvVehicleDetect ») au lieu d’en recrééer 2 autres.

Plutot que de modifier le fichier reolinkapicmd.json, il suffit alors de modifier le code jeeReolink.php comme ci-dessous.
Une fois de plus je ne peux pas tester je n’ai pas la camera adequate

if ($camera_AI == "Oui") {
                  $camcnx = reolink::getReolinkConnection($eqLogic->getId());
                  $channel = $eqLogic->getConfiguration('channelNum') - 1;
                  $res = $camcnx->SendCMD('[{"cmd":"GetAiState","action":0,"param":{"channel":'.$channel.'}}]');
                  if (isset($res[0]['value'])) {
                    $eqLogic->checkAndUpdateCmd('EvPeopleDetect', $res[0]['value']['people']['alarm_state']);
                    $eqLogic->checkAndUpdateCmd('EvVehicleDetect', $res[0]['value']['vehicle']['alarm_state']);
                  }
                  log::add('reolink', 'debug', 'Cam AI : Evènements Motion | Personne : ' . $res[0]['value']['people']['alarm_state'] . ' / Vehicule : ' . $res[0]['value']['vehicle']['alarm_state']);
              }
1 « J'aime »

J’ai testé cette seconde méthode avec succès ! Merci beaucoup

@Jezza34000 je viens de creer un pull request avec la derniere modif proposee et testee par @Sybal .

cela ne devrait affecter aucune utilisation existante puisque cela impacte des commandes qui n’existent pas dans le plugin actuel, tu pourrais merger ?

merci

Hello c’est merge :slightly_smiling_face:

hello
c’est quoi la maj du plugin proposé ce jour ? j avais deja celle du 10/03/2024
Merci à toi et merci de continuer l’évolution de ton plugin c est super
Merci merci

Hello, c’est des maj de sécurité.

2 « J'aime »

Bonjour à tous, j’essaie de faire remonter les évènements de ma sonnette POE avec le plugin Reolink, la connexion est ok et la sonnette est bien reconnue, j’ai même la mention « ONVIF Port 8000 (actif) » qui s’affiche sur mon objet dans Jeedom, mais quand je regarde dans l’outil temps réel de Jeedom, il ne se passe absolument rien avec la sonnette.
J’ai testé avec ONVIF Device Manager, et là je reçois bien tous les évènements.
J’ai remarqué autre chose qui a peut-être un rapport, quand je lance l’action « rafraîchir » sur Jeedom, j’ai un popup « Action executée avec succès » qui s’affiche mais à part ça rien n’a l’air de se passer, aucune info ne remonte.
Est-ce que vous auriez une idée ?
Merci

c’est exactement la meme sonnette que la mienne, cela devrait fonctionner

tu n’as aucun evenment qui remonte ? quad tu appuies sur le bouton pas d’event visitor sur jeedom ?

sinon log en mode debug.

[2024-04-21 12:50:03] DEBUG  : CRON mise à jour souscription ONVIF events Cam=xxx
[2024-04-21 12:50:03] DEBUG  : CRON mise à jour souscription ONVIF events Cam=xxx
[2024-04-21 12:50:03] DEBUG  : CRON mise à jour souscription ONVIF events Cam=xxx
[2024-04-21 12:50:39] DEBUG  : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2024-04-21 12:50:39] DEBUG  : Vérification à 1713696639 du TOKEN : xxx Valable jusqu'à : 1713698093
[2024-04-21 12:50:39] DEBUG  : API Token OK
[2024-04-21 12:50:39] INFO  : Connection à la caméra réussie
[2024-04-21 12:50:39] DEBUG  : ============================================================

La connexion a l’air ok et pas d’erreur à la souscription ONVIF, pourtant il ne se passe absolument rien quand je sonne.
J’ai actuellement 3 caméras sur le plugin, d’où les 3 premières lignes

apres avoir installé la maj tu as bien recréé les commandes ?

Bonjour,

Est-ce que la dernière version du plugin inclus les modifications pour avoir les infos sur le type d 'evenement (vehicule, personne ) ? pour camera reolink ONVIF ?
J’ai pas bien compris les modifs a faire pour avoir ces infos.
Merci