[Store] Nuki Smartlock plugin (pilote/état)

Discussion et échanges de scripts pour la box eedomus

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar harrison » 25 Août 2021 10:27

clarinette49 a écrit:je n'ai pas ce matériel mais est ce que dans les ^paramètres il y a un pooling ? si poui il suffit de mettre le pooling sur 1 mn


J'ai regardé mais sauf erreur, il n'y a pas cette option pooling... :?
harrison
 
Messages : 24
Inscription : 09 Juin 2016

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar clarinette49 » 25 Août 2021 10:36

et dans les paramètres expert ?
clarinette49
 
Messages : 748
Inscription : 21 Mai 2019
Localisation : Angers

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar harrison » 25 Août 2021 11:29

clarinette49 a écrit:et dans les paramètres expert ?


Dans paramètres expert, il y a "Fréquence de la requête" (actuellement sur 0).
Ce serait ça ? :roll:
harrison
 
Messages : 24
Inscription : 09 Juin 2016

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar clarinette49 » 25 Août 2021 14:15

je pense oui mets une valeur 1 pour voir
clarinette49
 
Messages : 748
Inscription : 21 Mai 2019
Localisation : Angers

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar harrison » 25 Août 2021 15:04

clarinette49 a écrit:je pense oui mets une valeur 1 pour voir


Fréquence de la requête à 1 min ne change rien à mon problème... :(
harrison
 
Messages : 24
Inscription : 09 Juin 2016

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar clarinette49 » 25 Août 2021 15:22

n'ayant pas ce matos, je ne peux pas t'aider plus.
clarinette49
 
Messages : 748
Inscription : 21 Mai 2019
Localisation : Angers

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar harrison » 25 Août 2021 15:27

clarinette49 a écrit:n'ayant pas ce matos, je ne peux pas t'aider plus.


Merci quand même ! ;)
harrison
 
Messages : 24
Inscription : 09 Juin 2016

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 05 Sep 2021 19:01

chrystophe a écrit:Salut,

Lorsque je vais sur l'URL: https://factory.nuki.io/discover/bridges
j'ai le résultat suivant:
Code : Tout sélectionner
 {"bridges":[{"bridgeId":xxxxxxxxxx,"dateUpdated":"2021-07-09T09:19:33Z"}],"errorCode":0}

Comme vous le voyez je n'ai pas l'IP du bridge avec le port.
Savez vous pourquoi ?
MERCI !!

bonjour, je suis dans la même situation et l'appel à https://factory.nuki.io/discover/bridges
me donne le même type de résultats:
Code : Tout sélectionner
{"bridges":[{"bridgeId":10xxxx423,"dateUpdated":"2021-09-04T21:33:55Z"}],"errorCode":0}

pas d'IP ni de port

j'ai mis le bridge en situation d'écoute (point blanc actif après un appui long) j'ai récupéré l'adresse IP dans mon routeur livebox4 et lancé la commande pour récupérer le token : http://192.168.1.xx:8080/auth

mais j'ai systématiquement une erreur : La connexion a échoué

je ne sais pas quoi faire à ce stade, merci de votre aide
puis
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 08 Sep 2021 00:51

bien , je relu le fil de discussion et la documentation, maintenant que ça fonctionne, je me permet de donner quelques éclairages sur les pbs rencontrés:

1 - l'appel à https://factory.nuki.io/discover/bridges ne donne pas les résultats attendus, pour avoir les valeurs Nuki Id et Token il faut passer par la solution de se connecter sur le bridge directement via l'application Nuki
- avec le smartphone
- dans l'application via le menu (trois barres en haut à gauche), selectionner gérer mes appareils
- choisir bridge
- gérer la bridge
- appuyer sur le bouton central du bridge jusqu'au ce la led blanche clignote(pas fixe)
(se mettre à côté pour le bluetooth soit au max)
- l'application retourne 3 icone serveur, bridge, smart lock
- clic sur bridge

==> noter le token (pas l'ID qui celui du bridge et pas de la smart lock)
==> noter l'IP et le Port (qui doit être 8080)
dans cette page assurez-vous que API-HTTP est coché (sinon cocher et valider par la coche en haut à droite)
==> ce qui permet de lancer la procédure getToken

dans votre navigateur lancer :
https://IP_eedomus/script/?exec=nukisma ... st_port=IP noté:port noté&token=le token qui vient d'être noté

==> noter le nukiId (que vous souhaitez piloter)

voilà reporter tout cela dans l'équipement pour finaliser sa création (3 ID)

ensuite suivre scrupuleusement le tuto pour setup et register
attention si vous utilisez l'exemple de register les arguments ont changer
maintenant c'est : periph_id_state et periph_id_batterycritical (pas periphidstate et periphidbatterycritical)

une fois que tout est OK, lancer une commande de verrouillage pour avoir les retour d'état


Mon seul pb encore présent: c'est état de la batterie qui n'est pas renseigné
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 11 Sep 2021 07:18

je confirme : les données de batteries ne sont pas mises à jour
c'est étonnant parce que en regardant dans le script on a bien cette donnée qui sont prise dans le retour d'état incomingCall, l'ID état de la batterie récupérée et la valeur chargée dans la variable

j'ai testé avec un appel direct à la mise à jour de la variable via l'API eedomus en mettant 0 et 100 true dans la variable et ça fonctionne

je crains que les correspondance false / true binaire, false / true texte , 0/100 dans les valeurs ne créent ce dysfonctionnement
1ère remarque ==> le json retourné renvoi dans la donnée "batteryCritical" un binaire true/false
2ème remarque ==> les valeurs dans le plugin sont 0 et 100
3ème remarque ==> quand on interroge les données / valeurs en direct via l'API eedomus de l'équipement "état batterie", la variable est présente mais vide (ni true/false/0/100)


Code : Tout sélectionner
function sdk_incomingCall() {
   global $response;

   // Le callback est accompagné d'un Json contenant les nouvelles valeurs
   //      {"nukiId": 11, "state": 1, "stateName": "locked", "batteryCritical": false}
   $backData = sdk_json_decode(sdk_get_input());
   $nukiid = $backData['nukiId'];
   $periph_value_state = $backData['state'];
   [b]$periph_value_batterycritical = $backData['batteryCritical'];[/b]

   $periph_id_state = loadVariable("periph_id_state$nukiid");
   [b]$periph_id_batterycritical = loadVariable("periph_id_batterycritical$nukiid");[/b]

   setValue($periph_id_state, $periph_value_state);
   [b]setValue($periph_id_batterycritical, $periph_value_batterycritical);[/b]

   $response = ' { ';
   $response.= ' "nukiid" : "'. $nukiid .'", ';
   $response.= ' "periph_id_state" : "'. $periph_id_state .'", ';
   $response.= ' "periph_id_batterycritical" : "'. $periph_id_batterycritical .'", ';
   $response.= ' "periph_value_state" : "'. $periph_value_state .'", ';
   $response.= ' "periph_value_batterycritical" : "'. $periph_value_batterycritical .'" ';
   $response.= ' } ';
}
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar Clark (eedomus team) » 22 Sep 2021 12:42

Bonjour,

Effectivement, la batterie ne remonte pas (en tout cas sur un bridge Nuki version 2.9.3).

je crains que les correspondance false / true binaire, false / true texte , 0/100 dans les valeurs ne créent ce dysfonctionnement

C'est exactement cela ! (le booléen passe, mais envoie 1, et le false ne passe pas).

Il faudrait remplacer une ligne dans le script Nuki Serrure Intelligente, à la ligne 100 du script nukismartlock.php pour convertir dans les valeurs attendues :
Code : Tout sélectionner
//ligne a commenter et remplacer par la suivante :
//$periph_value_batterycritical = $backData['batteryCritical'];

if ($backData['batteryCritical']) { $periph_value_batterycritical = 100; } else { $periph_value_batterycritical = 0; }


Cordialement
Image L'équipe eedomus
http://www.eedomus.com
Clark (eedomus team)
 
Messages : 55
Inscription : 23 Sep 2013

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 23 Sep 2021 08:17

merci de cette confirmation,
puisqu'on y est:
- est-ce que cette modification sera reprise dans le script publié (nouvelle version ?)
- je constate que dans le dialogue maintenant la valeur en % de la batterie est présente, j'ai fait une petite modification pour mettre cette valeur en lieu et place de l’indication bon/mauvais tel que présent dans le script
je pense que quitte à faire une modification, ce serait plus intéressant de mettre la valeur en %

voila le code :
Code : Tout sélectionner
function sdk_incomingCall() {
   global $response;

   // Le callback est accompagné d'un Json contenant les nouvelles valeurs
   //      mise en commentaire {"nukiId": 11, "state": 1, "stateName": "locked", "batteryCritical": false}
   $backData = sdk_json_decode(sdk_get_input());
   $nukiid = $backData['nukiId'];
   $periph_value_state = $backData['state'];
   // mise en commentaire $periph_value_batterycritical = $backData['batteryCritical'];
   // ajout de la valeur en % de charge de la batterie
   $periph_value_batterychargestate = $backData['batteryChargeState'];

   $periph_id_state = loadVariable("periph_id_state$nukiid");
   $periph_id_batterycritical = loadVariable("periph_id_batterycritical$nukiid");

   setValue($periph_id_state, $periph_value_state);
   // mise en commentaire setValue($periph_id_batterycritical, $periph_value_batterycritical);
   // ajout du stockage de la valeur en % de la charge de la batterie
   setValue($periph_id_batterycritical, $periph_value_batterychargestate);

   $response = ' { ';
   $response.= ' "nukiid" : "'. $nukiid .'", ';
   $response.= ' "periph_id_state" : "'. $periph_id_state .'", ';
   $response.= ' "periph_id_batterycritical" : "'. $periph_id_batterycritical .'", ';
   $response.= ' "periph_value_state" : "'. $periph_value_state .'", ';
// mise en commentaire   $response.= ' "periph_value_batterycritical" : "'. $periph_value_batterycritical .'" ';
// ajout de la valeur en % de la batterie
   $response.= ' "periph_value_batterychargestate" : "'. $periph_value_batterychargestate .'" ';
   $response.= ' } ';
}
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 23 Sep 2021 08:43

en poussant un peu, je m'aperçois que dans la réponse de la serrure NUKI on a aussi le statut de la porte (si on a mis le capteur qui est maintenant livré avec la serrure NUKI V2)

j'ai donc ajouté cette valeur avec les modifications suivantes :
1 - ajout d'un périphérique http capteur rattaché à la serrure NUKI
2 - modification de la fonction "register" pour stocker l'id de l'équipement porte NUKI
3 - modification du traitement du retour de status du Nuki pour stocker la valeur du status de la porte

pour le 1 - je ne sais pas comment modifier le plugin pour créer le 4ème périphérique - de ce fait je l'ai fait à la main
2 - le code est le suivant ligne 28
Code : Tout sélectionner
   case 'register':
      sdk_register(getArg('eedomushost'), getArg('nukiid'), getArg('periph_id_state'), getArg('periph_id_batterycritical'), getArg('periph_id_doorstate'));
      break;


le code modification de la fonction register devient :
Code : Tout sélectionner
function sdk_register($eedomushost, $nukiid, $periph_id_state, $periph_id_batterycritical, $periph_id_doorstate) {
   global $response;

   $eScript = explode( '/' , __FILE__);
   $scriptName = $eScript[count($eScript)-1];

   $callbackUrl = "http://$eedomushost/script/";
   $callbackUrlQuery = array(
      'exec' => $scriptName,
      'function' => 'incomingcall'
   );
   $fullUrl = "$callbackUrl?".http_build_query($callbackUrlQuery);

   saveVariable('nukiid', $nukiid);
   saveVariable("periph_id_state$nukiid", $periph_id_state);
   saveVariable("periph_id_batterycritical$nukiid", $periph_id_batterycritical);
   saveVariable("periph_id_doorstate$nukiid", $periph_id_doorstate);

   sdk_callAPI('callback/add', array('url' => $fullUrl));
}


la syntaxe de l'appel à register est alors :

3 - le code modifie la fonction incomingCall() et est le suivant :
Code : Tout sélectionner
function sdk_incomingCall() {
   global $response;

   // Le callback est accompagné d'un Json contenant les nouvelles valeurs
   //      mise en commentaire {"nukiId": 11, "state": 1, "stateName": "locked", "batteryCritical": false}
   $backData = sdk_json_decode(sdk_get_input());
   $nukiid = $backData['nukiId'];
   $periph_value_state = $backData['state'];
   // mise en commentaire $periph_value_batterycritical = $backData['batteryCritical'];
   // ajout de la valeur en % de charge de la batterie
   $periph_value_batterychargestate = $backData['batteryChargeState'];
   // ajout de l'état de la porte
   $periph_value_doorstate = $backData['doorsensorState'];

   $periph_id_state = loadVariable("periph_id_state$nukiid");
   $periph_id_batterycritical = loadVariable("periph_id_batterycritical$nukiid");
   // ajout récupération de l'id de la porte
   $periph_id_doorstate = loadVariable("periph_id_doorstate$nukiid");

   setValue($periph_id_state, $periph_value_state);
   // mise en commentaire setValue($periph_id_batterycritical, $periph_value_batterycritical);
   // ajout du stockage de la valeur en % de la charge de la batterie
   setValue($periph_id_batterycritical, $periph_value_batterychargestate);
   // ajout du stockage de l'état de la porte
   setValue($periph_id_doorstate, $periph_value_doorstate);

   $response = ' { ';
   $response.= ' "nukiid" : "'. $nukiid .'", ';
   $response.= ' "periph_id_state" : "'. $periph_id_state .'", ';
   $response.= ' "periph_id_batterycritical" : "'. $periph_id_batterycritical .'", ';
   $response.= ' "periph_value_state" : "'. $periph_value_state .'", ';
// mise en commentaire   $response.= ' "periph_value_batterycritical" : "'. $periph_value_batterycritical .'" ';
// ajout de la valeur en % de la batterie
   $response.= ' "periph_value_batterychargestate" : "'. $periph_value_batterychargestate .'" ';
// ajout de l'état de la porte
   $response.= ' "periph_value_doorstate" : "'. $periph_value_doorstate .'" ';
   $response.= ' } ';
}
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar gabvoir » 05 Oct 2021 14:22

Bonjour à tous, notemment Nikya63,

Peut-on espérer voir les évolutions ci-dessus mentionnées publiées directement dans le script du store ?
C'est dommage de ne pas capitaliser les efforts de chacun quand on a des outils si puissant que Github et le store eedomus.

Merci pour votre aide :)
gabvoir
 
Messages : 178
Inscription : 24 Juin 2015

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 10 Oct 2021 09:13

bonjour ,

j'ai créé un Fork de la publication originale Github qui contient toutes les modifications que j'ai publié plus tôt dans ce fil.

https://github.com/jluc2808/eedomusScri ... _smartlock

(je ne l'ai pas testé au niveau de la création auto des équipements du plugin puisque j'ai déjà tous les équipements créés, donc s'il y a des erreurs, faite m'en part je corrigerais, le programme php lui fonctionne et est testé)
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 18 Oct 2021 00:09

avec l'aide de Merguez07 j'ai modifié le script php pour mettre à jour la donnée dans le périphérique action si l'action est réalisée depuis ailleurs que eedomus.
le principe est : si l'état de la serrure change, c'est qu'une action a été réalisée, avec un tableau de correspondance entre les états et les actions qui ont produit l'état, je change l'action dans le périphérique action pour refléter l'action qui a été réalisée pour produire l'état.

exemple: la dernière action eedomus était de déverrouiller la serrure
- le périphérique action: a alors la valeur déverrouiller (1)
- le périphérique état: a la valeur déverrouillé (3)

maintenant si on utilise l'application Nuki pour verrouiller
- le périphérique état: prend la valeur verrouillé (1)
avec l'ancien script le périphérique action restait à déverrouiller
- avec le nouveau script le périphérique prend la valeur verrouiller (2) qui reflète l'action faite par ailleurs.

j'ai dû ajouter une fonction pour ajouter l'enregistrement du périphérique action (afin de pouvoir modifier la valeur) et au passage cette fonction permet aussi d'ajouter le périphérique porte (door)
sans modifier les callback déjà enregistrés.

je dois faire une mise à jour du Github, je ferais un post dès que ce sera fait.
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 18 Oct 2021 06:46

nouvelle release V1.5 publiée dans Github
https://github.com/jluc2808/eedomusScri ... /tree/v1.5
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar gabvoir » 30 Jan 2022 21:35

jluc2808 a écrit:nouvelle release V1.5 publiée dans Github
https://github.com/jluc2808/eedomusScri ... /tree/v1.5

Ca y'est je me lance à l'utilisation de ton fork !
Merci pour le travail accompli.
Initialement je souhaitait simplement copier/coller le contenu du script sur ma box actuellement initialisé avec l'ancienne version, mais je suis pas sur que ca fonctionne ?!

J'imagine qu'il faut que
- je transfert le "etat batterie" en pourcentage
- je rajoute le périphérique "etat porte"
Mais y'a t il autre chose ?

Au passage pour la création du périph "état porte", je constate que tu récupère doorsensorState qui est un numérique, et tu ne crées pas la liste associée.
J'ai fait un pull sur le github.
gabvoir
 
Messages : 178
Inscription : 24 Juin 2015

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar gabvoir » 30 Jan 2022 22:07

Et au passage j'ai un autre problème mais qui je pense n'est pas lié à ce script mais d'une façon générale aux scripts eedomus.
J'ai 2 serrures que je souhaite verrouiller en même temps. Il semblerait que les scripts qui s'éxécute en simultané n'arrive pas à se terminer.
gabvoir
 
Messages : 178
Inscription : 24 Juin 2015

Re: [Store] Nuki Smartlock plugin (pilote/état)

Messagepar jluc2808 » 30 Jan 2022 23:17

comme c'est mon 1er plugin , j'ai probablement dû louper quelques valeurs ou paramètres dans les équipements :
- pour l'unité batterie c'est bien en %
- pour la porte effectivement les valeurs sont numériques et il faut les ajouter dans les valeurs de la porte :
1 = desactivée
2 = fermée
3 = ouverte
4 = inconnu
5 = calibration

pour la double serrure normalement le script et la manière de stocker les variable devraient différencier les serrures, puisque on couple l'id de l'équipement avec l'id du nuki, donc normalement avec ces éléments il ne devrait pas y avoir de confusion

edit: si tu as la possibilité de décaler les 2 serrures ne serait-ce que de quelques secondes, ça doit marcher.

comme tu le dis, je ne suis pas certains que les scripts eedomus soient réentrant sans impacts.
jluc2808
 
Messages : 489
Inscription : 30 Jan 2021

PrécédentSuivant

Retour vers Scripts & Périphériques du store

Qui est en ligne ?

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