Étape 5: Configuration de votre Pi pour VoIP
Raspberry Pi est censé pour faire quelques appels téléphoniques alertes à l’aide d’une liste de numéros de téléphone et d’un fichier .wav « prespoken ». Beaucoup d’efforts à ce sujet a été fait par Binerry. Nous intégrer son travail dans le projet actuel.
Binerry a inclus un moteur de synthèse vocale (TTS) qui nous est inutile puisque nous utilisons un fichier vocal enregistré par nous-mêmes. Nous avons tout de même installer un moteur TTS afin d’éviter de changer trop de ses scripts. C’est pourquoi nous installons eSpeak.
apt-get install espeak espeak-data
Pour effectuer des appels, que nous utilisons un système de base de sip/voip. L’outil favori est PJSIP. Il offre non seulement une interface de ligne de commande - il fournit une api puissante bibliothèque / (PJSUA) pour l’utilisation dans le cadre des projets propres basées sur sip. Dans un premier temps, nous installons des bibliothèques :
apt-get installer subversion build-essential automake autoconf libtool libasound2-dev libpulse-dev libssl-dev libsamplerate0-dev libcommoncpp2-dev libccrtp-dev libzrtpcpp-dev libdbus-1-dev libdbus-c ++-dev libyaml-dev libpcre3-dev libgsm1-dev libspeex-dev libspeexdsp-dev libcelt-dev
Pour commencer à utiliser PJSIP/PJSUA, nous avons besoin de télécharger et de compiler. J’utilise un Fritz ! Boîte pour faire les appels téléphoniques vers le monde extérieur. Il est recommandé d’utiliser un Fritz ! Boîte pour désactiver certains codecs et options avec PJSIP/PJSUA selon le commentaire de tgwaste sur la page de Binerry. Qui évite les problèmes de son. Donc, nous créons un fichier bash « PJSIP_INSTALL.sh » dans le dossier water_alarm_system avec le contenu suivant (voir annexé fichiers) :
#! / bin/bash
OPTS = "--disable-floating-point--disable-speex-aec--disable-grand-filter"
codecs = "--disable-gsm-codec--disable-codec speex--disable-l16-codec--disable-ilbc-codec--disable-g722-codec--disable-g7221-codec"
CD/usr/src
rm -rf /usr/src/trunk
svn checkout http://svn.pjsip.org/repos/pjproject/trunk
CD /usr/src/trunk;. / configure $opts $codecs & & faire dep & & rendre pur & & faire & & faire installer
Exécute le fichier avec le bash de commande
PJSIP_INSTALL.sh
va télécharger et compiler PJSIP/PJSUA avec les paramètres ci-dessus. Compilation de finition prendra du temps (vous pouvez avoir un café ou deux dans le même temps).
Il est nécessaire d’enregistrer le Raspberry Pi comme un nouveau téléphone sur le Fritz! boîte pour obtenir le nom d’utilisateur (par exemple, 625) et le mot de passe de votre choix.
Binerry mis au point l’outil SIPCALL qui peut facilement faire un appel automatique à un nombre spécifié avec un moteur de synthèse vocale ou s’amusent avec un fichier .wav. Dans le projet actuel, nous jouons uniquement un fichier .wav puisqu’il suffit de donner une alerte.
SIPCALL est facilement utilisable via script bash-par exemple pour vérifier un état système ou capteur et placer un appel si un seuil critique est atteint. SIPCALL peut être téléchargé depuis le dépôt github - de Binerry. Les fichiers « Makefile » et « sipcall.c » sont nécessaires et doivent être stockés dans le dossier ' Accueil/pi/water_alarm_system'. Info générale est également disponible dans le fichier readme. Pour la compilation sipcall, vous avez besoin du paquet pkg-config :
apt-get install pkg-config
Avant compling, nous changeons le script pour éviter d’utiliser le fichier .wav généré par le moteur TTS, mais en utilisant notre propre voix enregistrée fichier déclarée par la variable play_file, par exemple « alarm_phrase.wav » (voir la liste des variables à la fin de cet article).
CD /home/pi/water_alarm_system
Recherche dans sipcall.c pour « synthétiser le discours ». Dans la ligne en dessous ajoutez "/ / désactivé:" pour obtenir "/ / désactivé : synthesize_speech(app_cfg.tts_file);' Maintenant, compilez avec la commande
faire sipcall
Si vous obtenez l’erreur messages "errants"\240' "et"errants "\302'" ils se réfèrent probablement à certains caractères non visibles impairs, que vous êtes entré dans votre code en copiant depuis le navigateur web. C’est peut-être à cause de vos paramètres de clavier. De toute façon, vous pourrez vous débarrasser de ces caractères parasites en entrant la commande
TR – d « \240\302 » sipcall2.c
Puis supprimer « sipcall.c » et le renommer 'sipcall2.c' à « sipcall.c ». Réexécutez la commande « make sipcall » et vous réussissez à la compilation. Pour simplifier votre vie, vous pouvez saisir simplement les fichiers joints de prêt-à-utiliser « sipcall.c » et le « Makefile ».
Il y a une option intéressante en « sipcall.c », qui vous permet de choisir un PJSUA_LOG_LEVEL entre 0 et 6. Qui vous permet de contrôler la quantité de messages sipcall retournera sur l’exécution et est très utile dans les problèmes de traçage. Mais n’oubliez pas de recompiler après chaque modification.
Le fichier .wav doit être générée séparément en enregistrant vos « discours » avec un microphone. Un chemin est facile d’employer le Magnétophone de Microsoft qui est disponible gratuitement sur toutes les versions de fenêtre. Le fichier wma qui en résulte doit être converti dans un fichier .wav. Cela peut être fait sous Windows avec les logiciels commerciaux AVS Audio Converter. Les réglages doivent être
afin d’éviter des problèmes de son (du moins avec un Fritz ! Boîte). Le play_file doit être copié dans le dossier « water_alarm_system » sur la facture pro forma de framboise. Cela peut être fait sous Windows par exemple avec le client SSH Tunnelier. Requiere SSH soit activé sur le Raspberry Pi. Comment faire cela est bien expliqué dans cette vidéo.
Il est recommandé de mettre à jour régulièrement le code source PJSIP/PJSUA vers la dernière version en exécutant la commande « bash PJSIP_INSTALL.sh » une fois de plus.