Kirjoittelin simppelin Pörssäriä hyödyntävän ohjaus softan GPIO-ohjatuilla relekorteilla varustetuille Raspberry PI yhteensopiville tietokoneille, mitkä kykenevät ajamaan Linuxia.
Tarkoitus oli tehdä käyttöönotosta mahdollisimman yksinkertainen. Tarvittavat asetukset määritellään JSON-muotoiseen asetustiedostoon, minkä ohjelma olettaa olevan "/etc/control/control.json", mutta tämän voi halutessaan toki komentoriviltä määrittää toiseksi.
Asetustiedostoon tarvitsee määritellä ohjelman käyttämä KV-tietokantatiedosto, Pörssärin laitetunnus, paikkakunta, maakoodi, kellonaika [hh,mm,ss] muodossa, mistä eteenpäin lähdetään kyselemään Pörssäriltä aikatauluja (tähän lisätään vielä oikeasti random offset, eli tuosta ajasta maksimissaan tunnin sisällä aletaan kyselemään aikatauluja). Lisäksi tarvitaan tietysti lista pinneistä ohjauskanavajärjestyksessä releiden ohjausta varten:
Koodi:
{ db: "/etc/control/control.db", device-id: "XXXXXXXXXXXX", city: "Hämeenlinna", country: "FI", update-at: [14,00,00], pins: [26,20,21] }
Taitaa myös tällä hetkellä olla ainoa "ohjaus skripti", mikä tukee täysin Pörssärin varaohjelmia ja osaa automaattisesti myös palata normaalitoimintaan varaohjelmilta kunhan ajantasalla olevat aikataulut saadaan taas haettua.
Julkaisen tänne vapaaseen jakoon, kunhan seuraava versio 8th:sta julkaistaan. Mikäli löydän jostain vähän ylimääräista aikaa, niin tähän olisi vielä tulossa mahdollisuus määrittää pinnit astrokello-ohjausta varten. Koodi astro-tukea varten ja geo-tietokanta ohjelmasta jo löytyykin.
Ohjelmassa on oma säie hoitamassa aikataulujen päivitykset ja oma säie hoitamassa aikataulutuksen. Säikeet nukkuvat suurimman osan ajasta, joten ei kuormita ohjaustietokonetta käytännössä ollenkaan.
Koodi:
root@ohjaus:~# systemctl status -n 100 ohjaus
● ohjaus.service - Ohjausratkaisut
Loaded: loaded (/etc/systemd/system/ohjaus.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-04-13 18:23:59 EEST; 2h 39min ago
Invocation: c4acd5cd74c44fdca5cbbc233cb75a7d
Main PID: 516 (8th)
Tasks: 4 (limit: 4469)
CPU: 1.093s
CGroup: /system.slice/ohjaus.service
└─516 /opt/8th/bin/rpi64/8th /root/control/control.8th
Apr 13 18:23:59 ohjaus systemd[1]: Started ohjaus.service - Ohjausratkaisut.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.705 Starting up and initializing the Control, control software using the Pörssäri web service.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.765 <update> Trying to read schedules from internal DB.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.765 <update> Valid schedules found from internal DB.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.765 <scheduler> Rebuilding schedules.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.782 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.782 <scheduler> Next scheduled event: 2026-04-13T18:15:00+03:00, channel: 1, state: 0.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.782 <scheduler> Event: channel: 1, state: 0.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.831 <scheduler> Next scheduled event: 2026-04-13T23:45:00+03:00, channel: 1, state: 1.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.891 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Rescheduling.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.892 <scheduler> Next scheduled event: 2026-04-13T21:45:00+03:00, channel: 2, state: 1.
Apr 13 18:24:01 ohjaus 8th[516]: 2026-04-13 18:24:01.899 <update> Next update at: 2026-04-14T14:59:18+03:00.
root@ohjaus:~#