Objectif
Utiliser des commandes Jeedom pour activer ou désactiver le Wifi de mon réseau et plus particulièrement l’accès wifi d’un profil (celui de ma fille).
Important : Ce tuto est en deux parties
En fonction de ce que vous souhaitez faire et/ou comprendre de l’utilisation des API de Synology et du fonctionnement du plugin Synology-API, vous avez deux options :
- Soit vous lisez la 1ere partie qui vous explique, pas à pas de manière la plus pédagogique possible ce que vous faites
- Soit vous lisez directement la 2ème partie qui vous fournira, clé en main la tuile de votre équipement, avec les commandes et les infos déja programmées
Matériel, logiciels
- Pour réaliser l’activation du wifi sur un profil, il faut un routeur Synology (j’utilise un RT2600ac) et y installer l’application Safe Access (gratuite)
- Coté Jeedom, il vous faut le lien Jeedom-Synology qui s’appelle Synology-API
Création d’un profil dans Safe Access
Safe Access est une gestion intelligente et particulièrement efficace développée par Synology et elle intègre SRM, le système d’exploitation de ses routeurs, depuis la version 1.2.
Cette application permet de créer un profil par membre de la famille, puis affecter à chacun ses équipements (tablettes, téléphone, ordi…). On définit ensuite pour chaque personne des horaires d’internet, des types de sites autorisés ou interdits. On peut même définir un “quota” de temps d’internet …
Et dans cette gestion du profil, on peut mettre en pause (= couper internet) ou reprendre (=accès internet activé), ce sont ces deux états qui vont être traités ici.
1ère partie : Explication complète à vertu pédagogique, pas à pas
Envoyer des ordres au Syno
Trouver les commandes à envoyer au routeur
Synology-API est un formidable outil de dialogue entre Jeedom et les équipements Synology (Routeur ou NAS), mais encore faut il avoir l’API qu’il faut utiliser pour envoyer ces commandes.
A ce jour, Synology n’a pas documenté ses API (pas celles qui nous intéressent), il faut donc essayer de trouver l’API qui devra être utilisé ainsi que la méthode à lui appliquer et éventuellement les paramètres à envoyer avec l’API.
L’interface SRM (pour les routeurs) et DSM (pour les Diskstation NAS) dialogue avec les équipements grace à cette API, il nous faut donc regarder la commande qu’envoie le navigateur au moment où on clique sur un bouton pour avoir la commande envoyée.
J’ai réalisé ce tuto avec FireFox, mais tous les navigateurs sont équipés d’outils similaires.
Identifiez vous sur votre routeur et appuyez sur F12 pour avoir la console, ouvrez l’onglet Réseau. Vous devriez avoir l’écran ci-dessous.
Sur la droite défilent les dialogues entre votre navigateur et votre routeur.
A ce stade, la manip consiste à :
- Lancer Safe access et avoir à l’écran le bouton
- Purger l’ecran de droite (avec la petite corbeille)
- Cliquer sur
- Mettre en pause de défilement de l’affichage des requêtes pour ne pas être pollué par trop de lignes
- Cliquer sur la droite sur la ligne qui correspond à la commande qui vient d’apparaitre
Pour identifier la bonne requête s’il y a plusieurs lignes, ouvrez l’onglet “Requête” sur la droite et regardez la méthode employée. Si c’est du Set c’est probablement une demande faite au serveur.
A ce stade, nous avons toutes informations nécessaires pour créer notre commande sur Jeedom.
Voici ce qu’il faut relever :
- Nom de l’API : SYNO.SafeAccess.AccessControl.ConfigGroup
- Méthode à utiliser : set
Et deux paramètres :
- config_group_id=3 (cela correspond à l’id du profil que je veux utiliser, donc le profil de ma fille dans mon exemple)
- pause=true (cela signifie qu’on met en pause)
La même manipulation peut être faite pour aller chercher la commande qui correspond au bouton mais vous avez compris, seul le paramètre pause changera et cela donnera pause=false.
Ajout d’une commande à Jeedom
Pour envoyer un ordre du Syno, il faut ajouter une commande action dans le plugin Synology-API.
- Lancer Synology-API et cliquer sur le + pour lancer l’assistant
- Dans API à utiliser, sélectionner SafeAccess.AccessControl.ConfigGroup, à noter que le SYNO. au début du nom est supprimé.
- Dans Méthode à utiliser, sélectionner Set
- Dans autres paramètres, ajouter &config_group_id=3&pause=true Attention à ne pas oublier le & au début.
- cliquer sur Lancer la requête.
L’assistant répond “Requête envoyée et exécutée avec succès !” c’est qu’elle a fonctionné et que le Syno a répondu que la requête était exécutée.
Juste en dessous, l’assistant propose d’enregistrer cette commande pour pouvoir la réutiliser directement ou via un scénario. Remplissez le formulaire et valider l’ajout de la commande
Vous pouvez enregistrer la seconde commande pour rétablir le Wifi. Dans cet exemple, j’ai un groupe de commande “Wifi” qui compte deux commandes, une pour couper et une pour rétablir la connexion.
Utilisation de ces commandes “Action”
Comme toutes les commandes actions de Jeedom, ces commandes peuvent être utilisées dans tous vos scénarios ou écrans.
A noter qu’elles sont bien exécutées immédiatement, cela même si votre interface SRM ou DSM ne se mettent pas à jour instantanément.
Récupérer des infos du Syno
Trouver les commandes à envoyer au routeur
Sur le principe des requêtes précédentes, on peut questionner le Syno pour obtenir des informations. Pour respecter le langage Jeedom, nous qualifierons ces requêtes de “commandes info”.
Dans la continuité de l’exemple en cours, nous allons questionner le Syno pour savoir si le profil “Ma fille” donc ID3 à le mode Pause activé ou pas.
La manipulation pour trouver cette information est identique à l’explication précédente, il faut “pister” les requêtes qui s’affichent au moment ou on ouvre Safe Access, c’est à ce moment là que l’interface questionne le serveur pour récupérer cette information.
Je vous donne tout de suite la réponse, il faut utiliser :
- API : SafeAccess.AccessControle.ConfigGroup
- Méthode à utiliser : Get
Cette demande renvoie la réponse suivante :
- L’Id2 correspond à mon Lan en entier et l’Id3 correspond au profil “Ma fille”.
- Le champ “pause” va répondre false quand internet est activé et true quand internet est coupé.
- Je coche l’avant dernière case et je clique sur Sauvegarder
Utiliser l’info dans Jeedom
Une fois ajouté, la commande info est ajouté dans la liste des API
Je renomme nos deux commandes pour que ce soit plus simple
Sur le Dashboard, mes deux widgets ne sont pas mal
Améliorer le Widget (v1)
L’information qui nous dit si le Wifi est activé ou pas n’est pas un booléen, mais un string false ou true, il faudra bidouiller un widget Jeedom pour cela, voici ce que je propose de créer un Widget :
J’ai choisi de faire deux tests :
- value# != “true” qui affiche icon maison-man337 icon_green
- value# == “true” qui affiche icon jeedomapp-lock-ferme icon_red
Améliorer le Widget (v2)
J’ai laissé le paragraphe précédent car il a une vertu pédagogique pour expliquer les widgets mais depuis, j’ai intégré le widget Wifi au sein du plugin.
Ainsi, il suffit tout simplement de choisir le widget Synologyapi/WifiOnOff à la commande info qui donne le statut du Wifi :
Fusionner Wifi Cmd et le Wifi Info en Wifi
Il aurait été possible de créer un Virtual pour fusionner le device qui contient les commandes (Wifi Cmd) et le device qui contient le retour d’info (Wifi Info). Mais le plugin est capable de fusionner deux devices pour avoir sur le même device Jeedom les commandes et les infos.
Il suffit pour cela de suivre l’assistant de fusion
Le device ainsi créé contient 2 commandes et une info :
Et voici les résultats en fonction de l’état du Wifi
Les deux boutons fonctionnent et l’icône donne l’état de la connexion.
Bonus : Actualisation de l’état du Wifi
L’icône verte ou rouge qui indique l’état du wifi peut être actualisé de plusieurs manières :
- Soit automatique par un cron, toutes les minutes par exemple
- Soit manuellement en cliquant en haut à droite de la tuile, cela lance un “refresh”
- Soit automatiquement à la suite d’un changement d’état
La dernière option va être détaillée ici.
Il suffit de demander à Jeedom de lancer un”refresh” après chaque appui sur un des boutons de commande.
Pour réaliser cela, il faut cliquer sur la petite icône qui symbolise un engrenage de chaque commande.
Dans l’onglet configuration, cliquer sur Ajouter sur ce bloc :
Puis aller chercher la commande Refresh de l’équipement Wifi
Faire cela pour les deux commandes (Coupe Wifi et Relance Wifi)
2ème partie : Importation direct d’un modèle de Device
Si vous n’avez pas l’âme d’un informaticien et que vous ne souhaitez pas comprendre ce que vous faites, utilisez directement cette seconde partie qui vous donne directement le modèle de Device.
Vous aurez ainsi directement les commandes et les infos qui seront préprogrammées, même les widgets sont inclus vous proposant ainsi une tuile propre et utilisable immédiatement.
Importer un modèle d’équipement
Le plugin Synology-API a intégré une fonctionnalité d’import, il vous suffit juste de cliquer sur le bouton Importer un Modèle, juste sous le nom de l’équipement Synology concerné :
Pour ce device “Wifi”, voici le fichier JSON à importer
- http://jeedom.sigalou-domotique.fr/documentssigalou/Wifi.json
- ou au format zip : http://jeedom.sigalou-domotique.fr/documentssigalou/Wifi.zip
Une fois le widget importé, il est opérationnel.
A noter, Dans le modèle fourni, l’ID du groupe est 2, si vous avez un autre ID, il faudra le changer.
Pour que le widget se mette à jour, il faut y ajouter le bonus de la 1ere partie, suivez ce lien pour ajouter le refresh après chaque appui sur les boutons