une plateforme SMS à l’aide d’un vieux téléphone Android pour Domoticz

Une question récurrente des utilisateurs Domoticz est l’envoi de SMS depuis notre système favori, voyons ici les possibilités qui nous sont offertes, leurs avantages et leurs inconvénients.

  • Free permet à ses utilisateurs l’envoi gratuit de SMS vers leur propre numéro, mais on est donc limité à un seul numéro (c.f cet article). L’inconvénient est d’avoir un forfait téléphonique Free et on doit utiliser l’api http:// de Free dépendante d’une connexion Internet.
  • On peut aussi utiliser la plateforme SMS Clickatell, surtout depuis son inclusion native dans Domoticz, ou d’autres (OVH) mais radins comme nous sommes, le coût nous freine rapidement.

Partant de ce constat j’ai cherché une autre solution.

Le postulat de base est :

  • le moins cher possible avec des coûts prévisibles et planifiables (un forfait fixe),
  • pas de trucs dans le cloud (je ne veux pas dépendre de ma connexion internet pour cela).

Sachant que j’ai un vieux téléphone Android dans un placard, qu’un forfait à 2 euros chez Free ne me parait pas prohibitif, l’idée vient rapidement d’utiliser le téléphone pour envoyer nos SMS. Il nous faut donc un logiciel sur le téléphone capable d’envoyer des SMS et d’être piloté depuis l’extérieur (Raspberry/Domoticz).

Quelques recherches sur le Google Play nous amènent vers le logiciel SMS gateway, qui possède une interface qui écoute sur http pour envoyer les SMS. D’autres fonctions sympathiques existent dans cette appli (mail vers SMS, SMS vers mail…)

Attention : un autre article concernant les SMS est disponible ici avec une autre appli Android, cette appli permettra de faire plus de choses comme du pilotage de Domoticz par envoi de SMS , veuillez plutôt vous référer à ce lien https://easydomoticz.com/une-plateforme-sms-a-laide-dun-vieux-telephone-android-pour-domoticz-2/

L’appli SMS GATEWAY

Après installation depuis le Google Play , le lancement de l’appli donne cela:

sms_gateway_1

Utilisons le bouton settings pour effectuer la configuration.

sms_gateway_2.

Il nous faut cocher « Listen for Http send SMS command », le « Enable logging on SDCARD » est pas mal lors des tests.

Une fois que tout marchera bien il faut cocher le « Prevent CPU sleep mode » et le « Start Gateway…. » pour lancer tout cela automatiquement et décocher « Enable loggin on SDCARD ».

Puis utilisons le bouton « Http Settings » de ce même écran.

sms_gateway_3

On trouve ici le port Http sur lequel écoutera l’appli SMS Gateway et un mot de passe pour protéger l’envoi de requêtes SMS.

On voit plus bas la requête http qu’il faudra appeler vers cette appli pour lancer des SMS, elle est du type http://adresseipdutelephone:port/sendsms?phone=numero_de_telephone&text=message_du_sms&password=le_password_configuré_dans_l’appli

Remarquez sur la copie d’écran que sur mon téléphone l’adresse IP est de la forme fe80::50cc… .

Bien que cela ressemble à une adresse IPV6, je n’ai pas pu l’utiliser par la suite, j’ai donc utilisé l’adresse IPV4 fournie à ce téléphone par ma box, et j’ai également passé le téléphone en ip fixe pour éviter tout changement intempestif au cours du temps. (Passer un téléphone Android en ip fixe c.f. ici http://www.androidpit.fr/comment-configurer-adresse-ip-statique-android)

Il ne nous reste plus qu’a activer la passerelle SMS en appuyant sur « Start »

sms_gateway_4

Le dialogue avec la passerelle SMS.

On a vu qu’il suffit d’une simple requête http pour piloter l’appli. N’importe quel langage sachant faire http pourra donc utiliser cette appli.

J’ai crée un script python afin d’envoyer un SMS à plusieurs téléphones et d’avoir des messages passés en paramètres.

Exemple : si j’appelle ce script smsgateway.py et que depuis Domoticz dans un action on /action off j’appelle script:///home/pi/domoticz/scripts/smsgateway.py ALERTE, le SMS que je recevrai sera « ALERTE ».

Si on n’indique pas de message, il y a un message par défaut dans le script que vous pouvez changer (Message de Domoticz).

action_sms_gateway

On configure dans le script les numéros de téléphone entre ‘ et séparés par des , puis les ip, port et mot de passe de l’appli SMSGATEWAY.

N.B : Si vous n’avez pas mis de mot de passe dans SMSGATEWAY, laissez vide password_sms_gateway comme cela

password_sms_gateway=''
Ce script nécessite la présence de la bibliothèque requests : sudo pip install requests pour l’installer.

Si vous avez du python 3 installé sur votre machine, remplacez la première ligne par

#!/usr/bin/python3

sinon :

#!/usr/bin/python
# -*- coding: utf-8 -*-

# il faut le module requests
# sudo pip install requests

import requests
import os
import sys


#~~~~~~~~~~Numeros de telephone a contacter~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
phones=['06511121314','0612131415']

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#~~~~~~~~~~ Parametres SMS Gateway  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ip_sms_gateway='192.168.1.66'
port_sms_gateway='9090'
password_sms_gateway='toto'

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


if len(sys.argv)==1:
	message='message de Domoticz'
else:
	message = sys.argv[1]


def send_sms (tel,message,password):
    requetesms='http://'+ip_sms_gateway+':'+port_sms_gateway+'/sendsms'
    payload = {'phone':tel, 'text': message, 'password':password_sms_gateway}
    r = requests.get(requetesms, params=payload)
#    print (r.url)


for tel in phones:
    #print (tel)
    send_sms(tel,message,password)

Voila quelques semaines que je surveille congélateurs, températures extérieures, vitesse du vent  par ce moyen et cela fonctionne rapidement et sans anicroches.

Utilisation avec les notifications http de Domoticz.

Un utilisateur émérite du forum (Vil1driver) à attiré mon attention sur le fait que l’on peut gérer l’envoi par les notifications http internes à Domoticz. Merci à lui.

Voyons la mise en place de cela.

Tout d’abord dans la partie paramétrage des notifications nous allons faire appel  à notre script en lui passant comme paramètre #MESSAGE

Le champ « Url » contient donc script:///home/pi/domoticz/scripts/smsgateway.py « #MESSAGE »

(il y a bien 3 / après script:)

notification http Domoticz

notification http Domoticz

Puis ensuite depuis le dashboard principal Domoticz et dans chaque matériel, utilisons les Notifications comme suit :

En cliquant sur « Notification, on peut introduire une règle qui nous alerrtera.

On choisit l’état (On/Off) pour un interrupeteur pour lequel on veut être alerté ou la température audessus/audessous de laquelle on veut des SMS (bien entendu on peut mettre plusieurs condition par le bouton ajouter) , il y aura plusieurs SMS envoyés.

On laisse juste coché Notifications Http, on indique le message a recevoir dans le champ « Message personnalisé » et c’est gagné.

Ici un exemple d’alerte sur e basculement d’un switch.

notif_http2

Ici la gestion d’une alerte de température trop basse ou le message envoyé par SMS est temperature_basse

notif_http_temp

Avantages/Inconvénients.

Avantages : le recyclage d’un vieux matériel, le prix de la config, son évolutivité.

Inconvénient : il faut garder le téléphone allumé 24/24 et 7/7

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in android, domoticz, materiel.

7 Comments

  1. on peut également mettre
    script:///home/pi/domoticz/scripts/smsgateway.py #MESSAGE
    directement dans la configuration des notification http 😀

    cependant j’ai une erreur

    python smsGateway.py ALERTE
    Traceback (most recent call last):
    File « smsGateway.py », line 40, in
    send_sms(tel,message,password)
    NameError: name ‘password’ is not defined

  2. Bonjour,
    En effet on peut jouer cela dans les notifications aussi. Merci
    Dans le script ne supprime pas la ligne password=
    mais laisse juste password= »

  3. re,
    il y a une erreur à la fin du script, ce n’est pas:
    send_sms(tel,message,password)
    mais
    send_sms(tel,message,password_sms_gateway)

    maintenant j’ai un autre probleme, mon script ne ce lance pas à, partir de Domoticz, j’ai le message suivant:

    2016-03-22 19:39:27.763 Error: Error executing script command (/home/pi/domoticz/scripts/smsgateway3.py). returned: 32256

    il y aurait pas un probleme de droit?


    Cdt
    Brieuc

  4. Bonjour
    Et que donne un
    #http://tonp_ip:58432/send.html?smsto=06XXXXXX&smsbody=testdemessage&smstype=sms

  5. bonjour,
    oui ca fonctionne je reçois bien les messages, quand je lance le script manuellement ca fonctionne aussi.
    c’est uniquement à partir de Domoticz que j’ai un problème.

  6. Je déterre un peu l’article…. apparemment ça ne fonctionne plus je ne trouve plus l’application nécessaire…
    Faut trouver autre chose ….

Comments are closed.