Après avoir testé la console client SIP Linphonec, j'y ai vu la possibilité d'un moyen simple et rapide de mettre en place des alertes vocales sur un téléphone mobile, pour un système domotique.
Je pense que cette méthode convient à de nombreux systèmes de domotique DIY, je donnerai ma propre version.
J'ai un système domotique MajorDoMo Smart Home installé sur un ordinateur monocarte Raspberry Pi (exécutant Raspbian (Debian 9).
Nous créerons la possibilité de notification de MajorDoMo à un smartphone sans utiliser d'équipement supplémentaire et notre serveur VoIP.
Un bref principe de l'alerte: en cas d'accident critique (chacun peut déterminer sa propre liste d'accidents), le système d'automatisation gère le client VoIP de la console et appelle le propriétaire via le protocole SIP, après la réponse, il lit le fichier son précédemment enregistré avec le message d'accident.
Tout d'abord, nous avons besoin de deux comptes du fournisseur SIP avec des entrées / sorties gratuites au sein du réseau. Par exemple, prenez le service de téléphonie cloud Zadarma.com.
Première étape: nous nous inscrivons auprès du fournisseur, tout en accédant à votre compte personnel et à votre compte SIP. Nous pouvons nous inscrire avec plusieurs boîtes aux lettres, mais nous pouvons reconstituer le compte et obtenir des numéros supplémentaires. Dans tous les cas, nous devons avoir 2 numéros (comptes) et un mot de passe.
Sur un smartphone (cela fonctionne pour moi sous Androd OS) nous installons une application mobile du marché, n'importe quel client SIP fera l'affaire. Pour plus de commodité et en minimisant les paramètres initiaux, nous pouvons utiliser l'application propriétaire pour les appels Zadarma, mais nous pouvons être plus fonctionnels.
Après l'installation, nous procédons à l'enregistrement en lui indiquant votre numéro et votre mot de passe, ceci termine la configuration du smartphone. Nous avons donc utilisé un numéro.
Sur le Raspberry Home Automation Server, nous avons besoin d'un client terminal Linphonec SIP. Lors de l'installation à partir du référentiel Raspbian, une version 3.6.1 assez ancienne est installée, qui ne fonctionne pas correctement avec le système audio ALSA, mais comme il n'est pas nécessaire d'utiliser directement la voix, allons-y le long du chemin facile.
Installer la version actuelle du paquet Linphone (3.12.0) sans interface graphique pour Debian 9, je l'ai décrit dans un article précédent: bouton d'appel DIY. Raspberry Pi, MajorDoMo, Freeswitch et Linphonec . Vous y trouverez des informations sur l'installation d'une carte son USB et les paramètres audio du Raspberry Pi.Dans le terminal, exécutez la commande suivante:
sudo apt-get install linphone-nogtk
L'installation de l'utilitaire client de console linphonec et linphonecsh est effectuée - un programme de console pour gérer linphonec exécuté en arrière-plan dans le répertoire / usr / bin.
Faisons la première manche en tapant:
linphonec
Nous le lançons, le client SIP jure chez ALSA, nous n'y prêtons pas attention.
Nous exécutons la commande d'enregistrement client (Linphonec) sur le serveur zadarma, spécifiez votre deuxième numéro et mot de passe:
register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD
Si l'entrée est correcte, alors nous voyons la réponse concernant l'enregistrement réussi:

Nous quittons le client (Ctrl + c, tandis que le client enregistre les paramètres dans le fichier .linphonerc de l'utilisateur actuel, dans mon cas, le répertoire / home / pi /. La prochaine fois que SIP démarre, le client est automatiquement enregistré sur le serveur du fournisseur.
Nous enregistrons un message vocal (par exemple: «Attention du système a été redémarré, l'état est maintenant en fonctionnement»:
arecord -D plughw:1,0 -f cd /home/pi/alarm_restart.wav
Pour exécuter et contrôler Linphonec en mode démon, l'utilitaire Linphonecsh est utilisé. Initialement, au démarrage, l'initialisation du client linphonecsh -init est requise. Lorsque cette commande est exécutée, le client de console démarre sans charger le fichier de configuration.
Pour qu'au démarrage la configuration soit lue, exécutez avec l'indicateur avec:
linphonecsh init -c /home/pi/.linphonerc
Nous pouvons maintenant gérer le client de console à partir du terminal.
Liste des commandes Linphonecsh Usage: linphonecsh <action> [arguments] where action is one of init : spawn a linphonec daemon (first step to make other actions) followed by the arguments sent to linphonec generic : sends a generic command to the running linphonec daemon followed by the generic command surrounded by quotes, for example "call sip:joe@example.net" register : register; arguments are --host <host> --username <username> --password <password> unregister : unregister dial : dial <sip uri or number> status : can be 'status register', 'status autoanswer' or 'status hook' soundcard : can be 'soundcard capture', 'soundcard playback', 'soundcard ring', followed by an optional number representing the index of the soundcard, in which case the soundcard is set instead of just read. exit : make the linphonec daemon to exit.
Essayons les commandes suivantes:
linphonecsh generic 'soundcard use files'
linphonecsh generic 'play alarm.wav'
linphonecsh dial sip:@sip.zadarma.com
Où sont génériques les équipes du programme Linphonec lui-même. XXXXXX est notre numéro SIP installé sur le smartphone.
Dans ce cas, un appel se produit, lorsque vous répondez - vous pouvez entendre la lecture d'un fichier précédemment enregistré avec un accident.
Manuellement, cela a fonctionné. Pour s'intégrer au système domotique basé sur MajorDoMo, par exemple, prenez l'urgence de redémarrer le serveur.
Nous écrivons la ligne suivante dans crontab (lors du chargement du PC, le client de la console se charge:
crontab -e
@reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc
Ensuite, accédez à la page Web du système DD, accédez au
Panneau de configuration - Scripts - Événements - Démarrage. .

Les scripts sont implémentés dans le langage de programmation PHP. Il y a déjà une ligne dans le code qui, lors du démarrage du système, prononce une phrase avec l'adresse IP du serveur.
Ajoutez-en quelques autres:
exec ("sudo -u pi linphonecsh generic 'soundcard use files'");
exec ("sudo -u pi linphonecsh generic 'play alarm.wav'");
exec ("sudo -u pi linphonecsh dial sip:576935@sip.zadarma.com ");
Nous installons
pour exécuter après avoir enregistré , nous économisons, en même temps qu'un appel à un téléphone mobile se produit.
Nous redémarrons le système MajorDoMo, via le
Service - Reboot / shutdown .
Après un redémarrage, une notification vocale arrive sur le téléphone. Le même algorithme d'actions peut être effectué pour un autre accident critique pour vous.
Après avoir légèrement modifié la séquence d'actions, vous pouvez installer votre propre serveur de téléphonie IP (Asterisk, Freeswitch, etc.) dans votre système domotique, y connecter une passerelle VoIP et accéder directement à un opérateur mobile ou PSTN. Cette option est plus fonctionnelle, a plus de fonctionnalités, mais nécessite également quelques coûts importants, à la fois en matériel et pour la configuration du système.