Plugin Reolink (en beta)

Purée ces caméras me rendent chèvres…
Lorsque j’interroge la RLC-810A de @titof2375 sur son GetAiState elle me répond :
{« cmd »:« Unknown »,« code »:1,« error »:{« detail »:« notsupport »,« rspCode »:-9}}]
:tired_face: :face_with_monocle: :woozy_face:

Sur ce dépôt https://github.com/fwestenberg/reolink
L’auteur explique justement qu’il à cette problématque et que autant le GetAbility que les commandes AI sont codés avec les pieds dans l’API… c’est relou, j’ai pas de réelle solution pour ça du coup!

@Jezza34000,
pour les commandes Get, voici les différents modèles de payload possibles que j’ai rencontré à envoyer:

GetAbility :
payload='[{"cmd":"GetAbility","action":0,"param":{"User":{"userName":'ADMIN_USERNAME'}}}]'

GetAlarm :
payload='[{"cmd":"GetAlarm","action":0,"param":{"Alarm":{"channel":'NUMCHANNEL', "type": "md"}}}]'

GetAiAlarm :
payload='[{"cmd":"GetAiAlarm","action":1,"param":{"channel":'NUMCHANNEL',"ai_type":"'AI_TYPE'"}}]'
(AI_TYPE : people OU vehicle)

tous les autres Getxxx :
payload='[{"cmd":"Getxxx","action":0,"param":{"channel":'NUMCHANNEL'}}]'
(action=0 → payload de retour limité aux valeurs : value)
ou
payload='[{"cmd":"Getxxx","action":1,"param":{"channel":'NUMCHANNEL'}}]'
(action=1 → payload de retour complet : initial+range+value)

EDIT: je mets le champ channel quequesoit la commande Getxxx pour pas me faire ch… peut importe si c’est pris en compte ou pas et cela fonctionne.

Si ca peut t’aider.

NB : j’ai eu le même retour d’erreur Unknown lors du refresh de la cam AI.

EDIT2 :
je voudrais bien t’aider pour le code mais je suis une chèvre en PHP.

Je suis pas sur la dernier firmware

A ce sujet, j’ai pu identifié le soucis.
ce sont les commandes GetRec qui ne passent pas sur la RLC-542WA.

En insérant "iastate"=0, pour les entrées suivantes ci-dessous dans le fichier reolinkapicmd.json puis en régénérant les commandes, le refresh fonctionne et je n’ai plus de Unknown :

ligne 160 : "name": "Enregistrement avant détection (état)",
ligne 170 : "name": "Enregistrement avant détection",
ligne 188 : "name": "Ecraser les enregistrements (état)",
ligne 200 : "name": "Ecraser les enregistrements",
ligne 216 : "name": "Durée enregistrement après détection (état)",
ligne 228 : "name": "Durée enregistrement après détection",

Pour te faciliter la chose, toutes les commandes faisant appel à Rec,Email,Ftp,AudioAlarm,Push, elles ne sont que pour les non-AI, et celles en V20 que pour les cams AI.

Hello et merci pour ce plugin : j’utilise l’info de GetMDState pour déclencher une notification mail & telephone via un scenario.
Hors il semble que le taux de rafraichissement du plugin est un peu lent : j’ai testé via requete http sur ma E1 Zoom et le json s’update bien mais via le plugin, certaines notifs passent à la trape.

Y’a t’il un moyen de recuperer cette info genre toutes les 5secondes ? Ou dois je faire un script pour cela?

Merci d’avance,

Aurélien.

Hello,
Le paramétrage est à 15min par défaut pour éviter de solliciter trop la caméra, car d’après mes tests le serveur web plante en cas de trop forte sollicitation et fait redémarrer complètement la caméra. (Enfin sur mon modèle E1 Zoom)
Après le paramétrage du cron est accessible dans le plugin, tu peux mettre 1min au minimum.
D’autres solutions plus réactives sont envisageables mais en test pour le moment…

Ok la requete sur le getmdstate semble stable mais c’est hyper reactif côté camera, ca repasse assez vite à zero.

Je pense poll toutes les secondes, en regardant vite fait le code du projet python reolink package, ils font ça également pour le côté « suscribe event ».

Après c’est vrai que c’est pas fou, si seulement on pouvait trigger une url suite à une motion détection… Sinon faut passer par les mails mais pffiou…

En faite il existe 3 solutions :

  • Faire un poll en demandant le GetMdState
  • Contourner et récupérer le push (la solution developpé par @mnpg)
  • Et le subscribe event par ONVIF

Ces solutions ont toutes leurs avantages et inconvénients.
La dernière solution qui semblait être la plus pratique, la plus réactive, et la moins contraignante a mettre en place s’avère être mal implémenter dans la caméra, et fonctionne quand elle en as envie, du coup ça perd tout ses avantages…

Ah super merci beaucoup !

Ca a l’air classe la solution onvif, c’est quoi le nom de l’event lors de la détection de motion? Je vais tester voir si j’ai les mêmes problèmes chez moi…

Pour le push, c’est pas mal aussi, y’a un github quelque part ou du code?

Je débarque un peu chez reolink mais le support est comment ? Cest un peu con de pas avoir de webhook surtout avec les camera AI qui ont l’air vraiment pas mal pour le prix.

Pour ONVIF tu peux tester avec un manager ONVIF générique.
Pour le push je laisse @mnpg répondre c’est lui l’expert :slight_smile:
Pour ce qui est des caméras Réolink je ne sais pas comment est le support, en tout cas la seule chose que je peux te dire c’est que le firmware est pas mal buggé, et je m’arrache les cheveux sur le dev du plugin et visiblement d’autres ont rencontré la même problématique avec le dev de plugin sur HomeAssistant…

bonjour @zanzibaru,

la solution de contournement du push dont parle @Jezza34000 est basée sur le fonctionnement push natif des cameras pour lequel les messages de détections, renvoyés par les caméras, sont interceptés par un serveur intermédiaire et traités pour être renvoyés vers la solution de domotique Jeedom (c’est le but) et vers les serveurs officiels Reolink (gestion normale).

  • Caméras concernées : celles ayant la fonctionnalité de push (solution testée avec cameras AI et NON-AI). Il est très possible qu’elle fonctionne également avec les cameras sur batterie

TRES IMPORTANT : la solution ne fonctionne pas pour les cameras ayant un firmware 3.1.x.x, entre autre les cameras AI ayant reçues le nouveau firmware de janvier 2022.


  • Ce serveur intermédiaire est un serveur debian avec les services (ou applicatifs) dnsmasq+nginx(en reverse-proxy)+node-red.

Question de ne pas avoir de soucis avec Reolink (NB: il y a rien d’illégal), cette solution ne sera pas diffuser publiquement pour l’instant mais elle est proposé à ceux qui la souhaite dans le cadre d’un usage personnel uniquement. je ne suis pas responsable d’une mauvaise utilisation de cette solution.

Si vous êtes intéressé pour tester/utiliser cette solution, il faut disposer d’un compte sur github et me faire un MP afin que je vous ajoute en accès au repository contenant la doc d’install + flow node-red

Enfin, je précise que la documentation de la solution ne traite pas la partie installation d’OS sur le serveur intermédiaire. Elle ne traite QUE la partie installation des services (ou applicatifs) sur le serveur ainsi que de l’installation et le paramétrage du flow node-red pour la gestion des détections.

cette solution s’interface avec la fonction d’activation/désactivation du push dans l’application smartphone

Ok merci mnpg, le systeme est excellent mais purée, jusqu’où on doit aller pour avoir une notification basique, c’est vraiment hallucinant, je vais voir si j’arrive à me debrouiller avec des poll du GetMdState ou en ONVIF.

Sinon j’ai testé le ONVIF Manager et les events sont plutôt clean: je reçois bien dans « RuleEngine/CellMotionDetector/Motion » le isMotion à true.

Par contre, j’ai l’impression qu’il n’y a absolument rien dans Jeedom pour suscribe à des topics ONVIF…

@Jezza34000 j’ai une E1 Zoom IPC_515BSD6 en v3.0.0.716 pour info

Je suis d’accord avec toi, c’est un peu une usine a gaz.

C’est vrai, j’ai actuellement une rpi avec cette config.

Je pense qu’avec jeedom en v4.2 et docker , on pourrait le faire. on peut deja sortir l’installation de node-red du serveur. Il resterait les parties dnsmasq et nginx qui pourraient etre mis en conteneurs . Je mets un bemol concernant ce dernier (nginx), car si conteneur jeedom, ca va poser problème avec le port 80 http de jeedom.

Autre solution qui marche, j’ai teste avec une vm virtualbox contenant home-assistant supervisor os et ca fait le taf aussi. Juste faire quelques modifs pour s’adapter au fonctionnement de ha (parametrages de modules dnsmasq et nginx proxy manager) et node-red (adapter le nginx reverse-proxy avec les nodes http in)

@Jezza34000 , par curiosité tu avais réussi à gerer les subscription ONVIF dans ton plugin?

J’ai regardé un peu mon log onvif aprés une journée, franchement c’est plutot correct et fiable.

Je suis un peu dépassé par la façon dont je peux m’y prendre pour scripter, je connais pas bien l’architecture de Jeedom, il faudrait pouvoir creer un déclencheur jeedom via script.

Instinctivement je ferais comme ça:
1.Je fais un script python qui tourne en boucle et qui suscribe à l’event camera (https://github.com/quatanium/python-onvif/blob/master/examples/events.py) = super example de ce que je veux faire
2. Dés que j’ai un event , j’envoie un declencheur à Jeedom.
3.Comment taper dans jeedom via python(ou autre) pour avoir un déclencheur? J’ai regardé le plugin script mais ça me semble un peu leger, je peux pas faire un tourner un service…Etc

Thanks,

Hello, yes j’ai prévu de faire un deamon sur mon plugin pour intégrer la fonctionnalité subscribe ONVIF. Et une fois la souscription effectué, le plugin mettre a jour l’info détection.
Mais cela demande un peu de dev :
Faut que je trouve le temps de m’y pencher dessus…

Ok, je viens de voir et je me posait la question pourquoi les dépendances ne s’installaient pas :wink:

Yes je suis en train de bosser dessus.
Pour le moment le deamon, et l’installation des dépendances ne sont pas fonctionnel.

Il y a un souci du coup, Jeedom essaie d’installer sans arrêt les dépendances et ça génère des erreurs…

1 « J'aime »

OK moi aussi j’ai plein d’erreur avec l’installation des dépendances.

Yes pour le moment les dépendances ne servent à rien donc pas d’impact.
Une update est disponible c’est un ajout de @mnpg + normalement correction du warning dépendances.
Pour le moment je suis en pause sur ce plugin car je met à jour un autre de mes plugins (Weback pour une gamme de robots aspirateur) l’api du constructeur ayant totalement changé je suis en train de réécrire tout… :man_technologist:
Dès que j’ai fini ça je me remet sur Reolink