Parvekepuutarha 2024 - Osa 1
Oma parveke + lähestyvä kevät = puutarhuroinnin aloitus! Siis maaliskuussa jo tuumasta toimeen, Hämeenkadun Herkusta (...vai mikä risma se nykyään onkaan) kantoon siemenet, ja kevään aikana kootut jugurtti- ja viilipurkit käyttöön istutuksille!
Kahden ihmisen voimin rei'itettiin kertyneet purkit taimikäyttöön.
![Viili- ja jugurttipurkeista tulee kohtalaisen hyvät taimipurnukat.](/uploads/2024-03-15-27vw.png)
![Tätä (ilmeisesti virolaista) kreikkahillojugurttia on tullut vedettyä tänä keväänä.](/uploads/2024-03-15-3z3j.png)
Sitten purkit isommille alustoille. Ikeasta napattu metallihylly toimii keittiön ikkunalla kasvatuskorokkeena, jotta kasvustot saavat edes hitusen valoa.
![Myös fetapurkkeja on eksynyt joukkoon. Alustoina erinäisiä ruokatoimitusastioita.](/uploads/2024-03-15-74ai.png)
Sitten istutuspuuhiin! Käytössä kaktus- ja kylvömultaa sekä normaalia kukkamultaa (...sillä kylvömullan saatavuusaste huononi purkki purkilta). Tämän vuoden parvekepuutarhaprojektin esikasvatuksessa ovat tänä keväänä pienet ruukkumansikat, avomaankurkut ja kirsikkatomaatit, hopea- ja ruohosipuli, porkkana, sekä myös suippopaprika (jahka muistan sen vielä istuttaa).
![Ylähyllylle kaktussairaalan viereen pääsivät muun muassa porkkanat. Katsotaan, mitä niistä tulee, vai tuleeko mitään.](/uploads/2024-03-15-2ndl.png)
![Alahyllyllä ovat taasen muut ystäväiset.](/uploads/2024-03-15-eoqm.png)
Mansikansiemenet taasen pääsivät itämään hämärähköön makuuhuoneeseen, kirjahyllyyn, ihan siihen Kirotun lapsen viereen. Täytynee vielä kehitellä peittelytsydeemi niille, että kosteus ei katoa. Vai itäisivätköhän kasvatusohjeen laiminlyönnistä huolimatta?
![Kirottu lapsi ja mansikkatarha (to-be).](/uploads/2024-03-15-7glu.png)
Timelapsekamera!
Kas, kohtalaisen vanhan mallin Raspberry Pi sekä jokin veppikamera lojuvat laatikossa. Mitä tekee wannabe-puutarhuri? No virittää niistä timelapsekameran, tietysti!
![Kokonaisnäkymä. WebKamera töllöttää toisiksi ylimmän hyllyn purkkeja.](/uploads/2024-03-15-6nm8.png)
Virityksellä saa tuotettua kutakuinkin käyttökelpoisia kuvia! Täytyy säädellä frameratet ja asetukset kuntoon jahka ensimmäiset idut alkavat pilkistää mullasta. Nyt timelapset eivät vielä ole kovinkaan mielenkiintoisia...
Koodia
Kotivuori, eli vaatehuoneeseen unhoitettu NAS/kotipalvelin/mikälie toimii kuvien säilytyspaikkana. Se pingaa raspilta uuden kuvan cronjobina viiden minuutin välein (...todella elegantti toteutus!) ja tallentaa ne asiaankuuluvaan hakemistoon.
Tästä ne voidaankin sitten kätevästi esimerkiksi ffmpegillä muuntaa videomuotoon (...tulossa myöhemmin; jahka saan tarpeeksi päiviä kuvattua, heitän päivätimelapset kasautumaan automaagisesti).
Kuvat haetaan oheisella purkkavirityksellä:
#!/bin/bash
cd "/home/user/kasvilapse"
IMAGE_FOLDER="$(date +%Y-%m-%d)"
IMAGE_FILE="ruukku_$(date +%Y-%m-%d_%H-%M).jpg"
TARGET_PATH="images/${IMAGE_FOLDER}/${IMAGE_FILE}"
echo "Image target: ${TARGET_PATH}"
mkdir -p "images/${IMAGE_FOLDER}"
wget -O $TARGET_PATH "http://192.168.0.108:8811/current.jpg?res=1920x1080" || rm $TARGET_PATH
if [ $? -ne 0 ] ; then
echo "Meh, sumttin happund probably"
else
echo "I guess it's done! :3"
fi
Alla oleva (vielä purkampi viritys) on raspin päässä hostaamassa kamerapalvelinta. Lähiverkon iot-rajauksen puolelta voi siis pingata raspilta kuvan kuka tahansa – kätevää! (...tai sitten ei, no, katsotaan...)
const cmd = 'fswebcam -d v4l2:/dev/video0 -r __RES__ -F 2 -D 1 -S 10 --top-banner --banner-colour "#ff000000" --line-colour "#ff000000" --title "Ruukkucam" --jpeg 95 --quiet -';
const express = require('express');
const exec = require('child_process').exec;
const app = express();
app.get('/current.jpg', (req, res) => {
const reso = req.query.res ?? '800x450';
console.log((new Date()) + ' capturing...');
exec(cmd.replace('__RES__', reso.replace(/[^0-9x]/gmi, '')), { encoding: 'buffer', maxBuffer: 1024*1024*10 }, function(err, stdout, stderr){
if (err) {
console.error(err);
res.sendStatus(500);
return;
}
res.setHeader('content-type', 'image/jpeg');
res.send(stdout);
});
});
app.listen(8811, (err) => {
if (err) {
console.error(err);
}
console.log('listening!');
});
Purkkaviritys? Joo. Toimii toistaiseksi? Joo! Ja joo, toivotaan että tuo resoluution replace on tässä vaiheessa riittävä shell escape; nämä kamat kun kuitenkin elävät suojatussa ja suljetussa kotiverkossa.
Lisää päivittelyä tulossa!
Kommentit
Jätä kommentti
Kommentoidessasi ip-osoitteesi ja nimimerkkisi tallennetaan systeemiin.