REOLINK - Liste de commandes via API

pour tout ce qui est mouvement, bien ajouter la vitesse de déplacement dans la commande

  • exemple de commande pour les mouvements (hormis les presets) :

    mouvement vers la gauche, vitesse max (32):

    /var/www/html/plugins/script/data/Reolink_API_PTZ.sh 192.168.1.26 PtzCtrl Left 32


  • exemple de commande pour accéder à une position préenregistrée -preset- (commande ne fonctionnant que sur les cameras ayant la fonction preset dont la E1-Zoom):

    mouvement vers la position 1, vitesse max (32):

    /var/www/html/plugins/script/data/Reolink_API_PTZ.sh 192.168.1.26 PtzCtrl ToPos 32 1

Merci de ton retour. Je vais regarder les commandes :wink:

Félicitation pour cette réponse rapide. effectivement c’était seulement ce fâcheux point virgule qui empêchait le bon fonctionnement du script.
Maintenant avec ce point au bon endroit tous fonctionne a merveille . j’ai bien les mouvement de la caméra ainsi que le bon fonctionnement du zoom (sans aucun autre changement que ce point virgule).
merci beaucoup mnpg
T.

1 « J'aime »

Merci de ton retour. Tant mieux que tout fonctionne

Pour info : J’ai corrigé le script que je t’avais donné dans ma première réponse (déplacer le « ; » au bon endroit), au cas ou un autre possesseur de camera reolink le récuperait.

Tu pense que c’est possible de récupérer la détection de personne ou véhicule pour recevoir des alerte via jeedom? Apparement c’est possible avec home assistant

bonjour @Neoback45,
oui, le plugin reolink de HomeAssistant se base sur la commande GetAiState.

cela peut s’adapter sous jeedom

verifies si tu peux interroger l’URL ci-dessous directement via un navigateur web (NB: l’URL est en https):

https://#IP#/cgi-bin/api.cgi?cmd=GetAiState&rs=test&user=#username#&password=#password#
(remplace #IP#, #username# et #password# par tes propres valeurs)

ou, si cela ne marche pas, avec l’argument channel=0 :
https://#IP#/cgi-bin/api.cgi?cmd=GetAiState&channel=0&rs=test&user=#username#&password=#password#

si tu obtiens un fichier json de retour de ce style :

[{
cmd: "GetAiState",
code: 0,
value: {
  channel: 0,
  people_state: 0,
  vehicle_state: 1
  }
}]

tu pourras récupérer les infos, par le plugin script - commande de script, via des commandes de script de type Info/Binaire (HOWTO >> cf Post → partie « Récupération de la Détection de Mouvement »)

detection personne :

    commandes de script de type Info/Binaire
    Type script : JSON
    URL json : https://#IP#/cgi-bin/api.cgi?cmd=GetAiState&rs=test&user=#username#&password=#password#
    Requête : >value>people_state

détection véhicule :

    commandes de script de type Info/Binaire
    Type script : JSON
    URL json : https://#IP#/cgi-bin/api.cgi?cmd=GetAiState&rs=test&user=#username#&password=#password#
    Requête : >value>vehicle_state

avec les derniers firmware (vers 3.x.x.412) pour les cameras avec detection personne/vehicule, le fichier JSON de retour de la commande GetAiState a changé. il est plus de ce style :

[
   {
      "cmd" : "GetAiState",
      "code" : 0,
      "value" : {
         "channel" : 0,
         "face" : {
            "alarm_state" : 0,
            "support" : 0
         },
         "people" : {
            "alarm_state" : 0,
            "support" : 1
         },
         "vehicle" : {
            "alarm_state" : 0,
            "support" : 1
         }
      }
   }
]

Dans ce cas,il faut changer les requêtes utilisées pour les commandes de script jeedom que je t’ai donné précédemment pour celles-ci :

détection personne :

Requête : >value>people>alarm_state

détection véhicule :

Requête : >value>vehicle>alarm_state

Salut,
Oui ça me donne le fichier json « nouveau »
Intéressant ! Donc je doit pouvoir recevoir une alerte jeedom lorsque la caméra détecte une personne ou un véhicule ?

salut,

malheureusement non, il faut que tu interroges cette URL de la camera, sous la forme de script JSON, pour avoir l’info et cela toutes les minutes.

Pour info : La seule façon, à ma connaissance, qu’a la camera pour pousser l’information de détection, c’est par la fonctionnalité Push : push de l’information vers une URL Reolink (pushx.reolink.com) et relayer sous la forme de notifications via l’application Reolink installée sur ton smartphone

Bonjour à tous !

Déjà merci pour ce topic + qu’utile :slight_smile:
J’ai pu passer quelques commandes curl avec succès pour récupérer des états divers.
J’essaie maintenant de passer à des commandes de modifs pour rentrer dans le vif du sujet.

J’essaie actuellement de jouer sur la planification des alarmes mails pour activer H24 les notifs (quand je pars en vacances par exemple) ou au contraire uniquement la nuit (quand je suis à la maison).

Je vois grâce au GetEmailV20 qu’il faut modifier le schedule > table.
Par contre je ne suis pas sûr de saisir correctement les champs.
N.B : Configuration actuelle : Détection de personne de 8h00 à 20h00. Le reste désactivé.
J’ai un NVR RLN8-410 avec des caméras RLC-820A

            "schedule" : {
               "channel" : 1,
               "table" : {
                  "AI_PEOPLE" : "111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111",
                  "AI_VEHICLE" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                  "MD" : "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                  "VL" : "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
               }
            },

AI_PEOPLE et AI_VEHICLE, je suppose que c’est pour la détection des personnes et véhicules. Là OK.
MD (pour motion detection ?). Je suppose que c’est pour la détection tout mouvement. Là OK également, ça colle avec ma configuration actuelle.
VL par contre je ne sais pas ce que c’est…

Second point, j’ai essayé via l’app windows de modifier le schedule d’une camera pour voir ce que ça donnait avec un GetEmailV20 mais je ne vois pas les changements dans le retour curl …

Merci par avance pour votre aide.

[EDIT] : Pour ce qui est du second point, je m’auto-réponds : je me suis fait avoir comme un bleu.
Les channels de caméra sont incrémentés à partir de 0 et non 1, donc la caméra 1 correspond au channel 0, caméra 2 au channel 1, etc…

Pour le premier point je ne vois toujours pas à quoi cela correspond :frowning:

Bonjour @khirin, MD est pour la 3eme option (motion) que tu trouves sur les schedules. Pour VL, Cela ne me dis rien, perso je me base sur les options que l’on a sur l’interface. Par contre je sais que pour les schedules, tu peux trouver « TIMER ».
Pour info, les champs AI_PEOPLE, AI_VEHICLE et MD sont etroitement lies, TIMER est independant des 3 autres
Exemple :

Si tu positionnes une planification en cochant Motion unquement, seul MD aura des 1 et 0 (champ de 128 caractères soit 7 jours * 24h), les AI_** seront a zero (chaine de 128 zeros).

Avec cette conf, si tu coches, par exemple Person, alors la chaine de caracteres de MD sera recopie dans le champ AI_PEOPLE.

Hello,

Merci pour ton retour !

En effet, la partie TIMER est dispo pour l’enregistrement pur et le ftp par exemple.
Je suis en train de me demander si VL ça ne serait pas pour le son (volume).
Via l’interface, on peut activer ou non le son mais pas de manière schedulé (avantage implicite de l’utilisation des APIs ? :smiley: )

J’ai réussi à contrôler le schedule de mes caméras suivant mes besoins et également récupéré les états (people detection et status de la caméra en soit) donc nickel :slight_smile: .

Je suis sous Home Assistant ( :smiling_imp: ) mais je vous fournis malgré tout le code que j’ai fait qui peut sûrement être compris et réadapté suivant les contraintes de jeedom en modulant un peu la syntaxe.
Très probablement optimisable (je suis un peu une bille pour le json, jinja and co…)

sensor:
# Schedule Mode (Global)
  - platform: template
    sensors:
      reolink_schedule_mode_global:
        value_template: >-
          {% if (states.sensor.reolink_schedule_mode_cam_1.state == "Home" and
                states.sensor.reolink_schedule_mode_cam_2.state == "Home" and
                states.sensor.reolink_schedule_mode_cam_3.state == "Home" and
                states.sensor.reolink_schedule_mode_cam_4.state == "Home") %}
            Home
          {% elif (states.sensor.reolink_schedule_mode_cam_1.state == "Out" and
                  states.sensor.reolink_schedule_mode_cam_2.state == "Out" and
                  states.sensor.reolink_schedule_mode_cam_3.state == "Out" and
                  states.sensor.reolink_schedule_mode_cam_4.state == "Out") %}
            Out
          {% elif (states.sensor.reolink_schedule_mode_cam_1.state == "Disable" and
                  states.sensor.reolink_schedule_mode_cam_2.state == "Disable" and
                  states.sensor.reolink_schedule_mode_cam_3.state == "Disable" and
                  states.sensor.reolink_schedule_mode_cam_4.state == "Disable") %}
            Disable
          {% else %}
            Unknown
          {% endif %}
          
# Schedule Mode (Camera 2 > Channel 1)
  - platform: rest
    name: reolink_schedule_mode_cam_2
    resource: http://IPNVR:80/api.cgi?cmd=GetEmailV20&channel=1&user=USER&password=PASS
    method: GET
    json_attributes_path: "$.[]value['Email'][schedule][table]"
    json_attributes:
      - AI_PEOPLE
      - AI_VEHICLE
      - MD
      - VL
    value_template: >-
      {% if value_json[0].value.Email.schedule.table.AI_PEOPLE == "111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111" %}
        Home 
      {% elif value_json[0].value.Email.schedule.table.AI_PEOPLE == "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" %}
        Out
      {% elif value_json[0].value.Email.schedule.table.AI_PEOPLE == "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" %}
        Disable
      {% else %}
        Unknown
      {% endif %}
    scan_interval: 30

# People Detection (Camera 3 > Channel 2)
  - platform: rest
    name: reolink_people_cam_3
    resource: 'http://IPNVR:80/api.cgi?cmd=GetAIState&channel=2&user=USER&password=PASS
    method: GET
    json_attributes_path: "$.[]value['people']"
    json_attributes:
      - alarm_state
    value_template: "{{ value_json[0].value.people.alarm_state }}"
    scan_interval: 5

# Status (Camera 1 > Channel 0)
  - platform: rest
    name: reolink_status_cam_1
    resource: http://IPNVR:80/api.cgi?cmd=GetChannelstatus&channel=0&user=USER&password=PASS
    method: GET
    json_attributes_path: "$.[]value['status'][0]"
    json_attributes:
      - name
      - channel
      - online
    value_template: >-
      {% if value_json[0].value.status[0].online == 1 %}
        Online 
      {% else %}
        Offline
      {% endif %}
    scan_interval: 30

rest_command:
  reolink_cam_1_email_in:
    method: POST
    content_type: 'application/json'
    url: http://IPNVR:80/cgi-bin/api.cgi?user=USER&password=PASS
    payload: '
    [{
      "cmd": "SetEmailV20",
      "action": 0,
      "param":
      {
        "channel": 0,
        "Email":
        {
          "schedule":
          {
            "channel": 0,
            "table":
            {
              "AI_PEOPLE": "111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111111111110000000000001111",
              "AI_VEHICLE": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "MD": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "VL": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"             
            }
          }
        }
      }
    }]'
# FTP (Camera 3 > Channel 2)
  reolink_cam_3_ftp_out:
    method: POST
    content_type: 'application/json'
    url: http://IPNVR:80/cgi-bin/api.cgi?user=USER&password=PASS
    payload: '
    [{
      "cmd": "SetFtpV20",
      "action": 0,
      "param":
      {
        "channel": 0,
        "Ftp":
        {
          "schedule":
          {
            "channel": 2,
            "table":
            {
              "AI_PEOPLE": "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
              "AI_VEHICLE": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "MD": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "TIMING": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"             
            }
          }
        }
      }
    }]'

Pour info : Actuellement j’ai quelques news comme quoi Reolink est tres actif dans la mise en place de nouvelles fonctionnalites pour les cameras avec AI. Des améliorations sont en cours sur la detection AI et cote commandes, cela risque d’évoluer assez rapidement avec les nouveaux firmwares. Nb : Dans le dernier firmware en date, la detection des visages est intégrée mais non active (cf resultat de la commande GetAiState)

Plutot que de changer la planification pour gerer l’envoi ou pas de la detection de mouvement, tu as a ta disposition le champ enable, pour les commandes SetEmailV20, SetFtpV20, SetRecV20 voir SetAudioAlarmV20, qui te permet d’activer ou desactiver ces fonctionnalites SANS supprimer les informations qui auraient pu etre definies. C’est l’équivalent du mode scene que tu peux trouver sur l’application android (ou IOS).
Par contre, cela ne marchera pas pour la fonctionnalite Push (commande SetPushV20). Ca passe par une methode differente.

Merci @khirin pour ton code et tes retours d’informations

En effet, j’avais vu qu’on pouvait gérer globalement l’activation ou non des mails,ftp, etc mais c’est trop restrictif pour moi dans le sens où ça active/désactive pour toutes les caméras. On ne peut pas gérer par caméra autrement que par la planification.

C’est pour ça que j’ai préféré uniformiser avec une méthode unique en gérant par la planification (mon cerveau aime bien quand c’est homogène :smile:), que ce soit pour modifier réellement les horaires de planification ou pour désactiver les notifications implicitement en mettant à zéro les planifications.

1 « J'aime »

Salut, Reolink viennent de sortir une nouvelle version de leur application Windows/MacOS : 8.3.1. Dans les améliorations, ils indiquent que le projecteur peut maintenant etre gerer par le schedule.(cf capture ci-jointe)


Le VL correspondrait peut-être avec cela mais sans aucune certitude

Bonjour,

Savez vous si c’est possible d’activer l’alarme sur la Reolink E1 zoom, ça me permettrais de pouvoir lancer une alarme avec un scénario.

Merci d’avance.

Bonjour @Sysun, l’alarme (s’il s’agit de la sirène) peut etre activée/désactivée par la commande SetAudioAlarm (champ enable). Elle est liée à la detection de mouvement (via une planification) et, à ma connaissance, ne peut pas être déclenchée indépendamment a ce fonctionnement.

EDIT : Tu as raison, il existe bien un bouton pour faire sonner l’alarme manuellement, que l’on peut trouver sur le client Reolink Win/Mac ou sur l’application Android/IOS mais il n’y a pas qu’equivalent en Rest API pour faire cela.

Dommage sur l application Android j ai le bouton ( ont va dire On-Off) pour activer ou désactiver. Merci quand même.