Parvekepuutarha 2024 - Osa 1 - purnukka

purnukka

arkistojen dumppauspaikka.

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.
Viili- ja jugurttipurkeista tulee kohtalaisen hyvät taimipurnukat.

Tätä (ilmeisesti virolaista) kreikkahillojugurttia on tullut vedettyä tänä keväänä.
Tätä (ilmeisesti virolaista) kreikkahillojugurttia on tullut vedettyä tänä keväänä.

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.
Myös fetapurkkeja on eksynyt joukkoon. Alustoina erinäisiä ruokatoimitusastioita.

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.
Ylähyllylle kaktussairaalan viereen pääsivät muun muassa porkkanat. Katsotaan, mitä niistä tulee, vai tuleeko mitään.

Alahyllyllä ovat taasen muut ystäväiset.
Alahyllyllä ovat taasen muut ystäväiset.

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).
Kirottu lapsi ja mansikkatarha (to-be).

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.
Kokonaisnäkymä. WebKamera töllöttää toisiksi ylimmän hyllyn purkkeja.

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

' OR 1=1
vierailija | | » Vastaa
SQLi my beloved ' OR 1=1
U'); DROP TABLE wb_comments; --
✏️ | | » Vastaa
harmis tus :(

Jätä kommentti

Kommentoidessasi ip-osoitteesi ja nimimerkkisi tallennetaan systeemiin.