vendredi, novembre 22, 2024
AccueildomotiqueasteriskA relire : Ma box Eedomus et Asterisk discutent ensemble.

A relire : Ma box Eedomus et Asterisk discutent ensemble.

-

Voici notre article que nous avons écrit pour le blog de Planete domotique

Ma eedomus possédant un RFXCOM Lan (Cf. cet article pour plus d’information), j’ai orienté mes recherches sur le protocole xPLwlEmoticon-winkingsmile A relire : Ma box Eedomus et Asterisk discutent ensemble.. Si vous ne connaissez pas trop le protocole xPL je vous invite à lire cet article d’explications !

eedomus_et_telephones A relire : Ma box Eedomus et Asterisk discutent ensemble.

Voici le but de mon article : je vais vous expliquer comment mettre en place sur Asterisk et sur la Eedomus la possibilité de les faire dialoguer, afin de rendre mes appels entrants et sortants plus parlants à ma box domotique !

Bon, je ne vais pas vous faire le coup du «c’est simple !», car j’ai bien cherché pour trouver la solution…

Je me suis bien inspiré du post de GuiguiABloc, et je le remercie d’avoir mis à dispo son script !

Première étape : Mettre en place AGI sur Asterisk

C’est quoi un AGI (Asterisk Gateway Interface) ?

AGI est une interface permettant de faire communiquer le plan de numérotation (extensions.conf) avec des programmes extérieurs à Asterisk, écrits avec des langages de programmation aussi divers que PHP, Perl,Python, C, shell Linux.

Le principe

AGI est matérialisé par l’écriture de scripts qui sont exécutés dans le plan de numérotation.

À chaque lancement d’un script AGI, Asterisk envoie au script un ensemble de variables avec leurs valeurs. Lorsque toutes les variables sont émises, Asterisk envoie une ligne vide pour préciser au script qu’il peut commencer ce pourquoi il a été écrit (suite d’instructions).

Comment appeller un script AGI ?

Par défaut, les scripts sont créés et stockés dans /var/lib/asterisk/agi-bin# (cela permet de ne pas mentionner le chemin complet d’appel des scripts). Il faudra toujours que les scripts disposent du droit d’exécution.

image_thumb1 A relire : Ma box Eedomus et Asterisk discutent ensemble.

Mise en place du script

Je vais vous mettre à dispo mon script qui est le même utilisé par les appels entrants et sortants. La base est le même script que GuiGuiabloc.

Il faut le recopier dans un fichier Asterisk2xPL.agi.

Attention il faudra faire une modification :
À if outgoingnumber == « Mettre son numéro de téléphone Freebox » (ligne 29), vous devez mettre votre numéro de téléphone fixe commençant par 09.

voici le script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python
# -*- coding: ISO-8859-1 -*-
#
# Asterisk2xPL
# By Kragg
import sys,os,socket
hostname = socket.gethostname()
# On défini un broadcast sur tout le réseau (tous les périphériques recevrons l'information)
xpladdr = ("255.255.255.255",3865)
xplport = 3865
UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDPSock.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
AGIENV={}
env = ""
while(env != "\n"):
    env = sys.stdin.readline()
    envdata =  env.split(":")
    if len(envdata)==2:
      AGIENV[envdata[0].strip()]=envdata[1].strip()
incomingnumber = AGIENV['agi_callerid']
outgoingnumber = AGIENV['agi_extension']
if outgoingnumber == "mettresonnumérodetelephone":
  body = 'device=telephone\ntype=AppelEntrant\ncurrent=N'+incomingnumber
  msg = "xpl-trig\n{\nhop=1\nsource=rfxcom-lan-asterisk."+hostname+"\ntarget=*\n}\nsensor.basic\n{\n" + body + "\n}\n"
  UDPSock.sendto(msg,xpladdr)
else:
  body = 'device=telephone\ntype=AppelSortant\ncurrent=N'+outgoingnumber
  msg = "xpl-trig\n{\nhop=1\nsource=rfxcom-lan-asterisk."+hostname+"\ntarget=*\n}\nsensor.basic\n{\n" + body + "\n}\n"
  UDPSock.sendto(msg,xpladdr)

Avant de faire quoi que ce soit, il faut rendre le scripts exécutables et aussi changer le propriétaire

Pour rendre le script exécutable :

1
chmod u+x Asterisk2xPL.agi

Pour changer le propriétaire :

1
chown -R asterisk:asterisk /var/lib/asterisk/agi-bin/Asterisk2xPL.agi
Attention : faites bien le chown –R sur le fichier et non sur la racine, style /var/lib…, car sinon cela va modifier l’ensemble des droits du /Lib laissant votre asterisk dans les choux…

Le script est la, il est exécutable, son propriétaire est Asterisk …maintenant il faut l’intégrer dans votre plan de numérotation…

Intégration du script dans le plan de numérotation

Pour cela nous passons dans le dossier /etc/asterisk#. Dans ce dossier vous avez l’ensemble des fichiers de configuration de votre Asterisk.

Nous allons nous intéresser au fichier suivant : extensions_custom.conf

En rentrant dedans, vous allez vous apercevoir qu’il est peut être vide. Du coup, il faut faire une copie du fichier extensions_custom.conf.sample (le fichier d’exemple) vers le fichiers custom.

Voici la commande :

1
cp extensions_custom.conf.sample extensions_custom.conf

image_thumb3 A relire : Ma box Eedomus et Asterisk discutent ensemble.

Maintenant il faut éditer le fichier et y rajouter en dessous de :

1
2
3
4
5
[from-internal-custom]
exten => 1234,1,Playback(demo-congrats)         ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => custom-recordme                      ; extensions can also dial 5678

Ceci, l’appel de notre script AGI !

1
2
[from-pstn-custom]
exten => _X.,1,AGI(/usr/bin/python,"/var/lib/asterisk/agi-bin/Asterisk2xPL.agi)

image_thumb4 A relire : Ma box Eedomus et Asterisk discutent ensemble.

L’ajout des capteurs côté eedomus

Voila maintenant, si on passait sur la eedomus ?

Pour cela je vous invite a lire la suite de l’article sur le blog de planete domotique.

Veuillez noter que cet article peut comporter des liens affiliés, sans impact sur vos achats ou les prix des produits. En utilisant ces liens, vous exprimez votre reconnaissance pour le travail quotidien fourni sur le blog et soutenez le financement des dépenses du site, telles que l'hébergement, les frais de port, l'achat de produits pour les tests et les concours. Cela ne vous engage à rien financièrement, mais cela représente une aide précieuse pour moi ! Un grand merci à ceux qui participent à cette démarche !"

Kragg
Kragg
Kragghttp://www.nord-domotique.com
Fort de 22 années d'expertise dans le domaine de l'IT, Je suis responsable des réseaux et télécoms, j'ai été séduit par la domotique et les objets connectés dès 2009, une passion qui n'a cessé de croître depuis. Explorez avec moi une décennie d'aventures et de découvertes sur mon blog, où je partage mes expériences et analyses.

1 COMMENTAIRE

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Suivez Nous !

716FansJ'aime
177SuiveursSuivre
1,857SuiveursSuivre
439AbonnésS'abonner

Nos articles les plus consultés en ce moment

Test du Roomba Combo 10 Max : L’excellence du ménage autonome

Présentation du Roomba Combo 10 Max : Une avancée majeure dans le nettoyage robotisé Aujourd'hui, je vous propose le test du Roomba Combo 10 Max,...

Test du Shelly Pro 3EM avec le Kit Zendure SolarFlow

Présentation du Shelly Pro 3EM Dans l'univers de la domotique et de la gestion énergétique, le Shelly Pro 3EM se distingue comme un produit innovant...

Roomba Combo i5+ : notre avis complet sur cet aspirateur laveur

Présentation du Roomba Combo i5+ iRobot, leader mondial dans le domaine des aspirateurs robotisés, repousse encore une fois les limites de l'innovation avec le Roomba...

Test de la tête thermostatique Ally de chez Danfoss

J’ai reçu dernièrement de la part de Danfoss leur nouvelle tête thermostatique. Il s’agit de leur tête thermostatique nouvellement sortie et fonctionnant sous le protocole...

Test du TP-link Deco X50,

Présentation du TP-link Deco X50 Le nouveau Deco X50 prend place au cœur de votre maison en proposant une solution abordable pour passer au Wi-Fi...