Skip to content
/ sam2 Public

SAM2 est un projet de domotique, il pilote les objets connectés de mon logement. SAM2 is a domotic project for my home (lights, shutters).

License

Notifications You must be signed in to change notification settings

matonf/sam2

Repository files navigation

sam

SAM pour Système Autonome de Maison est un projet d'amusement open-source combinant un peu de code, un peu d'électronique afin d'automatiser des équipements privés : lampes, volets, etc. branchés sur des modules à ondes (type Chacon DIO). Ce mini-projet de domotique use du PHP, du Javascript, un peu de shell...

Capture d'écran de l'interface sur un téléphone portable :

accueil

Pré-requis

Il vous faut un :

  • Raspberry pi, même une version très ancienne ou la moins puissante comme le Zero. Mon système configuré en serveur, n'utilise que 90 Mo de RAM tout compris (Debian, serveur web, autres...) et 0% du CPU de mon Raspberry Pi 0.
  • serveur Web (Apache/Nginx/autre), j'utilise Nginx pour sa légèreté
  • PHP 5 et supérieur (on est à la version 7 mais sur ma Debien Jessie j'en suis à la 5)
  • émetteur radio 433Mhz connecté sur l'ordinateur
  • modules radio récepteurs DIO chacon pour piloter vos équipements (volets, lampes, etc.) qu'on peut acheter sur Internet ou en boutiques de bricolage comme Leroy Merluche
  • SAM installé et configuré dans un répertoire de votre serveur web (/var/www/html par exemple)
  • récepteur radio 433Mhz connecté sur l'ordinateur + capteur crépusculaire DIO (fonction prototypée, non opérationnelle à ce jour)
  • un smartphone et PushBullet installé (optionnel) ou un abonnement chez Free pour recevoir gratuitement des notifications de l'application (ex : "SAM va ouvrir les volets du salon")

Installation

Déposer le contenud du dossier sam dans votre /var/www/html Il vous faut préalablement installer et configurer nginx of course.

Donner les droits d'éxécution sur le binaire radioEmission (sudo chown root:www-data /var/www/html/radioEmission puis un sudo chmod 4777 radioEmission) sinon l'interface web ne fonctionnera pas !

Ajouter dans la crontab le lancement chaque nuit à 5h00 du script cron.php pour un utilisateur du système (www-data).

Exemple de ligne :
0 5 * * * php /var/www/html/cron.php #exécution nocturne de sam :)

Pour sécuriser votre site, éditez le fichier id.php et mettez-y les couples utilisateur/mot de passe de votre choix. Le fichier en contient en exemple. Vous pouvez aussi définir votre couple clef publique/privée Google reCaptcha pour activer automatiquement cette technologie au login. Il faut mettre la constante SECURISER à true dans constantes.php pour activer la sécurisation (fait par défaut). Dans ce cas toutes les pages web demanderont une authentification, mais pour éviter de se loguer chaque fois, un cookie valable un an est positionné sur le client. Vous pouvez changer la durée de rétention du cookie dans constantes.php (constante COOKIE_EXPIRE)

Sécurisation : définissez votre couple clef publique/privée Google pour reCaptcha dans id.php et ainsi le login utilisera cette fonction anti robot par Google. Si les constantes sont à null, la sécurisation reCaptcha est ignorée.

Personnalisation : utilisez votre smartphone et installez PushBullet pour recevoir les notifications de SAM ! Créez depuis leur site votre clef privée ("credentials"). Ajoutez votre clef dans le script pushbullet.sh à la ligne 3 et vérifiez que la variable NOTIF_PORTABLE est à true dans constantes.php

Vous pouvez avoir une notification SMS par Free, si vous êtes chez eux aussi.

Si vous voulez pouvoir choisir les demi-heures dans les heures de programmation, dans constantes.php mettez à true la constante AFFICHER30

Si vous voulez pouvoir recevoir les ondes radio d'un capteur DIO, dans constantes.php mettez à true la constante AFFICHER_CAPTEUR <- pas encore opérationnel,ça m'est réservé, je dois finir le code.

Utilisation

Connexion :
L'interface web se trouvera sur http://ip-de-votre-serveur (ou autre selon la conf du serveur web). Vous vous connectez avec votre utilisateur (à régler dans id.php avec un éditeur de texte) ou sans vous connecter (SECURISER vaut false par défaut). En cas de connexion sécurisée, un cookie est déposé pour un an sur votre client pour éviter de vous reloguer à chaque fois.

Page d'accueil :
La première page permet de :

  • allumer/éteindre les lampes définies
  • fermer/ouvrir les volets définis

Page configuration :

configuration

Définissez autant de règles que vous voulez ! Entrez un nom de règle, puis les codes des modules (volets, lampes, etc), les périodes d'activation de la programmation (semaine, week-end, ou encore semaine et week-end).

Un fichier de votre conf est créé par le programme (droits d'écriture nécessaires dans le répertoire sam).
Le lever et le coucher du soleil sont calculés selon la ville choisie dans la liste déroulante. Sélectionnez la plus proche de vous, j'ai retenu les nouvelles capitales de région (Bordeaux, Rouen, Lyon, etc). Par défaut c'est Rouen. Si vous déménagez loin, il est logique de retourner choisir la nouvellle ville la plus proche.

Nouveauté : la géolocalisation. Déroulez la liste des villes, sélectionnez "Géolocalisée" puis cliquez sur le bouton "Géolocalise-moi". Acceptez la demande de géolocalisation : un message vous indique que vous avez été trouvé. Enrgistrez: vos coordonnées sont stockées, vous n'aurez plus jamais besoin de vous géolocaliser sauf si vous déménagez bin sûr.

Page Infos :

Donne des détails sur la météo locale et la configuration de SAM (notez le numéro d'émetteur sur un papier ou faites une capture d'écran, ça vous resservira si vous changez de carte Raspberry pi).

Liste de courses

Pour ce projet, il faut :

L'ensemble coûtera entre 15 et 30 euros selon votre capacité à recycler boitier (en Lego ?), carte mémoire, chargeur et petits équipements électriques.

Et pour tous vos volets :

Ressources et inspirations

Radio et pi :

Serveur web Nginx :

About

SAM2 est un projet de domotique, il pilote les objets connectés de mon logement. SAM2 is a domotic project for my home (lights, shutters).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published