Raspberry Pi kontrollerade bevattningssystem (11 / 12 steg)
Steg 11: kod
Nu när du har en fungerande krets och VVS-system, du kommer att installera koden på din Raspberry Pi det automatiskt kontrollerar de senaste 24 timmarna nederbörd och beslutar även att öppna magnetventilen. Sedan har du en handsfree-vattning upplevelse!
Kredit för koden för detta projekt går till min vän Mark Veillette. De filer och instruktioner för installation finns på hans github sida: https://github.com/markveillette/rpi_sprinkler. Koden är ganska väl kommenterade men här är en allmän förklaring av hur det fungerar:
- run_sprinkler.py är den viktigaste fil som söker en väder API för nederbörd det senaste dygnet, beslutar även att öppna magnetventilen baserat på nederbörd, kontroller GPIO stiften, och skriver de resulterande åtgärderna till en loggfil.
- config är en konfigurationsfil där du anger din Weather Underground API-nyckel, din stad/stat, GPIO stiften används av kretsen och regn tröskeln (i tum) för att köra bevattningssystemet.
- Run.crontab är en schemaläggning fil där du ange när run_sprinkler.py kommer att köras, använda Cron, en Linux jobbschemat. Detta har fördelen att endast kör Python koden kort vid vissa tider på dagen, snarare än att lämna en Python skript körs i en oändlig loop dygnet runt och ständigt kontrollera tiden (som jag i min Christmast light timer projekt... hoppsan). Som standard anges det att köra två gånger om dagen på 06: 00 och 18: 00, men detta är mycket anpassningsbara. Till exempel, du kan ställa in den till bara springa varje tisdag och torsdag, eller bara på udda dagar i månaden.
För att få igång, Följ instruktioner för nedladdning och installation på Mark's Github sida. Var noga med att gå igenom de rekommenderade testning kommandona för att se till att allt fungerar smidigt. Sedan låta det kör i 24 timmar, kommer tillbaka till loggfilen och se till att resultaten är förenliga med vädret du faktiskt observerade (med andra ord, om det inte regnar, det bör ha aktiverat sprinklern och loggfilen kommer att säga att). Om du har några problem att få koden att köra, posta en kommentar med några felmeddelanden du fått och jag ska göra mitt bästa för att hjälpa till.
(Obs att Mark beslutade att kalla det en "sprinkler" - det är mer kompakt än "bevattningssystem", så oavsett. De refererar till samma sak.)