Skip to content

Commit 3a5fd6a

Browse files
authored
Merge pull request #16 from Jezza34000/beta
Beta
2 parents a6dfc24 + 7c5268f commit 3a5fd6a

File tree

7 files changed

+670
-262
lines changed

7 files changed

+670
-262
lines changed

3rdparty/reolinkapi.class.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class reolinkAPI {
2626
const CAM_UPGRADE ='Upgrade';
2727
const CAM_RESTORE ='Restore';
2828
const CAM_REBOOT ='Reboot';
29-
const CAM_PERFORMANCE ='GetPerformance';
29+
const CAM_GET_PERFORMANCE ='GetPerformance';
3030
const CAM_UPGRADEPREPARE ='UpgradePrepare';
3131
const CAM_GET_AUTOUPGRADE ='GetAutoUpgrade';
3232
const CAM_SET_AUTOUPGRADE ='SetAutoUpgrade';
@@ -145,6 +145,8 @@ class reolinkAPI {
145145
const CAM_GET_AICFG ='GetAiCfg';
146146
const CAM_SET_AICFG ='SetAiCfg';
147147
const CAM_GET_AISTATE ='GetAiState';
148+
const CAM_GET_SYSCFG ='GetSysCfg';
149+
const CAM_SET_SYSCFG ='SetSysCfg';
148150

149151

150152
public function __construct(array $cnxinfo) {

README.md

Lines changed: 121 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Supportes :
1111
* La série des RLN-xxxx-x
1212
* La série des DUO
1313
* La serie des C1 & C2.
14-
* La E1 Zoom
14+
* La E1 Zoom et E1 Outdoor
1515

1616
Non-supportés :
1717

@@ -20,7 +20,37 @@ Non-supportés :
2020
* Les modèles commencant part Bxxx & Dxxx
2121
* Le modèle Keen, Lumus, E1 & E1 Pro
2222

23-
### Page de configuration du plufin :
23+
### Page de configuration d'une caméra :
24+
25+
* Ajouter une camera :<br>
26+
![image](https://user-images.githubusercontent.com/54839700/174433235-2f7462fa-f868-4391-8916-b88e20cd2643.png)
27+
28+
* Donner un nom à l'équipement
29+
* Renseigner les champs ci-dessous :
30+
* IP / Nom d'hôte
31+
* Port HTTP/HTTPS (ce champ est facultatif, à renseigner uniquement si vous avez personnaliser le port d'accès à l'interface web)
32+
* Login
33+
* Port ONVIF (par défaut 8000, à modifier uniquement si vous avez personnaliser le port d'accès au protocole ONVIF )
34+
* Mot de passe
35+
* Type de connexion (http/https)
36+
* Auto-actualisation (cron) (par défaut réglé à 1h, ce CRON sert à actualiser les paramètres globaux de la caméra, il n'influence en rien la remontée de détection de mouvement)
37+
38+
* Sauvegardez l'équipement en cliquant sur **"Sauvegarder"** ![image](https://user-images.githubusercontent.com/54839700/174434052-44ac9904-3bfa-4afa-a20f-4cd669d4c636.png)
39+
40+
Vous pouvez tester si les paramètres sont correctes et si le plugin arrive à accéder à votre caméra via le bouton : **"Tester la connexion"** : ![image](https://user-images.githubusercontent.com/54839700/174433973-af0f7a4a-4947-4dec-9a98-2836cae5e534.png)
41+
42+
* Récupérez les informations de la caméra : bouton ![image](https://user-images.githubusercontent.com/54839700/174434125-261308a3-c8a7-4689-9095-0a5d56177449.png)
43+
* Générez les commandes de la caméra : bouton ![image](https://user-images.githubusercontent.com/54839700/174434177-5f433dc2-91b5-4cdb-9bcc-8a42d6a48f0d.png)
44+
45+
46+
**!! NB TRES IMPORTANT !! :**
47+
<BR>
48+
Lors de mise(s) à jour du plugin Reolink, de nouvelles commandes peuvent être ajouter (cf. Changelog du plugin) pour faciliter une meilleure gestion de la caméra.
49+
**Pour bénéficier des nouvelles commandes, relancer le processus de création de commandes pour chacun de la (des) caméra(s)**
50+
51+
<BR><P>
52+
53+
### Page de configuration du plugin :
2454

2555
> **Ces paramètres ne doivent être modifier que si vous rencontrer des problèmes.**
2656
@@ -35,30 +65,47 @@ Les options correspondent aux paramètres que vous avez dans : Réglages > Syst
3565
### Listes des fonctions de l'API intégré dans le plugin :
3666

3767
#### Système
38-
- [x] Login
39-
- [x] Logout
68+
- [x] Authentification
69+
- [x] Login
70+
- [x] Logout
4071
- [x] Reboot
4172
- [x] Obtention des informations de la caméra
4273
- [x] Obtention des capacités hardware/software de la caméra
43-
- [x] Auto Reboot
74+
- [ ] Auto Reboot
75+
- [x] Activation/Désactivation Auto Reboot
76+
- [ ] Planning Auto Reboot
4477
- [ ] Gestion des utilisateurs (ajout/supression/modification)
4578
- [ ] Gestion de l'heure
4679
- [ ] Restaurer la config par défaut
47-
- [ ] Formattage de l'espace de stockage
80+
- [ ] Stockage
81+
- [x] Etat du stockage
82+
- [x] Espace utilisé
83+
- [ ] Formattage de l'espace de stockage
4884
- [x] Contrôle de la Led d'état
4985
- [ ] Controle des mise à jour logiciel
86+
- [x] Monitoring de la caméra : Utilisation CPU, Débit codec et Débit réseau
5087

5188
#### PTZ
52-
- [x] Zoom
53-
- [x] Focus
89+
- [x] Zoom/Focus
90+
- [x] Zoom
91+
- [x] Focus
92+
- [X] Activation/Désactivation Auto-Focus
5493
- [x] Mouvement (Haut/Bas/Gauche/Droite)
55-
- [x] Récupération des presets PTZ
56-
- [x] Utilisation des presets PTZ
57-
- [x] Activation/Désactivation du PTZ Patrol
58-
- [ ] PTZ Guard
59-
- [ ] Schéma/Chemin PTZ
94+
- [x] Presets PTZ
95+
- [x] Récupération des presets PTZ
96+
- [x] Utilisation des presets PTZ
97+
- [ ] PTZ Patrol
98+
- [x] Activation/Désactivation du PTZ Patrol
99+
- [ ] Gestion PTZ Patrol
100+
- [X] PTZ Guard (3)
101+
- [X] Etat du point de garde
102+
- [X] Création/Actualisation du point de garde
103+
- [X] Activation/Désactivation du retour auto. au point de garde
104+
- [X] Réglage du délai de retour auto. au point de garde
60105
- [ ] PTZ Serial
61-
- [X] Calibration de la camera (Etat/Exécution) (1)
106+
- [X] Calibration de la camera (1)
107+
- [x] Etat de la calibration
108+
- [x] Exécution de la calibration
62109

63110
#### Réseau
64111
- [ ] IP/DNS/MASQUE
@@ -69,33 +116,67 @@ Les options correspondent aux paramètres que vous avez dans : Réglages > Syst
69116

70117
#### Image/Vidéo
71118
- [x] Luminosité, Contraste, Saturation, Teinte, Netteté
72-
- [x] Retourner Verticalement/Horizontalement
119+
- [x] Retourner l'image : Verticalement/Horizontalement
73120
- [ ] Avancée (Anti-scintillement, Exposition, Balance des blancs, Jour/nuit, Rétroeclairage, 3D-NR)
74-
- [x] Contrôle des Leds Infra Rouge
75-
- [x] Activation/Désactivation des Leds blanches d'éclairage
76-
- [X] Configuration des Leds blanches d'eclairage (Intensité)
77-
- [x] Activation/Désactivation masque de vie privée
78-
- [ ] Configuration du masque de vie privée
121+
- [x] Anti-scintillement
122+
- [x] Jour/nuit
123+
- [x] 3D-NR
124+
- [ ] Exposition
125+
- [ ] Rétroeclairage
126+
- [ ] Balance des blancs
127+
- [x] Leds Infra rouge
128+
- [x] Contrôle des Leds Infra rouge
129+
- [x] Leds blanches d'éclairage (Projecteur Led)
130+
- [x] Gestion du mode des leds blanches : Off/Auto
131+
- [x] Activation/Désactivation manuelle des leds blanches
132+
- [X] Gestion de l'intensité des leds blanches
133+
- [ ] Masque de vie privée
134+
- [x] Activation/Désactivation masque de vie privée
135+
- [ ] Configuration du masque de vie privée
79136

80137
#### Audio
81-
- [x] Déclenchement manuel de la sirène(2)
82-
- [X] Volume de la sirène(2)
138+
- [x] Sirène
139+
- [x] Déclenchement manuel de la sirène(2)
140+
- [x] Volume de la sirène(2)
83141

84142
#### Surveillance/Notification
85-
- [x] Activation/désactivation email
86-
- [ ] Planning email
87-
- [x] Activation/désactivation push
88-
- [ ] Planning push
89-
- [x] Activation/désactivation FTP
90-
- [ ] Planning FTP
91-
- [x] Activation/désactivation AI track
92-
- [x] Activation/désactivation enregistrement SDCARD/HDD
93-
- [ ] Planning enregistrement SDCARD/HDD
94-
- [x] Activation/désactivation alarme audio
95-
- [ ] Planning alarme audio
96-
- [ ] Configuration de la détection de mouvement
97-
- [ ] Configuration des fonctions AI
98-
- [x] Remontée des détections de mouvements en temps-réel
143+
- [ ] Enregistrement SDCARD/HDD (cameras AI **ET** non-AI)
144+
- [x] Activation/désactivation Enregistrement SDCARD/HDD
145+
- [x] Ecraser les enregistrements
146+
- [x] Enregistrement avant détection (pré-enregistrement)
147+
- [x] Durée enregistrement après détection
148+
- [ ] Planning enregistrement SDCARD/HDD
149+
- [ ] Email (cameras AI **ET** non-AI)
150+
- [x] Activation/désactivation Email
151+
- [ ] Planning email
152+
- [ ] FTP (cameras AI **ET** non-AI)
153+
- [x] Activation/désactivation FTP
154+
- [ ] Planning FTP
155+
- [ ] Alarme audio (cameras AI **ET** non-AI)
156+
- [x] Activation/désactivation Alarme audio
157+
- [ ] Planning Alarme audio
158+
- [ ] Push (cameras AI **ET** non-AI)
159+
- [x] Activation/désactivation Push
160+
- [ ] Planning Push
161+
162+
- [x] Activation/désactivation Enregistrement audio
163+
164+
#### Detection de mouvement
165+
- [x] Remontée des détections de mouvements en temps-réel (ONVIF)
166+
- [x] Activation/désactivation AI Track
167+
168+
- [ ] Configuration de la Détection de mouvement
169+
- [ ] Configuration de la zone de detection de mouvement (cameras AI **ET** non-AI)
170+
- [x] Sensibilité par défaut (cameras AI **ET** non-AI)
171+
- [ ] Planning Sensibilité (cameras AI **ET** non-AI)
172+
- [x] Sensibilité Detection intelligente Personne **(cameras AI)**
173+
- [x] Sensibilité Detection intelligente Véhicule **(cameras AI)**
174+
- [x] Delai d'alarme Personne **(cameras AI)**
175+
- [x] Delai d'alarme Véhicule **(cameras AI)**
176+
- [ ] Dimension d'objet Personne **(cameras AI)**
177+
- [ ] Dimension d'objet Véhicule **(cameras AI)**
178+
179+
**NB :** Le detection des animaux n'est pas pris en charge par le plugin (Detection en béta actuellement)
99180

100181
#### OSD
101182
- [x] Afficher/Masquer Watermark
@@ -105,6 +186,8 @@ Les options correspondent aux paramètres que vous avez dans : Réglages > Syst
105186
- [x] Régler la position de la date/heure
106187

107188

108-
(1): Ne fonctionne qu'avec les Cameras ayant la fonctionnalité (Ability) "supportPtzCheck"
189+
(1): Ne fonctionne qu'avec les Cameras ayant la fonctionnalité (Ability) "supportPtzCheck" : E1Outdoor, RLC-523WA et RLC-823A UNIQUEMENT
190+
191+
(2): Ne fonctionne qu'avec les Cameras ayant la fonctionnalité (Ability) "supportAudioAlarm"
109192

110-
(2): Ne fonctionne qu'avec les Cameras ayant la fonctionnalité (Ability) "supportAudioAlarm"
193+
(3): Ne fonctionne qu'avec les **Cameras AI** ayant la fonctionnalité (Ability) "ptzPreset" ET les commandes Get(Set)PtzGuard intégrées aux firmwares : E1Outdoor, RLC-523WA et RLC-823A UNIQUEMENT

core/class/reolink.class.php

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -223,24 +223,20 @@ public static function refreshNFO($id) {
223223

224224
log::add('reolink', 'debug', 'Rafraichissement des informations de la caméra...');
225225

226-
$channel = $camcmd->getConfiguration('defined_channel');
227-
if ($channel == NULL) {
228-
$channel = 0;
229-
}
226+
$channel = $camcmd->getConfiguration('defined_channel', 0);
230227

231228
// Prepare request with INFO needed
232229
foreach (reolinkCmd::byEqLogicId($id) as $cmd) {
233230
$payload = $cmd->getConfiguration('payload');
234-
if ($cmd->getType() == "info" && $payload != NULL) {
231+
if ($cmd->getType() == "info" && $payload != NULL) {
235232
$payload = str_replace('#CHANNEL#', $channel, $payload);
236233
$payload = str_replace('\\', '', $payload);
237234

238-
if (!in_array($payload, $cmdarr))
239-
{
235+
if (!in_array($payload, $cmdarr)){
240236
$cmdarr[] = $payload;
241237
}
242238
$cmd_block = array_chunk($cmdarr, config::byKey('cmdblock', __CLASS__, CMD_SEND_QTY));
243-
}
239+
}
244240
}
245241

246242
foreach($cmd_block as $key => &$value) {
@@ -255,7 +251,7 @@ public static function refreshNFO($id) {
255251
foreach ($res as &$json_data) {
256252
log::add('reolink', 'debug', 'Lecture info > ' . preg_replace('/\s+/', '', print_r($json_data, true)));
257253

258-
switch ($json_data['cmd']) {
254+
switch ($json_data['cmd']) {
259255
case reolinkAPI::CAM_GET_REC:
260256
$camcmd->checkAndUpdateCmd('SetRecordState', $json_data['value']['Rec']['schedule']['enable']);
261257
$camcmd->checkAndUpdateCmd('SetPreRecordState', $json_data['value']['Rec']['preRec']);
@@ -265,10 +261,10 @@ public static function refreshNFO($id) {
265261

266262
case reolinkAPI::CAM_GET_RECV20:
267263
$camcmd->checkAndUpdateCmd('SetRecordStateV20', $json_data['value']['Rec']['enable']);
268-
$camcmd->checkAndUpdateCmd('SetPreRecordStateV20', $json_data['value']['Rec']['preRec']);
269-
$camcmd->checkAndUpdateCmd('SetOverwriteStateV20', $json_data['value']['Rec']['overwrite']);
270-
$camcmd->checkAndUpdateCmd('SetPostRecordStateV20', $json_data['value']['Rec']['postRec']);
271-
break;
264+
$camcmd->checkAndUpdateCmd('SetPreRecordStateV20', $json_data['value']['Rec']['preRec']);
265+
$camcmd->checkAndUpdateCmd('SetOverwriteStateV20', $json_data['value']['Rec']['overwrite']);
266+
$camcmd->checkAndUpdateCmd('SetPostRecordStateV20', $json_data['value']['Rec']['postRec']);
267+
break;
272268

273269
case reolinkAPI::CAM_GET_HDDINFO:
274270
if ($json_data['value']['HddInfo'][0]['format'] == 1 && $json_data['value']['HddInfo'][0]['mount'] == 1) {
@@ -362,13 +358,19 @@ public static function refreshNFO($id) {
362358

363359
case reolinkAPI::CAM_GET_WHITELED:
364360
$camcmd->checkAndUpdateCmd('SetWhitLedState', $json_data['value']['WhiteLed']['state']);
365-
$camcmd->checkAndUpdateCmd('SetWhiteLedMode', $json_data['value']['WhiteLed']['mode']);
361+
$camcmd->checkAndUpdateCmd('SetWhiteLedModeState', $json_data['value']['WhiteLed']['mode']);
366362
$camcmd->checkAndUpdateCmd('SetWhitLedLuxState', $json_data['value']['WhiteLed']['bright']);
367363
break;
368364

369365
case reolinkAPI::CAM_GET_PTZPRESET:
370366
break;
371367

368+
case reolinkAPI::CAM_GET_PTZGUARD:
369+
$camcmd->checkAndUpdateCmd('CheckIsExistsPtzGuardPoint', $json_data['value']['PtzGuard']['bexistPos']);
370+
$camcmd->checkAndUpdateCmd('SetAutoReturnPtzGuardPointState', $json_data['value']['PtzGuard']['benable']);
371+
$camcmd->checkAndUpdateCmd('SetIntervalAutoReturnPtzGuardPointState', $json_data['value']['PtzGuard']['timeout']);
372+
break;
373+
372374
case reolinkAPI::CAM_PTZCHECK:
373375
break;
374376

@@ -403,7 +405,7 @@ public static function refreshNFO($id) {
403405
$camcmd->checkAndUpdateCmd('SetAudioAlarmStateV20', $json_data['value']['Audio']['enable']);
404406
break;
405407

406-
case reolinkAPI::CAM_AUDIOALARMPLAY:
408+
case reolinkAPI::CAM_AUDIOALARMPLAY:
407409
break;
408410

409411
case reolinkAPI::CAM_GET_AUDIOCFG:
@@ -446,14 +448,34 @@ public static function refreshNFO($id) {
446448
$camcmd->checkAndUpdateCmd('SetFocusState', $json_data['value']['ZoomFocus']['focus']['pos']);
447449
break;
448450

449-
case reolinkAPI::CAM_PERFORMANCE:
451+
case reolinkAPI::CAM_GET_PERFORMANCE:
450452
$camcmd->checkAndUpdateCmd('SetCpuUsedState', $json_data['value']['Performance']['cpuUsed']);
451453
$camcmd->checkAndUpdateCmd('SetNetThroughputState', $json_data['value']['Performance']['netThroughput']);
452454
$camcmd->checkAndUpdateCmd('SetCodecRateState', $json_data['value']['Performance']['codecRate']);
453455
break;
454456

455457
case reolinkAPI::CAM_GET_AICFG:
456-
$camcmd->checkAndUpdateCmd('SetaiTrack', $json_data['value']['aiTrack']);
458+
$camcmd->checkAndUpdateCmd('SetaiTrackState', $json_data['value']['aiTrack']);
459+
break;
460+
461+
case reolinkAPI::CAM_GET_MDALARM:
462+
$revert_value = reolinkCmd::byEqLogicIdAndLogicalId($id,'SetMdDefaultSensitivityState')->getConfiguration('revertvalue', 0);
463+
$mdsensdef = $revert_value - $json_data['value']['MdAlarm']['newSens']['sensDef'];
464+
$camcmd->checkAndUpdateCmd('SetMdDefaultSensitivityState', $mdsensdef);
465+
break;
466+
467+
case reolinkAPI::CAM_GET_AIALARM:
468+
switch ($json_data['value']['AiAlarm']['ai_type']) {
469+
case "people":
470+
$camcmd->checkAndUpdateCmd('SetSdSensitivityPeopleState', $json_data['value']['AiAlarm']['sensitivity']);
471+
$camcmd->checkAndUpdateCmd('SetAlarmDelayPeopleState', $json_data['value']['AiAlarm']['stay_time']);
472+
break;
473+
case "vehicle":
474+
$camcmd->checkAndUpdateCmd('SetSdSensitivityVehicleState', $json_data['value']['AiAlarm']['sensitivity']);
475+
$camcmd->checkAndUpdateCmd('SetAlarmDelayVehicleState', $json_data['value']['AiAlarm']['stay_time']);
476+
break;
477+
}
478+
log::add('reolink', 'debug', 'ai_type check : '. $json_data['value']['AiAlarm']['ai_type']);
457479
break;
458480

459481
default:

0 commit comments

Comments
 (0)