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.
- 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.
- 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.)