REOLINK - Liste de commandes via API

Salut @mnpg

Je viens d’investir dans deux Réolink : RLC-410W et E1 Pro
Pour la 410W, j’ai bien la possibilité de faire des snapshots (https://#IP#/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=abcdefg&user=#username#&password=#password#) et de voir le flux rtsp (rtsp://#username#:#password#@#ip#:554/h264Preview_01_main) et comme la caméra est une fixe, je n’ai pas besoin de beaucoup plus.

Pour la E1 Pro, qui est une mobile :
J’ai bien le flux rtsp (rtsp://admin:Festina1.@192.168.1.35/h264Preview_01_sub) ATTENTION la fin de l’url est légèrement différente que celle pour la 410W
Mais impossible d’avoir des snapshots car la E1 Pro est exclue d’après le support réolink : How to Capture Live JPEG Image of Reolink Cameras via Web Browsers – Reolink Support
Je voudrais utiliser les fonctionnalités de tilt up and down pour mettre ma caméra au plafond quand nous sommes présents et en position de surveillance (utiliser les positions mémorisées si c’est possible) quand nous sommes présents. Mais je ne comprends pas la méthode qu’il faut utiliser, tes explications qui sont claires pour d’autres me sont opaques certainement par manque de connaissance :frowning:
Quand je lance cette url dans un navigateur https://192.1xx.xx.xx/cgi-bin/api.cgi?cmd=GetIrLights&rs=abscde&user=xxxxxx&password=xxxxx (les x sont remplacés par les bons caractères) , j’obtiens l’ereur « La connexion a échoué. Firefox ne peut établir de connexion avec le serveur à l’adresse 192.1xx.xx.xx » alors que cela fonctionne pour la 410w.
Est ce simplement par ce que la E1Pro n’est pas compatible, c’est la compatibilité CGI qu’il faut avoir pour ça?
Merci d’avance

1 « J'aime »

salut @lr3674,
en me basant sur les informations fournis par Reolink (Reolink Support) , la E1 Pro n’est pas compatible GCI. Par contre, à vérifier, elle est ONVIF compatible et donc paramétrable à distance.

Oui, elle est compatible ONVIF d’après le tableau du lien du support.
Par contre, existe t’il un tuto, des explications pour faire fonctionner ONVIF avec jeedom?

Merci

1 « J'aime »

Bonjour à tous et en particulier @mnpg et @kenshirohokuto qui ont fait bien avancer le schmilblick. Je suis ce topic depuis le début et grâce à leur travail j’ai pu avancer un peu. Ces caméras présentent, à mon sens, un rapport qualité/prix très intéressant. J’en possède 3, 2 C1 Pro et plus récemment une LUMUS. Toutes donnent une image très propre et très nette. Ne serait-il pas envisageable qu’un spécialiste des plugins en fasse un spécifique à ces caméras dont le traitement est un peu particulier ou serait-il envisageable de les intégrer au plugin caméra ? Par ailleurs je me joins à @lr3674 pour sa question sur les caméras ONVIF. Bonne journée à tous.

Salut,

Je suis interessé par le PTZ Preset, est ce que quelqu’un a les commandes pour ça?
Merci

tu peux trouver ici
reolinkapi PTZ

1 « J'aime »

Bonjour,

Je viens de recevoir une E1Zoom compatible et je cherche à la positionner soit tête en l’air quand nous sommes présent, soit en position normale pour filmer la pièce quand nous sommes absent.
J’ai créé deux PTZ Preset (‹ plafond › et ‹ vision › ) dans l’application réolink.
Avec cette commande : http://xxxxxxxxxx/cgi-bin/api.cgi?cmd=GetPtzPreset&rs=abscde&user=xxxxxxxx&password=xxxxxxxxxxxx je récupère bien mes PTZ Preset : ce sont l’id1 et l’id2

[ { "cmd" : "GetPtzPreset", "code" : 0, "value" : { "PtzPreset" : [ { "channel" : 0, "enable" : 1, "id" : 1, "name" : "vision" }, { "channel" : 0, "enable" : 1, "id" : 2, "name" : "plafond" }, { "channel" : 0, "enable" : 0, "id" : 3, "name" : "pos3" }, { "channel" : 0, "enable" : 0, "id" : 4, "name" : "pos4" }, { "channel" : 0, "enable" : 0, "id" : 5, "name" : "pos5" }, { "channel" : 0, "enable" : 0, "id" : 6, "name" : "pos6" }, { "channel" : 0, "enable" : 0, "id" : 7, "name" : "pos7" }, { "channel" : 0, "enable" : 0, "id" : 8, "name" : "pos8" }, { "channel" : 0, "enable" : 0, "id" : 9, "name" : "pos9" }, { "channel" : 0, "enable" : 0, "id" : 10, "name" : "pos10" }, { "channel" : 0, "enable" : 0, "id" : 11, "name" : "pos11" }, { "channel" : 0, "enable" : 0, "id" : 12, "name" : "pos12" }, { "channel" : 0, "enable" : 0, "id" : 13, "name" : "pos13" }, { "channel" : 0, "enable" : 0, "id" : 14, "name" : "pos14" }, { "channel" : 0, "enable" : 0, "id" : 15, "name" : "pos15" }, { "channel" : 0, "enable" : 0, "id" : 16, "name" : "pos16" }, { "channel" : 0, "enable" : 0, "id" : 17, "name" : "pos17" }, { "channel" : 0, "enable" : 0, "id" : 18, "name" : "pos18" }, { "channel" : 0, "enable" : 0, "id" : 19, "name" : "pos19" }, { "channel" : 0, "enable" : 0, "id" : 20, "name" : "pos20" }, { "channel" : 0, "enable" : 0, "id" : 21, "name" : "pos21" }, { "channel" : 0, "enable" : 0, "id" : 22, "name" : "pos22" }, { "channel" : 0, "enable" : 0, "id" : 23, "name" : "pos23" }, { "channel" : 0, "enable" : 0, "id" : 24, "name" : "pos24" }, { "channel" : 0, "enable" : 0, "id" : 25, "name" : "pos25" }, { "channel" : 0, "enable" : 0, "id" : 26, "name" : "pos26" }, { "channel" : 0, "enable" : 0, "id" : 27, "name" : "pos27" }, { "channel" : 0, "enable" : 0, "id" : 28, "name" : "pos28" }, { "channel" : 0, "enable" : 0, "id" : 29, "name" : "pos29" }, { "channel" : 0, "enable" : 0, "id" : 30, "name" : "pos30" }, { "channel" : 0, "enable" : 0, "id" : 31, "name" : "pos31" }, { "channel" : 0, "enable" : 0, "id" : 32, "name" : "pos32" }, { "channel" : 0, "enable" : 0, "id" : 33, "name" : "pos33" }, { "channel" : 0, "enable" : 0, "id" : 34, "name" : "pos34" }, { "channel" : 0, "enable" : 0, "id" : 35, "name" : "pos35" }, { "channel" : 0, "enable" : 0, "id" : 36, "name" : "pos36" }, { "channel" : 0, "enable" : 0, "id" : 37, "name" : "pos37" }, { "channel" : 0, "enable" : 0, "id" : 38, "name" : "pos38" }, { "channel" : 0, "enable" : 0, "id" : 39, "name" : "pos39" }, { "channel" : 0, "enable" : 0, "id" : 40, "name" : "pos40" }, { "channel" : 0, "enable" : 0, "id" : 41, "name" : "pos41" }, { "channel" : 0, "enable" : 0, "id" : 42, "name" : "pos42" }, { "channel" : 0, "enable" : 0, "id" : 43, "name" : "pos43" }, { "channel" : 0, "enable" : 0, "id" : 44, "name" : "pos44" }, { "channel" : 0, "enable" : 0, "id" : 45, "name" : "pos45" }, { "channel" : 0, "enable" : 0, "id" : 46, "name" : "pos46" }, { "channel" : 0, "enable" : 0, "id" : 47, "name" : "pos47" }, { "channel" : 0, "enable" : 0, "id" : 48, "name" : "pos48" }, { "channel" : 0, "enable" : 0, "id" : 49, "name" : "pos49" }, { "channel" : 0, "enable" : 0, "id" : 50, "name" : "pos50" }, { "channel" : 0, "enable" : 0, "id" : 51, "name" : "pos51" }, { "channel" : 0, "enable" : 0, "id" : 52, "name" : "pos52" }, { "channel" : 0, "enable" : 0, "id" : 53, "name" : "pos53" }, { "channel" : 0, "enable" : 0, "id" : 54, "name" : "pos54" }, { "channel" : 0, "enable" : 0, "id" : 55, "name" : "pos55" }, { "channel" : 0, "enable" : 0, "id" : 56, "name" : "pos56" }, { "channel" : 0, "enable" : 0, "id" : 57, "name" : "pos57" }, { "channel" : 0, "enable" : 0, "id" : 58, "name" : "pos58" }, { "channel" : 0, "enable" : 0, "id" : 59, "name" : "pos59" }, { "channel" : 0, "enable" : 0, "id" : 60, "name" : "pos60" }, { "channel" : 0, "enable" : 0, "id" : 61, "name" : "pos61" }, { "channel" : 0, "enable" : 0, "id" : 62, "name" : "pos62" }, { "channel" : 0, "enable" : 0, "id" : 63, "name" : "pos63" }, { "channel" : 0, "enable" : 0, "id" : 64, "name" : "pos64" } ] } } ] 

Ensuite, ca se complique pour moi…
Est ce que je dois créer deux scripts nommés « PTZPresetId1 » et « PTZPresetId2 » dans le plugin script? Et chaque script doit comporter une commande Action/Défaut dans laquelle je mets une commande curl? ou une url de même type que j’ai utilisé pour voir mes PTZPreset en l’adaptant?
Pour adapter la commande, j’ai trouvé ceci dans le lien donné @nechry mais ça ne me parle pas ppur la’adapter :frowning:

def go_to_preset(self, speed: float = 60, index: float = 1) -> Dict:
        """
        Move the camera to a preset location
        :return: response json
        """
        return self._send_operation('ToPos', speed=speed, index=index)

Merci de votre aide.

PS : si besoin de passer des comamndes pour récupérer des infos, j’ai aussi un Réoling RL-410W

pour ma part, j’ai un script « Reolink_API_PTZ_Commands.sh » pour le quel je peux lui passer une série d’args.

Reolink_API_PTZ_Commands.sh 192.168.0.37 PtzCtrl ToPos 16 4
  • IP de la caméra
  • Type de Commande
  • Commande
  • Param1 (speed)
  • Param2 (id position)

Reolink_API_PTZ_Commands.sh.txt (1,3 Ko)

1 « J'aime »

Merci @nechry pour cette réponse.
Comment fais tu pour le mettre en place dans jeedom?
Tu mets ce script dans html/plugins/script/data ?
Ensuite tu crées un nouveau script dans le plugin « script » ?
Et tu crées des commandes dans ce script? Si oui, comment fais tu?
J’ai essayé ceci mais cela ne marche pas :frowning:

Bonjour @lr3674, en réponse :

pour l’emplacement du fichier, c’est bien cet endroit.
par la suite

  • déposer le fichier de @nechry, sans l’extension .txt (juste le .sh) dans ce répertoire /var/www/html/plugins/script/data
  • en ssh (en compte root), aller dans le répertoire, changer les droits et donner l’appartenance du fichier à www-data.
chmod 775 Reolink_API_PTZ_Commands.sh
chown www-data:www-data Reolink_API_PTZ_Commands.sh

IMPORTANT : Avant de faire ces actions, il faut éditer le script Reolink_API_PTZ_Commands.sh et remplacer les valeurs des variables username et passwd pour celles que tu utilises pour interroger ta camera (lignes 7 et 8 du script) :

username="ton login"
passwd="ton mot de passe"

oui, tout à fait

créer autant de commandes script que d’action suivant ce modèle :

Nom : « nom de ta commande »
Type script : script
Type : action / Défaut
*Requête : /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh arg1 arg2 arg3 arg4 arg5
(remplacer les arguments arg1,arg2,… arg5 comme ceux indiqués dans le post de @nechry )

 arg1 :  IP de la caméra
 arg2 : Type de Commande (PtzCtrl)
 arg3 : Commande (ToPos)
 arg4 : Param1 (speed)
 arg5 : Param2 (id position)

Exemples de commandes :


NB : dans le 2eme exemple ,tu peux te servir d’une action/liste pour les differentes positions de ta camera et les utiliser avec la même commande.

  • liste à renseigner dans la zone paramètres de la commande : ici j’ai mis 1|Haut;2|Bas
  • argument #select# dans la commande
1 « J'aime »

voilà sinon autre façon sans passé en ssh est de créer directement via jeedom et simplement copier coller le contenue du script.

L’idée ici est d’avoir un script qui prend en charge tout les commandes que tu souhaites et pour autant de caméra que tu as. sous réserve d’avoir un login mot de passe identique entre les caméras.

2 « J'aime »

[EDIT] finalement, en créant un fichier directement dans jeexplorer, puis en copiant le contenu du script dedans, puis en changeant les droits avec chmod et chown via ssh, cela marche :slight_smile: :slight_smile:
Merci @mnpg et @nechry
Maintenant je vais augmenter tout ça avec des commandes de moyvement et la récupération des infos CPU, etc.

merci pour votre aide, mais pas encore opérationnelle :frowning:
J’ai cette erreur :

[2021-02-09 18:34:52][DEBUG] : Execution de : /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh 192.168.1.42 PtzCtrl ToPos 16 1 2>&1
[2021-02-09 18:34:52][ERROR] : Erreur exécution de la commande [Alarme][Camera Salon PTZPreset][PTZ] : Erreur sur /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh 192.168.1.42 PtzCtrl ToPos 16 1 2>&1 valeur retournée : 127. Détails : sh: 1: /var/www/html/plugins/script/data/Reolink_API_PTZ_Commands.sh: not found

J’ai mis le fichier sous le répertoire :


Ensuite j’ai modifié les droits en ssh , root sous jeedom :

Le fichier est celui ci : (j’ai juste mis des xxxxx à la place de mon mdp) mais faut il enlever les guillemets avant et après?

#!/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=$1
username="admin"
passwd="xxxxxxxxxx"

command=$2
parameter=$3

#Variable vitesse de déplacement -ici à 32-
speed=$4
id=$5

case $parameter in
  Left|Right|Up|Down|ZoomInc|ZoomDec|FocusInc|FocusDec) 
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\",\"speed\":${speed}}}]";;
  Stop)
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\"}}]";;
  ZoomPos)
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"ZoomFocus\":{\"channel\":0,\"op\":\""${parameter}"\",\"pos\":${speed}}}}]";;      
  ToPos)
        payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"id\":${id},\"op\":\""${parameter}"\",\"speed\":${speed}}}]";;
esac

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

J’ai fait ces deux commandes dans un équipement du plugin script :


J’ai l’impression d’avoirtout fait, mais j’ai du mal faire un truc pour que cela ne marche pas lol

merci

j’ai fais un post que pour récupérer les valeurs cpuUsed, codecRate et netThroughput et comment créer les commandes adhoc toujours en script:

Salut @mnpg
Je l’avais vu plus haut, et mis en place, c’est top. ! merci encore
Est ce qu’il y aurait des choses que vous voudriez faire sur la E1Zoom et sur la RLC-410W car j’ai ces deux caméras. Je peux faire le commis :wink:

!! INFORMATION IMPORTANTE !! :
Adobe Flash étant abandonné le 31 décembre 2020 et plus fonctionnel depuis 12 janvier 2021, Reolink a développé des nouveaux firmwares pour les caméras.
L’interface web utilise maintenant du HTML5.

Caméras concernées : Celles ayant une interface web avec du Flash.

Recommandation dans le choix du Firmware :

  • Sélectionner le firmware qui correspond A LA FOIS à votre modèle de votre caméra (normal!) et SURTOUT que le numéro de hardware soit celui de votre caméra.

EN EXEMPLE : Pour mon cas, ayant une caméra RLC-520, il y a 2 firmwares récents pour le même modèle MAIS :

  • l’un basé sur le numéro de hardware IPC_515B16M5M
  • l’autre basé sur le numéro de hardware IPC_51516M5M → celui de ma caméra
    RLC-520_FirmwareVersion_avantMAJ-10.02.2021_MOD

Où trouvé le numéro de Hardware (Hardware No / Hw No) ?

N’oubliez pas de sauvegarder votre configuration avant toute opération de mise à jour!

1 « J'aime »

Bonjour,

J’ai une reolink rlc-410. J’ai téléchargé le firmware (j’en ai trouvé d’ailleurs deux versions différentes sur le site reolink !) mais rien à faire la mise à jour plante à chaque fois.

J’espère ne pas avoir de problème si la mise à jour n’est pas faite.

A+
Bernard

P-S : Peut-être faut-il une carte sd installée dans la camera ?

bonjour @Bercolly,
tu as quelle version de hardware pour ta caméra?
il y a plusieurs modèles rlc-410 (RLC-410, RLC-410-5MP, RLC-410S, RLC-410W, RLC-410W-5MP et RLC-410WS), quel est ton modèle?
tu trouveras cette information toujours sur la même page web ou tu peux trouver la version de firmware ainsi que le numéro de hardware. (cf mon post précédent)

pour la SDCard, cela n’est pas nécessaire. Pour ma part, j’ai pu upgradé la cam sans.

Re,

J’ai une rlc-410-5MP. J’ai vérifié le n° de firmware. Tout est OK, mais la mise à jour se plante à chaque fois.
Sans aucun message explicatif.
De plus j’ai trouvé deux mises à jour du même frimware sur le site Reolink. Aucune ne fonctionne sur ma camera.
Je fais la mise à jour depuis un client reolink PC.

Voici les refs du firmlware téléchargé : IPC_51516M5M.136_20121100.RLC-410-5MP.OV05A10.5MP.REOLINK.pak
Voici les infos de ma camera :
rlc-410-infos

Re,

Bon finalement, j’ai trouvé le bon firmware.

Reolink a mis une belle pagaille en donnant plusieurs liens erronés pour les mises à jour de firmware.

Pour la RLC-410 IPC_51516M5M , voici le lien qui fonctionne :
https://reolink-storage.s3.amazonaws.com/website/firmware/20210106+firmware/RLC-410-5MP_v300136_20121100.zip

A+
Bernard

Si tu vas sur leur site ici : Download Center – Reolink et que tu choisis le menu « PoE IP Cameras & NVRs », tu retrouves la RLC-410 et tu choisis firmware.
Ensuite dans la page qui s’ouvre, tu as un menu déroulant « Firmware Version » avec 3 choix de firmware et même si chacun possède le même numéro, tu vois que chacun est destiné à un hardware différent, pour ta caméra IPC_51516M5M c’est le premier de la liste. Le second est pour les IPC-515B16M5M et le troisième est pour IPC-51316M