REOLINK - Liste de commandes via API

Bonjour @mnpg
Un petit exemple, ce serait possible ?
Merci d’avance

salut @kenderv44,
j’ai adapté le script que j’utilise par rapport aux commandes PTZ. tu le trouveras ci-dessous

  • Nom du script : Reolink_API_PTZ_Commands.sh
  • Valeurs à remplacer dans ce dernier, suivant tes informations
IP="***.***.***.***"     
username="***********"
passwd="************"

NB : Dans la ligne de la commande curl (curl -k -X POST.....), la requête se fait en https. Si tu peux le faire en http 
> mettre "http://..." au lieu de de "https://..." 

NB2 : la vitesse de déplacement est positionné à 32 (variable speed=32). Tu peux mettre ce que tu veux
  • Commande script de type Script / Action / Défaut (RESPECTER LA CASSE)

/var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh PtzCtrl Commande
(Commande possible : Left, Right, Up, Down, LeftUp, RightUp, LeftDown, RightDown, Stop)

NB : il faudra créer autant de commande de script que de commandes PTZ

exemple :

commande PanRight 
 /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh PtzCtrl Right

  • Script Reolink_API_PTZ_Commands.sh
#!/bin/bash
## Script Reolink_API_PTZ_Commands.sh
## ./Reolink_API_PTZ_Commands.sh 'commande PTZ Reolink' 'parametre de la commande'  (respecter la casse)
## 'commande PTZ Reolink' : PtzCtrl
## 'parametre de la commande' possible : Left, Right, Up, Down, LeftUp, RightUp, LeftDown, RightDown, Stop
## Exemple : ./Reolink_API_PTZ_Commands.sh PtzCtrl Left
IP="***.***.***.***"
username="***********"
passwd="************"

command=$1
parameter=$2

#Variable vitesse de déplacement -ici à 32-
speed=32

case $parameter in
  Left|Right|Up|Down|LeftUp|RightUp|LeftDown|RightDown) 
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\",\"speed\":${speed}}}]";;
  Stop)
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\"}}]";;
esac

curl -k -X POST -H "Content-Type: application/json" -d "${payload}" "https://${IP}/cgi-bin/api.cgi?cmd=${command}&user=${username}&password=${passwd}"

je reprécise que je n’ai pas testé le script puisque je n’ai pas de caméra motorisé mais suis confiant sur la syntaxe. Également, je ne gère pas dans ce dernier les erreurs de communication ainsi que l’utilisation d’un token pour exécuter les commandes (commandes lancés avec le login et mdpasse)

Merci de me préciser si c’est fonctionnel.

2 « J'aime »

Merci beaucoup de ta réponse que je trouve ce matin. J’étais absent ce week-end et je vais tester cela aujourd’hui. Je te tiens au courant.

Bonjour,
Alors, cela fonctionne parfaitement bien lorsque dans adresse IP je donne l’adresse locale de la caméra 192.168.0.23. Lorsque je remplace cette adresse par « mon.nom.de.domaine » ou mon adresse ip publique et que je teste le script (dans le plugin script) j’ai bien le message « Action exécutée avec succès » mais je n’ai pas de mouvement de cam. Si je rajoute un numéro de port je récupère cette erreur : Erreur sur /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh PtzCtrl Left 2>&1 valeur retournée : 35. Détails : % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0 0 0 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0 curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol. Il semble que ce soit une erreur de connexion SSL.
En tout cas merci beaucoup de ton aide.
Connais-tu ce topic qui donne des infos qui me semblent intéressantes même si je ne sais pas m’en servir : [Tuto] Reolink API CGI commands - Forum Domoticz en français

Bonjour @kenderv44 et merci pour ton retour
En reponse à tes questions

Tant mieux, je n’étais pas sûr de l’URL (pas d’argument rs ou channel à ajouter finalement)

ta camera a une IP publique ou un nom de domaine ? Si c’est le cas, cela devrait fonctionné à condition que tu es redirigé les ports tcp 80 -http- et 443 -https- de l’IP publique vers IP en local de la camera. Tu ne confonds pas avec l’IP de Jeedom.

NB: c’est vrai, je n’avais pas preciser que les informations a changer dans le script sont l’ip de la camera, le login et mot de passe du compte de gestion autorise a se connecter via l’interface web de la camera.

si cela a fonctionné avec l’P locale et que tu n’ai pas modifié le script, tu dois avoir les ports http (tcp 80) et https (tcp 443) par défaut dans les paramètres de la caméra.
pour la commande CURL, si tu n’utilises pas ces ports http (80) et https (443) mais tu en a mis d’autres, tu peux préciser le port TCP dans l’url comme ça :

https://${IP}:PORT/cgi-bin/api.cgi…
http://${IP}:PORT/cgi-bin/api.cgi…

Remplaces PORT par le numero du port tcp que tu as defini pour le http (ou http)

Oui, je l’avais vu. Ce qui est intéressant dans ce dernier, c’est la méthode pour voir les commandes qui sont envoyées à la caméra via le WEB -en http- (commandes visibles via le debugger du navigateur).

sur cet autre topic (indiqué dans mon premier post) : Control Reolink RLC-423 with API | IP Cam Talk , il donne une autre façon de trouver les commandes à partir du contenu du firmware.

@kenderv44,
Si tu souhaites recuperer des informations de la camera -toujours via le plugin script- (comme par exemple l’utilisation CPU ou la detection de mouvement), j’avais fait un post à ce sujet mais que je n’ai pas mentionne dans celui-ci :

Bonjour @mnpg et merci de tes commentaires. J’avais bien modifié la commande curl comme indiqué mais, gros boulet que je suis, j’avais oublié de mettre les commandes Left, Rigth et autres dans mon script.

Je précise aussi que lorsqu’on crée le script le ne faut pas oublier de faire un chmod 775 pour qu’il puisse s’exécuter.
TOUT FONCTIONNE NICKEL avec le nom de domaine. Pourquoi ne pas essayer d’aller un peu plus loin dans la détection de présence et/ou l’envoi de notifs (mail, sms, etc.) en cas d’alerte.
Merci à toi et bonne journée

Bonjour @kenderv44,
Concernant les droits, si tu créés un script via le plugin script, tout est mis automatiquement (appartenance du fichier a l’utilisateur www-data et acl en 775)

Bonjour @mnpg,

j’ai 2* REOLINK RLC-423
ce sont des PTZ - 5MP
très franchement NETTEMENT SUPERIEURES à la Foscam 9928P (que j’ai remplacées)

intéressé pour compléter l’intégration « REOLINK » dans on plugin ?
si je peux t’aider … avec plaisir :wink:

A+

@mnpg

OK, je l’ai créé avec Noteped et chargé avec le plugin JeeXplorer ceci expliquant cela.

@kenshirohokuto et @mnpg
J’ai vu aujourd’hui une maj du plugin caméra qui a ajouté une caméra Reolink RLC-410-5MP avec l’aide de @Dorsad.

07/07/2020

  • Correction d’un soucis sur le port par default de l’url de flux pour les caméras Foscam merci @nebz
    *** Ajout de la camera Reolink RLC-410-5MP merci @Dorsad**
  • Ajout de RocketCam (Freebox) merci @JAG

Peut-être serait-il intéressant d’aller plus loin avec ces caméras qui, c’est vrai, ont un rapport qualité/prix excellent. Si je peux aider pour tester …

@kenderv44 oui c’est à cause de cette MAJ que j’ai proposé mon « aide » toute relative :wink:
la RLC410 n’est pas PTZ, c’est une fixe :slight_smile:
A+

@kenshirohokuto et @mnpg
Je viens de créer avec le plugin caméra une virtuelle cam RLC-410-5MP. On retrouve seulement l’URL de snapshot et l’URL du flux que nous connaissons déjà mais c’est un bon début. Comme indiqué par @mnpg au début de ce sujet je pense qu’il faudra, pour l’instant, passer par son script pour aller plus loin.

Partant de ton script j’ai essayé d’avoir un résultat json qui s’afficherai peut-être comme un message avec le script suivant :
#!/bin/bash

curl -s -k -X POST -H « Content-Type : application/json » -d ‹ [{« cmd »:« GetNetPort »,« action »:1,« param »:{}}] › « http://mon.nom.de.domaine:port/cgi-bin/api.cgi?user=monuser&password=monpasswd »
et l’exemple donné plus haut :

Mais je n’ai aucun retour sinon que l’action s’est exécutée avec succès.
Que dois rajouter pour obtenir l’affichage du json ? Merci et dis moi si j’abuse. Mais j’apprends.

cette commande curl est à lancer directement depuis un terminal linux. Je ne passe pas par un script bash pour l’exécuter.
Cela me sert juste pour récupérer la structure et définitions des informations du json d’une commande de la reolink. Je prends le cas de la même commande curl de récuperation d’information de la commande GetIrLights.

curl -s -k -X POST -H "Content-Type : application/json" -d '[{"cmd":"GetIrLights","action":1,"param":{}}]' "https://#IP#/cgi-bin/api.cgi?user=#username#&password=#password#"

Resultat de la commande :

[
   {
      "cmd" : "GetIrLights",
      "code" : 0,
      "initial" : {
         "IrLights" : {
            "state" : "Auto"
         }
      },
      "range" : {
         "IrLights" : {
            "state" : [ "Auto", "Off" ]
         }
      },
      "value" : {
         "IrLights" : {
            "state" : "Auto"
         }
      }
   }
]

si tu veux programmer la gestion de l’infrarouge de la camera, tu vois qu’il n’y a que 2 paramètres d’état (state = Auto ou state = Off) de possible à prendre en compte dans l’élaboration du fichier json à envoyer à la caméra.

bonjour @kenshirohokuto,
merci pour ta proposition, c’est avec grand plaisir également.
On pourra aller plus loin dans la connaissance des autres commandes que je n’aborde pas dans mes posts dont celles ci-dessous qui sont surement fonctionnelles sur tes caméras.

  • PtzCtrl, GetPtzSerial, SetPtzSerial, GetPtzPreset, SetPtzPreset, GetPtzPatrol, SetPtzPatrol, GetPtzTattern, SetPtzTattern
  • GetAutoFocus, SetAutoFocus, GetZoomFocus, StartZoomFocus
  • GetAudioAlarm, SetAudioAlarm
  • GetPowerLed, SetPowerLed

N’ayant pas trop de temps de dispo cette semaine (un peu busy), je te recontacterai par MP.

@mnpg
Parfait, j’ai lancé cette commande depuis Putty et j’ai eu le résultat escompté.

@mnpg et @kenshirohokuto
Ayant l’intention de compléter l’achat de caméras Reolink, je serai ravi de participer à vos discussions sur ce sujet si cela ne vous pose pas de problèmes. Merci

Bonjour ici,

Je n’avais pas vu ce sujet.
Effectivement je possède 2 caméras Reolink RLC 410 5MP qui n’ont pas de PTZ. J’ai demandé l’ajout sur un autre topic.

Pour vos modèles de caméras, faites une demande pour les ajouter ainsi que les commandes disponibles pour que tout soit disponible sur le plugin caméra.

Salut
Je découvre cette documentation d’API pour ma Reolink 520, c’est vraiment super d’avoir un truc aussi bien documenté… J’ai testé, chez moi la commande suivante fonctionne :

curl -s -k -X POST -H "Content-Type : application/json" -d '[{"cmd":"SetIrLights","action":0,"param":{"IrLights":{"state":"Auto"}}}]' "https://192.168.0.129/cgi-bin/api.cgi?rs=abcd&user=admin&password=xxxxx"
[
   {
      "cmd" : "SetIrLights",
      "code" : 0,
      "value" : {
         "rspCode" : 200
      }
   }
]

Mais pas celle-ci :

curl -s -k -X POST -H "Content-Type : application/json" -d '[{"cmd":"SetIrLights","action":0,"param":{"IrLights":{"state":"On"}}}]' "https://192.168.0.129/cgi-bin/api.cgi?rs=abcd&user=admin&password=xxxxx"
[
   {
      "cmd" : "SetIrLights",
      "code" : 1,
      "error" : {
         "detail" : "set config failed",
         "rspCode" : -13
      }
   }
]

Pourtant c’est bien l’activation de l’infrarouge que je cherche à faire fonctionner. Une idée pour le code retour -13 ?

MErci
++

Merci @mnpg, ton post va aider à l’intégration dans Jeedom de ces caméras au très bon rapport qualité/prix.

J’avais hésité à prende une Reolink RLC-423 mais je ne connaissais pas suffisamment la marque et l’API était peu documenté avant le poste de @mnpg. Du coup je me suis rabattu sur la Foscam 9928P.
@kenshirohokuto peux tu nous faire un petit retour détaillé ? Cas d’utilisation (intérieur/extérieur), vision nocturne … Et nous dire le prix d’achat ? Car de mémoire elles ne sont pas données +250€

J’ai acheté l’ancienne version dôme RLC-420 5MP, je l’ai un peu testé et j’avoue que la qualité d’image et top vu le prix <50 €. J’avais commencé à regarder pour trouver l’API et les commandes mais pas eu le temps de creuser. Je vais repartir de tes travaux @mnpg pour fournir une conf de ce modèle pour la communauté.

Je suis intéressé par le modèle PTZ E1 Zoom pour l’intérieur. Si certains l’ont et peuvent faire un retour, merci d’avance.

Bonjour @kenaddams42,
En reponse à ta question, le parametre state=on n’existe pas. Comme je l’ai precise, la methode que je decris dans le 2eme post (curl de commandes Getxxx) te donnera les parametres possibles lors de l’execution de la commande Setxxx correspondante. Dans le cas de GetIrLights/SetIrLights, le parametre State ne peut prendre que 2 valeurs possibles : Auto ou Off.
Le state=On de ta commande n’est pas compris par l’API de la camera et tu as en retour le code d’erreur -13 (set config failed) comme quoi la configuration que tu as poussé via le curl n’a pas pu se faire, a échoué.
A contrario, le code de retour 200 correspondant a la bonne execution de la commande