Kesä, tuo viherpeukaloiden luvattu aika suomessa. Useampana talvena olen miettinyt, että pitäisi kasvattaa jotain parvekkeella kesällä. Aina se on jäänyt tekemättä, mutta tänä keväänä sain aikaiseksi testata, minkälainen kasvattaja olen. Aloitusta varten tarvitsee tietysti kasvatuslaatikon. Sopivan kokoista kasvatuslaatikkoa en ole löytänyt, mutta kaverini käytti aikansa hyvin korona vuonna ja teki muutaman parvekkeelle sopivan laatikon ja hän tarjosi ylimääräistä minulle joten tartuin syöttiin.
- Kastelujärjestelmän toimintaperiaate
- Tarvikkeet
- Websivun koodi
- Python koodi
- Nginx koodi
- Kuvia ja video
Kasvatuslaatikon rakennusprosessista itselläni ei valitettavasti ole kuvamateriaalia, mutta valmiista kappaleesta löytyy.
Kesät ovat olleet viime vuosina kuumia ja meillä on parveke lasitettu ja muutenkin olen hiukan huono muistamaan kukkien kastelua, vaikka ne ovat näkyvillä saati sitten kasvatuslaatikon kastelu kun se on parvekkeella ja ei koko ajan silmien alla. Lisäksi kesällä tulee matkailtua kotimaassa ja välillä myös ulkomailla jolloin kastelua varten tulisi järjestää joku paikalle säännöllisin väliajoin hoitamaan homma. Tämän vuoksi päätin rakentaa kastelujärjestelmän siten, että voin mistä tahansa ja koska tahansa pitää kasvatuslaatikon mullan kosteana ja varmistaa kasvualustan hyvinvoinnin.
Kastelujärjestelmän toimintaperiaate
Lähdössä olin kunnianhimoinen, mutta koska kuuma keli pääsi yllättämään taas kerran kuten liukas keli yllättää talviautoilijan niin järjestelmä ei ole tällä hetkellä automaattinen vaan manuaalinen, mutta etäkäyttö on mahdollistettu.
Raspberry pi on yhdistetty wlanin kautta nettiin ja minimaalinen koodi websivulla mahdollistaa napin painalluksen. Php koodi ja Python koodi hoitavat homman siten, että kun kerran painaa websivulla nappia niin vettä suihkuaa letkun reistä viisi sekuntia kastelulaatikkoon.
Tarvikkeet
Tällä kertaa kaikki tarvikkeet löytyivät omasta takaa, sillä yhdessä vaiheessa olin testaillut vesipumppua takapihalle siten, että voisi tehdä suihkulähteen. Into lopahti kesken ja vesipumppu jäi ylitse joten nyt sille tuli käyttöä.
- Vesipumppu ja virtalähde
- 2 – 3 metriä vesiputkea
- Rele
- Pari sähköjohtoa
- Raspberry pi 3 b
- Muovilaatikko
- Puukko
- Akkuporakone ja poranterä
Websivun koodi
<html>
<body>
<head>
<title>
Kastelu
</title>
</head>
<p> kastele 5 sekuntia painamalla nappia </p>
<form method="post">
<input type="submit" value="GO" name="GO">
</form>
</body>
</html>
<?php
if(isset($_POST['GO']))
{
$command = escapeshellcmd('/usr/lib/cgi-bin/kastelu.py');
$output = shell_exec($command);
echo $output;
}
?>
Napin painallus käynnistää kastelu koodin joka on tehty Pythonilla
Python koodi
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
KASTELU_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(KASTELU_PIN, GPIO.OUT)
GPIO.output(KASTELU_PIN, GPIO.HIGH)
time.sleep(5)
GPIO.output(KASTELU_PIN, GPIO.LOW)
time.sleep(5)
GPIO.cleanup()
Pythonissa määritellään PIN jota käskytetään high ja low asentoon, eli kulkeeko virta vai ei. Kun virtaa kulkee niin silloin pumppu saa virtaa ja vesi lähtee liikkumaan. Ylläolevat koodit ovat pelkistettyjä ja niitä voisi siistiä turhien sleeppien vuoksi, mutta ne jäivät testatessa paikalleen ja tulivat tähän samaa myöten copy – pastella.
Nginx koodi
server {
listen 80;
listen [::]:80;
root /var/www/html/kastelu;
# Add index.php to the list if you are using PHP
index index.html index.php index.htm index.nginx-debian.html;
server_name localhost;
access_log /var/log/nginx/kastelu_access.log;
error_log /var/log/nginx/kastelu_error.log;
location / {
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htaccess;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
# pythonia varten conffi
include /etc/nginx/fcgiwrap.conf;
}
Nginx koodissa on määritelty http basic authentication, jotta vain minä pääsen sivustolle salasanalla ja voin painaa kastelunappia. Lisäksi fcgiwrap on asennettu, jotta pystytään ajamaan python koodia.