Domotique : Envoyer un SMS par le web avec Free Mobile

01 décembre 2017 rdorigny 0 commentaires

Je n'ai pas l’habitude de faire de la promotion, mais là Free à fait fort! Donc je vais faire une exception pour une fois.

Il s'agit d'une option qui est proposée gratuitement dans le forfait Free Mobile. Cette option permet de s'envoyer un SMS par une simple requête web! C'est juste génial, il suffisait d'y penser. Le service est gratuit et semble illimité (à vérifier quand même, Free met généralement des limitations quand on dépasse un quota).

Ce service est dédié à la domotique, c'est à dire permettre à un abonné de s'envoyer un SMS. Par exemple, dans le cas où un détecteur de fumée se déclenche, vous pourrez alors vous transmettre un SMS d'alerte "Au Feu!". Il est important de comprendre que l'on ne peut uniquement transmettre que vers compte son propre numéro Free mobile. On ne peut pas envoyer sur un autre numéro.

Alors comment fait-on? Et bien tout est expliqué sur la page Free mobile de votre abonnement. Dans la page "Gérer mes options", vous trouverez l'option "Notification par SMS". Une fois activée, la clé d'authentification apparaît.



Fonctionnement des notifications SMS:
L’envoi du SMS se fait en appelant le lien suivant : https://smsapi.free-mobile.fr/sendmsg avec les paramètres suivants :
- user : votre login
- pass : votre clé d’identification générée automatiquement par notre service
- ms : le contenu du SMS encodé sous forme d’url (Percent-encoding)

Exemple : Envoyer le message « Hello World ! » sur votre mobile :
https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&msg=Hello%20World%20!

Vous pouvez également, si vous le préférez, envoyer les paramètres en POST. Dans ce cas, le contenu du message n’a pas besoin d’être encodé.
Le code de retour HTTP indique le succès ou non de l’opération :
- 200 : Le SMS a été envoyé sur votre mobile.
- 400 : Un des paramètres obligatoires est manquant.
- 402 : Trop de SMS ont été envoyés en trop peu de temps.
- 403 : Le service n’est pas activé sur l’espace abonné, ou login / clé incorrect.
- 500 : Erreur côté serveur. Veuillez réessayez ultérieurement.


Donc maintenant voyons comment automatiser l'envoi de SMS par l'intermédiaire d'un script python.
#***************************************************************************************************** # # Robert DORIGNY - www.doritique.fr le 1 decembre 2017 # # Ce script pour envoyer un SMS via l'API Free Mobile # #***************************************************************************************************** import os import sys #import pexpect import time import urllib2 import urllib import threading TabSMS = [["id1", "pass1"], #tel1 ["id2", "pass2"], #tel2 ["id"", "pass3"]] #tel3 #Fonction chargee de la transmission des donnees def sendval(user,passw): #print(TabSMS[1][1]) #print(len(TabSMS)) data={} data['user']=user data['pass']=passw data['msg']="test" url_values=urllib.urlencode(data) data=urllib2.urlopen("https://smsapi.free-mobile.fr/sendmsg"+"?"+url_values) class myThread (threading.Thread): def __init__(self,name,user,passw): threading.Thread.__init__(self) self.name=name self.user=user self.passw=passw def run(self): #Transmission des donnees sendval(self.user,self.passw) sys.exit() #*******************************************Fonction principale************************************ def main(): #Mise en daemon fpid = os.fork() if fpid!=0: # Fonctionne en daemon desormais. Le PID est fpid sys.exit(0) for i in TabSMS: thread1 = myThread("SMS",i[0],i[1]) thread1.start() thread1.join() if __name__ == "__main__": main()

Donc il vous suffit d'initialiser le tableau avec vos identifiants et le script transmettra un SMS à chaque numéro de téléphone inséré dans le tableau. En fait, le script génère un processus pour chaque numéro, et transmet la requête web avec les identifiants. Si jamais un des processus a un dysfonctionnement, il plantera sans perturber les autres.







Pseudonyme (obligatoire) :
Adresse mail (obligatoire) :
Site web :




© 2017 www.doritique.fr par Robert DORIGNY