Git Product home page Git Product logo

jeedom-plugin-gds3710's Introduction

Plugin GDS 3710

Version du 28 avril 2020 by Richard Perez | [email protected]

IMPORTANT

Il semble y avoir un problème avec la version 1.0.4.9 du firmware du GDS3710 (la réalisation de capture du flux échoue). Les autres version supérieures à la 10.0.3.32 fonctionnent. Le plugin a été testé jusqu'à la version 10.0.7.8.

Introduction

Ce plugin permet l'intégration du portier GrandStream GDS3710 dans Jeedom. Dans sa version actuelle (28 avril 2020), il permet de :

  • Récupérer les évènements du portier et de les gérer via des scénarios ou des commandes.
  • De modifier la configuration du portier.
  • D'activer les contacts secs du portier permettant de manoeuvrer une porte ou autre.
  • D'afficher le flux MJPEG du portier dans un widget de dashboard ou de mobile.
  • D'enregistrer des images extraites du flux MJPEG.
  • De consulter les images enregistrées via une bibliothèque intégrée.
  • D'envoyer des images enregistrées via une autre commmande (testé avec le plugin Telegram).
  • D'activer ou de désactiver le LDC (Lens Deformation Correction).
  • De changer le réglage du capteur vidéo du portier (normal, low-light et WDR)
  • (Beta) D'enregistrer un client SIP directement depuis Jeedom et de répondre aux appels directement sur le dashboard.

Ce plugin est basé sur la document fourni par GrandStream : http://www.grandstream.com/sites/default/files/Resources/gds37xx_http_api.pdf

Configuration du portier GrandStream GDS3710

Pré-requis

Afin de récupérer les évènements générés par le portier nous allons utiliser la foncitonnalité "Event Notification" qui est disponible à partir de la version 10.0.3.32 du firmware du GrandStream GDS3710. Si vous disposez d'une version antérieure la fonctionnalité "Event notification" ne sera peut-être pas disponible et il vous faudra mettre à jour le firmware de votre GDS3710 vers la dernière version.

Configuration de la fonctionnalité "Event Notification"

  • Rendez-vous dans l'interface de gestion de votre GDS3710 puis dans Maintenance -> Event Notification.
  • Cochez la case "Enable Event Notification".
  • Sélectionnez le type de communication avec le serveur "http" ou "https" selon la configuration de votre serveur Jeedom.
  • Optionnel mais fortement recommandé : Saisissez un identifiant et un mot de passe que votre portier devra fournir a Jeedom pour publier un évènement.
  • Dans champs "HTTP/HTTPS Server", entrez la chaine suivante en remplacant IP_DE_VOTRE_JEEDOM par l'adresse IP de votre serveur Jeedom : "IP_DE_VOTRE_JEEDOM/plugins/gds3710/core/php/jeeGDS3710.php".
  • Dans le champs URL Template, entrez la chaine suivante : mac=${MAC}&content=${WARNING_MSG}&type=${TYPE}&date=${DATE}&card=${CARDID}&sip=${SIPNUM}.
  • Sauvegarder la configuration.

GDS3710 Configuration

Configuration de l'authentification pour le flux MJPEG

  • Rendez-vous dans l'interface de gestion de votre GDS3710 puis dans System Settings -> Access Settings.
  • Sélectionnez le mode d'authentification du flux MJPEG (MJPEG Authentication Mode). Nous vous conseillons le mode "Challenge+Response" pour plus de sécurité.

Activation de l'API HTTP pour l'ouverture de la porte

  • Rendez-vous dans l'interface de gestion de votre GDS3710 puis dans Door System Settings -> Basic Settings.
  • Cochez la case "Enable HTTP API Remote Open Door".
  • Choisissez un PIN pour l'option "Remote PIN to Open Door".
  • Sauvegardez la configuration.

NB : Assurez-vous d'avoir changer le mot-de-passe par défaut du compte admin avant d'activer cette fonctionnalité.

Relevez de l'adresse IP et de l'adresse Mac de votre portier

  • Rendez-vous dans l'interface de gestion de votre GDS3710 puis dans Status -> Network info.
  • Relevez l'adresse Mac et l'adresse IP de votre portier, nous en aurons besoin plus tard.

Configuration du plugin GDS3710 dans Jeedom

Configuration générale

  • Allez à la page de configuration du plugin et saisissez l'identifiant et le mot-de-passe que vous avez choisis à l'étape "Configuration de la fonctionnalité 'Event Notification'".
  • Renseignez un répertoire pour le stockage des captures d'écran. Par défaut ce répertoire est : "plugins/gds3710/data/records".

Création et configuration de votre équipement

  • Une fois le plugins installé, créez un nouvel équipement "GDS3710" et activez le.
  • Entrez l'adresse MAC (sans les ":") de votre portier dans le champs correspondant.
  • Entrez l'Adresse IP de votre portier dans le champs correspondant.
  • Saisissez le mot-de-passe du compte admin dans le champs correspondant.
  • Saisissez le remote PIN dans le champs correspondant (il s'agit du PIN permettant d'ouvrir la porte 1).
  • Saisissez le remote PIN 2 dans le champs correspondant (il s'agit du PIN permettant d'ouvrir la porte 2).
  • Sélectionnez le mode d'authentification du flux MJPEG que vous avez choisis précédement.
  • Sauvegardez les modifications apportées à l'équipement.

Configuration et test du client SIP

TODO

C'est terminé, tout est configuré.

Utilisation

Principe de fonctionnement

Chaque évènement envoyé par le GDS3710 comporte un type dont voici la liste (extrait de la documentation du GDS3710 sur la fonctionnalité "event notification", disponible ici : http://www.grandstream.com/sites/default/files/Resources/gds_event_logs_guide.pdf):

Type d'évènement Nom Description de l'évènement
100 Open Door via Card Indicates that someone opens the door via card or key fob.
101 Open Door via Card (over Wiegand) Indicates that someone opens the door via card or key fob using Wiegand interface connected to GDS.
200 Visiting Log Indicates that door has been opened for visitor which pressed door bell button.
300 Open Door via Universal PIN Indicates that door has been opened successfully using local PIN code via GDS keypad.
301 Open Door via Private PIN Indicates that someone opened the door successfully using their private PIN code via GDS keypad.
302 Open Door via Guest PIN Indicates that a guest used “Guest PIN” code to open the door using GDS keypad.
400 Open Door via DI Indicates that door has been opened using DI (Digital Input) Signal, such as using a push button.
500 Call Out Log Indicates the GDS unit initiated a call out, for example when someone uses the keypad to dial a number or press door bell button which preconfigured destination number.
501 Call In Log Indicates that call has been received by the GDS unit.
504 Call Log (Door Bell Call) Indicates that someone has initiated a call using door bell button.
600 Open Door via Card and PIN Indicates that someone used his RFID card or key fob, plus his own private password to authenticate and open the door.
601 Keep Door Open (Immediately) Key door Open (immediately) action has been performed from the web Interface.
602 Keep Door Open (Scheduled) Key door Open (immediately) action has been set from the web Interface and the event is triggered.
700 Open Door via Remote PIN Indicates that someone did send remote PIN code to open the door using GDS manager tool for example.
800 HTTP API Open Door Indicates that someone did send remote PIN code to open the door HTTP API command.
900 Motion Detection Indicates that motion detection is triggered.
1000 DI Alarm Indicates that alarm IN is triggered.
1100 Dismantle by Force Indicates that the unit has been dismantled by force.
1101 System up Indicates that the system is UP
1102 Reboot Indicates that the GDS unit has been rebooted.
1103 Reset (Clear All Data) Factory reset (clear all data) has been performed.
1104 Reset (Retain Network Data Only) Factory reset (Retain Network Data Only) has been performed.
1105 Reset (Retain Only Card Information) Factory reset (Retain Only Card Information) has been performed.
1106 Reset (Retain Network Data and Card Information) Factory reset (Retain Network Data and Card Information) has been performed.
1107 Reset (Wiegand) Factory reset using Wiegand module has been performed on the unit.
1108 Config Update Indicates that the system’s configuration has been updated.
1109 Firmware Update (1.0.0.0) Indicates that the system’s firmware has been upgraded.
1200 Hostage Alarm Indicates that someone has entered the hostage alarm PIN code to open the door.
1300 Invalid Password Indicates that someone has entered wrong password PIN code to open the door for 5 attempts and corresponding alarm action has been triggered.
1400 Mainboard Temperature(32°C) Normal Indicates that device’s mainboard temperature is normal, (around 32°C).
1401 Mainboard Temperature(32°C) Too Low Indicates that device’s mainboard temperature is too low.
1402 Mainboard Temperature(32°C) Too high Indicates that device’s mainboard temperature is too high.
1403 Sensor Temperature(32°C) Normal Indicates that device's sensor temperature is normal, (around 32°C).
1404 Sensor Temperature(32°C) Too Low Indicates that device's sensor temperature is normal too low.
1405 Sensor Temperature(32°C) Too High Indicates that device's sensor temperature is normal too high.

Utilisation des évènements déclenchés avec des commandes d'actions

Pour chaque code d'évènement vous avez la possibilité dans les onglets "Appel", "Ouverture Porte", "Maintient de l'ouverture", "Sécurité", "Surveillance Matériel" et "Surveillance Logiciel" de créer une liste de commandes qui seront exécutées lors de la réception de ces évènements. Utilisez simplement le bouton "Ajouter une action", présent à coté de chaque type d'évènement puis sélectionner l'action à réaliser. Une fois les actions ajoutées, vous avez la possibilité de changer l'ordre d'éxécution en les faisant glisser.

Utilisation des évènements déclenchés avec des scénarios

L'ajout d'un scénario en réponse à un évènement reçu se fait en saisissant "scenario" dans le champs "action" après avoir cliqué sur le bouton "Ajouter une action". Une nouvelle boite de dialogue vous permettra alors de sélectionner le scénario à exécuter.

Lors de l'exécution du scénario, les informations reçues par jeedom seront transmises au scénario par les biais des Tags suivant :

Tag Contenu
#mac# Contient l'adresse Mac de l'appareil ayant envoyé la notification
#content# Contient un message de description de la notification envoyé par le GDS3710
#type# Contient le type de la notification
#date# Contient l'heure et la date de la notification
#sip# Contient le numéro SIP relatif à la notification
#card# Contient le numéro de la carte relatif à la notification

Utilisation des commandes de type INFO de l'équipement

L'onglet "commandes" contient des commandes de type info contenant pour chaque type d'évènement le dernier évènement reçue au format JSON. La commande "Last event" contient la dernier évèneement réceptionné.

Utilisation des commandes de type ACTION de l'équipement

L'équipement dispose de commandes de type ACTION permettant de réaliser les actions suivantes :

  • Ouverture de la porte.
  • Fermeture de la porte.
  • Réalisation d'une capture d'écran.
  • Activation et désactivation du LDC (Lens Distortion Correction).
  • Changement du mode du cpateur CMOS (Normal, Low Light , WDR)

Envoi de captures du flux MJPEG via un scénario

Le plugin vous permet de transmettre des captures du flux MJPEG par l'intermédiaire d'un plugin tiers (testé avec Telegram).

  • Ajoutez un bloc d'action dans un scénario et sélectionnez la commande "[Envoyer un snapshot]" de votre équipement GDS3710.
  • Dans le champs "Nombre captures ou options" entrez le nombre de captures à envoyer.
  • Dans le champs "Commande message d'envoi des captures" sélectionner la commande pour envoyer la ou les captures (il s'agit de la commande de votre bot Telegram).

Envoyer un snapshot dans un scénario

jeedom-plugin-gds3710's People

Contributors

ripleyxlr8 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jeedom-plugin-gds3710's Issues

Firmware compatibilities

Do you know if the latest firmware is compatible with your jeedom plugin ?

The firmware is the 1.0.7.8

you can found the release note here :
Release Note

Frequent disconnexion

When the SIP client is running inside Jeedom disconnection from SIP server happens frequently but when the code is run alone out side Jeedom. Everything runs smoothly.

A thread has been opened in the Jeedom forum : [https://community.jeedom.com/t/integration-dun-client-sip-javascript-dans-un-widget-probleme-de-stabilite-de-la-connexion/26029)]

Envoyer un snapshot via SMS ou autre

Envoyer un snapshot via SMS ou autre

Est-ce qu’il serait possible d’étendre l’envoi de snapshots via SMS (plugins JPI), mais également a l’application mobile, et autre

Impossible de prendre des snapshots (plugin incompatible avec les versions > 1.0.4.9)

Lorsque je prends un snapshot, l’image est bien créée dans le dossier mais elle est vide. J’ai vérifié les droits sur ce dossier pour mon user www-data, il a bien les droits d’ecriture. Depuis le plugin camera, je n’ai aucun problème pour prendre un snapshot du GDS.

Version de jeedom : 3.3.21 (Debian 9)
Version firmware GDS: 1.0.5.6

Checking ACL on the record directory before writing snapshots files

Currently there is no possibility for the user to check is the right on record directory are set the right way.

  1. We could implement a button in the configuration panel to check it. It could be located near of the record directory field.

  2. When a snapshot is taken we could display an error if the snapshot failed.

Compatibility issue with PHP 7.3

Voici les log présents, étrangement ou non il n'y pas pas beaucoup d'info, le log est bien sur error !
J'envoi les captures d'écran par mail.

[2019-09-17 18:38:59][DEBUG] : Snapshot has been requested
[2019-09-17 18:38:59][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/goform/login?cmd=login&user=admin&type=1 [64] => [81] => [19913] => 1 )
[2019-09-17 18:38:59][DEBUG] : URL return : 0OK
[2019-09-17 18:38:59][DEBUG] : String to be hashed : :XXX
[2019-09-17 18:38:59][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/goform/login?cmd=login&user=admin&authcode=5c4156a80af9f9153db4e3ac04ad5368&type=1 [64] => [81] => [19913] => 1 [42] => 1 )
[2019-09-17 18:39:00][DEBUG] : URL return : HTTP/1.0 200 OK Content-Type: text/xml;charset=UTF-8 2Password error !
[2019-09-17 18:39:00][DEBUG] : Trying to create the capture under : /var/www/html/core/php/../../plugins/gds3710/data/records/98/DoorPhone_2019-09-17_16-39-00-075600.jpg
[2019-09-17 18:39:00][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/snapshot/view0.jpg [64] => [81] => [19913] => 1 [10022] => [42] => [19914] => 1 [10001] => Resource id #10 )
[2019-09-17 18:39:00][DEBUG] : URL return : 1
[2019-09-17 18:39:00][DEBUG] : Closing the file
[2019-09-17 18:39:00][DEBUG] : Registering path to lastest picture
[2019-09-17 18:39:37][DEBUG] : Array ( [0] => DoorPhone [1] => 2019-09-17 [2] => 16-05-42-285100 )
[2019-09-17 18:39:37][DEBUG] : Array ( [0] => DoorPhone [1] => 2019-09-17 [2] => 16-39-00-075600 )
[2019-09-17 18:39:37][DEBUG] : Array ( [2019-09-17] => Array ( [16-05-42-285100] => DoorPhone_2019-09-17_16-05-42-285100.jpg [16-39-00-075600] => DoorPhone_2019-09-17_16-39-00-075600.jpg ) )
[2019-09-17 19:13:39][DEBUG] : Snapshot has been requested
[2019-09-17 19:13:39][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/goform/login?cmd=login&user=admin&type=1 [64] => [81] => [19913] => 1 )
[2019-09-17 19:13:39][DEBUG] : URL return : 07572c2ab8aa80401c5fac792d193bec6OK
[2019-09-17 19:13:39][DEBUG] : String to be hashed : xxxx
[2019-09-17 19:13:39][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/goform/login?cmd=login&user=admin&authcode=f9976fd35cacad6cbe898649bdec42ed&type=1 [64] => [81] => [19913] => 1 [42] => 1 )
[2019-09-17 19:13:39][DEBUG] : URL return : HTTP/1.0 200 OK Content-Type: text/xml;charset=UTF-8 Set-Cookie: mjpeg_sess=f9976fd35cacad6cbe898649bdec42ed;path=/; Set-Cookie: mjpeg_uname=admin;path=/; Set-Cookie: mjpeg_level=1;path=/; 0OK
[2019-09-17 19:13:39][DEBUG] : Trying to create the capture under : /var/www/html/core/php/../../plugins/gds3710/data/records/98/DoorPhone_2019-09-17_17-13-39-369900.jpg
[2019-09-17 19:13:39][DEBUG] : URL array : Array ( [10002] => https://192.168.1.130/snapshot/view0.jpg [64] => [81] => [19913] => 1 [10022] => mjpeg_sess=f9976fd35cacad6cbe898649bdec42ed;mjpeg_uname=admin;mjpeg_level=1 [42] => [19914] => 1 [10001] => Resource id #8 )
[2019-09-17 19:13:39][DEBUG] : URL return : 1
[2019-09-17 19:13:39][DEBUG] : Closing the file
[2019-09-17 19:13:39][DEBUG] : Registering path to lastest picture
[2019-09-17 19:14:03][DEBUG] : Array ( [0] => DoorPhone [1] => 2019-09-17 [2] => 17-13-39-369900 )
[2019-09-17 19:14:03][DEBUG] : Array ( [2019-09-17] => Array ( [17-13-39-369900] => DoorPhone_2019-09-17_17-13-39-369900.jpg ) )
[2019-09-17 19:15:15][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php plugin_id=gds3710 function=pre_update callInstallFunction=1
[2019-09-17 19:15:18][INFO] : Début d'activation du plugin
[2019-09-17 19:15:19][INFO] : Info sur le démon : Array ( [launchable_message] => [launchable] => nok [state] => nok [log] => nok [auto] => 0 )
[2019-09-17 19:15:19][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php plugin_id=gds3710 function=update callInstallFunction=1
[2019-09-22 01:36:49][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 09:37:18][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 09:37:19][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 09:37:21][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 15:00:47][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 15:00:49][ERROR] : Aucun équipement trouvé avec l'adresse MAC :
[2019-09-23 15:00:50][ERROR] : Aucun équipement trouvé avec l'adresse MAC :

No video preview

Hi,
Very nice job !
I'm on latest Jeddom version and GDS plugin.
I have checked all my configuration with good documentation
Since one month, I can view video in my plugin page, button open door work correctly door work correctly.
Any idee ?
Thanks
Christophe

Ajout d'un deuxième bouton d'ouverture

L'un des derniers firmware ajoute la possibilité d'utiliser la sortie contact sec alarme (ALMOUT1) comme 2ème contact d'ouverture de porte permettant ainsi de pouvoir ouvrir le portail et le portillon par exemple.

Serait-il possible de l'ajouter dans le plugin ?

Le fonctionnement via l'api est exactement le même que l'ouverture du porte actuel, même authentification, même url,... la seule chose qui change pour déterminer quelle porte ouvrir c'est le remote PIN.

Il y a donc maintenant 2 remote PIN à définir dans l'interface du gds3710.

Il faudrait donc pouvoir définir ces 2 remote PIN dans l'équipement Jeedom et prévoir 2 boutons d'ouverture sur le widget.

Merci :) et bravo pour ce plugin tellement utile !

Intégrer les interactions SIP

J’ai commencé à regarder pour utiliser le plugin ClientSIP de Mika-nt28, mais il n’est pas encore fonctionnel.
Le top serait évidemment de pouvoir utiliser le visiophone comme un vrai visiophone avec notre tablette ou smartphone. En évitant un temps soit peu de devoir monter un serveur SIP !!!!!

Improving management of snapshots and of the content of Lastest_Snapshot_URL and Lastest_Snapshot_Path commands

Commands Lastest_Snapshot_URL and Lastest_Snapshot_Path contain URL and path to the lastest snapshot. But if the snapshot has been deleted, then the picture cannot be displayed in the widget and an error 404 occurs.

  1. We could implement a way to manage commands value during the Ajax call to remove the snapshot.

  2. We could check if the file exist before displaying it in the widget and therefore removing the 404 error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.