Web-Enabled huis thermostaat (en huisautomatisering Hub) (5 / 10 stap)

Stap 5: De databasetabellen, Python Servers en webpagina's installeren

Als u wilt downloaden en installeren van de software voor deze thermostaat, en je werkt op de Raspberry Pi op afstand met behulp van PuTTy, kan u, net als ik, afvragen wat is de beste manier om bestanden heen en weer van uw computer naar uw Raspberry Pi. Ik heb gevonden een zeer makkelijk te gebruiken programma FileZilla.

Installeren van de Database

Zoals vermeld in het begin, kon de database waarschijnlijk worden gemakkelijk uit dit project verwijderd en vervangen door een paar tekstbestanden als ik had niets uitgevoerd op dit systeem dan de thermostaten die ik hier beschrijf. Maar, ik heb andere dingen op het systeem moeten de database, dus ik heb het opgenomen in mijn systeem...

De GitHub repository bevat een bestand met de naam thermostat_db.sql. Dit bestand bevat de structuur van de MySQL tabellen die nodig zijn voor de thermostaat. Als u wilt deze tabellen maken in een database, zou u inloggen op MySQL als 'root' en maak een nieuwe database met behulp van de opdracht "DATABASE maken [database_name];" waar [database_name] is welke naam u wilt gebruiken voor uw database. (voorbeeld: "DATABASE maken tstat_database;") Dan, om te importeren van de structuur van de tabel in de database, MySQL afsluiten, ga naar de map waarin u het bestand thermostat_db.sql hebt opgeslagen en voer "mysql - uwortel -p [databasenaam] < thermostat_db.sql" en voer het wachtwoord voor de rootgebruiker wanneer daarom wordt gevraagd. (voorbeeld: "mysql - uwortel -p tstat_database < thermostat_db.sql")

Nu, als u weer inlogt mysql met behulp van de opdracht "mysql - uwortel -p", kunt u de opdracht "gebruik [databasenaam];" voor uw nieuwe database selecteert, en voer vervolgens "Toon tabellen;" om te zien van de vier tafels daar vermeld: thermostaten, thermostat_programs, thermostat_status en gebruikers.

De 'thermostaten' tabel bevat één record voor elke thermostaat die u hebt opgenomen in uw systeem en elke record bevat drie velden:

  • user_id – gewoon kiezen voor een gebruikers-id die u wilt gebruiken voor jezelf; Dit is hetzelfde voor alle thermostaten. (voorbeeld: 1234)
  • knooppunt – elke thermostaat zal zijn eigen unieke 'knooppunt' waarde; Dit moet een getal tussen 1 en 255. Het wordt gebruikt door de communicatiesoftware te identificeren van elke thermostaat. (voorbeeld: 122)
  • naam – elke thermostaat zal hebben zijn eigen naam, en dit is hoe de thermostaat wordt weergegeven op de webpagina's. Deze naam mag maximaal 45 tekens. (voorbeeld: boven slaapkamer)

Zodra u deze waarden hebt gekozen, moet u het invoegen van een record in de database voor elke thermostaat met de opdracht "thermostaten waarden invoegen ([user_id], [knooppunt], [naam]);" (voorbeeld: "invoegen thermostaten waarden (1234, 122, 'Upstairs slaapkamer');").

Voer nu gewoon om ervoor te zorgen alles ging zoals verwacht, "Selecteer * uit thermostaten;" en je moet het zien van de records die u zojuist hebt toegevoegd.

Vervolgens moet u een gebruikersnaam en wachtwoord in de 'gebruikers' tabel invoegen. Het eerste ding u zult moeten doen is kiest een gebruikersnaam (bijvoorbeeld ' uwnaam'), een wachtwoord (bijvoorbeeld ' jewachtwoord') en twee zouten, die willekeurige tekenreeksen, misschien moet elk vier tot zes tekens (bijvoorbeeld salt1 = "& 7de$ #' en zout 2 = ' (PB, zal u aan een record in de tabel van de gebruikers met behulp van de opdracht"invoegen gebruikers waarden ([user_id] invoegen md5 ('[salt1passwordsalt2]'), ' [gebruikersnaam]'); " (voorbeeld: "gebruikers waarden invoegen (1234, md5 ('& 7de$ #yourpassword(oJ 'yourname');").

Vervolgens kunt u "Selecteer * van gebruikers;" om te zien deze record in de tabel. Merk op dat het wachtwoord is gecodeerd met behulp van de md5()-functie (die wellicht niet de beste optie die er op dit punt).

Tot slot, een record in de tabel thermostat_status voor elke thermostaat waaruit blijkt dat de thermostaat in eerste instantie is af met behulp van de opdracht invoegen "INSERT INTO thermostat_status VALUES ([user_id], [knooppunt], nu(), 0, 1, 0, NULL, NULL);" (voorbeeld: "INSERT INTO thermostat_status VALUES (1234, 122, nu(), 0, 1, 0, NULL, NULL);"). De webpagina moet deze eerste record voor elke thermostaat om te werken in eerste instantie.

De andere tabellen zal later worden ingevuld wanneer de webpagina's te starten.

Installeren van de Python-Servers

De GitHub repository moet ook omvatten drie bestanden genaamd TstatMaster.py, TstatLogger.py en Thermostat.py. Ga je gang en kopieer deze naar een map op de Raspberry Pi. Als u nog geen Python geïnstalleerd op je Raspberry Pi, moet vervolgens u installeren nu (tal van plaatsen op het web die u via die kan lopen. Im ' using Python 2.7.3).

Als u bent aangemeld met de Raspberry Pi op afstand vanaf een andere computer met behulp van PuTTy, en als u Xming op die computer hebt geïnstalleerd, kunt u uitvoeren Xming en typ vervolgens 'inactief' in een PuTTy venster naar de inactieve editor uitvoeren op je Raspberry Pi en zien op uw computer. Dit is een geweldig hulpmiddel voor het bekijken en bewerken van de Python-code. Anders, zijn er verschillende andere teksteditors die u in Linux zoals vim of nano gebruiken kunt.

THERMOSTAT.py is een module met code voor de klasse van een thermostaat. TstatMaster.py controleert de thermostaten, en TstatLogger.py ontvangt logboekberichten van de thermostaten en hen naar een logboekbestand geschreven. Deze laatste twee zal vereisen sommige updates gemarkeerd aan het begin van elk bestand-deze velden zijn duidelijk gemarkeerd.

U moet ook een/home/pi/Tstat_Data/map maken op je Raspberry Pi voor de logboekbestanden worden geschreven, of anders het wijzigen van de bestanden TstatMaster.py en TstatLogger.py, zodat de logFilePrefix verwijst naar een andere map.

Als u wilt uitvoeren de servers, ga naar de map waarin de bestanden van de server zijn opgeslagen, typ "python TstatMaster.py" en "python TstatLogger.py" en controleer of ze correct opstart (geen fouten). Maar zijn er twee problemen met dit.

  1. Als u dit via een terminal programma zoals PuTTy doet, stopt het programma's zodra u de sessie beëindigen. En u zal niet zitten kundig voor niets anders op de Raspberry Pi terwijl deze servers worden uitgevoerd. Om aan te pakken dit, zal u wilt uitvoeren deze in schermen. Als u de programma's in een scherm, u zult moeten beginnen met een scherm eerst met behulp van de opdracht "scherm -S", bijvoorbeeld: "screen -S TstatMaster". Dit venster zal nu aanhouden zelfs wanneer u de PuTTy venster sluit. Er is veel documentatie over de opdracht scherm beschikbaar met inbegrip van opties om te schakelen tussen de schermen, lijst actieve schermen, en open een bestaande scherm.
  2. Zelfs als u de servers in de schermen, verliest u de macht tot uw Raspberry Pi als het opnieuw wordt gestart, zal niet langer uw servers worden uitgevoerd. Om dit te verhelpen, moet u te vertellen van de Raspberry Pi maken van schermen en uitvoeren van deze servers telkens als die het herstart.

Om dit te doen, kunt u de volgende regels toevoegen aan het bestand rc.local (meer info hier):

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

slaap 2s

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

slaap 3s

Installeren van webpagina 's

Toen u lighttpd installeerde, het moet hebben een www map instelt voor u, waarschijnlijk/var/www /. De GitHub repository dient ook sommige PHP-bestanden voor de web-pagina, en moet je deze in de volgende mappen onder/var/www / (of andere webdirectory aan welke lighttpd op zoek is). Maak deze submappen indien nodig.

  • /Public/-tstat_index.php, tstat_login.php, tstat_logout.php, tstat_ProgTstat.php, tstat_SetThermostat.php en tstat_Status.php.
  • / public/omvat / - tstat_MainHeader.php
  • /prive/ - tstat_ConnDb.php

De volgende wijzigingen moet worden aangebracht in deze bestanden:

tstat_ConnDb.php – wijzigt de waarden voor DB_USER, DB_PASSWORD en DB_NAME die u gebruikt voor uw MySQL database en login naam.

tstat_login.php-Wijzig de waarden voor $salt1 en $salt2 de tekenreeksen die u gebruikt bij het opslaan van uw thermostaat wachtwoord in de MySQL database.

tstat_ProgTstat.php – wijziging $service_port als het nummer van de poort waarop de server van de controle wordt uitgevoerd. Wijziging $CommPwd als het wachtwoord dat u wilt gebruiken voor de communicatie van de RFX. De standaardtijdzone naar uw gewenste tijdzone wijzigen

tstat_SetTstat.php – wijziging $service_port als het nummer van de poort waarop de server van de controle wordt uitgevoerd. Wijziging $CommPwd als het wachtwoord dat u wilt gebruiken voor de communicatie van de RFX. De standaardtijdzone naar uw gewenste tijdzone wijzigen

tstat_Status.php – wijziging $service_port als het nummer van de poort waarop de server van de controle wordt uitgevoerd. Wijziging $CommPwd als het wachtwoord dat u wilt gebruiken voor de communicatie van de RFX. De standaardtijdzone naar uw gewenste tijdzone wijzigen Wijziging $thermostats een lijst van de knooppunten die u voor uw thermostaten gebruikt.

Nu testen – in uw browser, typ het IP-adres voor uw Raspberry Pi gevolgd door /tstat_index.php (voorbeeld 192.168.1.75/tstat_index.php). U ziet een loginpagina asking voor te username en wachtwoord. Voer de gebruikersnaam en het wachtwoord die u hebt opgeslagen in de gebruikers tabel hierboven (geen zouten rond de wachtwoord, slechts het wachtwoord). Die u moet nemen om een welkomstpagina met 4 links op de bovenkant: Set thermostaat waar u zult kundig voor troep uw thermostaten, huidige Status waar u van de huidige status van elk thermostaat zien kunt, programmering, waar u kunt planningen voor uw thermostaten program, en uitloggen (hopelijk is dat men spreekt voor zich). Natuurlijk, aangezien u nog niet de thermostaten nog geprogrammeerd, zal deze pagina's niet volledig functioneel, dus op naar de volgende stap. (Opmerking: als u de naam wijzigen van het bestand 'tstat_index.php' te zijn gewoon 'index.php' dan u in staat om erin te komen moet door te typen in alleen IP-adres van de Raspberry Pi heeft geen betrekking op de bestandsnaam in de url.)

Gerelateerde Artikelen

Slimme Homer Web-enabled TV remote

Slimme Homer Web-enabled TV remote

Slimme Homer, een Web-enabled TV remote marionetSlimme Homer is een Web-enabled marionet dat op uw TV draait als Simpsons is ingeschakeld. Zoals Homer te lui om te surfen op het Web zelf is, controleert een script in de wolk de online TV-programma vo
OpenSprinkler: Open-source Web-enabled Sprinkler Valve Controller

OpenSprinkler: Open-source Web-enabled Sprinkler Valve Controller

overzichtIk ben trots om te introduceren OpenSprinkler: een open-source programmeerbare, web-enabled sprinkler valve controller. Het kan worden gebruikt om te plannen en te werken met standaard 24VAC sprinkler kleppen vaak aangetroffen in huishoudeli
PIGate, deur/gate opener van de garage van de web-enabled

PIGate, deur/gate opener van de garage van de web-enabled

Bouwen van een opener van de externe poort met behulp van een expressjs en een Raspberry PiintroductieEr is iets heel bevredigend over te klikken op een web-interface of het raken van een knop op een app en het zien van enkele fysieke gebeurtenis opt
Web-Enabled lui studie lichten Controller

Web-Enabled lui studie lichten Controller

Dit Instructable is een schrijven van mijn eerste ooit Arduino project.Zoals in het algemeen het geval met de technici van de hobbyist, ik dacht lang en hard om te komen met een project dat werd niet alleen cool maar sommige werkelijke gebruikswaarde
Web-enabled Polar hartslagmeter

Web-enabled Polar hartslagmeter

Gebruik een Polar hartslagsensor, een goedkope hardwarekaart aangesloten via USB en een beetje van software om te zetten uw hartslag op het Web. De live-gegevens is geserveerd vanaf uw computer en toegankelijk gemaakt via de Yaler estafette (disclosu
Arduino standalone web-enabled bell

Arduino standalone web-enabled bell

geïnspireerd door deze post, mij wilden voor wekken een Arduino aangedreven Bel dat volledig standalone was.Met een beetje PHP en (desgewenst) sommige jQuery op een website, kunt u deze bell ring wanneer een specifieke actie wordt uitgevoerd.Deze sta
WEB-ENABLED ACHTERTUIN artillerie

WEB-ENABLED ACHTERTUIN artillerie

howdy iedereen! Dit instructable is eigenlijk het hoogtepunt van vele projecten van mij, in het verleden, maar ze allemaal zijn samen gebruikt hebben om iets echt cool te doen! in principe is het een kanon dat kan u meer controle over het web via een
Web-Enabled zwembad Control - Raspberry Pi

Web-Enabled zwembad Control - Raspberry Pi

Vorig jaar had ik een zwembad gebouwd. Het was spannend toen de zwembad bouwer heeft me laten zien dat de industrie zwembad had verplaatst naar het tijdperk van de informatietechnologie en nu bood Programmacontrole via het internet. Wordt een compute
Web-Enabled garagedeur (Raspberry Pi)

Web-Enabled garagedeur (Raspberry Pi)

Doel om een webpagina te maken op basis van garage deuropener die moeten achteraf aan de meeste standaard openers. Getest met circa 1990s Chamberlain 1/2 hp opener. Nam eenmaal deel uw garagedeur kan openen vanaf uw mobiele telefoon of computer.Raspb
RAS-uw huis Alarm

RAS-uw huis Alarm

Ik maakte dit project me externe toegang geven tot mijn huis Alarm Panel - als ik weten wilde als de wekker op mijn huis uit was gegaan, terwijl ik weg was. Ik wilde ook de mogelijkheid om te lezen van de logs - en het alarm te resetten indien ze zij
Arduino Web ingeschakeld RGB verlichting

Arduino Web ingeschakeld RGB verlichting

ik heb net toevallig om te zien sommige grote strips van LED-verlichting als ik was het oppakken van sommige delen op Maplin die waren te koop (als ik me herinner juiste ze waren ongeveer £12 per ca. 2m strip) stuurprogramma voor de controller/was ec
Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

Bouwen van een Web ingeschakeld deurslot met Rest API en Raspberry PI

In dit instructable, bouwen we een web-enabled elektronische deurslot vanaf nul RESTFUL API, knooppunt JS en Raspberry PI gebruikt om de web-service die wordt verbruikt door de mobiele app of een REST-client.De architectuur is verdeeld in twee 3 dele
Web gecontroleerde Valentine

Web gecontroleerde Valentine

met deze mix van software en hardware, kunt u een hart-versierd nacht licht van overal met internettoegang oplichten. Dus of je nog op het werk, in een café, thuis, of op uw (web-enabled) mobiele telefoon, kunt u vertellen uw Valentijn dat u bent nog
Web gecontroleerde Arduino LED

Web gecontroleerde Arduino LED

Dit instructable toont u hoe te bouwen een Web-enabled tri-color LED gebaseerd op een Arduino en de WIZnet Ethernet-shield, beheersbare vanuit elke webbrowser .Omdat de LED wordt blootgesteld kunnen door middel van een eenvoudige RESTful web-service