Web-Enabled maison Thermostat (et domotique Hub) (5 / 10 étapes)

Étape 5: Installer les Tables de base de données, les serveurs de Python et pages Web

Si vous décidez de télécharger et d’installer le logiciel pour ce thermostat, et que vous travaillez sur le Raspberry Pi à distance en utilisant PuTTy, vous, comme moi, pouvez se demander quelle est la meilleure façon de déplacer les fichiers en arrière de votre ordinateur vers votre Pi de framboise. J’ai trouvé FileZilla comme un programme très facile à utiliser.

Installation de la base de données

Comme mentionné au début, la base de données pourrait probablement être facilement retiré de ce projet et remplacé avec quelques fichiers texte, si je n’avais rien en cours d’exécution sur ce système que les thermostats que je décris ici. Mais, j’ai d’autres choses sur le système qui a besoin de la base de données, donc je l’ai inclus dans mon système...

Le dépôt GitHub inclut un fichier appelé thermostat_db.sql. Ce fichier contient la structure des tables MySQL nécessaires pour le thermostat. Pour créer ces tables dans une base de données, vous connecter à MySQL en tant que « root » et créer une nouvelle base de données à l’aide de la commande "CREATE DATABASE [database_name]; » où [database_name] est nom que vous souhaitez utiliser pour votre base de données. (exemple: « CREATE DATABASE tstat_database; ») Ensuite, pour importer la structure de la table dans la base de données, MySQL de sortir, allez dans le répertoire où vous avez enregistré le fichier thermostat_db.sql et entrez "mysql -u root -p [database_name] < thermostat_db.sql" et entrez le mot de passe pour l’utilisateur root lorsque vous y êtes invité. (exemple: "mysql -u root -p tstat_database < thermostat_db.sql")

Maintenant, si vous ouvrez une session dans mysql en utilisant la commande « mysql -u root -p », vous pouvez entrer la commande "utilisation [database_name];" pour sélectionner votre nouvelle base de données, puis entrez "show tables;" pour voir les quatre tables qui y sont énumérés : thermostats, thermostat_programs, thermostat_status et les utilisateurs.

La table « thermostat » contient un enregistrement pour chaque thermostat que vous avez inclus dans votre système, et chaque enregistrement contient trois champs :

  • user_id – il suffit de choisir un nom d’utilisateur à utiliser pour vous-même ; ce sera la même pour tous les thermostats. (exemple : 1234)
  • noeud – chaque thermostat il auront à posséder la valeur unique « nœud » ; Ce doit être un nombre compris entre 1 et 255. Il est utilisé par le logiciel de communication pour identifier chaque thermostat. (exemple : 122)
  • nom – chaque thermostat aura son propre nom, et c’est comment le thermostat s’afficheront sur les pages Web. Ce nom peut comporter jusqu'à 45 caractères. (exemple : chambre à coucher à l’étage)

Une fois que vous avez choisi ces valeurs, vous devez insérer un enregistrement dans la base de données pour chaque thermostat avec la commande "insérer dans les thermostats valeurs ([user_id], [nœud], [nom]);" (exemple: "insérer dans les thermostats valeurs (1234, 122, « A l’étage chambre »);").

Maintenant, juste pour s’assurer que tout se passe comme prévu, entrez "sélectionnez * de thermostats;" et vous devriez voir les enregistrements que vous venez d’ajouter.

Ensuite, vous devrez insérer un nom d’utilisateur et mot de passe dans la table « utilisateurs ». La première chose que vous devez faire est de choisir un nom d’utilisateur (par exemple "votrenom"), un mot de passe (par exemple ' yourpassword') et deux sels, qui doivent être des chaînes aléatoires des personnages, peut-être quatre à six caractères chacune (par exemple salt1 = ' & 7$ #' et de sel, 2 = ' (JO puis, vous voudrez insérer un enregistrement dans la table d’utilisateurs à l’aide de la commande "INSERT INTO utilisateurs valeurs ([user_id] md5 ('[salt1passwordsalt2]'), ' [username]'); " (exemple: "insérer dans utilisateurs valeurs (1234, md5 ('& 7$ #yourpassword(oJ 'yourname');").

Vous pouvez ensuite essayer "sélectionner * auprès des utilisateurs;" de voir cet enregistrement dans la table. Notez que le mot de passe a été codé à l’aide de la fonction md5() (ce qui n’est peut-être pas la meilleure option là-bas en ce moment).

Enfin, insérer un enregistrement dans la table thermostat_status pour chaque thermostat montrant que le thermostat est initialement désactivées à l’aide de la commande "INSERT INTO thermostat_status VALUES ([user_id], [nœud], now(), 0, 1, 0, NULL, NULL); » (exemple: "INSERT INTO thermostat_status VALUES (1234, 122, now(), 0, 1, 0, NULL, NULL);"). La page web a besoin de cet enregistrement initial pour chaque thermostat afin de travailler au départ.

Les autres tableaux se remplira plus tard lorsque les pages web sont en cours d’exécution.

Installation des serveurs de Python

Le dépôt GitHub devrait comprendre trois fichiers nommés TstatMaster.py, TstatLogger.py et Thermostat.py. Allez-y et copiez-les dans un répertoire sur le Raspberry Pi. Si vous n’avez pas déjà Python installé sur votre facture pro forma de framboise, alors vous devriez l’installer maintenant (beaucoup d’endroits sur le web qui peuvent vous guider à travers ce. J’utilise Python 2.7.3).

Si vous êtes connecté sur la Pi de la framboise à distance depuis un autre ordinateur à l’aide de mastic, et si vous avez installé Xming sur cet ordinateur, vous pouvez lancer Xming et tapez « idle » dans une fenêtre de PuTTy pour exécuter l’éditeur d’idle sur votre facture pro forma de framboise et de voir sur votre ordinateur. Il s’agit d’un excellent outil pour visualiser et éditer le code Python. Sinon, il y a plusieurs autres éditeurs de texte, que vous pouvez utiliser sous Linux comme vim ou nano.

Thermostat.py est un module qui contient le code d’une classe de Thermostat. TstatMaster.py contrôle les thermostats et TstatLogger.py reçoit des messages du journal des thermostats et les enregistre dans un fichier journal. Ces derniers, deux nécessitera quelques mises à jour marqués au début de chaque fichier : ces champs sont clairement marqués.

Vous devrez également créer un répertoire/home/pi/Tstat_Data/sur votre facture pro forma de framboise pour les fichiers journaux à être écrits, ou encore de modifier les fichiers TstatMaster.py et TstatLogger.py afin que logFilePrefix fait référence à un autre répertoire.

Pour exécuter les serveurs, accédez au répertoire dans lequel les fichiers du serveur ont été sauvés, tapez « python TstatMaster.py » et « python TstatLogger.py » et assurez-vous qu’ils démarrent correctement (pas d’erreur). Mais, il y a deux problèmes avec cela.

  1. Si vous faites cela à travers un programme de terminal comme mastic, les programmes seront arrêtera dès que vous terminez la session. Et, vous ne serez pas en mesure de faire autre chose sur la Pi de la framboise tandis que ces serveurs sont en cours d’exécution. Pour ce faire, vous voudrez exécuter ces écrans. Pour exécuter les programmes dans un écran, vous devrez commencer un écran tout d’abord en utilisant la commande « écran -S », par exemple: « écran -S TstatMaster ». Cette fenêtre va maintenant persister même lorsque vous fermez la fenêtre PuTTy. Il y a beaucoup de documentation sur la commande d’écran disponibles, y compris les options pour basculer entre les écrans, liste actif et ouvrir un écran existant.
  2. Même si vous exécutez des serveurs dans les écrans, si vous perdez la puissance à votre Pi framboise et il redémarre, vos serveurs ne fonctionnent. Pour résoudre ce problème, vous devrez dire à la Pi de la framboise pour créer des écrans et dirigent ces serveurs n’importe quel moment qu'il redémarre.

Pour ce faire, vous pouvez ajouter les lignes suivantes au fichier rc.local (plus d’infos ici) :

écran -dm -S TstatLogger python //home/pi/ www/LCLogger.py

dormir à 2 s

écran -dm -S TstatMaster python //home/pi/ www/LCMaster.py

dormir 3 s

Installer les Pages Web

Lorsque vous avez installé lighttpd, il devrait ont mis en place un dossier www pour vous, probablement / var/www /. Le dépôt GitHub devrait également inclure des fichiers PHP de la page web, et vous devriez mettre ces derniers dans les répertoires suivants dans/var/www / (ou autre répertoire web pour laquelle lighttpd est à la recherche). Créer ces sous-répertoires si nécessaire.

  • /public/ – tstat_index.php, tstat_login.php, tstat_logout.php, tstat_ProgTstat.php, tstat_SetThermostat.php et tstat_Status.php.
  • / public/comprend / - tstat_MainHeader.php
  • /Private/ - tstat_ConnDb.php

Les modifications suivantes devront être apportées à ces fichiers :

tstat_ConnDb.php-modifie les valeurs pour DB_USER, DB_PASSWORD et DB_NAME à ceux qui vous utilisez pour votre nom de connexion et de base de données MySQL.

tstat_login.php – changer les valeurs $salt1 et $salt2 pour les chaînes que vous avez utilisé lorsque vous enregistrez votre mot de passe de Thermostat dans la base de données MySQL.

tstat_ProgTstat.php-$service_port d’être le numéro du port sur lequel s’exécute le serveur de contrôle de changement. Changement $CommPwd le mot de passe que vous avez choisi d’utiliser pour les communications de RFX. Changer le fuseau horaire par défaut à votre fuseau horaire préféré.

tstat_SetTstat.php-$service_port d’être le numéro du port sur lequel s’exécute le serveur de contrôle de changement. Changement $CommPwd le mot de passe que vous avez choisi d’utiliser pour les communications de RFX. Changer le fuseau horaire par défaut à votre fuseau horaire préféré.

tstat_Status.php-$service_port d’être le numéro du port sur lequel s’exécute le serveur de contrôle de changement. Changement $CommPwd le mot de passe que vous avez choisi d’utiliser pour les communications de RFX. Changer le fuseau horaire par défaut à votre fuseau horaire préféré. Changement $thermostats d’être une liste des nœuds que vous utilisez pour vos thermostats.

Maintenant, testez-le-dans votre navigateur, tapez l’adresse IP pour votre Pi framboise suivie de /tstat_index.php (exemple 192.168.1.75/tstat_index.php). Vous devriez voir une page de connexion demandant un nom d’utilisateur et mot de passe. Entrez le nom d’utilisateur et mot de passe que vous avez enregistré dans la table users ci-dessus (sans sels autour du mot de passe, juste le mot de passe). Qui vous amène à une page de bienvenue avec 4 liens sur le dessus : Set Thermostat où vous serez en mesure de régler votre thermostat, situation actuelle, où vous pouvez voir l’état actuel de chaque thermostat, programmation où vous pouvez programmer les horaires pour vos thermostats et fermer la session (j’espère que celui-là est explicite). Bien sûr, puisque vous n’avez pas programmé les thermostats encore, ces pages ne sera pas entièrement fonctionnel, ainsi de suite à l’étape suivante. (NOTE : Si vous renommez le fichier « tstat_index.php » pour être simplement « index.php », alors vous devriez être en mesure d’y accéder en tapant uniquement l’adresse IP de la Raspberry Pi sans inclure le nom du fichier dans l’url.)

Articles Liés

Smart TV Homer Web-enabled à distance

Smart TV Homer Web-enabled à distance

Smart d'Homère, une marionnette distant compatible Web TVHomer intelligent est une marionnette de Web-enabled qui transforme le téléviseur lorsque Simpsons est activé. Comme Homer est trop paresseux pour naviguer sur le Web lui-même, un script dans l
OpenSprinkler : Contrôleur de vanne Open source Web-enabled arroseur

OpenSprinkler : Contrôleur de vanne Open source Web-enabled arroseur

vue d'ensembleJe suis fier de vous présenter OpenSprinkler : un contrôleur de vanne arrosage open source, programmable, compatible web. Il peut être utilisé pour planifier et de travailler avec vannes d'arrosage standard 24VAC trouves couramment dans
Web-enabled cardiofréquencemètre Polar

Web-enabled cardiofréquencemètre Polar

Utilisez un Polar cardiofréquencemètre, un Conseil de matériel bon marché connecté via USB et un peu de logiciel pour mettre votre fréquence cardiaque sur le Web. Les données actives est servi dès votre ordinateur et accessibles via le relais de Yale
WEB-ENABLED BACKYARD artillerie

WEB-ENABLED BACKYARD artillerie

Salut tout le monde ! Cette instructable est en fait l'aboutissement de nombreux autres projets de mine, mais ils ont tous été utilisés ensemble pour faire quelque chose de vraiment cool ! Fondamentalement, c'est un Canon qui vous pouvez de contrôler
Web Enabled contrôle piscine - framboise Pi

Web Enabled contrôle piscine - framboise Pi

L'année dernière j'ai eu une piscine construite. C'était excitant quand le constructeur piscine m'a montré que l'industrie de la piscine avait déménagé dans l'ère de la technologie et offre maintenant le contrôle des applications sur internet. Étant
Faites-vous anonyme sur le web !

Faites-vous anonyme sur le web !

« Comment puis-je voyager et communiquer sur Internet sans être suivis ou espionnés par n'importe qui? »Ce tutoriel va expliquer comment vous êtes arrivé à cela !Il y a une multitude de raisons de vouloir la vie privée pour les communications sur Int
Web contrôlé Arduino LED

Web contrôlé Arduino LED

Cette instructable vous montre comment construire un Web-enabled tri-color LED basées sur un Arduino et le bouclier WIZnet Ethernet, à partir de n'importe quel navigateur Web .Parce que la LED est exposée via un service web RESTful simple en cours d'
Cadre de photo numérique USB + WEB

Cadre de photo numérique USB + WEB

ces instructions décrira en détail les étapes nécessaires à la préparation des éléments du logiciel d'un cadre de photo numérique fait maison. J'espère pouvoir mettre des instructions sur les modifications physiques plus tard.Cadre photo numérique su
Mettre en place votre propre serveur Web !

Mettre en place votre propre serveur Web !

Vous avez toujours voulu avoir un endroit où vous pouvez garder vos fichiers et y accéder de n'importe où vous obtenez une connexion Internet ? Vous avez voulu dire avoir votre bibliothèque de musique disponible dans le cas où vous avez voulu donner
Sans fil Noël minuterie avec Raspberry Pi et Python

Sans fil Noël minuterie avec Raspberry Pi et Python

mise à jour 14/01/2014 : Merci à tous ceux qui ont voté pour ce projet dans le concours de Hacking Hardware ! Impatient de ma plume machine à nouveau.Mise à jour 31/12/2013: à la recherche d'une version plus avancée de ce projet ? Découvrez ma nouvel
Le Raspberry Pi-Arduino-SignalR Home Automation moyeu

Le Raspberry Pi-Arduino-SignalR Home Automation moyeu

Suite à un couple de mon prélude IBLEs publié ici et ici, ce projet prend la première étape vers la création d'une version de base d'un Home Automation Hub fonctionnelle.J'ai utilisé différentes technologies dans le but de comprendre comment je peux
Scripter votre RaspberryPi

Scripter votre RaspberryPi

JavaScript est un langage de programmation grand qui fonctionne partout. JavaScript s'exécute principalement sur votre navigateur web ; Cependant, personnes trouvent des grandes utilisations pour la langue dans d'autres endroits. Python est le langag
Bouton de pizza

Bouton de pizza

Étudiant en deuxième année collège hommes, New Yorkais, techies tard dans la nuit et les vraiment paresseux : Bienvenue à votre fantaisie. Présentation de la mise à niveau ultime dans la technologie gastronomique, le bouton de la Pizza. Pas besoin de
Accueil 9000 - la sonnette ultime

Accueil 9000 - la sonnette ultime

je viens d'acheter une maison à Las Vegas et, étant un bricoleur de longue date (et instructable maker / partageur), j'ai décidé qu'avant de passer, et tant que j'ai l'occasion de briser ouvrir les murs et exécuter n'importe quel fil je voulais, je l