Jeedom - Projet domotique pour la famille

Jeedom – Projet domotique pour la famille

Bonjour bonjour,

Ces derniers mois, dans ma famille, on m’a posé beaucoup de question sur la domotique… et je suis fier, à mon tour d’initier de nouveaux adeptes 🙂

Cet article traitera du projet en lui même et des différentes étapes.

Le besoin

  1. Pouvoir contrôler la VMC pour éviter les perditions de chaleurs
  2. Contrôler la porte du garage depuis un smartphone et donner des accès (actuellement nombre de télécommandes limités)
  3. Surveiller et étudier l’environnement d’une serre (température en priorité)
    1. Ce dernier point ouvre la porte d’un autre projet: celui de contrôler l’arrosage des plantes de la serre et de l’extérieur (deux canaux différents)
  4. [AJOUT DERNIERE MINUTE] Une fonctionnalité pour programmer l’arrosage du potager (voui ^^)

Le matériel (avec les prix à titre d’exemple):

  1. Une raspberry pi 2 (39,08€)
  2. Une alimentation  5V/1.2A (9,99€)
  3. Un contrôleur z-wave SIGMA DESIGN (39,90€)
  4. Un module Fibaro FGMS-001 (47,58€)
  5. Deux mini prise Everspring (47,80€*2)
  6. Un FGS 212 (55,05€) <<<<< mieux adapté pour le contrôle de la porte du garage.
  7. Une carte SD classe 10 à 6 € et des brouettes (je ne la compte pas, je suis aller la chercher chez BIIIIIIIIIIIIIIIP (:p) pour ne pas perdre de temps)

Et voila tout le beau monde sauf le FGS (il boude):

WP_20160507_001

Bon, j’ai eu des soucis avec l’alimentation commandée (je viens de le signaler au vendeur, je n’attend rien en retour car tout le reste est 100% opérationnel).  J’ai donc récupéré une vielle alimentation qui me restais.

Passe maintenant à l’installation de Raspbian (l’image Jeedom étant buggée actuellement, je dois le faire en mode manuel).

Ça a été fait et refait, je ne détaillerai pas beaucoup ces étapes:

Installation de raspbian

Perso, j’utilise NOOBS c’est pas le plus adapté mais c’est clairement la plus simple et la plus rapide. Pour l’utilisation qui va être faites ça suffira.

  1. Récupérer l’image Noobs, l’extraire
  2. Formater votre carte SD (j’utilise SDFormatter V4.0) pas d’option particulière, elle est neuve c’est une mesure de précaution
  3. Copier coller les fichiers de NOOBS dans la carte SD
  4. Faire les branchements (clavier, souris, écran, câble ethernet et l’alimentation en dernier)
  5. Tout démarre proprement, il y a une fenêtre, choisir Français, Fr cocher raspbian et install
  6. On laisse tourner une dizaine de minutes on clique sur OK, ça redémarre et pi voila 🙂

Bon à partir de la c’est du « live » je manip’ en même temps que j’écris… y a eu pas mal de changements.

Ça a changé depuis la dernière fois après le premier redémarrage on arrive sur le bureau de raspbian, il me semblait qu’on pouvait configurer plein de chose entre temps… mais bon c’est pas grave.

J’ouvre un terminal, je passe en mode super user:


sudo su

Puis lance la commande de configuration (attention le clavier est en qwzerty donc il faut taper rqspi)config).


raspi-config
  1. Expand filesystem si on passe par NOOBS, pas besoin de le faire
  2. Boot option, on va choisir de botter en ligne de commande avec authentification (je vais surement me donner un accès à distance pour troubleshooter en cas de soucis)
  3. Internationalisation option, le qwerty c’est rigolo deux minutes (surtout pour les mots de passe):
    1. Change locale on choisi fr_FR en utf 8 et rebelote à l’écran suivant, ça install le bouzin
    2. Change timezone (ba ouai on jouera avec l’heure) Europe > Paris
    3. Change keyboard layout je prend toujours PC générique, 105 touches (à adapter si besoin) > Français > Disposition par défaut du clavier (à adapter si besoin) > Pas de touche > Oui
  4. Si ça vous faire rigole rvous pouvez toujours ajouter votre raspberry à la carte, perso je l’ai fait pour la première
  5. Advanced options
    1. SSH > Enable

Voila pour l’installation de raspbian, un petit ifconfig pour connaitre son IP et ssh dessus. (user pi mdp raspberry).

La on va refaire raspi-config pour changer le mot de passe (souviens toi, je vais avoir accès à distance, faudrait pas qu’un guguss aille dessus xD) donc raspi-config > Change user password > on tape le mot de passe (tu peux y aller c’est de l’azerty et normalement ça prend aussi le pavé numérique).

Cette fois c’est VRAIMENT fini.

Installation de Jeedom

On passe à Jeedom, et la ça va se corser je ne l’ai jamais fait en manuel, il y avait un script d’installation avant… plus maintenant.

Comme d’habitude on met à jour avec apt-get update et apt-get upgrade (apt-get update && apt-get upgrade -y) vous pouvez aller prendre un cawa (ce que je vais faire). J’en profite pour lancer un record vidéo j’ai jamais fais ça pour poneynumerique, c’est peut être l’occasion.

Une fois que c’est fini, on va installer le socle web il y a le choix entre apache et nginx je préfère nginx personnellement alors:

Donc, installation de mysql client et server:


apt-get install mysql-client mysql-server -y

On retient bien le mot de passe du root de mysql !!!

Installation de nginx, serveur ntp (heure), ca-certificates pour pouvoir télécharger en sécurisé


apt-get install nginx-common nginx-full ca-certificates -y

Et on installe php5


apt-get install php5-cli php5-common php5-curl php5-fpm php5-json php5-mysql php5-gd -y

Bon, voila 🙂

Configuration de l’environnement php:

mkdir -p /var/www/html/log
sed -i 's/max_execution_time = 30/max_execution_time = 600/g' /etc/php5/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1G/g' /etc/php5/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 1G/g' /etc/php5/fpm/php.ini
sed -i 's/expose_php = On/expose_php = Off/g' /etc/php5/fpm/php.ini
sed -i 's/pm.max_children = 5/pm.max_children = 20/g' /etc/php5/fpm/pool.d/www.conf
rm /etc/nginx/sites-available/default
rm /etc/nginx/sites-enabled/default
wget https://raw.githubusercontent.com/jeedom/core/stable/install/nginx_default -O /etc/nginx/sites-available/default
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
systemctl restart php5-fpm
systemctl restart nginx

Mise à jour du cron (actions périodique)


echo "* * * * * su --shell=/bin/bash - www-data -c '/usr/bin/php /var/www/html/core/php/jeeCron.php' >> /dev/null" | crontab -

On donne les droits root à Jeedom (important, j’oublie tout le temps):


echo "www-data ALL=(ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo) 

Et on fini en ajoutant les fichiers de l’environnement web de jeedom:

mkdir -p /var/www/html

rm -rf /root/core-*

wget https://github.com/jeedom/core/archive/stable.zip -O /tmp/jeedom.zip

unzip -q /tmp/jeedom.zip -d /root/

cp -R /root/core-*/* /var/www/html/

cp -R /root/core-*/.htaccess /var/www/html/ 

Etape ultra finale: on va sur l’ip de raspberry (on a fait ifconfig un peu plus tôt :p) et on complète avec le mot de passe de mysql (en mode root, oui). chrome_2016-05-18_14-14-27 Voila, c’est fini pour nous, le système va tout faire 😀 Login admin, mot de passe admin. A partir de là c’est pareil.

Le ventre

Nous sommes sur quelque chose de très simple:

  • 5 Objets (Maison, VMC (ou comble), Garage, Serre et Potager)
  • 2 scénarios (un pour la porte du garage [très simple], un pour le potager [plus complexe et pas encore élaboré])
  • 5 plugins (DYNDNS, Monitoring, Virtuel, Météo et, bien évidemment ZWAVE)

Le dashboard

2016-06-15_22-17-47_chrome

Maison

Contient un objet du plugin monitoring pour savoir si la raspberry est en bonne santé héhé

Et un objet Météo qui bug a ce moment la, je ne sais pas pourquoi… j’investiguerai plus tard. [EDIT] En fait comme le système à changé de localisation, il a fallu que je désactive et réactive le plugin pour qu’il se mette à jour (surement un soucis avec l’api d’openweather map).

VMC (ou Comble)

Contient un objet Prise pour l’activer ou non… Nous ne nous sommes pas encore décidé sur son fonctionnement définitif (programmé, peut être présence avec une tempo de fin ?).

Garage

Contient un objet Script avec pour un bouton virtuel. Derrière se cache un scénario « Garage » qui est provoqué par le bouton… en gros si le bouton est appuyé, basculer du mode « OFF » du module domotique vers le mode « ON » attendre une seconde puis rebasculer en « OFF » (initialement l’interrupteur permet juste de générer une impulsion).

Attention, dans ce cas ci j’ai besoin d’un contact sec. C’est à dire, un appui = <fermer le circuit> puis <ouvrir le circuit> avec un temps entre les deux d’environ une demie seconde.

Serre

Contient l’objet Motion Sensor de fibaro. Il sert surtout à surveiller la température et la luminosité extérieur. La luminosité ne sert pas à grand chose pour le moment mais on pourra imaginer le coupler avec l’arrosage du potager (doit se faire de nuit).

Potager

Ne contient rien pour le moment. Je réfléchis encore à une manière simple (et sans plugin payant) de faire une programmation. Je vais peut être me tourner vers Skalen pour ça, je crois qu’il s’est fait un petit truc à lui.