Recycler un ancien smartphone pour des usages domotique !


Aujourd’hui nous allons voir comment recycler un vieux smartphone afin d'ajouter plusieurs services (serveur SMS, caméra IP, borne wifi) dans une solution domotique.




J’utilisais déjà un (très) vieux téléphone sous Androïde 2.2 (Froyo) qui me permettait, avec l’application « Gateway SMS Free » et une carte SIM Free à 2€/mois, d’envoyer des SMS à partir de ma solution domotique.

Mais un jour, cela n’a plus fonctionné ! Après moultes bidouilles pour essayer de remettre cette belle machinerie en marche, je du me rendre au triste constat que Froyo était mort ! Emportant avec lui la version correspondante de l’Androïd Market ... enfin du Google Play Store … et toutes les applications qui en dépendaient : dont bien entendu l’excellente « SMS Gateway Free ».

J’avais mis de côté un vieux téléphone Haier qu’un ami m’avait donné. Il étant temps pour moi aussi de tourner la page de Froyo et de mettre à jour ma domotique avec ce qui se fait de mieux actuellement ! Oui … mais quoi ? Que pouvons-nous faire avec un vieux (mais pas trop) smartphone ? Et comment intégrer tout ça avec notre serveur domotique ?

C’est ce que nous allons voir dans cet article.



Le cahier des charges



Les principales fonctionnalités d’un smartphone que j’aimerais pouvoir exploiter sur ma solution domotique sont :
  • La capacité d’envoyer des SMS afin d’être prévenu par SMS lors d’événements spécifiques ! Par exemple si le frigo, que je supervise, tombait en panne !
  • Les capteurs photos afin d’avoir une caméra IP de surveillance dans mon domicile.
  • La capacité du téléphone à fournir un accès wifi en se connectant au réseau 4G et cela même en cas de panne de la box ADSL ou d’électricité.


Il faudra donc installer ce téléphone dans un endroit de la maison où :
  • il pourra servir de caméra de surveillance
  • il sera branché en permanence
  • la fonction « Partage de connexion wifi » sera activée
  • une application serveur de SMS sera installée dessus et accessible depuis mon serveur domotique.
  • Une application de camera IP sera installée et accessible depuis mon serveur domotique, autant en local (quand je suis chez moi) que depuis internet depuis un smartphone ou un PC distant.


Voilà un beau projet ! Les principales difficultés a lever vont être :
  • Réussir à ce que le smartphone soit en mode point d’accès wifi et en même temps connecté sur le réseau local afin que les équipements tels que mon PC de bureau ou le serveur domotique puisse y accéder. J’explique la problématique dans cet article . Et en conséquence une partie de la solution s’y trouve également !
  • Réussir à consulter les images de la caméra du téléphone depuis l’interface du serveur domotique. Pour ma part j’utilise la solution « Domoticz » sur un Raspberry PI. Je vais donc essayer d’ajouter une page personnalisée à l’interface web du serveur, qui me permettra de consulter l’image de la caméra du téléphone depuis n’importe quel endroit et n’importe quel équipement connecté à Internet. J’ai décris l’ajout d’une page au serveur Domoticz dans l’article ICI
  • Trouver une application de gateway SMS pour remplacer "SMS Gateway Free". 


Gestion des difficultés : 



Voyons pour chaque problématique technique de notre projet comment nous allons la gérer. 

Accéder au téléphone lorsqu'il se trouve en mode "Partage de connexion" Wifi. 


Dans l'article sur le partage de la 4G sur le réseau local (ICI), j'avais expliqué la problématique pour faire dialoguer des équipements sur le réseau local, qui sont dans un plan d'adresses IP définies par le routeur ADSL et les équipements connectés au téléphone qui gère un autre plan d'adressage.
J'avais essayé d'expliquer en revenant sur les notions de masques, de gateways, d'adresses IP, pourquoi lorsqu'on passe un téléphone en mode "Partage de connexion wifi", on ne peut pas se connecter dessus directement avec un équipement qui dispose d'une adresse IP dans un subnet différent.
Et pour finir, j'avais expliqué comment régler ce problème d'accès, grâce au petit répéteur wifi TL-WA850RE et à une astuce qui consiste à donner deux adresses IP aux ordinateurs souhaitant accéder à internet depuis la box ADSL et également depuis le modem 4G du téléphone. 


Dans notre projet actuel, nous allons rencontrer la même difficulté. Notre serveur domotique, qui se trouve dans le plan d'adresses IP de notre réseau local (192.168.1.*) va devoir accéder à des applications sur notre téléphone qui va être dans un plan d'adressage différent (192.168.43.1 pour un Androïd et 172.20.10.1 si c'est un iPhone). 


Comme nous l'avons fait précédemment la solution consiste à donner une double adresse IP au serveur domotique pour qu'il puisse accéder au réseau 1 ( en bleu dans le schéma ci-dessous) et au réseau 43 (en rouge). 
J'ai également gardé une double adresse IP pour le PC afin d'accéder aux différents équipements pour les administrer.






Je précise pour les puristes que la solution la plus propre serait de faire du routage sur notre réseau local. Pour cela, il nous faudra un routeur un peu plus performant que les box internet classiques. Installer et tester un tel équipement est un projet que j'ai. Mais en attendant je vais vous expliquer comment configurer deux adresses IP sur une interface Ethernet d'un équipement sous linux. 
Pour ma part j'ai un raspberry PI 3 sous Raspbian 8 Jessie. Mais je pense que cette méthode fonctionne avec Raspbian 9 et également les versions inférieures à la 9. 

cat /etc/os-release

Bien que depuis "Jessie" les adresses IP sont gérées dans le fichier /etc/dhcpcd.conf, nous ne pourrons pas l'utiliser pour attribuer une adresse IP supplémentaire à l'interface de la carte ethernet eth0. Il nous faudra aller modifier le fichier /etc/network/interfaces. 

Dans mon fichier /etc/dhcpcd.conf j'ai fixé une adresse IP fixe au RPI : 
# Fixe l'adresse IP statique
interface eth0
static ip_address=192.168.1.150/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Dans le fichier /etc/network/interfaces j'ai ajouté les lignes ci-dessous à la fin pour déclarer un alias à l'interface eth0 : 
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
      address 192.168.43.150
      netmask 255.255.255.0
   

Qu'il vous faudra bien entendu adapter en fonction de vos propres adresses IP.
L'alias d'une interface ne doit pas avoir de gateway. 

La commande ifconfig affiche désormais : 
eth0      Link encap:Ethernet  HWaddr b8:27:eb:22:58:ac
          inet adr:192.168.1.150  Bcast:192.168.1.255  Masque:255.255.255.0
...
eth0:1    Link encap:Ethernet  HWaddr b8:27:eb:22:58:ac
          inet adr:192.168.43.150  Bcast:192.168.43.255  Masque:255.255.255.0

On reboot et notre Raspberry accède désormais au réseau en 192.168.1.* et à celui en 192.168.43.*.


Pour ceux d'entre vous qui ne souhaitent pas modifier les fichiers de conf du système, vous pouvez accéder au même résultat avec la commande :

sudo ifconfig eth0:1 192.168.43.150/24 

Cette commande pourra être lancée automatiquement à chaque reboot en la plaçant dans un script exécuté par crontab au reboot.


Difficulté 1 levée ! Attaquons nous à la suite ...




Consulter les images de la caméra du téléphone depuis l’interface du serveur domotique

L’intérêt d'une solution domotique, est de centraliser l'ensemble des fonctions permettant de gérer notre domicile via un point d'accès unique : le serveur domotique et son interface utilisateur. 
Il serait assez facile de trouver une application "cliente" qui permette d'accéder au travers d'une adresse IP ou d'une URL à la caméra d'un téléphone configuré avec l'application "serveur".
Mais en ce qui me concerne, je veux continuer à tout centraliser et pour cela, la camera ou l'application "serveur" qui sera installée sur le téléphone devront être accessible depuis l'interface domotique. 

Pour cela je vais utiliser la technique que j'ai exposé dans l'article "Ajout d'une page personnalisée à Domoticz". Mais dans ce cas ce sera beaucoup plus simple car nous n'allons pas avoir besoin de dynamiser quoi que ce soit, dont pas besoin de programmer ! 

L'application que j'ai choisi pour la gestion de la camera s'appelle "Alfred". Je vais vous en parler après. Alfred permet de faire de la vidéosurveillance et son utilisation est d'une simplicité déconcertante ! Une fois installé sur le téléphone, il faut l'associer avec un compte google. Pour consulter la camera depuis un navigateur il suffit de se connecter avec ce même compte google à l'adresse "https://alfred.camera/webapp/" ! Et vous pouvez piloter votre camera, voir en temps réél des images, allumer le flash, prendre des photos .... 

Pour l’intégrer dans domoticz je vais donc tout simplement créer une nouvelle page personnalisée que j'appellerai "camera.html" et qui sera placée dans le dossier "/home/domoticz/www/templates/"
Dans cette page il n'y aura que l'appel de l'URL d'Alfred dans un iframe afin que tout cela s’intègre parfaitement à l'interface domoticz. 

pi@raspberrypi:/home/domoticz/www/templates $ more /home/domoticz/www/templates/camera.html
<!DOCTYPE html>
<html>
  <head>
    <title>Titre test</title>
  </head>

  <body>
    <div align="middle">
      <iframe src="https://alfred.camera/webapp/" align="middle" width="1200" height="600">
        <p>Your browser does not support iframes.</p>
      </iframe>
    </div>
  </body>
</html>

Une fois Alfred installé sur le téléphone, voici ce que donne la vidéo surveillance de la porte de mon placard ! Si quelqu'un en sort je le saurai .... 😊



Difficulté 2 levée ! Attaquons nous à la suite ...


Trouver les applications de caméra et serveur SMS 


La dernière difficulté de notre projet consistait à trouver les bonnes applications pour piloter la caméra du téléphone et installer une gateway SMS digne de ce nom.

Alfred 

En ce qui concerna la caméra, si vous avez lu le chapitre précédent, vous savez déjà qu'après de nombreuses heures de recherche et d'essais, mon dévolu c'est porté sur l'application Alfred.

Pourquoi Alfred ? 

Mon objectif était d'avoir une application qui fournissait les services suivants : 

  • Pouvoir visualiser l'espace surveillé à tout moment et cela depuis n'importe quel type de terminal (PC/smartphone/tablette) mais également de n'importe où : que je sois sur internet en dehors de chez moi ou alors sur mon réseau local. 
  • Pouvoir intégrer ce flux vidéo et les fonctionnalités de contrôle de la caméra dans l'interface de mon serveur domotique. 
  • Avoir une application qui puisse faire détecteur de mouvement avec :
    • enregistrement de la séquence lorsqu'un mouvement est détecté 
    • envoi d'une notification sur mon téléphone pour m'avertir. 
  • Pouvoir utiliser plusieurs téléphones et que tous les flux vidéos soient agrégés sous une meme interface. 
Seule l'application Alfred m'a apporté toutes ces fonctions et d'autres encore : 
  • Contrôle à distance du flash du téléphone pour mettre de la lumière dans la piece
  • Contrôle du niveau de charge du téléphone. 
  • Capacité de passer en mode nuit. 


Comment installer Alfred ? 

L'application s'installe très simplement. Il suffit de :

  • l'installer sur le téléphone depuis votre store préféré. 
  • au démarrage dire si vous voulez utiliser l'application comme caméra (serveur) ou alors pour visualiser et contrôler les caméras (client). 
  • Et ensuite vous connecter au compte google ! Et ça marche .... 
Vous trouverez facilement sur internet des tutos plus avancés et bien fait qui vous donneront plus de détails sur Alfred. Ce n'est pas l'objectif de ma publication. 
Par exemple vous pouvez consulter : http://www.macameraip.com/smartphone-camera-ip/

SMS Gateway Ultimate 


Pour la partie SMS, mes recherches pour remplacer "SMS Gateway Free" m'ont menées à une application nommée "SMS Gateway Ultimate".
C'est une application plutôt bien faite et simple d'utilisation qui fait serveur de SMS. Il faut configurer un serveur en donnant un numéro de port d'écoute et le démarrer.

Voici les étapes à suivre :






Installer l'application

Accepter

Ajouter un serveur SMS




Donner un nom et un numéro de port au serveur. 

Activer le lancement de l'application au démarrage du téléphone. 

Lancer le serveur.


Pour envoyer des SMS : 

Dans notre cas, il ne faut pas oublier que notre téléphone sera en mode "Point d'accès Wifi". Donc l'adresse IP coté LAN sera l'adresse IP du point d'accès (192.168.43.1 pour un téléphone Android).

Une fois le serveur lancé et le téléphone connecté au répéteur, nous pouvons y accéder depuis n'importe quel équipement du réseau local qui dispose d'une adresse IP dans le subnet du téléphone (192.168.43.* ici).

Deux manière d'accéder et d'envoyer des SMS :

  • Depuis un navigateur sur le réseau local en rentrant directement l'adresse du serveur dans la barre d'adresse : http://192.168.43.1:9091/


Le 9091 doit correspondre au numéro de port que vous avez configuré.
Le champ "To" est le numéro de téléphone à qui envoyer un SMS.


  • Depuis un script en envoyant une requête http au serveur. 
Pour un exemple de script python et le mode d'emploi complet de l'intégration de SMS Gateway Ultimate vous pouvez vous référer les yeux fermés (enfin façon de parler) à l'excellent article https://easydomoticz.com/une-plateforme-sms-a-laide-dun-vieux-telephone-android-pour-domoticz-2/

La requete qui doit etre réalisée est de la forme :
http://adresse_serveur:port/send.html?smsto=NUMERO&smsbody=MESSAGE&smstype=sms
Les champs en rouge étant à personnaliser.

Par exemple :
http://192.168.43.1:9091/send.html?smsto=0612345678&smsbody=unbeausms&smstype=sms

Je vous conseil d'écrire un script dans un langage qui va être capable de transformer le texte du SMS en un texte compatible avec une requete HTTP. Par exemple, les espaces doivent être codé en "%20".
Mais si vous voulez aller vite, voici un petit script que vous pourrez utiliser rapidement dans votre serveur domotique, si toutefois vous faites l'impasse sur les caractères spéciaux et accentué. Mais il sera compatible avec des SMS contenant des espaces :

#! /bin/bash
# -*- coding: utf-8 -*-
num=$1
msg=`echo $2 | sed 's/ /\%20/g'`

url="http://192.168.43.1:9091/send.html?smsto=$num&smsbody=$msg&smstype=sms"
commande=`sudo curl -s $url`

Si vous appelez ce script sendsms.sh par exemple, vous pouvez envoyer des sms avec la commande :
sendsms.sh 0612345678 "Mon beau SMS"

En plaçant ce script sous : /home/domoticz/scripts/bash vous pourrez l'appeler depuis domoticz.
Voici par exemple la configuration d'un switch "on/off" sous domoticz qui enverra un sms à chaque changement d'état :



Conclusion 


Et voila, après plusieurs heures de travail je vais pouvoir installer mon vieux téléphone dans un endroit stratégique de la maison pour détecter en cas d'absence toute tentative d'intrusion mais également servir de point d'accès Wifi et également de serveur SMS pour ma solution domotique.

En résumé voici les grandes étapes de cette installation :

1/ Activer le mode point d'accès du téléphone
2/ Installer Alfred
3/ Installer SMS Gateway Ultimate
4/ Installer le répéteur wifi
5/ Configurer le RPI pour qu'il puisse accéder au réseau 192.168.43*
6/ Ajouter une page personnalisée à domoticz pour consulter la camera.
7/ Tester et profitez !


Soutenez la blogoculture ...


Le plus simplement du monde, si vous avez un achat à faire sur Amazon, accédez au site à partir de ce lien (que vous pouvez ajouter dans vos favoris)https://amzn.to/2nbe4sm




Soutenez la blogoculture ...


Le plus simplement du monde, si vous avez un achat à faire sur Amazon, accédez au site à partir de ce lien (que vous pouvez ajouter dans vos favoris)https://amzn.to/2nbe4sm


... mais aussi ...


Vous appréciez les articles frais et vitaminés de ce blog et vous voulez faire un geste pour encourager ce partage, saluer le travail, ou parce que vous y avez trouvé des choses utiles ( et que vous êtes sympa ) ?

... c'est possible et vous avez le choix !
Si vous avez un compte Paypal et quelques euros à offrir sans vous mettre sur la paille, subventionnez la culture domotique à l'ancienne !
Vous ne dépenserez pas un radis de plus en faisant un achat sur eBay à partir de ce lien.
Economisez du blé avec Amazon Prime ! Offre d'essais 1 mois gratuit (et renouvelable).
Soyez chou et aidez les petits producteurs de blog à se faire connaitre auprès de vos amis facebook !

Merci

Commentaires

  1. Hello ! Merci pour cette article. Pour ma part, je n’ai pas compris la partie email qui se trouve en dessous de la configuration du port. J’ai essayé de connecté mon adresse mail sur SMTP mais rien ne se passe quand j’envoie ou je reçois un mail à cette adresse :/
    Un coup de pouce ?

    RépondreSupprimer
    Réponses
    1. Bonjour Seeryos, je ne comprends pas ta question. Peux tu préciser le contexte et de quelle adresse mail il s'agit ?

      Supprimer
  2. Bonjour, si tu as free voici un liens qui pourrais y intéresser pour les SMS.
    https://www.freenews.fr/freenews-edition-nationale-299/free-mobile-170/nouvelle-option-notifications-par-sms-chez-free-mobile-14817

    Maxime

    RépondreSupprimer
    Réponses
    1. Bonjour Maxime,
      Merci pour le lien. Effectivement durant un temps j'ai testé cette solution d'API lié à un abonnement free. Par contre cela ne permet que d'envoyer des SMS au numéro du forfait free. Mais comme je n'utilise pas free comme forfait pour mon téléphone principal, j'ai du renoncer à cette solution gratuite. J'ai préféré prendre une SIM à 2€ qui permet d'envoyer des SMS illimités vers tous les numéros. C'est beaucoup plus performant mais, bien que faible, cela a un cout.
      Dans tous les cas merci pour ton commentaire et le partage d'information.
      Alexandre

      Supprimer
  3. Il y a même un noeud nodered qui utilise cette api de free sa te permet de t envoyer des SMS. Tu tu activé l'option tion de ton espace client et C est gratuit

    RépondreSupprimer

Enregistrer un commentaire