amélioration du script doorbell

Discussion et échanges de scripts pour la box eedomus

amélioration du script doorbell

Messagepar enr37 » 12 Mars 2018 20:56

salut,
je viens de m'acheter un doorbell. Mon portail est déjà domotisé et ce que je voulais faire était que si j'appuyais sur le cadenas (ouverture du portail) que via une règle, je puisse ouvrir mon portail. or je ne vois rien dans ce code qui puisse permettre de l'ouvrir. cela semble logique car j'ai l'impression qu'on ne peut pas recevoir sur quoi le téléphone appuie. Mais je suis vert, car je ne peux défoncer mon pilier de portail pour atteindre le contact sec.

Code : Tout sélectionner
<?php

// Version 1 / 31 aout 2016, 1ère version par Connected Object
$eedomus_api_url = 'api.eedomus.com';

$doorbird_ip = getArg('doorbird_ip');
$action = getArg('action');

if ($action == 'test')
{
  $doorbird_user = getArg('doorbird_user');
  $doorbird_pass = getArg('doorbird_pass');
}
else
{
  $doorbird_user = loadVariable('doorbird_user');
  $doorbird_pass = loadVariable('doorbird_pass');
 
  if ($doorbird_user == '') // au cas où l'on n'est pas cliquer sur "Tester" lors de l'installation
  {
    die("ERREUR : Veuillez tester le plugin au préalable, aucun identifiant doorbird initialisé.");
  }
}

$headers = array('Authorization: Basic '.base64_encode("$doorbird_user:$doorbird_pass"));

if ($_GET['eedomus_controller_module_id'] != '')
{
  saveVariable('action_api_code', $_GET['eedomus_controller_module_id']);
}

$action_api_code = loadVariable('action_api_code');

function sdk_save_image()
{
  $ftp_server = getArg('ftp_server');
  $ftp_user = getArg('ftp_user');
  $ftp_pass = getArg('ftp_pass');

  $url = 'http://'.$GLOBALS['doorbird_ip'].'/bha-api/image.cgi';
  $img = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $GLOBALS['headers']);
 
  $GLOBALS['response'] = ftpUpload($ftp_server, $ftp_user, $ftp_pass, $img, 'doorbird_img.jpg');
}

switch($action)
{
  case 'test': // utilisé lors de l'installation du plugin
  case 'info':
    $url = 'http://'.$doorbird_ip.'/bha-api/info.cgi';
    $response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
  break;
 
  case 'savesnap': // images à la demande
    sdk_save_image();
  break;
 
  case 'poll':
    $response = '{ "error": false, "action": "'.$action.'", "value": "doorbell_off"}';
  break;
 
  case 'showsnap': // affiche l'image, debug
    $url = 'http://'.$doorbird_ip.'/bha-api/image.cgi';
    $img = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
    sdk_header('image/jpg');
    echo $img;
    die();
  break;
 
  case 'open':
    $url = 'http://'.$doorbird_ip.'/bha-api/open-door.cgi';
    $response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
  break;
 
  case 'light':
    $url = 'http://'.$doorbird_ip.'/bha-api/light-on.cgi';
    $response = httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
  break;

  case 'subscribe':
    $do_subscribe = true;
  break;
 
  default:
    $response = '{ "error": true, "action": "none", "msg": "unknown action"}';
  break;
}

$subscribed = loadVariable('subscribed');

if (($do_subscribe || $subscribed != $action_api_code) && $action_api_code != '')
{
  // On commence par réinitialiser les anciennes notifications, car on a pu supprimer un événement depuis
  $url = 'http://'.$doorbird_ip.'/bha-api/notification.cgi?reset=1';
  $response .= httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
   
  if ($_GET['events'] != '')
  {
      // On peut se réabonner aux notifications de son choix en les modifiant manuellement depuis la liste des valeurs du module
    $events = explode('|', $_GET['events']);
  }
  else
  {
    // Par défaut
    $events = array('doorbell', 'motionsensor' /*, 'dooropen'*/);
  }
 
  foreach ($events as $event)
  {
    // Doorbird API requires a cloud URL
    $notification_url = urlencode('https://'.$eedomus_api_url.'/set?action=periph.value&periph_id='.$action_api_code.'&value='.$event.getApiUser());
    $url = 'http://'.$doorbird_ip.'/bha-api/notification.cgi?url='.$notification_url.'&event='.$event.'&subscribe=1&relaxation=10&user=&password=';
    $response .= httpQuery($url, 'GET', /*$post*/ NULL, /*$oauth_token*/ NULL, $headers);
  }
 
  saveVariable('subscribed', $action_api_code);
  saveVariable('subscribed_debug', $response);
  if ($do_subscribe)
  {
    echo $response; die();
  }
}

if (strpos($response, '<h1>401 - Unauthorized</h1>') !== false)
{
  $response = '{ "error": true, "action": "'.$action.'", "msg": "Unauthorized, please verify your doorbird login & password"}';
}
else if ($action == 'test')
{
  echo "<b>Connexion réussie !</b><br><br>Informations sur votre portier Doorbird : <br>".$response;
  saveVariable('doorbird_user', $doorbird_user);
  saveVariable('doorbird_pass', $doorbird_pass);
  die();
}

sdk_header('text/xml');
echo jsonToXML($response);

?>
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar technoman63 » 12 Mars 2018 21:23

Si on peut je te dis demain comment faire ;)
Mes Scripts eedomus : windDirection, rainTrend

Blog: https://devotics.fr
technoman63
 
Messages : 648
Inscription : 09 Avr 2015

Re: amélioration du script doorbell

Messagepar influman » 12 Mars 2018 21:26

Doorbird ou doorbell ?
Corrige ton sujet le cas echeant :)
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar technoman63 » 12 Mars 2018 21:47

Je pense que c'est un doorbird
dans les paramètre de l'application tu vas dans administration -> visite HTTP -> Legacy...........Dooropen et dans l'adresse tu met celle de ton module de portail avec comme value TOGGLE[100|0] comme ça tu appui une fois ça ouvre une autre fois ça referme ;)
Mes Scripts eedomus : windDirection, rainTrend

Blog: https://devotics.fr
technoman63
 
Messages : 648
Inscription : 09 Avr 2015

Re: amélioration du script doorbell

Messagepar enr37 » 13 Mars 2018 11:04

@influman, si je corrige le sujet (bien que tu ais raison ;) )vous ne serez plus abonnés je pense si ?

@technoman, excellent, je n'avais pas vu cette possibilité qui est celle que j'avais mise dans gpsdomotik ou macrodroid :p
par contre, ca ne fonctionne pas. quand j'appuie sur le cadenas de la page de garde j'ai toujours ce choix entre relais 1 et relais2 mais pas mon ouverture.
au dessus, j'ai bien noté legacy_api_http_dooropen (d'ailleurs je n'ai trouvé nulle part un listing de ces possibilités, meme pas dans la doc API)
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar influman » 13 Mars 2018 12:14

il faut changer le sujet pour que, quand qqun fera une recherche sur le doorbird, il trouvera ton post...
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar enr37 » 13 Mars 2018 12:24

je suis d'accord mais comme indiqué, cela ne changera pas nos abonnements au post ? sinon, je note tjs quand mon sujet est répondu et je changerais a ce moment là ;)
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar technoman63 » 14 Mars 2018 16:43

Moi je gère ma porte de garage comme ça
;)
Mes Scripts eedomus : windDirection, rainTrend

Blog: https://devotics.fr
technoman63
 
Messages : 648
Inscription : 09 Avr 2015

Re: amélioration du script doorbell

Messagepar enr37 » 14 Mars 2018 16:50

salut,
je ne dis pas que ca n'est possible mais peux tu me faire un screenshot de ton tel (sans les codes bien sur) .
et du coup, qd tu appuies sur le cadenas, ca te donne quoi ? relais 1 et relais 2, je ne vois meme pas comment leur dire que que relais = telle commande http
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar influman » 15 Mars 2018 15:40

De ce que je comprends,
- tu veux pouvoir, depuis l'application Doorbird, déclencher un module existant de ton eedomus.
- aucun des relais physiques de ton Doorbird n'est utilisé.

1ère chose :
si tu as 2 relais d'ouverture, c'est que tu n'as pas la version D101 du Doorbird, mais une supérieure.
Ce qui explique que l'application Doorbird te demande quel Relais tu veux ouvrir.
Il faudrait leur demander (à Doorbird) de pouvoir squizzer le relais 2 quand il n'est pas utilisé...

Et j'ai l'impression que le script actuel sous eedomus, que tu présentes, ne concerne que le D101.
En lisant ça :
Code : Tout sélectionner
case 'open':
    $url = 'http://'.$doorbird_ip.'/bha-api/open-door.cgi';


cela active par défaut le relais physique n°1.
Il faudrait que ce script évolue pour proposer un actionneur complémentaire sous eedomus pour le relais n°2 également.

2ième chose :
Pour moi, via l'API, on peut transmettre pour quels évènements il peut déclencher des actions.
Par défaut, le script eedomus existant transmet l'info au Doorbird de mettre à jour la valeur d'un capteur eedomus en cas de sonnerie et mouvements :
Code : Tout sélectionner
$events = array('doorbell', 'motionsensor' /*, 'dooropen'*/);
...
$url = 'http://'.$doorbird_ip.'/bha-api/notification.cgi?url='.$notification_url.'&event='.$event.'&subscribe=1&relaxation=10&user=&password=';

on voit que le "dooropen" est en commentaire.
Tu peux peut-être le décommenter et le prévoir dans les valeurs possibles du capteur eedomus.
cela marche peut-être...mais vu que t'as deux relais, je me demande bien comment...

De ce que le lis de l'API récente Doorbird, notification.cgi a été remplacée par favorites.cgi et schedule.cgi depuis le firmware 000110

D'abord je comprends qu'il faut créer au préalable les "favorites" pour les différents appels eedomus :
Pour enregistrer par exemple l'appel API eedomus lors d'une ouverture du relais 1, la requête serait :
http://'.$doorbird_ip.'/bha-api/favorit ... tion_url.'
où $notification_url est l'appel à l'API eedomus pour positionner le périph à Relais1

Une fois que t'as les différentes "favorites", il faut les mettre dans des "schedules" pour qu'elles soient lancées lors d'évènement.
Et pour créer un schedule, il faut envoyer en POST un objet JSON...avec :
- dans la partie OUTPUT (en sortie) : event=http, param= le numéro id du "favorites" associé, schedule=once
- dans la partie INPUT (l'évènement) : input=input (un relais), param=1 (le 1er)

l'API indique qu'en évènement input on peut avoir : doorbell, motion, rfid, input
pour le RFID, tu peux même déterminer lequel précisément, donc on peut imaginer des évènements eedomus (via favorites) différents selon le badge...

Bref, tout ça pour dire que d'un point de vue script sous eedomus, un revamping est nécessaire pour prendre en compte les derniers firmwares et versions de l'API Doorbird.

3ième chose
A défaut de pouvoir mettre à jour le script, tu peux toi-même déterminer ces "favorites" et "schedule" dans l'application.
Je ne sais pas si ces actions "manuelles" seront compatibles avec le script eedomus existant, qui risque de te les supprimer à chaque fois...

Dans le menu Administration, dans "Favorites" (ou "Visite http.."), tu dois définir tous tes différents appels à l'API eedomus pour positionner un capteur eedomus sur la valeur (doorbell, motion, rfid, input). Surtout input dans ton cas pour tester au début.

Ensuite, pour les Schedules, c'est un peu éparpillé dans l'application, et donc pas du tout pratique :
- côté RFID, il suffit de rajouter pour chaque transpondeur en paramètre, le calendrier d'actions autorisées (Calendrier des mesures), avec le relais à actionner, et du coup l'appel http également (on ne peut donner désigner qu'un seul favorites)
- côté Sonnette, c'est dans "calendrier de la sonnette", même principe : calendrier pour la notification, le relais (bizarre mais pourquoi pas), l'appel http
- côté Motion Sensor, idem, dans la partie "Calendrier des mesures" des paramètres du détecteur 4D.
- côté Relais, et c'est là où il y a un pb, je n'ai pas trouvé dans l'appli, j'ai donc envoyé un mail au support Doorbird pour savoir, et j'attends...
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar influman » 19 Mars 2018 10:50

j'attends une réponse du support Doorbird, pour savoir, où dans l'appli, on peut configurer le calendrier des appels http associés aux relais...
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar enr37 » 19 Mars 2018 11:47

influman a écrit:j'attends une réponse du support Doorbird, pour savoir, où dans l'appli, on peut configurer le calendrier des appels http associés aux relais...

ok merci !

influman a écrit:De ce que je comprends,
- tu veux pouvoir, depuis l'application Doorbird, déclencher un module existant de ton eedomus.
- aucun des relais physiques de ton Doorbird n'est utilisé.


C'est exactement cela. Et pour moi, de noter une adresse http, on ne peut pas lui donner le relais 1 ou 2 comme destination
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar influman » 21 Mars 2018 12:12

enr37 a écrit:
influman a écrit:j'attends une réponse du support Doorbird, pour savoir, où dans l'appli, on peut configurer le calendrier des appels http associés aux relais...

ok merci !

influman a écrit:De ce que je comprends,
- tu veux pouvoir, depuis l'application Doorbird, déclencher un module existant de ton eedomus.
- aucun des relais physiques de ton Doorbird n'est utilisé.


C'est exactement cela. Et pour moi, de noter une adresse http, on ne peut pas lui donner le relais 1 ou 2 comme destination


Je n'ai pas eu de réponse encore du support Doorbird, mais ça s'est mis à fonctionner ce matin lors des tests du plugin DoorbirdX

Donc tu pourras faire ce que tu veux via le plugin (qui passe par l'API)
Par contre, depuis l'application, il n'y a pas encore de rubriques où contrôler l'appel http sur un évènement Relais.
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar enr37 » 22 Mars 2018 09:13

donc pour toi, en mettant le plugin a jour, je peux au moins cliquer sur un relais et ouvrir le portail ??
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar influman » 22 Mars 2018 09:20

En installant le plugin DoorBirdX du coté du store oui

Il faut lire quand meme la documentation du plugin avant ;)
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar enr37 » 25 Mars 2018 02:16

Salut @influman,
Bon ça y est.
Ta doc est lue et relue. J'ai testé les 4 modules virtuels, l'état firmware fonctionne et indique bien si j'ai autorisé un ou 2 relay.

Je peux actionner de l'eedomus vers le doorbird.

C'est de nouveau du doorbird vers l'eedomus que ça foire. On dirait que le push ne se fait pas. J'ai alors testé l'URL sur le navigateur du smartphone qui a bien changé l'état sur l'eedomus. Est-ce qu'il y a un endroit sur l'app qui dit :ce favori http va sur tel relais ??? Parce que la, rien de ne passe.

Envoyé de mon SM-G935F en utilisant Tapatalk
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: amélioration du script doorbell

Messagepar influman » 25 Mars 2018 09:15

Il n’y a rien a faire et on ne le voit pas dans l’appli.
Est ce que les notifications doorbell, motion et rfid fonctionnent ?
Il se peut que Doorbird n’ait réglé le pb que pour moi...suite a mon message.
Ils ne m’ont pas repondu.

Je te propose de leur faire un mail au support (en anglais) en leur demandant comment faire pour ça dans l’appli et comment en profiter aussi cote api.
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar technoman63 » 25 Mars 2018 09:43

Quand on envoi l'adresse de l'API eedomus autant que je me rappel il faut pensé a l'encoder sinon ça ne fonctionne pas
Mes Scripts eedomus : windDirection, rainTrend

Blog: https://devotics.fr
technoman63
 
Messages : 648
Inscription : 09 Avr 2015

Re: amélioration du script doorbell

Messagepar influman » 25 Mars 2018 10:27

Le plugin fonctionne chez moi et c’est lui qui precharge le Doorbird avec les notifications eedomus.
La seule nuance concerne la notification de l’action sur relais, pour qui j’ai du faire une mail au support Doorbird
influman
 
Messages : 2324
Inscription : 30 Oct 2013

Re: amélioration du script doorbell

Messagepar enr37 » 25 Mars 2018 12:26

@INFLUMAN
pour moi tout fonctionne (en tout cas ce que tu as mis en place) sauf la partie relais.
commande envoie bien les données de EEdomus vers doorbird
statuts et analytics aussi.
dans état, il dete cte la sonnerie ou bien le motion. le RFID, semble fonctionner avec la carte et le badge mais n'est pas reconnu par l'eedomus. comme dans l'app, j'ai dit que les 2 donnaient un relais 1 et que dasns eedomus si devient relais 1 ca ouvre le portail, donc ca "fonctionne" au travers d'une règle.
mais la seule chose qui m'interessait : que l'état sur l'eedomus detecte l'ouverture du relay 1 ou 2 via l'appli, ne fonctionne pas :-( et comme indiqué, l'url est bonne pour l'avoir testée. C'est donc le lien entre relay1 de l'appli et et l'adresse http qui n'est pas fait a mon avis non ?
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Suivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 28 invité(s)