Stap 11: Code
Nu hebt u een werkende circuit en sanitair systeem, u code op je Raspberry Pi installeert dat automatisch controleert regenval van de afgelopen 24 uur en beslist of het magneetventiel open. Dan heb je een hands-free drenken ervaring!
Krediet voor de code voor dit project gaat naar mijn vriend Mark Veillette. De bestanden en de installatie-instructies zijn beschikbaar op zijn github pagina: https://github.com/markveillette/rpi_sprinkler. De code is vrij goed commentaar, maar hier is een algemene uitleg van hoe het werkt:
- run_sprinkler.py is het hoofdbestand dat de controles van een weer-API voor regenval van de afgelopen 24 uur, besluit al dan niet om te openen de magneetklep gebaseerd op het bedrag van de regenval, besturingselementen de GPIO pinnen, en de resulterende acties naar een logboekbestand geschreven.
- config is een configuratiebestand waar u uw Weather Underground API-sleutel, uw stad/staat, de GPIO pinnen gebruikt door het circuit en de drempel van de regen (in inch) voor het uitvoeren van het irrigatiesysteem.
- Run.crontab is een planning bestandenset waar u als run_sprinkler.py kan worden uitgevoerd, met behulp van Cron, een Linux job scheduler. Dit heeft het voordeel dat alleen het uitvoeren van de Python-code kort op bepaalde tijdstippen van de dag, in plaats van het verlaten van een Python script uitgevoerd in een oneindige lus 24 uur per dag en de tijd voortdurend te controleren (zoals ik in mijn Christmas lichte tijdopnemer... Oeps project). Het is standaard ingesteld op 6 am en 6 pm twee keer per dag wordt uitgevoerd, maar dit is zeer flexibel. Bijvoorbeeld, kon u het adres ingesteld op enige punt elke dinsdag en donderdag, of alleen op oneven dagen van de maand.
Om het te krijgen lopen, de instructies downloaden en installeren op Marcoplein Github pagina. Zorg ervoor dat de aanbevolen testen opdrachten om ervoor te zorgen dat alles werkt soepel doorlopen. Dan, laat het lopen voor 24 uur terugkomen op het logboekbestand controleren en ervoor te zorgen dat de resultaten stroken met weer u eigenlijk waargenomen (met andere woorden, als het niet regent, het moet de sprinkler hebt ingeschakeld en het logboekbestand zal zeggen dat). Als u geen moeite hebben om de code uit te voeren, post een reactie samen met eventuele foutberichten die u ontvangen en ik zal mijn best doen om te helpen.
(Merk op dat Mark besloten te noemen het een "kwispel" - dat meer is compacter dan "irrigatiesysteem", dus wat dan ook. Zij verwijzen naar het zelfde ding.)