Goufablog - Catégorie Domotique https://blog.goufastyle.org/ Tous les billets de la catégorie Domotique Tue, 19 Mar 2024 04:03:03 +0100 numrows : 8 <![CDATA[[Domotique] Domotique minimale - Partie 7 : Communiquer avec l'extérieur]]> https://blog.goufastyle.org/article/domotique-minimale-partie-7-communiquer-avec-l-exterieur

Maintenant que nous avons une maison qui nous obéit au doigt, enfin surtout au doigt, et qui dispose d'un serveur accessible en permanence, pourquoi ne pas l'ouvrir à l'extérieur pour accéder à des éléments depuis une connection 4G externe ou même prendre le contrôle de la caméra depuis son lieu de vacances ?

Un mot : choisissez

C'est la partie qui me faisait le plus peur : ouvrir mon réseau à des étrangers... Mais là où c'est intéressant c'est qu'il est possible de choisir ce que l'on veut faire sortir.

Si vous ne l'avez pas fait avant, faites une liste de ce que vous voulez voir de l'extérieur et garder à l'intérieur. Si c'est bien segmenté vous n'avez rien à craindre pour le moment. Par exemple :

  • un serveur web : c'est le but ! Testez quand même qu'il n'ait pas de failles apparentes et n'oubliez pas les "Options -Indexes" dans les .htaccess
  • le FTP : je déconseille car c'est une cible pour ceux qui voudraient mettre à disposition des fichiers louches
  • le remote desktop : si vous avez confiance en l'authentification Windows c'est un moyen intéressant de prendre le contrôle de votre ordinateur à distance
  • le secure shell : Cygwin est lancé en administrateur dans ce contexte donc n'importe quelle action peut avoir des répercutions facheuses, à vous de voir.
  • la caméra : oui pour la suivre avec un logiciel externe, tout dépend ce qu'elle filme..

Mon nom de domaine

Avant toute chose il faut pouvoir être identifiable à l'extérieur. Pour ça il suffit juste de donner l'adresse IP de votre box ! Seulement cette donnée change assez fréquemment et surtout aléatoirement.

Si vous voulez faire simple, il suffit de vous créer un compte sur NoIP ou DynDNS et de dire à votre box quel service vous avez choisi pour qu'elle mette à jour toute seule la corrélation IP > nom de domaine.

Si comme moi vous avez un nom de domaine acheté il va falloir ruser car il faut contacter vous-même le service qui va faire la corrélation...

Algorithme

Chez OVH, on peut récupérer un script en Bash/Python qui va faire ce travail, il suffit juste de le planifier toutes heures. Cependant j'ai eu du mal à le faire fonctionner sur mon environnement Cygwin. J'ai donc adapté le script pour qu'il réponde à l'algorithme suivant :

  • je demande à un service externe quelle est mon IP (pour ma part, une page en PHP avec la ligne <?php echo $_SERVER["REMOTE_ADDR"]; ?>) en la GETant.
  • je compare le résultat avec une variable dans laquelle j'avais stocké le résultat précédent.
  • s'il y a une différence alors je contacte mon fournisseur de nom de domaine et j'enregistre la nouvelle valeur dans ma variable.

Redirection de ports

Prenez une feuille : pour chaque service que vous voulez faire sortir faites correspondre un port. Les Vhosts que l'on a crée récemment comptent chacun pour un service indépendant.

Si vous n'avez pas de données sensibles sur vos services, je vous conseille de garder des ports connus à l'extérieur (80, 8080, 21, 492,...) car certaines entreprises bloquent l'accès aux ports non connus. Il vous reste donc à les renseigner dans la partie qui va bien de votre box en faisant correspondre un port externe à un couple adresse/port interne pour chaque service.

Et après ?

Vous avez tout ! Maintenant gardez quand même un oeil sur vos appareils pour voir s'ils n'ont pas un comportement bizarre (fichiers qui disparaissent, caméra qui bouge toute seule,...) comme signe d'intrusion.

Et maintenant on va vérifier si les portes de chez vous sont bien fermées !

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/13/domotique-minimale-partie-7-communiquer-avec-l-exterieur Fri, 13 Mar 2015 21:19:23 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 6 : Pupitre de contrôle]]> https://blog.goufastyle.org/article/domotique-minimale-partie-6-pupitre-de-controle Chez moi la règle est simple : pas de WIFI. C'est certes contraignant quand on a des appareils connectés mais au moins j'ai un soucis de paramétrage et de risque d'intrusion en moins ! Mais pour commander tout ça sans téléphone ni ordinateur c'est un peu difficile. C'est là qu'intervient le pupitre de contrôle.

Vielle tablette, redeviens utile !

Une tablette, un vieux Note non tordu, un peu de velcro ou un cadre et c'est bon vous avez votre pupitre de contrôle :


Rudimentaire mais fait ce qu'on lui dit !

Si vous avez le Wifi il vous suffira de l'appairer, sinon achetez un adaptateur micro-USB-USB-RJ45 et faites passer un câble dans le mur. Pensez aussi à la technologie bluetooth ou NFC pour interagir sur une petite distance.

Sécurité minimale

Vous allez paramétrer une tablette qui va contrôler tout dans votre maison, et surtout qui aura un login Google par défaut, il faudra la sécuriser un peu en cas d'intrusion :

  • mettez-la hors de vue ou dans un angle mort.
  • mettez un code de verrouillage.
  • planifiez l'extinction de l'écran au bout de 5 minutes, plus ou moins.

Compatibilité maximum : HTML5 !

Vous l'avez compris, j'ai codé un soft pour faire l'interaction avec ma maison, mais le problème est que ce genre de logiciel change très rapidement en fonction du besoin.

La solution est donc simple : grâce à notre serveur WAMP installé précédemment on va faire un petit site en HTML5 qui va nous permettre de contrôler tout ça. Ensuite pour le lancer depuis la tablette vous pouvez mettre un raccourci de favori sur l'écran d'accueil ou faire une appli web android fullscreen.

L'appli web

Je vous rassure tout de suite, même avec une appli web en plein écran vous gardez le contrôle de votre tablette, voilà le code tout simple à mettre dans l'activité :

WebView myWebView = (WebView)findViewById(R.id.webview); myWebView.setWebChromeClient(new WebChromeClient() { public void onConsoleMessage(String message, int lineNumber, String sourceID) { // affichage dans la console Logcat Log.d("MONAPPLI", "["+sourceID+":"+lineNumber+"]"+message); } }); myWebView.clearCache(true); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setSupportZoom(false); myWebView.getSettings().setUseWideViewPort(true); myWebView.getSettings().setLoadWithOverviewMode(true); myWebView.addJavascriptInterface(new JavaJavascriptInterface(this),"Android"); myWebView.loadUrl(url); // navigation sans quitter l'application myWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) { viewx.loadUrl(urlx); return false; } });

Chaque ligne est parlante, vous pouvez aussi créer un objet qui contiendra un Context pour interfacer du Javascript avec des ressources internes d'Android.

Rajoutez la permission NETWORK et déployez votre application. Mettez-là sur votre serveur web et recherchez-la avec le navigateur de la tablette.

Si vous êtes à l'aise avec Android vous pouvez aussi faire un widget à placer sur l'écran d'accueil pour faire des actions simples :

  • je suis arrivé !
  • envoyer un mail ou un instapush d'aide à quelqu'un
  • enclencher l'alarme

Ouin mon site est tout moche !

C'est pas qu'il est moche, c'est qu'il n'est pas responsive ! Moi aussi ça me hérisse les poils quand je vois toutes les résolutions différentes de tous les appareils android. Mais grâce à quelques manipulations simples il est possible d'arriver à un affichage standard et lisible.

Voici ce à quoi devrait ressembler le début du head vos pages :

<meta name='viewport' content='width=device-width,height=device-height,initial-scale=1.0,maximum-scale=1.0,user-scalable=no' /> <style type='text/css'> html,body { height:100%; } </style>

Pour tester tout ça, utilisez le module d'émulation présent dans Chrome par exemple.

NFC et Bluetooth, les déclencheurs

Faire un code, rechercher la bonne application, cliquer au bon endroit... Que de temps perdu juste pour activer la détection de mouvements. Pour cela on peut se servir de la proximité d'une puce NFC ou d'un appareil bluetooth pour appeler une page web et déclencher l'action que l'on souhaite !

Il existe donc une application sur le Play Store appelée Trigger (anciennement NFC Task Launcher) qui permet de paramétrer ce genre de situation, les applications sont multiples :

  • basculer le bluetooth quand on rentre ou qu'on sort de la voiture
  • allumer le wifi quand j'arrive à la maison
  • enclencher l'alarme en partant
  • ...

Pour le NFC il suffit de coller quelques étiquettes partout ou de les présenter en fonction de la situation au pupitre de contrôle pour peu qu'il dispose de cette technologie mais on sera toujours bloqué par la proximité. Le bluetooth quant à lui permet d'interagir avec une portée plus grande mais impose d'être allumé en permanence (ou par tranche horaire) et surtout détectable à tout instant. A vous de voir le pour et le contre de chaque solution.

Ensuite

Quel bonheur ! Tout est contrôlable d'un simple toucher du doigt ! Et maintenant on ouvre la fenêtre !

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/12/domotique-minimale-partie-6-pupitre-de-controle Thu, 12 Mar 2015 18:37:44 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 5 : Contrôle de la caméra]]> https://blog.goufastyle.org/article/domotique-minimale-partie-5-controle-de-la-camera
Interface web de la caméra

Un serveur autonome, un parc informatique géré,... Il ne reste plus qu'une (ou plusieurs) caméra(s) afin de faire un peu de vidéosurveillance.

Pilotable sans logiciel

Toutes les solutions domotiques affichent avec fierté un site web dédié, une application Android ou iOS. Hélas ce n'est pas mon souhait, je ne veux pas avoir plusieurs applications au design différent pour gérer chaque partie de ma maison.

J'ai pris un modèle D-Link par hasard et il s'avère qu'il est possible de lui passer des commandes en HTTP depuis n'importe quel appareil. Ça tombe bien on a un serveur à disposition !

Intercepter les requêtes HTTP

Si comme moi vous avez une interface web pour gérer les réglages et qu'elle se rafraîchit à chaque changement, vous avez de fortes chances d'intercepter un message.

Pour cela, installez Fiddler sur votre ordinateur et faites une modification. Vous devriez voir passer une requête ainsi que ses paramètres en vous mettant en mode WebView.

Il vous suffira d'essayer de reproduire l'instruction en cURL ou dans votre langage favori pour vérifier si le message passe bien. Si vous avez bien suivi la partie précédente vous pourrez même planifier l'ordre !

J'ai trouvé la documentation REST par hasard sur le net, mais si votre caméra figure dans cette liste vous avez de fortes chances de pouvoir la commander sans passer par son logiciel.

Alertes de mouvement

C'est un peu l’inconvénient de ne pas dépendre d'une application : il faut se coder une gestion des alertes soi-même. Mais le bon côté est que l'on sait où vont nos informations et à quelle fréquence et sous quelle forme on les veut : instapush ? mail ?

Pour ma part j'utilise le transfert FTP que j'ai paramétré dans la partie 2 qui permettra à la caméra d'envoyer une image par mouvement à mon serveur. J'utilise ensuite un programme en PHP qui scrute les changements dans le dossier (du jour de préférence) et m'envoie l'image par mail.

Exemples avec le modèle D-Link 9050L

Voici quelques requêtes REST pour gérer ce type de caméra.

Afficher l'image courante :

http://cameraip/image.jpg

Activer/désactiver la détection de mouvement :

http://cameraip/setSystemMotion param = {'MotionDetectionEnable':1, 'MotionDetectionScheduleDay':'0', 'ConfigSystemMotion':'Save'}

Interroger la détection de mouvement :

http://cameraip/motion.cgi

Bouger la caméra, après avoir défini des positions :

http://cameraip/pantiltcontrol.cgi param = {'PanTiltPresetPositionMove':2}

Utilisez Fiddler pour voir quels arguments doivent être passés, notamment la chaîne d'authentification.

Et après ?

La caméra est autonome mais par contre je suis obligé de passer par mon ordinateur ou une application dédiée si je veux activer la surveillance manuellement par exemple. Nous verrons dans la partie suivante une façon simple de résoudre ce problème.

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/11/domotique-minimale-partie-5-controle-de-la-camera Wed, 11 Mar 2015 22:48:00 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 4 : Tâches et mails]]> https://blog.goufastyle.org/article/domotique-minimale-partie-4-taches-et-mails
Mail personnel

Avec Cygwin et PHP installés sur notre serveur, il est maintenant temps d'automatiser tout ça grâce à crontab et aux notifications diverses mis à notre disposition telles que les mails, instapush,...

Crontab, LA solution de planification de tâches

Jetez par la fenêtre le planificateur de tâches de Windows, difficile à paramétrer et avec un suivi par code d'erreur illisible. Si vous avez bien installé le package selon l'article précédent crontab sera installé dans votre Cygwin, ouvrer une console et tapez

crontab -l

pour avoir la liste des tâches déjà programmées, et

crontab -e

pour éditer les tâches de l'utilisateur courant.

Syntaxe

Toutes vos tâches tiennent dans un fichier texte, une par ligne. La syntaxe est la suivante :

minutes heures jours mois jours_de_semaine tâche

Vous pouvez définir des plages :

* : chaque... 2: tous les 2 du... 2,5 : les 2 et 5 du... 2-5 : plage entre le 2 et 5 du... */3 : chaque... par pas de 3

Par exemple :

#tous les jours à 2h15 15 2 * * * #à 2h15 seulement le mardi (dimanche = 0) 15 2 * * 2 #tous les quarts d'heure entre 7h et 19h chaque 5 du mois */15 7-19 5 * *

Environnement et Path

Déjà il faut savoir que Crontab s'exécute avec un utilisateur particulier qui n'aura pas forcément les mêmes privilèges que vous, mais surtout il aura un path différent de vous et risque de ne pas reconnaître les exécutables que vous lui passerez. Deux solutions s'offrent à vous.

La première est de TOUT écrire dans la ligne de tâche :

* * * * * cd /chemin/vers/fichier/ou/executable ; /chemin/vers/executable/executable fichier arguments

Mouais, précis mais illisible quand on viendra aux résultats de retour.

Je conseille la deuxième solution : créer un script qui rendra plus lisible l'instruction :

cd $3 $2 $1

Il vous suffira de l'appeler avec :

~/l executable_ou_fichier chemin_du_lanceur/executable chemin_de_travail

Par exemple :

~/l toto.php /cygdrive/D/programmes/php /cygdrive/G/scripts

Mails de retour

Dans tous les cas Crontab va vous écrire le résultat de la tâche dans un mail. Si vous ne voulez pas que ça arrive mettez un

&> /dev/null

après votre commande.

C'est la raison pour laquelle je vous ai fait installer mutt. La règle des mails crontab est simple : Si vous ne voulez pas recevoir de mails, il faut que votre programme n'affiche rien du tout ! A vous de blinder votre code pour qu'il n'affiche pas de warning de code ou du débogage.

Je vous conseille de garder ces mails pour les cas d'erreurs système et de jouer avec d'autres notifications pour vous prévenir de la résolution d'une tâche, surtout à distance.

Instapush

Découvert grâce à IFTTT, ce petit soft s'installe sur votre téléphone android et vous permet de recevoir des alertes textuelles lancées par des programmes que vous avez codé ! Le site parle de lui-même : en trois lignes vous pouvez demander à votre application de vous notifier d'un nouvel inscrit sur votre site, d'un nouveau fichier sur votre serveur, de la fin d'un téléchargement,... Tout est sur le site ! Et si votre langage de programmation n'y est pas, CURL est toujours possible !

Envoi de mails

J'ai eu un peu de mal avec cette partie, je vous conseille de regarder ce qu'il se fait en fonction de votre langage favori, en PHP par exemple il existe une classe très complète. En gros vous devez passer par un serveur SMTP pour envoyer vos mails. Vous pouvez essayer d'en installer un sur votre serveur mais il risque d'être la cible de spammeurs.

Dépendez donc de SMTP externes comme par exemple ceux de vos boîtes mails existantes.

Je vous l'ai déjà dit : il est possible de se faire passer pour n'importe qui en écrivant un mail. Servez-vous-en pour mieux trier les messages d'avertissement ou sinon créez un adresse mail dédiée. Cependant faites bien des tests pour vérifier que le serveur SMTP gère les expéditeurs modifiés (ce qui n'est pas le cas de gmail par exemple)

Lisez vos mails

Je me sers de mon serveur pour trier mon spam automatiquement selon des critères connus ou pour jeter des mails selon un filtre. Rien ne vous empêche de lire n'importe quel mail pour par exemple donner des ordres à votre serveur (s'éteindre, lancer une tâche,...).

Imaplib en python

#tri du spam mail = imaplib.IMAP4_SSL('imap.gmail.com') mail.login('mail@gmail.com', 'motdepasse') mail.select("[Gmail]/Spam",readonly=True) #mails non lus result, data = mail.uid('search',None, "(UNSEEN)") for emails in data[0].split(): result,myEmail = mail.uid('fetch',emails,'(RFC822)') print myEmail[0][1] readableemail = email.message_from_string(myEmail[0][1]) print "From: ",readableemail['From'].decode('quopri').decode('utf-8') print "To: ",readableemail['To'] print "Subj: ",quopri.decodestring(readableemail['Subject']) print "Date: ",readableemail['Date'] date_tuple = email.utils.parsedate_tz(readableemail['Date']) if date_tuple: local_date = datetime.datetime.fromtimestamp( email.utils.mktime_tz(date_tuple)) print "Local Date:", \ email.utils.mktime_tz(date_tuple) #print "----"

Grâce à ces quelques lignes il est possible de lire des éléments particuliers de votre boîte mail. La boîte gmail gère les dossiers si vous rentrez le nom du label. La principale difficulté réside dans la lecture des informations qui sont souvent encodées selon le format du mail.

Et après

Vous avez une machine complètement autonome qui interagit facilement avec vous ! Il ne reste que quelques éléments à rajouter avant de la faire s'ouvrir à l'extérieur.

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/10/domotique-minimale-partie-4-taches-et-mails Tue, 10 Mar 2015 18:36:32 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 3 : Cygwin et Apache]]> https://blog.goufastyle.org/article/domotique-minimale-partie-3-cygwin-et-apache Félicitations vous avez réussi à installer un serveur standard chez vous, maintenant on va rendre justifiable le fait de le laisser tourner toute la journée !

Cygwin, un équivalent Linux

J'aurais très bien pu passer uniquement par des commandes DOS et utiliser le planificateur de tâches moisi de Windows, mais non.

Cygwin simule un environnement Linux en ligne de commandes sur votre machine. Cependant il ne fait que le simuler et n'arrivera pas par exemple à lire des exécutables compilés sous Linux. Par contre il peut traiter les bash, s'interfacer avec les services Windows et proposer des modules très faciles à installer.

C'est une solution intéressante pour éviter d'avoir un dual-boot ou de se contenter de GNUWIN32.

Installation et mise à jour

Téléchargez cygwin sur la page officielle, renommez l'exécutable en quelque chose d'autre que "setup" et lancez-le. Il vous proposera d'installer quelques packages, je vous conseille ceux-là :

  • vi (éditeur de texte)
  • mutt (ou tout autre client mail, pour les rapports de cron)
  • make
  • python
  • perl
  • openssh
  • crontab

En choisissant ces modules, Cygwin vous proposera d'installer automatiquement les dépendances qui vont avec. Si vous avez oublié un module il suffit juste de relancer l'installateur, ça mettra aussi à jour les modules déjà installés.

Une fois mis en place il suffira de lancer l'exécutable ou de s'y connecter en SSH (voir ci-dessous). L'interface est comme n'importe quelle console Linux avec la possibilité de configurer le .profile ou la variable PS1. Il est tout à fait possible d'accéder aux lecteurs Windows en allant à /cygdrive/F pour F: par exemple.

Openssh, la prise de contrôle simpliste

Ce module permet de se connecter au serveur en utilisant un client en ligne de commande comme puTTY. Idéal pour avoir un tunnel sécurisé sans avoir d'interface graphique.

Pour ce qui est de l'installation je vais laisser Sebsauvage vous l'expliquer en détails.

La seule chose à savoir est qu'il faut arrêter le service dans Windows avant de relancer un installation de Cygwin.

WAMP, le serveur Web

WAMP signifie Windows/Apache/MySQL/PHP. Ces trois composants sont nécessaires pour faire avoir un environnement permettant de faire des sites web dynamiques avec une base de données et la gestion de droits.

Vous pouvez essayer paramétrer un Apache/MySQL sous Cygwin si ça vous amuse, mais je trouve qu'il vaut mieux gérer toute cette partie en natif sous Windows car des solutions tout-en-un existent.

A la découverte d'Uniform ServerZ

Comme plein de gens j'ai commencé avec EasyPHP. C'est un environnement hyper-simpliste pour ceux qui veulent tester PHP/MySQL rapidement et ne plus y toucher après !. En effet les mises à jour d'EasyPHP sont un véritable casse-tête surtout si vous avez fait une installation personnalisée.

J'ai donc fouillé un peu sur le net et j'ai trouvé Uniform ServerZ. C'est une solution WAMP qui allie le paramétrage clic-clic et des composants complètement indépendants !

Par exemple pour installer la dernière version de PHP il suffit juste de télécharger un exécutable, de le lancer à la racine de votre installation d'Uniform ServerZ et de le sélectionner dans l'IHM.

Création de hosts virtuels

Si vous avez envie de rendre visible votre serveur à l'extérieur, c'est une étape indispensable pour séparer les zones privées et publiques de vos sites.

Commencez d'abord à créer des répertoires bien distincts pour ça, vous pouvez aussi inclure le répertoire public dans le privé. Ensuite cliquez sur hosts virtuels et entrez les informations suivantes :

<VirtualHost *:81> #Allow override all DocumentRoot F:/www/applis ServerName localhost ErrorLog "logs/error.log" CustomLog "logs/access.log" common </VirtualHost> <VirtualHost *:80> #Allow override all DocumentRoot F:/www/home ServerName localhost ErrorLog "logs/error.log" CustomLog "logs/access.log" common </VirtualHost>

Vous avez donc deux zones séparées par un port.

Paramétrage de MySQL et de PHPMyAdmin

A l'installation, le programme va vous demander un mot de passe root pour MySQL. Ne négligez pas cette étape surtout si vous voulez que votre serveur soit visible à l'extérieur.

PHPMyAdmin est généralement installé sur toutes les solutions WAMP et est très pratique. Malheureusement l'accès est souvent chaotique, à cause du nom de dossier qui change entre les solutions.

Pour Uniform ServerZ, le répertoire de PHPMyAdmin se trouve dans UniServerZ\home\us_opt1. Il suffit d'y créer un .htaccess donnant l'accès aux ordinateurs que vous voulez. Changez ensuite le config.inc.php à la ligne 36 pour choisir le type d'authentification (je vous conseille http qui vous demandera systématiquement le mot de passe à l'accès au site).

Créez ensuite un utilisateur à droits restreints qui aura juste accès aux opérations de base sur les tables.

Installer en tant que service


Cette opération va permettre au serveur PHP/MySQL de tourner tout seul sans aucune aide en utilisant le mécanisme de services de Windows.

Mais avant de faire ça tournez et retournez les réglages en faisant différents scripts appelant des modules comme par exemple mysqli ou gd. Regardez aussi les scripts qui manipulent l'heure pour voir si vous êtes sur le bon fuseau horaire. Pensez surtout à modifier php-cli.ini dans le répertoire core, on verra à quoi il sert plus bas.

Une fois que tous vos tests sont bons, récupérez le package Uniform Service et décompressez-le à la racine de votre installation de Uniform ServerZ.

Vous êtes à 4 clicks d'installer votre service. Pensez a couper toute instance existante avant.

Script php en ligne de commande

Tout à l'heure je vous avais demandé de modifier le fichier php-cli.ini. C'est ce fichier que le moteur PHP va utiliser si on appelle un script en ligne de commande. Il suffit donc juste d'appeler l'exécutable php.exe avec en paramètre le script qui va bien. Attention cependant au path avec le cron qui vient... maintenant !

Et ensuite ?

Nous avons un super serveur avec lequel on peut communiquer par SSH ou par web. Et si on automatisait tout ça ?

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/09/domotique-minimale-partie-3-cygwin-et-apache Mon, 09 Mar 2015 19:49:35 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 2 : Construire et paramétrer le serveur]]> https://blog.goufastyle.org/article/domotique-minimale-partie-2-construire-et-parametrer-le-serveur Maintenant que tout est câblé, je vous propose d'installer un système informatique qui va tourner 24h/24 et gérer toutes les tâches de votre réseau domestique, et tant qu'à y être héberger vos fichiers ou votre serveur web.

Le choix

Raspberry Pi, serveur NAS, tour ITX avec Windows Server, Ubuntu,... A vous de voir ce que vous préférez avec les capacités et la connectique qui vont bien.

Si comme moi vous vous avez des connaissances limitées en Linux ou si vous voulez de la réactivité et de la compatibilité matérielle, vous pouvez opter pour un ordinateur standard de récupération à cacher dans un coin. J'y ai mis un windows professionnel pour bénéficier de toutes les capacités serveur que je puisse débloquer.

Dans l'article suivant je vais parler de Cygwin qui a la même syntaxe que Linux donc si vous choisissez une distribution Linux vous retomberez en partie sur vos pieds.

Raid, la sauvegarde de la sauvegarde

Si vous avez choisi la sauvegarde de données, je vous conseille de jeter un oeil à la solution RAID :

  • RAID 1 : deux disques durs clonés en temps réel.
  • RAID 5 : trois disques dont les données se complètent, si un disque tombe en panne on peut récupérer les données depuis les deux autres.

Regardez si votre matériel supporte ce genre de protocole, sinon vous pouvez acheter une carte SATA PCI. Si vous n'avez pas la place, des solutions USB existent.

Paramétrage réseau

Le serveur sera la pièce maîtresse de votre installation, il ne faut donc pas négliger la configuration réseau. Voici donc quelques règles, à vous de les adapter.

Réveil à distance

Branchez votre serveur sur une prise réseau Wake-On-Lan pour pouvoir allumer l'ordinateur à distance. Regardez le manuel de votre carte mère ou achetez une carte réseau PCI prévue pour.

Pour faire fonctionner le Wake-On-Lan il vous faut connaître l'adresse MAC de votre carte réseau. Pour cela ouvrez une console sous windows et tapez

ipconfig /all

Récupérez le code de la forme UU-VV-WW-XX-YY-ZZ et entrez-le dans un logiciel dédié. Techniquement il suffit d'envoyer un packet réseau à tout le monde contenant 3 fois ce code. Au niveau des logiciels il en existe sous Android et sur PC, mais rien ne vous empêche de le coder vous-même.

IP fixe

Le serveur est le point fixe de votre réseau : il ne doit pas bouger ! Mais votre box en décidera autrement en lui attribuant une adresse automatique amenée à changer et un nom générique. Vous devez prendre les devants.

En parlant du nom, il est à changer dans les propriétés du système. Choisissez un nom simple et dans l'esprit de nomenclature que vous aurez choisi (noms d'îles, de rois de France, de vins,...)

Pour ce qui est de la configuration réseau de votre serveur en tant que telle je vous propose une configuration basée sur un réseau de moins de 254 appareils :

  • adresse IP : en général c'est 192.168.1.X avec X entre 2 et 254. Regardez l'IP de votre box pour ne pas faire de conflits (en général c'est 192.168.1.1).
  • masque de sous-réseau : laissez 255.255.255.0 si vous avez peu d'appareils sinon voici un tutoriel plus détaillé.
  • passerelle : mettez l'adresse IP de votre box.
  • DNS primaire : aussi bizarre que ça puisse paraître, remettez l'adresse IP de la box, elle mettra à jour les vrais DNS sur votre réseau.

Répertoires partagés

Les Linuxiens peuvent regarder ce que la solution SMB leur propose, et pour Windows c'est aussi simple qu'un clic droit !

Il faut cependant penser à la sécurité et munir de droits ces répertoires :

  • créez autant d'utilisateurs standard qu'il y aura de personnes connectées.
  • créez bien sûr un compte dédié à l'administration.
  • créez un compte visiteur basique, j'y viens.

Faites un clic droit > propriétés sur un dossier pour faire un partage avancé et donnez les droits qu'il faut en cliquant sur "Autorisations". En règle générale on donne les droits de modification à "Tout le monde" juste pour le partage, puis on donne des droits plus fins (exécution, création,...) en agissant directement sur la sécurité du répertoire sur le disque en y faisant un clic droit > propriétés, onglet sécurité.

Votre répertoire partagé apparaîtra si vous tapez le nom DNS dans un explorateur. Si toutefois vous ne voulez pas qu'il y apparaisse, mettez un "$" à la fin du nom du partage.

Les répertoires que j'ai choisi de partager sont :

  • un répertoire personnel pour chaque utilisateur.
  • un répertoire avec des droits d'écriture pour tout le monde, pour transformer votre serveur en piratebox.
  • un répertoire partagé interne accessible uniquement aux utilisateurs.
  • un répertoire pour le multimédia, en plus du DLNA.
  • un répertoire pour les données de la caméra.

Musique et partage

Le DNLA

Vous avez sûrement vu le logo sur certains téléviseurs récents, il s'agit d'un protocole dédié au partage de fichiers multimédia.

Son installation est simple : installez par exemple PS3Server et dites-lui où scruter vos fichiers. Sachez cependant que le DNLA ne fonctionne pas à partir de Windows 7, il vous faudra passer par les répertoires partagés décrits ci-dessus.

Les playlists M3U

Quand vous recevez du monde ou juste pour vous, il peut être intéressant de regrouper vos morceaux favoris dans une playlist. Pour cela rien de plus simple :

  • montez le dossier partagé de vos morceaux de musique.
  • assurez-vous que vos fichiers multimédias soient au même niveau d'arborescence.
  • à la racine ce niveau, créez un répertoire "playlists" et partagez-le.
  • ouvrez votre lecteur musical préféré (VLC, Winamp,...) et faites-y glisser vos morceaux dans la liste de lecture.
  • enregistrez votre liste au format M3U dans le répertoire créé à l'occasion

Et maintenant ouvrez le fichier que vous venez de créer avec le bloc-notes ou mieux Notepad++ : vous pouvez voir qu'il s'agit ni plus ni moins que d'une liste de fichiers et de leurs chemins. Malheureusement ces chemins sont ceux de votre ordinateur. Remplacez ce chemin par "../". Donc si vous avez suivi mon exemple d'arborescence ci-dessus et que votre musique se trouve sur :

D:/unrepertoire/unautre/monalbum/monMP3.mp3

Il faudra remplacer par :

../monalbum/monMP3.mp3

FTP

Si vous avez besoin d'une façon ou d'une autre accéder à vos fichiers via FTP (pour la caméra par exemple), il vous faut installer un serveur FTP sur votre machine. Je vous propose FileZilla Server qui s'installe facilement.

Après l'installation commencez par construire une arborescence de répertoires afin de pouvoir créer les répertoires de démarrage, puis créez des utilisateurs ainsi que leurs groupes associés au bon répertoire.

Ensuite ?

Vous pouvez vous arrêter là si vous le voulez, vous avez un bon petit serveur de stockage de fichiers et de musique disponible sur votre réseau local. Mais que diriez-vous si vous pouviez le télécommander depuis le téléphone et lui faire faire des tâches rigolotes ?

]]>
https://blog.goufastyle.org/article/2015/03/08/domotique-minimale-partie-2-construire-et-parametrer-le-serveur Sun, 08 Mar 2015 13:47:45 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 1 : Préparer la maison]]> https://blog.goufastyle.org/article/domotique-minimale-partie-1-preparer-la-maison Vous allez aménager dans un appartement, une maison neuve ou déjà construite. Avant de poser les meubles, il est intéressant de consulter les plans et de prévoir quelques câblages.

La norme RJ45

Depuis 2008, les nouveaux logements sont tenus d'avoir un connecteur RJ45 à la place du fameux connecteur T. Visuellement c'est le cas, mais en réalité il n'y a que deux fils derrière la prise juste pour relier le signal téléphonique.

Pour bénéficier pleinement de ces prises, remplacez-les par des vrais câbles RJ45. Ils ont différentes appellations :

  • catégorie 5e/6/7 UTP : c'est une norme de vitesse. En dessous de 5e on ne peut aller que jusqu'à 100Mbs en débit réseau.
  • grade 2/3 : c'est une norme qui regroupe les câbles en fonction de leur capacité. Le grade 2 permet de faire du réseau très facilement tandis que le 3 permet aussi de faire transiter du signal télé, téléphone ou satellite en même temps

A vous de voir en fonction de l'utilisation que vous allez en faire que ce soit juste pour faire un peu d'informatique ou pour faire du très haut débit.

WIFI : oui ou non ?

Le moins possible

Regroupez tous les appareils que vous avez et posez-vous la question : ont-ils absolument besoin du WIFI ?

  • le téléphone ? La 4G est plus rapide que les débits dans les maisons.
  • la tablette ? Si elle est assez grosse elle aura un port RJ45 sinon un adaptateur USB s'en occupera.
  • l'ordinateur fixe ? Il est fixe la question ne se pose même pas !
  • l'ordinateur portable ? Cf la tablette ci-dessus.
  • une lampe WIFI ? Alors là oui.

En gros il y a très peu de raisons d'utiliser le WIFI chez soi :

  • atteindre les autres périphériques du réseau domestique avec un téléphone par exemple
  • mobilité ponctuelle, pensez toutefois au CPL...
  • domotique

Sachez toutefois qu'avec les box d'aujourd'hui on peut planifier des plages d'activation et ainsi éviter d'arroser toute la maison 24H/24 sur des appareils qui n'en dépendent pas forcément. Enfin n'oubliez pas le CPL !

... avec une sécurité minimale

Le WIFI est la cible principale de ceux qui veulent se protéger d'Hadopi en se faisant passer pour quelqu'un d'autre. La clef ne sert à rien car il y a des distributions Linux dédiées à l'infiltration sur des réseaux WIFI peu protégés. C'est pourquoi il vaut mieux bien se protéger en le désactivant.

Toutefois si vous étiez amené(e) à le mettre en place, vous n'empêcherez pas un hacker d'y accéder mais vous pouvez au moins le dissuader :

  • cachez le SSID de votre box pour ne pas être visible au premier abord.
  • changez le nom du SSID pour ne pas identifier la marque de la box en cas de faille découverte.
  • désactivez le WPS, c'est une sécurité déjà contournée.
  • mettez la clef WPA2 la plus longue possible. Pour la faire passer à quelqu'un notez-la dans un fichier texte sur une clef USB ou imprimez un QRCode.

Pour ma part avec le réseau câblé chez moi je n'ai absolument pas besoin du WIFI.

Brassage réseau


Vérifiez le plan de votre maison avant de poser les étiquettes...

Le promoteur immobilier de ma maison m'a laissé les câbles à nu derrière un placard en me laissant le soin de faire le brassage moi-même. Et pas besoin d'acheter le super bloc à 200 euros qui répartit tous les signaux partout, un simple switch suffit avec la box placée à côté !

Aujourd'hui, le téléphone part uniquement de la box et les constructeurs ne l'ont toujours pas compris en mettant un pauvre fil sur toutes les prises de la maison. Si l'on choisit une solution de type DECT pour le téléphone, il suffira juste de choisir la prise qui accueillera la base dans la maison et bien la noter. Ensuite le câblage vient tout seul :

  • repérer le câble télécom/adsl et le brancher sur la box à l'emplacement adéquat.
  • brancher une sortie RJ45 vers un port du switch.
  • relier la sortie téléphone de la box à la prise voulue, faire de même avec le câble pour le décodeur TV.
  • relier les prises murales restantes à tous les port disponibles du switch.
  • s'il reste des prises murales, choisir lesquelles mettre sur les ports restants de la box, en effet ils risquent d'être moins rapides.

Fini ! Votre réseau câblaire fonctionne !

Câbler la caméra

L'utilisation de la caméra sera détaillée dans un autre article mais pour peu qu'elle soit murale il faudra faire quelques trous afin de faire passer le câble d'alimentation et éventuellement le câble réseau, ils seront hors de portée d'une paire de ciseaux...

Ensuite ?

Eh bien vous n'avez plus besoin de moi, vous avez juste à brancher tout votre équipement voire à démultiplier certains endroits avec un switch... ah si, il serait intéressant de garder une petite place cachée pour un serveur que nous allons paramétrer ensemble dans le prochain chapitre !

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/07/domotique-minimale-partie-1-preparer-la-maison Sat, 07 Mar 2015 17:53:38 +0100
<![CDATA[[Domotique] Domotique minimale - Partie 0 : Introduction]]> https://blog.goufastyle.org/article/domotique-minimale-partie-0-introduction On n'échappe pas à la domotique. Avec tous les appareils connectés aujourd'hui la domotique commence à se répandre un peu partout sur Internet et chez les particuliers ferrus de nouvelles technologies. N'étant pas bricoleur je n'y pensais pas outre mesure mais j'ai réussi quand même à mettre en place à mon domicile un semblant d'automatisation avec un serveur et une caméra IP. A travers différents articles je vais vous présenter petit à petit le moyen de faire un système domotique relativement simpliste sans percer de trous dans les murs et avec des appareils tout à fait standards.

Introduction

Depuis le film Mon oncle de Tati, on aime bien s'imaginer contrôler toute sa maison de A à Z : luminaire, portail, télé,... Et aujourd'hui c'est possible grâce au WIFI et aux tablettes. Taper du doigt juste pour augmenter la température du chauffage est assez marrant mais hélas ça fait un peu frimeur et l'on n'échappe pas à l'effet démo quand les lampes s'allument n'importe comment.

Il faut donc bien penser à comment installer la domotique chez soi et surtout comment en garder le contrôle, que faut-il automatiser, que faut-il laisser en l'état, comment le commander,...

Je vais donc vous présenter mon installation personnelle, et je remercie au passage Yvonnick pour ses précieux conseils sur le matériel et la configuration des éléments. Vous pouvez aussi flâner sur Google pour trouver des bricolages intéressants adaptés à vos besoins !

Ma configuration


Mon installation

Une config plutôt simple pour mes exemples et bien sûr extensible :

  • la box de mon opérateur qui dispose de 4 ports RJ45 en gigabit et d'une sortie téléphone
  • un switch gigabit standard
  • un ordinateur de récupération ATX moyen qui fera office de serveur bureautique et domotique
  • une caméra IP orientable et filaire
  • une tablette Android Logicom à 50 euros qui fera office de pupitre de contrôle
  • une maison entièrement câblée en RJ45 catégorie 6
  • des capteurs d'ouverture de porte Z-Wave et un dongle USB.

Plan

Voici les points que je vais aborder dans la suite des différents articles :

Disclaimer

  • Nous sommes en 2015 à l'heure où j'écris cet article, par conséquent il se peut qu'à l'avenir certains éléments soient obsolètes.
  • Oui je n'ai pas testé tout ce qui existe en domotique, c'est à vous de rechercher les compléments et bien sûr vous pouvez partager vos trouvailles.
  • Ce que je vous propose n'est pas la solution ultime pour votre besoin domotique, à vous d'adapter ce que vous voulez en fonction de vos capacités et moyens.
  • Je ne suis pas responsable des pannes, mauvaises configurations et intrusions dans votre domicile. Testez ce que vous faîtes pour vous assurer que ça marche !
  • Si quelque chose n'est pas assez clair dans les articles n'hésitez pas à laisser un commentaire pour que j'approfondisse le sujet !

Bonne lecture !

+ Sources des images

]]>
https://blog.goufastyle.org/article/2015/03/07/domotique-minimale-partie-0-introduction Sat, 07 Mar 2015 17:50:32 +0100