REOLINK - Liste de commandes via API

MAJ POST :

  • Mars 2024 :

    • Ajout de nouvelles commandes liés aux cameras doorbell.
  • Septembre 2023 :

    • Ajout de nouvelles commandes liés à l’authentification sur les caméras (GetAuthorization et SetAuthorization) sur les firmwares récents
  • Juillet 2023 :

    • Ajout paramètre Isp (Binning mode) du nouveau firmware des caméras RLS-1212A et 1224A
  • Avril 2023 :

    • Ajout Documentations officielles Camera HTTP API (vers. Sept. 2022 et Avril 2023) -cf post 1 partie Documentations officielles-
    • Ajout des fonctionnalités non prise en compte dans le plugin Reolink et utilisables via un script bash, développé par jasonk → lien. Vous trouverez plus de détails dans le post 187
    • Ajout de nouvelles commandes récentes non utilisables/applicables sur la RLC-520 (commandes spécifiques aux cameras DoorBell et FishEye Cameras)
  • Mars 2023 :

    • Ajout de nouvelles commandes récentes non utilisables/applicables sur la RLC-520 (commandes spécifiques aux cameras DoorBell, TrackMix et RLC823A_16X)
  • Fevrier 2022 :

    • Ajout Documentation non-officielle Reolink Correspondance Commandes-Menus_Cameras AI + non AI -cf post 1 partie Documentations non-officielles-
  • Janvier 2022 :

    • Ajout Documentation officielle Camera HTTP API (vers. DECEMBRE 2021) -cf post 1 partie Documentations officielles-
    • Ajout Documentation non-officielle Reolink Correspondance Commandes-Menus_Cameras non AI -cf post 1 partie Documentations non-officielles-
  • Juillet 2021 :

    • Ajout URL NVR : Which Cameras can Work with Reolink NVR
    • Ajout URL NVR : How Many HDDs Can I Connect with Reolink NVR System
    • Ajout URLs Projets+Documentations techniques (exemples : reolinkapipy, Camera-proxy, neolink)
    • 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)
    • Ajout URL Comment fonctionnent les remontées PUSH
  • Juin 2021 :

    • Ajout de nouvelles commandes récentes non utilisables/applicables sur la RLC-520 (commandes spécifiques aux cameras, statiques ou motorisées, avec détection Personne/Véhicule)
    • Ajout Documentation Reolink (CGI.pdf) -version 2021-
  • Mai 2021 :

    • Ajout Documentation Reolink (CGI-REQUEST.pdf) -version 2019-
    • Ajout de nouvelles commandes non utilisables/applicables sur la RLC-520 (détection de personnes/véhicules, NVR) et réorganisation de ces commandes par type de matériel ou fonctionnalité
    • Easter Egg dans la Reolink E1-Zoom : le mode Patrol
    • Ajout URL HOW-TO comment calculer le temps d’enregistrement disponible par rapport a la taille d’une carte SD.
  • Avril 2021 :

    • Ajouts de nouvelles commandes fonctionnelles sur la RLC-520 (commandes non documentées actuellement)
    • Commande Snap : ajout des options de dimensionnement de l’image de capture.
    • Ajouts de 2 URLs : Documentations PDF Reolink (CGI_command.pdf & cgi-jsonv1.1.pdf)
  • Mars 2021 :

  • Février 2021 :

  • Juillet 2020 :

    • Ajouts des URLs Reolink
  • Avril 2020 :


Bonjour à tous,
suite à l’acquisition de ma camera Reolink RLC-520 , je me suis mis à la recherche de récupérer un maximum d’informations pour piloter à distance cette dernière à partir de Jeedom.

Vous trouverez donc une liste des commandes à exécuter sur l’API de la camera que je vous partage.

Cette liste est incomplète et je l’agrémenterai au fur et à mesure. J’indiquerai également les paramétrages possibles des valeurs pour l’envoi des données à la caméra.

  • Dans les commandes ci-dessous, remplacer les valeurs #IP#, #value#, #username# et #password# par vos propres données.
    NB : la valeur #value# du champ rs=#value# est une chaine de caractère que vous pouvez definir comme bon vous semble.
  • N’ayant qu’une camera et pas de NVR, le paramètre channel utilisé dans certaines commandes ci-dessous est : channel=0. (A adapter suivant votre configuration)
  • Les commandes en écriture (celles à envoyer à la camera) sont identifiées par l’information (POST)
  • Les commandes en lecture ou écriture nécessitant l’argument channel sont identifiées par l’information ==CHANNEL==

Dans cette liste, vous en trouverez peu détailler, mais généralement toute commande Getxxx à son contraire Setxxx (pour le formatage du fichier json à envoyer: remplacer les clés « code » et « value », à partir du fichier json récupéré,par « action » et « param »)

exemple : Paramétrage de l’IR

  • Commande de lecture :

https://#IP#/cgi-bin/api.cgi?cmd=GetIrLights&rs=#value#&user=#username#&password=#password#

json récupéré :
GetIrLights

  • Commande en écriture : SetIrLights (POST)

https://#IP#/cgi-bin/api.cgi?cmd=SetIrLights&rs=#value#&user=#username#&password=#password#

exemple de json à envoyer :
image


Reolink INFORMATIONS

=====FIRMWARE=====

=====URLs/DOCUMENTATIONS/MANUELS=====
—URLs officielles—

—URLs autres—

—URLs Projets/Documentations—

  • reolinkapipy : Reolink Python Api Client - Librairies Python pour Cameras Reolink accessibles via CGI
  • PHPReolinkCameraAPI : Reolink IP camera API client - PHP class
  • Camera Proxy : Python webserver which can display a video stream from the reolink argus 2 camera over http
  • neolink : An RTSP bridge to Reolink IP cameras.
  • Hacking Reolink cameras for fun and profit : Hack a Reolink B800 (Reverse engineering & Baichuan protocol)
  • reolink-camera : Camera Reolink RLC-410-5MP (Documentations techniques & hacks)
  • reolink : Reolink Python package (développé pour HomeAssistant)
  • ReoSploit : A Tool that Finds, Enumerates and Exploits Reolink Cameras (Python)
  • reolink-aio : librairie python pour le plugin Officiel Reolink pour Home assistant

—Documentations officielles—

—Documentations non-officielles—


Reolink API Commands

Commandes non utilisables/applicables sur RLC-520 :

++ Commande commune aux cameras PTZ ++

++ Commandes spécifiques pour certaines cameras PTZ (fonctionnelles suivant le modèle) ++

  • GetPtzSerial, SetPtzSerial
  • GetPtzPreset, SetPtzPreset
  • GetPtzPatrol, SetPtzPatrol
  • GetPtzTattern, SetPtzTattern
  • GetPtzCheckState
  • PtzCheck
  • GetPtzGuard, SetPtzGuard

++ Commandes spécifiques aux cameras ayant un zoom optique ++

  • GetAutoFocus, SetAutoFocus, GetZoomFocus, StartZoomFocus

++ Commandes spécifiques aux cameras connectées en WIFI ++

++ Commandes spécifiques aux cameras disposant de l’alarme audio ++

  • GetAudioAlarm, SetAudioAlarm

++ Commandes spécifiques aux cameras disposant d’ une sirène ++

  • GetAudioCfg, SetAudioCfg
  • AudioAlarmPlay

++ Commandes spécifiques aux cameras connectées via carte3g ++

  • Get3G, Set3G

++ Commandes spécifiques aux cameras munies d’une led de fonctionnement ++

  • GetPowerLed, SetPowerLed

++ Commandes spécifiques aux cameras munies d’un projecteur led blanc++

  • GetWhiteLed, SetWhiteLed

++ Commandes specifiques aux NVR (uniquement les NVR accessibles via CGI) ++

  • GetBuzzerAlarm, SetBuzzerAlarm
  • GetBuzzerAlarmV20, SetBuzzerAlarmV20 (spécifiques aux cameras avec détection de personnes/véhicules)
  • GetLog, DelLog, GetLogType
  • GetOutput, SetOutput
  • GetChannelstatus
  • NvrDownload
  • GetChnTypeInfo (getChannelVersion)

++ Commandes spécifiques aux cameras ayant la fonctionnalité Cloud (cf source Reolink) ++
Cloud function applies to: Argus 2; Argus 3; Argus Eco; Argus Pro; Argus PT; Reolink Go; Reolink Go PT; E1; E1 Pro; E1 Zoom; E1 outdoor; Reolink Lumus

Commandes spécifiques aux cameras avec détection de personnes/véhicules

  • GetAiCfg, SetAiCfg, GetAiState
  • GetRecV20, SetRecV20
  • GetEmailV20, SetEmailV20
  • GetFtpV20, SetFtpV20
  • GetPushV20, SetPushV20
  • GetAudioAlarmV20, SetAudioAlarmV20 (cameras disposant également de l’alarme audio)
  • GetAiAlarm, SetAiAlarm
  • SetAlarmArea

Nouvelles Commandes liés au Push (firmware 3.1.x.x)

  • GetPushCfg, SetPushCfg

Commandes pour le Playback

  • Search, Playback, Preview, Download

Commandes rtmp/rtsp

  • rmtp=start, rtmp=stop, rtmp=auto
  • GetRtspUrl

TrackMix

  • GetAiCfg > new fields (bSmartTrack, aiStopBackTime, aiDisappearBackTime and trackTask)
  • GetAiDenoise
  • SetAiDenoise
  • ExportImg
  • ImportImg
  • DeleteImg
  • GetPtzTraceSection
  • SetPtzTraceSection
  • GetPtzCurPos

DOORBELL

  • GetPowerLed/SetPowerLed > new field : eDoorbellLightState
  • GetAudioFileList
  • SetAudioFileList
  • GetAutoReply
  • SetAutoReply
  • DeleteAudioFile
  • ExportAudioFile
  • SetAudioCfg > new field : visitorLoudspeaker

newer Doorbell firmware ( v3.0.0.1859 ) :

  • GetEvents

newer Doorbell firmware (v3.0.0.3215) : Plus d’info sur les commandes

  • QuickAudioPlay
  • DingDong COMMANDS

PRE-REQUIS
###########################
« supportDingDongCtrl » => getAbilityChnBy(« supportDingDongCtrl »)
###########################

  • DingDongCtrl
  • GetDingDongList
  • DingDongOpt (dingDongManualRing)
  • DingDongOpt (dingDongPair)
  • DingDongOpt (dingDongUnpair)
  • DingDongOpt (getDingDongOption)
  • DingDongOpt (setDingDongOption)
  • GetDingDongCfg (getDingDongAudioInfo)

RLC-823A_16X :

  • Get3DPos
  • Set3DPos

FishEye Camera

  • GetFishEye
  • SetFishEye

RLC-1212A/RLC-1224A

  • GetIsp/SetIsp > new field : binningMode (firmware v3.1.0.2174_23050816)
    Reddit source

Autres commandes Système -non documentées (TODO)- :

  • Login, Logout, Disconnect
  • ImportCfg
  • Restore
  • Shutdown
  • HeartBeat
  • Upgrade, UpgradePrepare, UpgradeOnline, UpgradeStatus
  • CheckFirmware
  • GetCertificateInfo, CertificateClean, ImportCertificate
  • Analysis
  • GetSysCfg, SetSysCfg (A partir du firmware 3.1.0.951)
  • GetAuthorization,SetAuthorization (A partir des firmwares édités depuis juin 2023)

Commandes non identifiées

  • onvifSnapPic

webhook

PRE-REQUIS
###########################
« supportWebhook » => getAbilityChnBy(« supportWebhook »)
###########################

  • GetWebHook
  • SetWebHook
  • TestWebHook
3 « J'aime »

HOW-TO Récupération de la structure des données de commandes Getxxx via CURL

=Ne fonctionne pas avec les autres commandes (Setxxx ou autres)=
MAJ 17/02/2021 : Pour les commandes GetMdAlarm, GetEnc, GetRec, GetOsd, GetMask, GetImage et GetIsp, le fichier json a envoyé par la commande curl est différent. Celui-ci doit inclus la variable channel.

MAJ 20/07/2020 : La méthode ne fonctionne pas avec les commandes GetEnc, GetRec, GetOsd, GetMask, GetImage et GetIsp (erreur rspcode -4)

  • LINUX : sous bash, lancer la commande curl suivante :
curl -s -k -X POST -H "Content-Type : application/json" -d '[{"cmd":"#GetCommand#","action":1,"param":{}}]' "https://#IP#/cgi-bin/api.cgi?user=#username#&password=#password#"

Commande curl spécifique pour les commandes GetMdAlarm, GetEnc, GetRec, GetOsd, GetMask, GetImage et GetIsp :

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

Remplacer #IP#, #username# et #password# par vos propres valeurs; Remplacer #GetCommand# par la commande Getxxx recherché dans le payload envoyé. Pour la valeur #id# de l’argument channel, la mettre à 0 -si vous n’avez pas de NVR-

  • WINDOWS : Telecharger CURL pour Windows (curl for Windows); dézipper l’archive; lancer interpréteur de commandes cmd.exe (dans le répertoire bin de l’archive dézippé)
curl.exe -s -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"#GetCommand#\",\"action\":1,\"param\":{}}]" "https://#IP#/cgi-bin/api.cgi?user=#username#&password=#password#"

Commande curl spécifique pour les commandes GetMdAlarm, GetEnc, GetRec, GetOsd, GetMask, GetImage et GetIsp :

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

Remplacer #IP#, #username# et #password# par vos propres valeurs; Remplacer #GetCommand# par la commande Getxxx recherché. Pour la valeur #id# de l’argument channel, la mettre à 0 -si vous n’avez pas de NVR-

  • Exemple de commande curl pour GetNetPort, exécuté sous linux :
curl -s -k -X POST -H "Content-Type : application/json" -d '[{"cmd":"GetNetPort","action":1,"param":{}}]' "https://#IP#/cgi-bin/api.cgi?user=#username#&password=#password#"
  • Équivalent de l’exemple ci-dessus pour GetNetPort, exécuté sous Windows:
curl -s -k -X POST -H "Content-Type : application/json" -d "[{\"cmd\":\"GetNetPort\",\"action\":1,\"param\":{}}]" "https://#IP#/cgi-bin/api.cgi?user=#username#&password=#password#"

NB IMPORTANT:
Dans le payload à envoyer via Curl sous Windows, si vous basez sur la commande Linux pour générer la commande Windows, il faut, pour l’argument -d :
** dans le payload, remplacer tous les < " > par < \" >
** mettre le payload [{…}] entre guillemets et pas entre simples quotes (défini avec la commande linux)

Dans le résultat de la commande :

  • « initial » : {…} correspond aux valeurs par défaut
  • « range » : {…} à leurs définitions
  • « value » : {…} aux valeurs en cours
[
   {
      "cmd" : "GetNetPort",
      "code" : 0,
      "initial" : {
         "NetPort" : {
            "httpPort" : 80,
            "httpsPort" : 443,
            "mediaPort" : 9000,
            "onvifPort" : 8000,
            "rtmpPort" : 1935,
            "rtspPort" : 554
         }
      },
      "range" : {
         "NetPort" : {
            "httpPort" : {
               "max" : 65535,
               "min" : 1
            },
            "httpsPort" : {
               "max" : 65535,
               "min" : 1
            },
            "mediaPort" : {
               "max" : 65535,
               "min" : 1
            },
            "onvifPort" : {
               "max" : 65535,
               "min" : 1
            },
            "rtmpPort" : {
               "max" : 65535,
               "min" : 1
            },
            "rtspPort" : {
               "max" : 65535,
               "min" : 1
            }
         }
      },
      "value" : {
         "NetPort" : {
            "httpPort" : 80,
            "httpsPort" : 443,
            "mediaPort" : 9000,
            "onvifPort" : 8000,
            "rtmpPort" : 1935,
            "rtspPort" : 554
         }
      }
   }
]

===== COMMANDES =====

L’ensemble des commandes décrites ci-dessous fonctionnent avec les 2 URLs suivantes (hormis celles utilisation l’argument channel):

  • https://#IP#/cgi-bin/api.cgi?cmd=Getxxx&rs=#value#&user=#username#&password=#password#
  • https://#IP#//foobar.cgi?cmd=Getxxx&rs=#value#&user=#username#&password=#password#

Cas d’une commande utilisant l’argument channel :

  • https://#IP#/cgi-bin/api.cgi?cmd=Getxxx&channel=0&rs=#value#&user=#username#&password=#password#
  • https://#IP#//foobar.cgi?cmd=Getxxx&channel=0&rs=#value#&user=#username#&password=#password#

Dans la documentation des commandes, les exemples se baseront qu’à partir de la 1ere URL (celle cgi-bin/api.cgi?).

NB: les URLs peuvent être en https mais aussi en http


====Détails des commandes====

  • Cfg Device HDD URL : GetHddInfo
    https://#IP#/cgi-bin/api.cgi?cmd=GetHddInfo&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetHdInfo

Commande en écriture : Format (POST)
cf https://github.com/ReolinkCameraAPI/reolinkapipy/tree/master/reolinkapi/mixins/device.py


  • Cfg Online User URL : GetOnline
    https://#IP#/cgi-bin/api.cgi?cmd=GetOnline&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetOnline


  • Cfg User Manager URL : GetUser
    https://#IP#/cgi-bin/api.cgi?cmd=GetUser&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetUser

Commandes en écriture : AddUser, ModifyUser, DelUser (POST)
cf https://github.com/ReolinkCameraAPI/reolinkapipy/tree/master/reolinkapi/mixins/user.py


  • Cfg System General Dst Settings URL : GetTime
    https://#IP#/cgi-bin/api.cgi?cmd=GetTime&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

Commande en écriture : SetTime (POST)


  • Cfg System Information URL : GetDevInfo
    https://#IP#/cgi-bin/api.cgi?cmd=GetDevInfo&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetDevInfo


  • Cfg System Information URL : GetDevName
    https://#IP#/cgi-bin/api.cgi?cmd=GetDevName&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
image

Commande en écriture : SetDevName (POST)


  • Cfg System Export Config URL : ExportCfg
    https://#IP#/cgi-bin/api.cgi?cmd=ExportCfg&user=#username#&password=#password#
----> Fichier config.tgz

  • Cfg System Maintenance URL : GetAutoUpgrade
    https://#IP#/cgi-bin/api.cgi?cmd=GetAutoUpgrade&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetAutoUpgrade

Commande en écriture : SetAutoUpgrade (POST)


  • Cfg System Performance URL : GetPerformance
    https://#IP#/cgi-bin/api.cgi?cmd=GetPerformance&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetPerformance


  • Cfg System Reboot URL : GetAutoMaint
    https://#IP#/cgi-bin/api.cgi?cmd=GetAutoMaint&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetAutoMaint

Commande en écriture : SetAutoMaint (POST)


  • Reboot URL (POST) : Reboot
    https://#IP#/cgi-bin/api.cgi?cmd=Reboot&rs=#value#&user=#username#&password=#password#

  • Cfg Alarm URL : GetAlarm ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetAlarm&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetAlarm", "code" : 0, "value" : { "Alarm" : { "action" : { "mail" : 1, "push" : 1, "recChannel" : [ 0 ] }, "channel" : 0, "enable" : 1, "schedule" : { "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" }, "scope" : { "cols" : 80, "rows" : 60, "table" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111100000000000000000000000000000000000000000000000000000111111111111111111111111111111111111110000000000000000000000000000000000000000001111111111111111111111111111111111111111111111110000000000000000000000000000000011111111111111111111111111111111111111111111111111111110000000000000000000000001111111111111111111111111111111111111111111111111111111100001000000000000000000111111111111111111111111111111111111111111111111111111111111111000000000111100001111111111111111111111111111111111111111111111111111111111111111100000001111111111111111111111111111111111111111111111111111111111111111111111111110001111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111111111111111111110011111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111111111111111111111111111111111111111111111111111111111111111111001111111111111111111111111111111111111111111111111111111111111111111111111111110011111111111111111111111111111111111111111111111111111111111111111111111111111100011111111111111111111111111111111111111111111111111111111111111111111111111111000111111111111111111111111111111111111111111111111111111111111111111111111111110000111111111111111111111111111111111111111111111111111111111111111111111111111100001111111111111111111111111111111111111111111111111111111111111111111111111111000011111111111111111111111111111111111111111111111111111111111111111111111111110000111111111111111111111111111111111111111111111111111111111111111111111111111100000111111111111111111111111111111111111111111111111111111111111111111111111000000001111111111111111111111111111111111111111111111111111111111111111111111100000000011111111111111111111111111111111111111111111111111111111111111111111111000000000011111111111111111111111111111111111111111111111111111111111111111111000000000000111111111111111111111111111111111111111111111111111111111111111111110000000000000111111111111111111111111111111111111111111111111111111111111111110000000000000001111111111111111111111111111111111111111111111111111111111111111100000000000000011111111111111111111111111111111111111111111111111111111111111110000000000000000011111111111111111111111111111111111111111111111111111111111110000000000000000000111111111111111111111111111111111111111111111111111111111111100000000000000000000111111111111111111111111111111111111111111111111111111111100000000000000000000001111111111111111111111111111111111111111111111111111111111000000000000000000000001111111111111111111111111111111111111111111111111111111100000000000000000000000011111111111111111111111111111111111111111111111111111111000000000000000000000000011111111111111111111111111111111111111111111111111111000000000000000000000000000111111111111111111111111111111111111111111111111111110000000000000000" }, "sens" : [ { "beginHour" : 0, "beginMin" : 0, "endHour" : 6, "endMin" : 0, "id" : 0, "sensitivity" : 10 }, { "beginHour" : 6, "beginMin" : 0, "endHour" : 12, "endMin" : 0, "id" : 1, "sensitivity" : 10 }, { "beginHour" : 12, "beginMin" : 0, "endHour" : 18, "endMin" : 0, "id" : 2, "sensitivity" : 10 }, { "beginHour" : 18, "beginMin" : 0, "endHour" : 23, "endMin" : 59, "id" : 3, "sensitivity" : 10 } ], "type" : "md" } } } ]

Commandes en écriture : SetAlarm (POST) ==CHANNEL==

NOUVELLES COMMANDES (commandes venant en remplacement des commandes GetAlarm/SetAlarm)

Commandes en écriture : SetMdAlarm (POST) ==CHANNEL==


  • Motion Detector Status URL (Etat de la detection de mouvement) : GetMdState
    https://#IP#/cgi-bin/api.cgi?cmd=GetMdState&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetMdState


  • Cfg Network General URL / Cfg Network Status URL : GetLocalLink
    https://#IP#/cgi-bin/api.cgi?cmd=GetLocalLink&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetLocalLink

Commande en écriture : SetLocalLink (POST)


  • Cfg Network Advanced DDNS URL : GetDdns
    https://#IP#/cgi-bin/api.cgi?cmd=GetDdns&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetDdns

Commande en écriture : SetDdns (POST)


  • Cfg Network Advanced NTP URL : GetNtp
    https://#IP#/cgi-bin/api.cgi?cmd=GetNtp&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetNtp

Commande en écriture : SetNtp (POST)


  • Cfg Network Advanced Email URL : GetEmail
    https://#IP#/cgi-bin/api.cgi?cmd=GetEmail&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetEmail", "code" : 0, "value" : { "Email" : { "addr1" : "", "addr2" : "", "addr3" : "", "attachment" : "picture", "interval" : "5 Minutes", "nickName" : "", "password" : "", "schedule" : { "enable" : 1, "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" }, "smtpPort" : 465, "smtpServer" : "smtp.gmail.com", "ssl" : 1, "userName" : "" } } } ]

Commande en écriture : SetEmail (POST)

Autre commande Email : TestEmail (POST)


  • Cfg Network Advanced FTP URL : GetFtp
    https://#IP#/cgi-bin/api.cgi?cmd=GetFtp&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetFtp", "code" : 0, "value" : { "Ftp" : { "anonymous" : 0, "interval" : 30, "maxSize" : 100, "mode" : 0, "password" : "", "port" : 21, "remoteDir" : "", "schedule" : { "enable" : 1, "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" }, "server" : "", "streamType" : 0, "userName" : "" } } } ]

Commande en écriture : SetFtp (POST)

Autre commande FTP : TestFtp (POST)
NB : si test de connexion ftp en anonyme, mettre « anonymous » : 1


  • Cfg Network Advanced Push URL : GetPush
    https://#IP#/cgi-bin/api.cgi?cmd=GetPush&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetPush", "code" : 0, "value" : { "Push" : { "schedule" : { "enable" : 1, "table" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" } } } } ]

Commande en écriture : SetPush (POST)


  • cfg Network Ports URL : GetNetPort
    https://#IP#/cgi-bin/api.cgi?cmd=GetNetPort&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetNetPort

Commande en écriture : SetNetPort (POST)
https://github.com/ReolinkCameraAPI/reolinkapipy/tree/master/reolinkapi/mixins/network.py


  • cfg Network Upnp URL : GetUpnp
    https://#IP#/cgi-bin/api.cgi?cmd=GetUpnp&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetUpnp

Commande en écriture : SetUpnp (POST)


  • cfg Network P2p URL : GetP2p
    https://#IP#/cgi-bin/api.cgi?cmd=GetP2p&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetP2p
Commande en écriture : SetP2p (POST)


  • Cfg Record Encode URL : GetEnc ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetEnc&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetEnc

Commande en écriture : SetEnc (POST) ==CHANNEL==


  • Cfg Record Advance URL : GetRec ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetRec&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetRec", "code" : 0, "value" : { "Rec" : { "channel" : 0, "overwrite" : 1, "postRec" : "15 Seconds", "preRec" : 1, "schedule" : { "enable" : 1, "table" : "111111110000000000000111111111110000000000000111111111110000000000000111111111110000000000000111111111110000000000000111111111110000000000000111111111110000000000000111" } } } } ]

Commande en écriture : SetRec (POST) ==CHANNEL==


  • Cfg Display Camera Snapshot URL : Snap ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=#value#&user=#username#&password=#password#
----> Image

NB : Dimensionnement possible de l’image de capture avec les options : &width=xxx et &height=yyy
(xxx et yyy sont des valeurs en pixels)
Exemple :
https://#IP#/cgi-bin/api.cgi?cmd=Snap&width=320&height=240&channel=0&rs=#value#&user=#username#&password=#password#

----> Image en 320x240

  • Cfg Video Norm URL : GetNorm (==CHANNEL== : fonctionne aussi avec argument channel)
    https://#IP#/cgi-bin/api.cgi?cmd=GetNorm&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetNorm

Commande en écriture : SetNorm (POST) (==CHANNEL== : fonctionne aussi avec argument channel)


  • Cfg Display Camera OSD URL : GetOsd ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetOsd&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetOsd

Commande en écriture : SetOsd (POST) ==CHANNEL==
Réferences :
++ reolinkapipy (fichier display.py)


  • Mask OSD URL : GetMask ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetMask&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetMask
Commandes en écriture : SetMask (POST) ==CHANNEL==


json à envoyer

[{"cmd":"GetAbility","action":0,"param":{"User":{"userName":"admin"}}}]

  • Cfg IrLights URL : GetIrLights
    https://#IP#/cgi-bin/api.cgi?cmd=GetIrLights&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetIrLights

Commande en écriture : SetIrLights (POST)


  • Cfg Video Clip Crop URL : GetCrop (==CHANNEL== : fonctionne aussi avec argument channel)
    https://#IP#/cgi-bin/api.cgi?cmd=GetCrop&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetCrop

Commande en écriture : SetCrop (POST)


  • Cfg Image URL : GetImage ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetImage&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :
GetImage

Commande en écriture : SetImage (POST) ==CHANNEL==


  • Cfg Isp URL : GetIsp ==CHANNEL==
    https://#IP#/cgi-bin/api.cgi?cmd=GetIsp&channel=0&rs=#value#&user=#username#&password=#password#

exemple de fichier json récupéré :

[ { "cmd" : "GetIsp", "code" : 0, "value" : { "Isp" : { "antiFlicker" : "Outdoor", "backLight" : "Off", "blc" : 128, "blueGain" : 128, "channel" : 0, "dayNight" : "Auto", "drc" : 128, "exposure" : "Auto", "gain" : { "max" : 62, "min" : 1 }, "mirroring" : 0, "nr3d" : 1, "redGain" : 128, "rotation" : 0, "shutter" : { "max" : 125, "min" : 0 }, "whiteBalance" : "Auto" } } } ]

Commande en écriture : SetIsp (POST) ==CHANNEL==

Bonjour @mnpg
Post très très intéressant et parfaitement documenté mais qui dépasse mes compétences. J’ai acheté il y a quelque temps une caméra Réolink C1-Pro. J’ai trouvé dans un autre sujet l’URL de Snaphot me permettant de visualiser les images de la cam, mais pas de gérer ses possibilités de PTZ. En regardant les liens que tu indiques en début de ton message j’ai vu ici des lignes qui m’intéressent : https://www.reddit.com/r/BlueIris/comments/frwwyb/reolink_e1_zoom_and_ptz/

Pan Left: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« Left »,« speed »:32}}]
Pan Right: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« Right »,« speed »:32}}]
Tilt Up: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« Up »,« speed »:32}}]
Tilt Down: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« Down »,« speed »:32}}]
Up Left: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« LeftUp »,« speed »:32}}]
Up Right: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« RightUp »,« speed »:32}}]
Down Left: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« LeftDown »,« speed »:32}}]
Down Right: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« LeftDown »,« speed »:32}}]
Stop: [{« cmd »:« PtzCtrl »,« action »:0,« param »:{« channel »:0,« op »:« Stop »}}]
Penses-tu que cela pourrait être « traduit » en commandes d’un équipement dans le plugin camera pour piloter cette C1-Pro dont la qualité d’image me semble particulièrement bonne.
Merci de te pencher sur mon problème si tu en as le temps. Cette caméra présente un rapport qualité/prix très intéressant, ce serait sympa de pouvoir l’intégrer complètement dans jeedom.
Merci encore.

bonjour @kenderv44,

Avant toute chose, je tiens à te préciser que je n’ai pas de camera REOLINK motorisé et n’est pas eu l’occasion de vérifier les commandes liés à la motorisation (comme je l’ai indiqué au début du premier post)

Par contre, je peux te répondre sur le sujet et te donner des réponses à tes questions :

Je vais être direct, avec le plugin Camera, malheureusement non et je précise pourquoi :

Contrairement aux cameras FOSCAM pour lesquelles c’est possible, il faut que la requête d’une commande de mouvement soit une URL (lien internet) bien précise contenant toutes les informations pour faire l’action

c’est plus parlant via un exemple :

Dans le cas des FOSCAM, pour faire exécuter à la camera un mouvement vers le haut, tu vas utiliser la requête de commande qui suit :

http://[ip]:[port]/cgi-bin/CGIProxy.fcgi?cmd=ptzMoveUp&usr=[utilisateur]&pwd=[motdepasse])

Tu vois que dans l’URL, la commande PTZ de mouvement vers le haut (ici ptzMoveUp) est dans l’URL de la requête. Tu n’as besoin de rien d’autre de plus pour que l’action se fasse.

Pour les cameras REOLINK, c’est différent :

pour envoyer une commande de mouvement à la camera, il faut que tu fasses en premier une requête pour lui dire que tu fais appel à la partie PTZ de la camera (PtzCtrl).

https://#IP#/cgi-bin/api.cgi?cmd=PtzCtrl&rs=#value#&user=#username#&password=#password#

A partir de ce moment ou tu auras executé cette requête, la camera est dans l’attente de l’ordre à executer.

C’est que que tu fais par la suite, en envoyant un fichier json à la camera (un « payload ») contenant la commande que tu veux effectuer avec les caractéristiques souhaitées (envoi de l’ordre par le biais d’une commande CURL sous linux par exemple; commande que j’utilise pour ma camera)

Dans le cas du mouvement vers le haut (Tilt Up) -mais également pour toute commande de mouvement-, il faut lui envoyé un fichier json contenant les données suivantes :

[{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"Up","speed":32}}]

Or, dans le plugin Camera, ce n’est pas possible de faire ces 2 opérations. Il faut une requête qui contienne l’ensemble (comme je te l’ai indiqué précédemment pour le cas des FOSCAM)

Saches par contre que cela est tout a fait possible par script (via le plugin script). Personnellement, je suis passé par un script bash fait maison qui commande les paramètres de l’image (contraste, luminosité, netteté, teinte et saturation) et la gestion de lumières IR (cf image ci-dessous)

Cela demande un peu de programmation bash, mais si tu es plus php, cela est possible aussi.

commandes reolink via plugin script

Bonjour @mnpg
Merci beaucoup pour cette explication encore une fois très claire. Hélas, même si j’ai fait jadis de la programmation dont on entend plus parler de nos jours (assembleur, rpg, cobol, fortran, etc.) je n’ai que peu de connaissance en php ou bash. Si tu avais la gentillesse de me faire passer le script qui t’as permis de réaliser l’exemple ci-dessus je pourrais essayer de l’adapter à mes besoins. Merci d’avance et encre bravo pour tes explications.

1 « J'aime »

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.