Paso 5: Instalar las tablas de la base de datos, Python servidores y páginas web
Si decides descargar e instalar el software para este termostato, y que está trabajando la frambuesa Pi usando masilla, usted, como yo, se estará preguntando cuál es la mejor manera de mover archivos hacia adelante y hacia atrás de su computadora a su frambuesa Pi. He encontrado FileZilla un programa muy fácil de usar.
Instalación de la base de datos
Como se mencionó al principio, la base de datos podría ser fácilmente retirado de este proyecto y probablemente reemplazado con unos archivos de texto si no tenía nada en este sistema que no sea de los termostatos que estoy describiendo aquí. Pero tengo otras cosas en el sistema que necesita la base de datos, por lo que he incluido en mi sistema...
El repositorio de GitHub incluye un archivo llamado thermostat_db.sql. Este archivo contiene la estructura de las tablas de MySQL para el termostato. Para crear estas tablas en una base de datos, se entra en MySQL como 'root' y crear una nueva base de datos utilizando el comando "crear base de datos [nombre_base_datos];" donde [nombre_base_datos] es cualquier nombre que desea utilizar para la base de datos. (ejemplo: "Crear base de datos tstat_database;") Entonces, para importar la estructura de la tabla en la base de datos MySQL la salida, vaya al directorio donde guardaste el archivo thermostat_db.sql y entrar en "mysql -u root -p [base_de_datos] < thermostat_db.sql" e introduzca la contraseña para el usuario root cuando se le solicite. (ejemplo: "mysql -u root -p tstat_database < thermostat_db.sql")
Ahora, si inicia una sesión en mysql usando el comando "mysql -u root -p", usted ingresa el comando "uso [base_de_datos];" y seleccione su nueva base de datos, escriba "Mostrar tablas;" ver cuatro tablas en la lista: termostatos, thermostat_programs, thermostat_status y los usuarios.
La tabla 'termostatos' contendrá un registro para cada termostato que ha incluido en su sistema, y cada registro contiene tres campos:
- user_id – sólo tienes que elegir un id de usuario que desea utilizar para ti mismo; se trata de la misma para todos los termostatos. (ejemplo: 1234)
- nodo – cada termostato tendrá un valor único 'nodo'; Esto debe ser un número entre 1 y 255. Se utiliza el software de comunicación para identificar cada termostato. (ejemplo: 122)
- nombre – cada termostato tendrá su propio nombre, y esto es cómo el termostato se mostrará en las páginas Web. Este nombre puede tener hasta 45 caracteres. (ejemplo: dormitorio de planta alta)
Una vez que ha elegido estos valores, es necesario insertar un registro en la base de datos para cada termostato con el comando "insertar en termostatos valores ([user_id], [nodo], [nombre]);" (ejemplo: "inserte valores los termostatos (1234, 122, 'Planta alta dormitorio');").
Ahora, sólo para asegurarse de que todo salió como se esperaba, en "seleccionar * de termostatos;" y usted debería ver los registros que acaba de agregar.
A continuación, necesitará insertar un nombre de usuario y contraseña en la tabla 'usuarios'. Lo primero que necesita hacer es elegir un nombre de usuario (por ejemplo "SuNombre"), una contraseña (por ejemplo ' SuContraseña') y dos sales, que deben ser al azar cadenas de caracteres, tal vez cuatro a seis caracteres cada una (por ejemplo salt1 = ' & 7$ #' y sal 2 = ' (oJ entonces, tienes que insertar un registro en la tabla de usuarios utilizando el comando "Insertar usuarios valores ([user_id] md5 ('[salt1passwordsalt2]'), ' [nombre de usuario]'); " (ejemplo: "Inserte los usuarios valores (1234, md5 ('& 7$ #yourpassword(oJ 'yourname');").
Luego puedes "seleccionar * de los usuarios;" para ver este documento en la tabla. Tenga en cuenta que la contraseña se ha codificado utilizando la función md5() (que puede no ser la mejor opción que hay en este momento).
Finalmente, insertar un registro en la tabla de thermostat_status para cada termostato que muestra que el termostato está inicialmente apagado utilizando el comando "insertar valores de thermostat_status ([user_id], [nodo], now(), 0, 1, 0, NULL, NULL);" (ejemplo: "inserte valores thermostat_status (1234, 122, now(), 0, 1, 0, NULL, NULL);"). La página web necesita este registro inicial para cada termostato para trabajar inicialmente.
Las otras tablas se popularán más adelante cuando las páginas web están ya en funcionamiento.
Instalación de los servidores de Python
El repositorio de GitHub también debe incluir tres archivos denominados TstatMaster.py, TstatLogger.py y Thermostat.py. Seguir adelante y copiar a un directorio en la Raspberry Pi. Si ya no tienes Python instalado en la Raspberry Pi, entonces usted debe instalarlo ahora (un montón de lugares en la web que puede caminar a través de eso. Estoy usando Python 2.7.3).
Si estas conectado en la frambuesa Pi remotamente desde otro ordenador utilizando masilla, y si ha instalado Xming en ese equipo, puede ejecutar Xming y escriba 'idle' en una ventana masilla para ejecutar el editor de ocioso en su frambuesa Pi y verlo en su computadora. Esto es una gran herramienta para ver y editar el código Python. De lo contrario, hay varios otros editores de texto que se puede utilizar en Linux como vim o nano.
Thermostat.py es un módulo que contiene código para una clase de termostato. TstatMaster.py controles de los termostatos, y TstatLogger.py recibe mensajes de registro de los termostatos y los escribe en un archivo de registro. Estos últimos dos requieren algunas actualizaciones marcadas al principio de cada archivo, los campos están claramente marcados.
También necesita crear un directorio/home/pi/Tstat_Data/en su Pi de frambuesa para los archivos de registro para ser escrito, o bien cambiar los archivos TstatMaster.py y TstatLogger.py para que logFilePrefix hace referencia a otro directorio.
Para ejecutar los servidores, vaya al directorio en el que se guardaron los archivos del servidor, escriba "python TstatMaster.py" y "python TstatLogger.py" y asegúrese de que arrancar correctamente (sin errores). Pero, hay dos problemas con esto.
- Si está haciendo esto a través de un programa de terminal como masilla, los programas se detendrán tan pronto como terminas la sesión. Y usted no será capaz de hacer cualquier otra cosa en la Raspberry Pi mientras que apuntan a estos servidores. Para solucionar esto, tienes que ejecutar en pantallas. Para ejecutar los programas en una pantalla, necesitará iniciar una pantalla primero usando el comando "pantalla -S", por ejemplo: "pantalla -S TstatMaster". Esta ventana ahora persistirá incluso cuando usted cierra la ventana del PuTTy. Hay un montón de documentación en el comando de pantalla incluyendo las opciones para cambiar entre pantallas, pantallas de lista activo y abrir una pantalla existente.
- Incluso si ejecuta los servidores en las pantallas, si pierdes energía a su frambuesa Pi y reinicia, los servidores ya no funcionará. Para corregir esto, necesita a la frambuesa Pi para crear pantallas y ejecutar estos servidores en cualquier momento que se reinicia.
Para ello, puede Agregar las líneas siguientes al archivo rc.local (más info aquí):
pantalla -dm -S TstatLogger python //home/pi/ www/LCLogger.py
Sleep 2s
pantalla -dm -S TstatMaster python //home/pi/ www/LCMaster.py
sueño 3s
Instalación de las páginas Web
Al instalar lighttpd, que debe han configurado una carpeta www para usted, probablemente/var/www /. El repositorio de GitHub también debe incluir algunos archivos PHP de la página web, y usted debe poner en los siguientes directorios bajo/var/www (o busca otro directorio web que lighttpd). Crear estos subdirectorios si es necesario.
- /Public/, tstat_index.php, tstat_login.php, tstat_logout.php, tstat_ProgTstat.php, tstat_SetThermostat.php y tstat_Status.php.
- pública/includes / - tstat_MainHeader.php
- /Private/ - tstat_ConnDb.php
Los siguientes cambios tendrán que hacerse para estos archivos:
tstat_ConnDb.php – cambia los valores para DB_NAME, DB_USER y DB_PASSWORD que está utilizando su nombre de inicio de sesión y base de datos de MySQL.
tstat_login.php – cambiar los valores de $salt1 y $salt2 que las cuerdas utiliza al guardar su contraseña de termostato en la base de datos MySQL.
tstat_ProgTstat.php – $service_port a ser el número del puerto en que se ejecuta el servidor de control de cambio. Cambio $CommPwd que la contraseña que elija usar para las comunicaciones de RFX. Cambiar la zona horaria predeterminada a su zona horaria preferida.
tstat_SetTstat.php – $service_port a ser el número del puerto en que se ejecuta el servidor de control de cambio. Cambio $CommPwd que la contraseña que elija usar para las comunicaciones de RFX. Cambiar la zona horaria predeterminada a su zona horaria preferida.
tstat_Status.php – $service_port a ser el número del puerto en que se ejecuta el servidor de control de cambio. Cambio $CommPwd que la contraseña que elija usar para las comunicaciones de RFX. Cambiar la zona horaria predeterminada a su zona horaria preferida. Cambio $thermostats a ser una lista de los nodos que utiliza para sus termostatos.
Ahora, prueba, navegador, escribir la dirección IP de su Pi frambuesa seguido de /tstat_index.php (ejemplo 192.168.1.75/tstat_index.php). Debería ver una página de login pidiendo un nombre de usuario y contraseña. Introduzca el nombre de usuario y la contraseña guardados en la tabla de usuarios por encima (no sales alrededor de la contraseña, solo la contraseña). Que le llevará a una página de bienvenida con 4 enlaces en la parte superior: graduar el termostato donde usted podrá establecer sus estado actual donde se puede ver el estado actual de cada termostato, termostatos programación donde puede programar horarios para sus termostatos y desconectarse (esperemos que eso es autoexplicativo). Por supuesto, puesto que no se han programado los termostatos sin embargo, estas páginas no será completamente funcional, así sucesivamente con el siguiente paso. (Nota: Si usted renombra el fichero 'tstat_index.php' sea simplemente 'index.php' entonces usted debe ser capaz de conseguir que escriba sólo la dirección IP del Raspberry Pi sin incluir el nombre del archivo en la url.)