REOLINK - Liste de commandes via API

Bonjour, j’ai exécuté la commande curl depuis Windows. cela ne me retourne aucun résultat.

Bonjour,

j’ai exécuté cette commande

curl -s -k -X POST -H « Content-Type : application/json » -d ‹ [{« cmd »:« GetMdAlarm »,« action »:1,« param »:{« channel »:0}}] › « https://192.168.1.10/cgi-bin/api.cgi?user=admin&password=admin »

Cela ne me renvoi rien ;(

Bonsoir @dawaman

En réponse à ta question, tu y étais presque, il ne te manque juste de mettre le payload (argument de l’option -d) entre guillemets (les simples quotes ne fonctionnent que sous linux).

voici la commande testée et approuvé (execution de curl sous Windows) :
curl -s -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"GetMdAlarm\",\"action\" :1,\"param\":{\"channel\":0}}]" "https://192.168.1.10/cgi-bin/api.cgi?user=admin&password=admin"

Suite à ton problème de commande, j’ai repris la documentation à ce sujet (à laquelle tu fais référence). Je l’ai relu et apporté des modifications dans les explications pour qu’elles soient plus claires.

Merci à toi

Bonsoir a tous.

Je fais ce post afin de vous informer que ce post n’était pas en veille, il a toujours évolué mais les modifs ajoutées sur le post initial ne font pas apparaitre le post en up.

Pour cela, je ferais régulièrement des posts mensuels ou bimensuels récapitulatifs.

voici donc le premier, qui regroupe les modifs apportées dans le premier post entre avril et juin 2021, modifs que vous trouverez dans les parties documentations, urls, ou commandes applicables ou pas sur la rlc-520 du post 1

1 « J'aime »

Bonjour,

Je viens d’acheter deux caméras Reolink Argus 2 qui fonctionnent sur batterie.
On m’a prévenu que de temps en temps l’accès à distance depuis l’application Reolink pouvait être interrompu et qu’un reboot de la caméra était nécessaire.

J’aimerai dans un premier temps piloter le reboot de ma caméra depuis Jeedom si je constate ce problème.

Je viens d’essayer d’exécuter la commande suivante via un curl sur ma machine unix mais ça ne fonctionne pas.

$ curl https://192.168.1.109/cgi-bin/api.cgi?cmd=Reboot&rs=reboot&user=admin&password=#password#
[1] 8503
[2] 8504
[3] 8505
$ curl: (7) Failed to connect to 192.168.1.109 port 443: Connection refused
[1]   Exit 7                  curl https://192.168.1.109/cgi-bin/api.cgi?cmd=Reboot
[2]-  Done                    rs=reboot
[3]+  Done                    user=admin

J’ai bien évidement valider mon password avant de lancer la commande.

Ma commande est elle correcte ?
Mes caméras sont elles compatibles avec ce type de requête ?
Suis je un boulet et j’ai rien compris ? :upside_down_face:

Merci de votre aide.

salut @Shakirose

pour que ton URL web soit prise en intégralité par ta commande curl, il faut la mettre entre guillemets :
curl "https://192.168.1.109/cgi-bin/api.cgi?cmd=Reboot&rs=reboot&user=admin&password=#password#"
je te renvoies vers un post ou tu auras plus d’infos à ce sujet (le caractere & dans une commande unix)


Tu trouveras dans le tout premier post de ce sujet la liste des cameras compatibles avec les commandes CGI : cf Tableau des produits Reolink pouvant supporter le CGI, RTSP ou ONVIF.

PS : Après vérif, tu ne pourras pas le faire avec les Argus2

@Shakirose : Pour la programmation du reboot de la camera, il resterait (sans certitude par rapport à ton modèle) la solution via le client Reolink (windows ou Mac), via le menu maintenance : Not Found - Reolink Support

NB : l’article reolink que je t’ai fais suivre est encore dans la version 7.x du client.
voici ou tu trouveras la même chose sur la version 8.x

Merci pour ton retour.
Malheureusement il n’y a pas possibilité de programmer un reboot automatique de mon modèle de caméra via l’application Reolink.

Le reboot manuel via l’application pourrait répondre à mon besoin mais si je suis à distance et que la caméra ne répond plus, je ne pourrais pas la redémarrer.
L’idée d’utiliser mon serveur Jeedom pour les relancer me semblait correct.

Est ce qu’il sera tout de même possible d’exécuter des commandes depuis Jeedom pour ces caméras ? (exemple activation/désactivation du PIR)

Si on ne pas interrogé ta camera via la partie CGI, ou par ONVIF (il me semble, mais pas certain, que onvif prends en compte le reboot) cela ne sera pas possible. Les seules solutions que je vois seraient soit de communiquer sur le port de communication (nomme mediaport) -complique a transcoder (cf projet neolink sur github)- pour envoyer les ordres ou soit de faire un reset electrique physique sur la camera par le biais d’un interrupteur manageable a distance (pour la partie reboot uniquement). Il y a peut-etre d’autres mais je n’en ai pas connaissance.
Reolink a un forum communautaire ainsi qu’un canal reddit assez actif, je t’invite a voir aussi de ce cote la pour avoir des reponses a ta question.

Les Argus ne sont pas pilotables par API il me semble…

Bonjour Jer66,
J’ai le même souci que toi en ce qui concerne le mouvement de ma E1_Zoom. quand je clic sur gauche,droite, haut ou bas la camera fait le mouvement jusqu’à sa buté. J’ai essayé en séparant les commandes dans des scripts séparé comme tu l’a indiqué mais le résultat est le même.
Aurais tu ajouté quelques choses d’autre dans les commandes du scripts ?
en tous cas c’est déjà un + de pouvoir la commander a partir de jeedom. Merci aux devs.

Salut quand tu demande un mouvement, il faut automatiquement faire un stop avec le script de mnpg

bonsoir @Theric,
je te fais suivre une modification du script qui prends en compte un arrêt, au bout de x secondes, de la commande ptz de mouvement envoyée.

tu trouveras le code modifié ci-dessus. Il fonctionne de façon identique à celui déposé dans le post.

il suffira de modifier, dans le script, la variable sleeptime (définie dans le script ci-dessous a sleeptime=2), temps en secondes, et mettre le temps d’attente que tu souhaites. Ce temps d’attente correspond à une tempo entre l’exécution de la commande ptz de mouvement et l’exécution de la commande ptz de stop

#!/bin/bash
## Script Reolink_API_PTZ_Commands.sh
## ./Reolink_API_PTZ_Commands.sh <IP> 'commande PTZ Reolink' 'parametre de la commande'  (respecter la casse)
## 'commandes PTZ Reolink' : PtzCtrl, GetPtzPatrol, SetPtzPatrol
## 'parametre de la commande' possible : Left, Right, Up, Down, LeftUp, RightUp, LeftDown, RightDown, ZoomInc, ZoomDec, FocusInc, FocusDec, ZoomPos, ToPos, StartPatrol, StopPatrol, Stop
## Exemple : ./Reolink_API_PTZ_Commands.sh <IP> PtzCtrl Left <vitesse> <presetid>
IP=$1
username="cameraUser"
passwd="<cameraPassword>"

command=$2
parameter=$3

actionptz=0
#temps d'attente avant un stop de l'action (en secondes)
sleeptime=2

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

case $command in
        GetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0}}]";;
        SetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"PtzPatrol\":"${parameter}"}}]";;
        PtzCtrl)
                case $parameter in
                        Left|Right|Up|Down|LeftUp|RightUp|LeftDown|RightDown|ZoomInc|ZoomDec|FocusInc|FocusDec)
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\",\"speed\":${speed}}}]"
                                actionptz=1;;
                        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}}}]";;
                        StartPatrol|StopPatrol)
                                id=${speed}
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"id\":${id},\"op\":\""${parameter}"\"}}]";;
                esac;;
esac

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


if [ "${actionptz}" == 1 ]; then
	parameter="Stop"
	sleep $sleeptime
	payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\"}}]"
	curl -k -X POST -H "Content-Type: application/json" -d "${payload}" "http://${IP}/cgi-bin/api.cgi?cmd=${command}&user=${username}&password=${passwd}"
fi

Le bénéfice que je vois a l’utilisation de ce script par rapport a celui précédent, c’est que les déplacements se feront par à-coups (ou saccades) pour une gestion plus fine de ces derniers par des exécutions successives du script. L’utilisation du script non modifié permettant quand à lui de larges balayages. Rien n’empêche d’avoir les 2 scripts à l’usage, juste mettre un nom différent à ces derniers pour les appeler séparément.

Merci pour ta remarque et tes encouragements.

EDIT : Après tests, il est préférable de mettre 1 seconde d’attente (sleeptime=1). Le balayage complet gauche-droite de ma E1Zoom mets environ une douzaine de secondes.

Moi de mon coté cela ne fonctionne pas sur une RLC-810a

@Neoback45 bonjour tout d’abords, c’est la moindre des choses.
comme je l’ai précisé dans le post, ce flux rtmp fonctionne parfaitement sur la RLC-520 (je viens de refaire un test sous VLC qui a été concluant).
Ayant tellement peu d’informations dans ton post sur le pourquoi cela ne marche pas chez toi (test du flux fait sous jeedom? via VLC? autre?), je ne sais quoi répondre et t’aider dans la résolution de ton problème.
cdt

Post bimensuel récapitulatif JUIN-JUILLET 2021

Ce post regroupe les modifs apportées dans le premier post entre juin et juillet 2021; Vous trouverez le détail de ces informations dans les parties documentations, URLs, ou commandes (applicables ou pas sur la rlc-520) du post 1

  • 26/07/2021 : Ajout URL NVR : Which Cameras can Work with Reolink NVR
  • 25/07/2021 : Ajout URL NVR : How Many HDDs Can I Connect with Reolink NVR System
  • 25/07/2021 : Ajout URLs Projets+Documentations techniques (exemples : reolinkapipy, Camera-proxy, neolink)
  • 24/07/2021 : Ajout URL Code pour générer un QRCode pour caméras WIFI Reolink : cas des SSID de longueur supérieure à 32 caractères + URL Generateur de QRCodes Online (gratuit)
  • 11/07/2021 : Ajout URL Comment fonctionnent les remontées PUSH
  • 27/06/2021 : Ajout de nouvelles commandes récentes non utilisables/applicables sur la RLC-520 (commandes spécifiques aux cameras, statiques ou motorisées, avec detection Personne/Véhicule)
  • 04/06/2021 : Ajout Documentation Reolink (CGI.pdf) -version 2021-
1 « J'aime »

Bonjour,
Désolée j’ai répondu trop rapidement c’était la fin de journée :slight_smile:
J’ai réussi! Ça fonctionne avec ma rlc-810a. J’ai une rlc-811a qui a un projecteur et une sirène et également un haut parleur pour avoir le son bidirectionnel. Tu pense que je peu récupérer les commande de ceux ci?

Bonjour @Neoback45,
tant mieux que cela fonctionne sur ta 810a. De ce que j’ai pu trouvé (non testé), on peut interagir avec :

  • le projecteur led : commandes GetWhiteLed/SetWhiteLed
  • la sirène :
    • commandes GetAudioAlarm/SetAudioAlarm pour les cameras sans Smart Detection (détection personne/véhicule)
    • commandes GetAudioAlarmV20/SetAudioAlarmV20 pour les cameras avec Smart Detection

NB : la sirène est dépendante de la détection de mouvement, elle ne peut pas être utilisé en solo.

Par contre, pour l’audio bidirectionnel, ayant une E1Zoom possédant cette fonctionnalité, je n’ai pas trouvé de commande à ce sujet.
Sur les firmwares récents des cameras avec smart detection, Il existe trois nouvelles commandes qui sembleraient être liés à l’audio (de part leur nom) :

  • GetAudioCfg/SetAudioCfg
  • AudioAlarmPlay

Je ne peux t’en dire plus à ce sujet, je n’ai aucune info sur ces commandes.

NB : Reolink ne nous facilite pas la tâche pour récupérer les informations sur les commandes. Depuis les derniers firmwares des cameras avec Smart Detection, les fichiers json d’interrogation ou de réponse sont cryptés dans l’interface web de ces cameras (celles avec lesquelles on peut communiquer via l’API).

A+

Bonjour mnpg,
Je n’avais pas vu ton message. Merci pour t’être pencher sur mon problème. je viens de tester ton script mais ca ne fonctionne pas.
pour les mouvements il n’y a rien qui bouge et des que j’utilise le zoom j’ai le message d’erreur suivant :

2021-08-04 20:16:19 script Erreur exécution de la commande [Bar][Reolink E1 Zoom][Zoom +] : Erreur sur /var/www/html/plugins/script/data/Reolink_API_PTZ.sh 192.168.1.26 PtzCtrl ZoomInc 2>&1 valeur retournée : 2. Détails : [ { « cmd » : « PtzCtrl », « code » : 1, « error » : { « detail » : « param error », « rspCode » : -4 } } ] /var/www/html/plugins/script/data/Reolink_API_PTZ.sh: line 50: syntax error near unexpected token fi' /var/www/html/plugins/script/data/Reolink_API_PTZ.sh: line 50: fi’
2021-08-04 20:16:19 camera Erreur exécution de la commande [Bar][Camera Bar Temporise][Zoom +] : Erreur sur /var/www/html/plugins/script/data/Reolink_API_PTZ.sh 192.168.1.26 PtzCtrl ZoomInc 2>&1 valeur retournée : 2. Détails : [ { « cmd » : « PtzCtrl », « code » : 1, « error » : { « detail » : « param error », « rspCode » : -4 } } ] /var/www/html/plugins/script/data/Reolink_API_PTZ.sh: line 50: syntax error near unexpected token fi' /var/www/html/plugins/script/data/Reolink_API_PTZ.sh: line 50: fi’

pour info, j’ai dupliqué la camera et le script pour travailler dessus sans altérer la version qui fonctionne avec le script original.

Entre temps j’avais solutionner mon problème en ajoutant la requête « stop » sur la ligne qui demande l’URL de stop

image
image

Merci pour le temps passé et ton aide sur les commandes API des réolink.
T.

bonjour @Theric,
oops! mea culpa! merci pour l’info. Il y a une erreur (« ; » mal placé) dans le script à la ligne :

if [ "${actionptz}" == 1 ] then;

la remplacer par :

if [ "${actionptz}" == 1 ]; then

Pour le pb du zoom sur ta E1Zoom,le résultat que tu as est normal. La commande PtzCtrl ZoomInc (mais aussi ZoomDec, FocusInc et FocusDec) ne fonctionne pas sur la E1-Zoom. Cette partie zoom (et focus) de la E1-Zoom passe par la commande StartZoomFocus.

EDIT :
je te fais suivre la partie du script à modifier pour l’utiliser :

REMPLACER

case $command in
        GetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0}}]";;
        SetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"PtzPatrol\":"${parameter}"}}]";;
        PtzCtrl)
                case $parameter in
                        Left|Right|Up|Down|LeftUp|RightUp|LeftDown|RightDown|ZoomInc|ZoomDec|FocusInc|FocusDec)
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\",\"speed\":${speed}}}]"
                                actionptz=1;;
                        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}}}]";;
                        StartPatrol|StopPatrol)
                                id=${speed}
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"id\":${id},\"op\":\""${parameter}"\"}}]";;
                esac;;
esac

PAR :

case $command in
        GetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0}}]";;
        SetPtzPatrol)
                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"PtzPatrol\":"${parameter}"}}]";;
        PtzCtrl)
                case $parameter in
                        Left|Right|Up|Down|LeftUp|RightUp|LeftDown|RightDown|ZoomInc|ZoomDec|FocusInc|FocusDec)
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"op\":\""${parameter}"\",\"speed\":${speed}}}]"
                                actionptz=1;;
                        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}}}]";;
                        StartPatrol|StopPatrol)
                                id=${speed}
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"channel\":0,\"id\":${id},\"op\":\""${parameter}"\"}}]";;
                esac;;
        StartZoomFocus)
                case $parameter in
                        ZoomPos|FocusPos)
                                payload="[{\"cmd\":\""${command}"\",\"action\":0,\"param\":{\"ZoomFocus\":{\"channel\":0,\"op\":\""${parameter}"\",\"pos\":${speed}}}}]";;
                esac;;
esac

Pour faire fonctionner ton zoom sur la E1Zoom, tape la commande :

/var/www/html/plugins/script/data/Reolink_API_PTZ.sh 192.168.1.26 StartZoomFocus ZoomPos <n°pos>
(remplace <n°pos> par une valeur entre 0 -loin- et 32 -près- cf image ci-dessus)

NB : Bien vérifier que l’autofocus est activé