Sähkönkulutuksen ohjaus

Toiminnallinen kuvaus

Ohjauslaite ohjaa sähkönkulutusta pörssisähkön hinnan perusteella. Laite tehdään sulautetulla Linuxilla Raspberry Pi-alustalle. Raspberry Pi on edullinen ja siinä on ohjauslaitteessa tarvittavat liitynnät: verkko ja digitaalinen IO.

Raspberry Pi

Laitteisto

Ohjauslaitteen alustana on Raspberry Pi 2 Model B V1.1. Se ei ole lähellekään uusin malli, mutta niitä nyt vaan sattui olemaan "miljoonalaatikossa" useampikin tarjolla. Siitä puuttuu uudemmissa malleissa oleva langaton verkkoliityntä, mutta sen saa (tarvittaessa) lisättyä USB-porttiin laitettavalla muutaman euron palikalla.

Puhtaalta pöydältä aloitettaessa sopivampi alusta olisi Raspberry Pi Zero 2W, jonka hinta "virallisella" edustajalla näkyy olevan vajaat 20eur. Siihen lisäksi n. 3eur postituskuluja, ei paha hinta.

Raspberry Pi:n IO-portti on 40-pinninen liitin, jonka pinnijärjestys löytyy vaikkapa täältä. IO-portin lähdöt ja tulot ovat 3,3V. Lähtöjen virta riittää hyvin käyttämään etuvastusten kautta pieniä LED:ejä, mutta suurempaa virrantarvetta tai induktiivista kuormaa ei voi kytkeä suoraan lähtöpinneihin. Optoerotin on turvallinen vaihtoehto kuorman kytkentään.

Vielä optoerotintakin turvallisempi vaihtoehto on käyttää sähkön kytkentään kauko-ohjattavaa pistorasiaa. Ainakin Shelly:ltä löytyy wifi-pistorasioita, joissa on dokumentoitu liityntärajapinta. REST-API:n kautta Raspberry Pi pystyy helposti kytkemään pistorasian päälle/pois.

Käyttöjärjestelmä

Raspberry Pi:lle on tarjolla useita vaihtoehtoisia käyttöjärjestelmiä.

Raspberry Pi 2 on 32-bittinen, joten 64-bittinen käyttöjärjestelmä ei käy sille. Ohjauslaitteeseen ei tule näyttöä eikä näppäimistöä vaan sitä hallitaan verkon kautta eli ohjauslaite on tyyppiä "headless". Työpöytä, desktop, on siis tarpeeton ja Raspberry Pi OS Lite on riittävä tähän käyttöön. Valinta on siis: Raspberry Pi OS Lite 32-bit.

Valitun käyttöjärjestelmän asentaminen microSD-kortille onnistuu helpoiten ohjelmalla Raspberry Pi Imager. Ohjauslaitetta hallitaan verkon kautta SSH-yhteydellä, joka pitää ottaa käyttöön Raspberry Pi Imager-ohjelman Advanced options-valikosta.

Ohjelma

Ohjauslaitteen ohjelma tehdään C++:lla, joka on valmiiksi asennettuna Raspberry Pi OS:issä.

Sähkön hintatiedot

Sähkön 48 tunnin hintatiedot haetaan sivuston https://porssisahko.net/ API-rajapinnasta. Jos haku ei onnistu, tehdään seuraavat hakuyritykset minuutin välein.

Sähkön hintatiedot tallennetaan levylle historiatiedoksi.

Ohjelman hallinta

Ohjauslaitteen ohjelmaa hallitaan web-käyttöliittymällä. Käyttöliittymä tehdään Python Flaskilla.

Hallinnan päätoiminnot:

  • Ohjauksen toiminnan seuranta
    • Tila: käynnissä / pysähdyksissä
    • Asetusarvot
    • Lokitiedosto
  • Ohjauksen toiminnan muutos
    • Käynnistys / pysäytys
    • Asetusarvojen muutos
  • Tietoja ohjelmasta

Lähtöjen ohjaus

IO-portin lähtöjä ohjataan "Linux-tyyppisesti" levyjärjestelmän tiedostojen kautta. Huom. Lähdön numero on GPIO-numero, ei pinninumero.

Shellyn pistorasiaa ohjataan verkon kautta REST-API:lla.

Ohjauslähtö ja pistorasia kytketään päälle, kun sähkön hinta on alle asetusarvoissa määritetyn rajahinnan.

Vahtikoira

Ohjauslaitteessa käytetään Linuxin sisäistä vahtikoiraa, joka uudelleenkäynnistää Raspberryn, jos ohjelmakierto on pysähtynyt. Ohjausohjelman käynnistyminen tehdään lisäämällä käynnistyskomento crontab:iin reboot-riville.

Ohjausohjelma kirjoittaa ohjelmakierrossa tiedostoon säännöllisin väliajoin ja vahtikoira seuraa tiedoston päivittymistä. Jos tiedoston viimeisestä päivityksestä on kulunut liian kauan, vahtikoira uudelleenkäynnistää Raspberryn.

Dokumentointi

Ohjelman luokat ja rajapinnat ovat teknisen määrittelyn UML-luokkakaaviossa.

Ohjelman lähdekoodit kommentoidaan Doxygen-muodossa. Lähdekoodeista generoidaan Doxygen-dokumentti.

Versionhallinta

Ohjelman lähdekoodirepositorio on GitHub:issa ja versionhallintaan käytetään Git-ohjelmaa.

Lisensointi

Ohjelman lisenssi on avoimen lähdekoodin GNU GPL.