Cas pratique: gérer son portier Mobotix grâce à Jeedom via Slack

5

Aujourd’hui je vais vous présenter un guide assez complet qui permettra d’aborder différentes fonctionnalités de Jeedom, qui me sont très utiles dans ma vie de tous les jours. En particulier ici la gestion de mon portier vidéo avec Slack. Pour ceux qui ne connaissent pas Slack, il s’agit d’un outil de communication semblable à Skype, beaucoup utilisé en entreprise, car il crée un réseau privé dans lequel seules les personnes invitées peuvent venir échanger. Ainsi on n’est pas spammé par les bots qui veulent s’incruster dans notre compte. On peut avoir des discussions publiques sur des channels (par exemple un channel « technique » où tous les techniciens peuvent échanger), ou des discussions privées entre deux personnes (ou même plus, d’ailleurs, car il est possible de créer des conversations). Il est également possible d’y partager des documents. Enfin, Slack est accessible sur le web, mais dispose également d’applications natives sur toutes les plateformes. Bref, c’est vraiment un très bon outil, qui de plus existe en version gratuite, suffisante pour un usage particulier, comme celui que nous allons voir aujourd’hui.

Ma situation est donc la suivante:

  • j’ai en permanence l’application Slack ouverte sur mon Mac, puisque c’est l’outil que nous utilisons au travail
  • je recois très régulièrement des colis, facilement deux à trois fois par semaine
  • je dispose d’un portier vidéo connecté, un Mobotix T24, accompagné d’un poste téléphonique Grandstream pour répondre au portier
  • quand quelqu’un sonne au portier, je dois sortir de mon bureau pour me rendre au salon afin de répondre au portier.

En pratique nous utilisons très peu le poste téléphonique pour discuter avec la personne devant le portier, un coup d’oeil par la fenêtre permet de voir de qui il s’agit et on n’utilise alors le poste que pour déverrouiller le portillon :/

Bref, pour mon utilisation, j’ai donc pensé à quelque chose de plus pratique: quand quelqu’un sonne, un message est automatiquement envoyé sur Slack, avec capture de la caméra du portier pour me montrer de qui il s’agit, et un autre message me demandant si je veux le laisser entrer. Il me suffit de répondre « oui » pour que le portillon soit déverrouillé. Je n’ai plus qu’à accueillir la personne directement à ma porte d’entrée. Concrètement, ca donne ca:

slack_portier

Simple et efficace !

Par contre la mise en place nécessite un peu de paramétrage au préalable… Passons donc à la pratique !

I. Paramétrage de Slack

1.1 Création de votre compte Slack

Il faudra commencer par vous rendre sur cette page pour créer votre compte, en indiquant votre adresse mail:

creation_slack_01

On donne ensuite le nom qu’on souhaite donner à notre « équipe »:

creation_slack_02

Puis l’adresse à utiliser pour se connecter. Ici ce sera donc maisonetdomotique.slack.com :

creation_slack_03

On indique ensuite le nom d’utilisateur qu’on veut utiliser dans Slack pour communiquer avec les autres:

creation_slack_04

On confirme les détails:

creation_slack_05

On peut ensuite envoyer si on veut des invitations aux autres personnes avec qui on veut discuter sur Slack (ca peut être la famille, des amis, etc…)

creation_slack_06

Voilà, on arrive ensuite à l’interface où on peut discuter:

creation_slack_07

En parallèle, un mail vous est envoyé pour la création de votre mot de passe personnalisé, nécessaire pour les prochaines connexions.

1.2 Création d’un canal dédié à Jeedom

Tant que nous sommes dans l’interface, nous allons créer tout de suite un « channel » Jeedom, par exemple (vous pouvez le nommer Maison, ou tout ce que vous souhaitez). Cela permettra de « cloisonner » les ordres envoyés à Jeedom des autres conversations qu’on pourrait avoir avec les autres personnes. Pour cela, il suffit de cliquer sur le petit « + » à côté de channels:

configuration_slack_01

On donne un nom au canal:

configuration_slack_02

Et voilà ! Pas plus difficile que ca :D

configuration_slack_03

1.3 Installation du plugin Slack pour Jeedom

Allons maintenant dans Jeedom, sur le Market, pour ajouter le plugin de communication Slack:

market_jeedom

Une fois installé, pensez bien à l’activer:

activation_plugin_slack

Rendez vous ensuite dans le menu Plugin, Communication, Slack. Ajoutez un nouvel équipement, ici par exemple Slack MD. On l’active, on le rend visible si on veut le voir sur le Dashboard, et on indique le domaine créé dans Slack précédemment, ici « maisonetdomotique »:

config_plugin_slack

Relevez bien l’URL de retour qui est indiquée, c’est elle qui permettra à Slack de communiquer avec Jeedom dans la partie suivante.

Note: il faut bien sûr que votre Jeedom soit accessible de l’extérieur, soit en passant par les DNS Jeedom (solution la plus facile) soit en ayant fait une redirection de ports sur votre routeur chez vous.

1.4 Installation des Webhooks

Les Webhooks vont permettre à Jeedom de communiquer avec Slack. Pour cela il faut configurer un Webhook sortant (qui permettra à Jeedom de savoir qu’il a recu un message) et un entrant ( qui permettra à Jeedom de poster ses messages).

Pour installer les Webhooks, dans Slack, cliquez sur le nom de votre groupe Slack, puis sélectionnez « Apps & Customs Integrations »:

configuration_slack_04

Vous arrivez sur la page des applications disponibles pour Slack. Tapez webhook dans la recherche, vous verrez apparaitre l’Incoming et le Outgoing:

configuration_slack_05

1.4.1 Webhook sortant

Sélectionnez d’abord « Outgoing Webhooks ». Là vous trouverez votre communauté. Ici j’en ai plusieurs, ma communauté perso que je viens de créer est tout en bas:

configuration_slack_06

Cliquez sur « Install » en face de votre communauté, puis validez l’ajout de l’intégration:

configuration_slack_07

Vous retrouvez vers le bas de la page suivante les différents paramètres :

  • Channel : le nom du channel que nous avons créé spécifiquement pour Jeedom. Ici tout simplement « jeedom », donc, qu’on sélectionne dans la liste déroulante
  • Trigger Word(s) : pas obligatoire ici car nous utilisons un channel dédié à Jeedom. Si ce n’était pas le cas, on pourrait déterminer le mot clé qui déclenchera l’envoi du message à Jeedom, par exemple « Jeedom combien fait-il dans la chambre »
  • URL(s) : URL à appeler, vous la trouvez sur la page de votre équipement sous Jeedom sous le nom de « URL de retour », vu plus haut
  • Token: pas utile ici
  • Customize Name: permet de personnaliser le nom qui sera affiché devant les messages postés. Ici j’y ai mis Jeedom, ce qui sera plus simpa.
  • Customize Icon: on peut personnaliser l’icone qui représentera Jeedom. J’y ai mis le logo Jeedom, mais on peut y mettre ce qu’on souhaite, ou laisser l’image par défaut, même.

configuration_slack_08

Enregistrez la configuration, et c’est bon pour cette partie.

1.4.2 Webhooks entrant

Pour ajouter les Webhooks entrant, on retourne dans le menu précédent, « Apps & Customs Integrations », et on recherche « Webhooks » dans le moteur de recherche. On sélectionne cette fois Incoming Webhooks :

configuration_slack_05

Comme tout à l’heure, on sélectionne notre domaine et on clique sur « Install »:

configuration_slack_09

Ensuite, on sélectionne le canal dans lequel on souhaite que Jeedom puisse poster, ici tout simplement notre canal « Jeedom »:

configuration_slack_10

Sur la page suivante, tout en bas, on peut personnaliser le nom qui sera utilisé pour les messages postés ainsi que l’icone, comme nous avons fait plus haut sur le Webhook sortant. Enfin, relevez la Webhook URL qui devra être recopiée dans le plugin Jeedom:

configuration_slack_11

Enregistrez, et c’est fini pour le Webhook entrant.

1.5 Récupération du Token Slack

Dernière étape pour Slack: récupérer le token, une clé de sécurité qui permettra à Jeedom de poster des fichiers, notamment des captures des caméras. Pour cela il faut se rendre sur la page https://api.slack.com/web?sudo=1

Un peu plus bas se trouve un bouton vert « Generate test tokens ». Cliquez dessus.

configuration_slack_12

En face de votre domaine, cliquez sur « Create token ». Entrez votre mot de passe, et confirmez que vous voulez bien créer un nouveau token.

configuration_slack_13

Votre token est généré: copiez le dans un coin, nous allons en avoir besoin dans Jeedom.

configuration_slack_14

C’est fini pour la configuration de Slack.

1.6 Configuration du plugin Jeedom, suite et fin

Revenons dans Jeedom, dans la configuration de notre périphérique Slack.

Nous avons déjà renseigné le domaine. Il reste à renseigner le token d’authentification que nous avons eu à l’étape 1.5.

Ensuite, il faut créer une nouvelle commande, et renseigner en Webhook l’url obtenue à l’étape 1.4.2, sur le Webhook entrant. En destination on indique #jeedom pour indiquer le canal dans lequel les messages doivent être envoyés. Au final nous avons cela:

config_plugin_slack_01

Il n’y a plus qu’à enregistrer la configuration. A partir de là Jeedom est capable de recevoir et envoyer des messages via Slack. Pour tester rapidement, on peut essayer le widget disponible maintenant sur le Dashboard:

test_message

Le message est recu instantanément sur Slack, dans le canal Jeedom:

test_message_01

Pour envoyer des ordres depuis Slack à Jeedom, en revanche, il faudra créer des interactions dans Jeedom. Ce sera l’objet d’un prochain guide, puisque ce n’est pas nécessaire ici ;-)

Nous avons maintenant la partie communication. Passons à la partie portier.

II. Contrôle du portier Mobotix dans Jeedom

J’ai ici un portier Mobotix T24, qui permet énormément de choses. Mais la même chose sera réalisable avec la plupart des portiers connectés disposant de commandes HTTP, voire même simplement avec une caméra extérieure, un bouton de sonnette, et une gache électrique, ce qui sera encore plus économique.

Ici, ce qui compte surtout, c’est de pouvoir récupérer l’image et le contrôle de la gâche. En faisant quelques recherches, on découvre ces commandes pour ce portier:

  • /record/current.jpg -> affiche une photo actuelle de la caméra. Ce sera ici suffisant, pas besoin de la vidéo en flux continu
  • /control/rcontrol?action=customfunction&action=sigout&profile=~Door -> active la gâche électrique.

Sachant cela, la mise en place va être simple. On va utiliser le plugin Caméras de Jeedom, qu’il faudra installer si ce n’est déjà fait. Ensuite, on ajoute une nouvelle caméra, via le menu Plugins, Sécurité, Caméra.

Ici, on donne un nom, on l’active, et on la rend visible. On ne s’occupe pas du modèle, rien n’existe pour Mobotix On va donc configurer à la main:

  • on indique l’adresse IP du portier, son nom d’utilisateur et son mot de passe
  • en URL de capture on indique /record/current.jpg , et une fréquence de 5s (à ajuster en fonction de vos besoins)
  • en commande d’alerte, on va indiquer la commande « Envoi Message » du périphérique Slack créé précédemment. Cela permettra à Jeedom d’envoyer une capture photo du portier sur Slack
  • enfin, on crée une nouvelle commande, que j’appelle ici « ouverture portillon », configurée en « action », et on indique l’url /control/rcontrol?action=customfunction&action=sigout&profile=~Door

configuration_mobotix

On obtient ainsi une caméra qui affiche la vue du portier, et un bouton permettant de déverrouiller le portillon:

vue_portillon

Nos contrôles pour le portier sont opérationnels.

Passons au scénario à réaliser.

III  Le scénario dans Jeedom

Il nous faut maintenant créer le scénario qui va faire fonctionner tout cela. On crée donc un scénario en mode avancé.

Pour commencer, il nous faut un bloc Action (n’hésitez pas à cliquer pour zoomer):

scenario_jeedom_slack_01

Ce scénario est intéressant, car il va commencer à utiliser une variable, ainsi que la fonction Ask. Cette dernière est une fonction très puissante dans les scénarios, car elle permet d’interagir avec Jeedom, qui va poser une question, et attendre votre réponse pour déclencher une action en conséquence. Si on découpe ce premier bloc:

  • tout d’abord, on utilise la fonction variable, avec une variable que j’appelle askOnSonne (vous pouvez mettre le nom que vous voulez). Ici je la met à une valeur vide, j’expliquerai plus loin pourquoi.
  • ensuite, j’utilise l’action « envoyer une capture » de mon portier Mobotix, créé précédemment. Comme on y a configuré la commande Slack, cela aura pour effet d’envoyer une photo du portier sur Slack. J’indique en même temps le message « Vous avez de la visite », qui accompagnera la photo
  • je met une pause de 5s, ceci pour éviter que Jeedom ne se réponde à lui même, car il s’emmêle parfois avec l’ordre des messages Slack s’ils sont envoyés en même temps
  • et pour finir j’utilise la fameuse commande Ask.

Cette commande Ask nécessite 5 arguments:

  • tout d’abord la question qui sera envoyée, ici « Voulez vous que j’ouvre le portail ? »
  • ensuite les réponses possibles, séparées par une virgule: oui,non
  • une variable, dans laquelle sera stockée la réponse qu’on enverra, dont le nom a déjà été défini plus haut: askOnSonne
  • un délai en secondes, au delà duquel plus aucune réponse ne sera acceptée. Ici 300s laisse le temps de réagir
  • enfin la commande qui enverra le message. On choisit encore une fois notre commande « Envoi Message » du périphérique Slack créé précédemment.

Cette partie va donc nous indiquer dans Slack qu’on a de la visite, nous envoyer une capture écran, et nous demander si on veut ouvrir le portail. Il ne reste plus qu’à traiter la réponse.

scenario_jeedom_slack_02

On crée un second bloc, cette fois « SI », et on teste cette condition: variable(askOnSonne)== »oui »

Si on répond « oui », on exécute alors deux actions:

  • l’envoi d’un nouveau message sur Slack pour confirmer la prise en compte de l’ordre
  • et ensuite l’envoi de la commande « ouverture portillon » créée sur notre caméra plus haut

Si on répond autre chose, ou que le délai est écoulé, il ne se passe tout simplement rien.

Vous vous souvenez qu’en première action on mettait la variable à vide ? Voici l’explication:

  • si le scénario est lancé, et qu’on répond oui, la variable va stocker la réponse « oui ».
  • si plus tard le scénario est de nouveau lancé, mais que pour une raison ou une autre on ne répond pas et que le délai est écoulé: aucune nouvelle réponse n’aura été enregistrée dans la variable, donc l’ancienne réponse « oui » sera toujours en mémoire. Du coup le portillon risque de s’ouvrir tout de même.

En mettant à vide cette variable avant le lancement des actions, plus de risque.

Au final, voici le scénario dans son ensemble:

scenario_jeedom_slack_03

On approche de la fin ;-) Et oui, notre scénario est créé, mais comment se déclenche t il ? Il nous reste un dernier paramétrage à faire sur notre portier.

IV. Configuration du Mobotix pour déclencher le scénario

C’est notre portier ici qui va déclencher le scénario sur Jeedom. Ca pourrait également être un bouton de sonnette compatible Rfxcom, ou encore une sonnette reliée à un capteur type Fibaro par exemple (détecteur d’ouverture sans fil raccordé au bouton de sonnette, capteur universel Fibaro, etc…).

Dans le cas de notre portier, il faut se connecter à son interface web. Une fois connecté, on se rend dans le menu Admin Menu, en haut à gauche. Puis, dans le menu Profils pour les messages réseau de la partie Profil de transmission:

mobotix_jeedom_01

On demande à ajouter un nouveau profil, qu’on appelle Jeedom par exemple. Là, il faut compléter de cette facon:

mobotix_jeedom_02

Le type de message réseau est une configuration personnalisée

  • on indique dans adresse cible l’adresse IP de son Jeedom, suivi du numéro de port, ici :80
  • le protocole de données est HTTP/1.0-Request. En dessous on indique cette commande: /core/api/jeeApi.php?apikey=VOTRE_CLE_API_JEEDOM&type=scenario&id=30&action=start . Il faudra remplacer bien entendu avec votre propre clé API, que vous trouverez dans le menu Configuration / Configuration générale de votre Jeedom. Et remplacer le n°30 par le numéro de votre propre scénario, créé précédemment.
  • enfin, en type de données, on indique « texte uniquement » et surtout on supprime bien tout ce qu’il pourrait y avoir en dessous, sinon la commande ne fonctionnera pas.

Toujours sur l’interface du portier Mobotix, on se rend cette fois dans Setup Menu, puis dans Action Group Overview.

mobotix_jeedom_03

Là, on ajoute un nouveau groupe, qu’on peut appeler Toujours, puisque l’action devra toujours s’exécuter. Dans ce groupe, on définit les actions à réaliser quand quelqu’un sonne.

On clique ensuite sur le bouton Edit à droite du groupe.

mobotix_jeedom_04

Dans les événements, on sélectionne Signal :CameraBellButton, ce qui déclenche l’action quand quelqu’un appuie sur le bouton de sonnette du portier. On ajoute une nouvelle action tout en bas de l’écran et on sélectionne Ip Notify : Jeedom, que nous avons configurée précédemment. On enregistre et c’est fini !

mobotix_jeedom_05

À partir de maintenant, quand quelqu’un sonnera à la porte, cela déclenchera le scénario que nous avons configuré juste avant dans Jeedom, nous envoyant un message sur Slack, et nous permettant de déverrouiller le portillon d’un simple « oui » :D

V. Conclusion

Je vous l’accorde, le paramétrage est un peu long :p Mais comme on dit, « faire simple, c’est compliqué ». Le paramétrage est un peu long, mais suivi à la lettre, il ne devrait pas vous poser de problème. A la fin, cela nous permet de répondre très facilement au portier, dans un outil que j’ai tout le temps sous les yeux.

Quelqu’un sonne au portier -> le portier déclenche le scénario sur Jeedom, qui poste une capture de la caméra pour qu’on voir rapidement de qui il s’agit, et nous demande si on souhaite ouvrir. Un « oui » et Jeedom déverrouille le portillon, laissant entrer la personne.

visite_jeedom

C’est un cas particulièrement adapté à mon usage, mais qui aura permis de découvrir le plugin Slack, et l’utilisation de la fonction Ask, que j’apprécie beaucoup. Après, il est tout à fait possible d’adapter cela à des besoins différents: Ask est en effet compatible avec l’application Telegram, qui permet d’afficher ce genre de fonctionnement sur son mobile, mais également avec les SMS (pas de photo possible en pièce jointe, par contre), ou encore en vocal avec Sarah.

Bref, comme on le voit dans cet exemple, il est possible de faire des choses assez puissantes avec Jeedom. Et, si on retire la partie Slack un peu longue à configurer, vous admettrez que le scénario dans Jeedom, lui, est relativement simple, avec simplement deux blocs.

5 commentaires

  1. Nicolas Rigaud on

    Comme d’hab un tuto aux petits oignons !
    Perso, je voudrais faire cela avec mes caméras ONVIF (marque ESCAM) mais impossible à priori depuis le plugin surveillance station ou depuis le plugin camera.

  2. Merci. énorme !
    J’ai essayé de reproduire, mais au moment de répondre à la fonction ask ça fait comme si je posais une question à mes interactions. et ça me répond « Désolé pierre je n’ai pas compris ».
    Les interactions prennent le dessus !
    Tu as une idée ?

  3. Comment fais tu pour que ton prénom soit rajouté dans la réponse « Désolé PIERRE je n’ai pas compris » ?

Leave A Reply