Hem miljö Sensor Array--Fas 1 (5 / 7 steg)
Steg 5: Skriva Python kod
Jag skrev ett litet program med python för att styra funktioner i HESA. Huvudprogrammet kallas hesa.py. Jag gjorde också en modul för att skicka e-post kallas rynokEmail.py. Av e-modulen kan användas i andra program. Länkarna tar dig till källkoden.
En viktig sak att nämna är att ingångsstift på Raspberry Pi är setup som en pulldown såhär:
GPIO.setup (inPin, GPIO. IN, pull_up_down = GPIO. PUD_DOWN)
Här är pseudo koden för det program som visar de grundläggande stegen:
1. Ladda biblioteken används av programmet och definiera globala variabler
2. initiera GPIO på Raspberry Pi
3. koppla på reläet
4. skapa en ny status-webbsida
5. börja söker vatten genom att skicka signaler ut en elektrod och letar efter nuvarande på andra elektroden.
5a. uppdatera statussidan var 10 minut
5b. om nuvarande finns på input elektroden
5B1. stänga av strömmen till reläet och återställa GPIO på PI
5b2. Skicka ett mail
5b3. uppdatera statussidan
Som en parentes finns det ett par saker jag vill göra när kodning i något språk. Först ser jag en debug global variabel. Sedan lade jag debug uttalanden i alla min moduler så jag kan felsöka programmet om det inte fungerar. Idealiskt, programmet kommer att rapportera när det kommer in en modul, status för nyckelvariabler i modulen när en viktig händelse händer, och när modulen är avslutat. Alla meddelanden kan stängas av helt enkelt genom att ändra värdet på variabeln debug på ett ställe.
För det andra försöker jag att kommentera allt grundligt. Detta hjälper när jag kommer tillbaka ett år senare och försöka lista ut hur vissa kodsträng fungerar. Jag också göra koden så enkla som möjligt. Detta kan innebära att bryta en komplex linje i flera enklare kodrader. Jag försöker också uttryckligen detalj alla If/Then villkor och inte använda ELSE om inte jag är säker på att alla om villkoren inte uppfylls.
Det tredje jag göra återanvändbara moduler när så är möjligt och lägg dem i en vanlig mapp som alla program kan se. Detta sätt, jag slipper återuppfinna hjulet för varje program jag skriver.
Nästa: Göra höljet