Varasto- ja työskentelytilan lämmitysautomaatio (kryptolouhinnalla)

Viime aikoina sähkön hinta on päässyt aiheellisesti otsikoihin suuruutensa vuoksi. Samoin mm. Bitcoinin ja Ethereumin teollisen louhintatoiminnan iso energian käyttö ja siten halvimmalla sähköä tehden suuret päästöt.

Uusi iso hallitilani tietenkin lämmitetään suoralla sähköllä, joten kaikki keinot sähkölaskun pienentämiseksi on syytä ottaa käyttöön. Hallitilan vuokrasopimuksessa on edellytetty vähintään +8°C peruslämpöä omista sähköistä. Onnekseni halli on myöskin rakennuksen aurinkoisella puolella, joten jonkin verran lämpöä tulee tuolta isommasta ydinvoimalasta taivaalta ilmaiseksi valoisina pakkaspäivinäkin.

Koska varastohallia käytetään myös työskentelytilana erilaisiin tarpeisiin, on syytä pitää tilan lämmitys hieman pienintä sallittua peruslämpöä korkeammalla tasolla. Nopeasti käytössä kertynyt kokemus kertoo noin +12°C olevan oikein hyvä peruslämpö. Tuohon voi helposti sallia parin asteen pudotuksen energian säästön tarpeen kohdatessa. Ja vastaavasti oikein halvan sähkön päivinä voi nostaa lämpöä muutaman asteen, jotta sitä riittää rakenteisiin ja tilan tavaroiden massoihin varastoituneena jopa useamman päivän ajan.

Lähtötilanteessa hallussani oli jo entuudestaan asuntomme ulkovarastoon hankittu Antminer S9i ASIC-louhintalaite (hankintahinta tammikuussa 2021 oli ~500€) ja siihen 1800W LC-Power LC1800 V2.31 Mining BTC Edition virtalähde (hintaluokka ~200€). Hankinta ei ehtinyt maksaa itseään takaisin kodin ulkovarastossa menneen vuoden aikana, mutta uuden isomman lämmitettävän varastotilan myötä voin siirtää kaiken lämmitystarpeen tähän isompaan varastoon ja myöskin käyttää laitteita huomattavasti paremmalla hyötysuhteella. Siirrettyäni lämmitetyn varastotilan uuteen halliin saatoin sulkea ulkovarastomme lämmityksen ja huomata melko pian säästäväni sähköä 15-30kWh/vrk.

Vihreänä tekijänä mainittakoon: lähes koko laitteiston hinta on maksettu Valoe Oyj osakkeiden luovutusvoitoilla. Siten tämäkin hankinta on tehty CO2-kompensoituna rahalla, joka on välillisesti vähentänyt päästöjä ja tulee jatkossakin vähentämään niitä saman käyttöenergian ollessa joka tapauksessa tarpeen.

Aloitin säätämällä sähköpatterin ja lattialämmityksen termostaatit +5°C pakkasvahdeiksi. Tässä vaiheessa tilan ensisijainen lämmitysmuoto muuttui puhtaasti kryptolouhinnaksi ja kiinteästi asennetut suoran sähkölämmityksen vastukset ovat vain varmistamassa ettei mahdollinen laiterikko aiheuta tilassa tuhoja.

Käytettävissä oleva tehon säätöalue on tällä yhdistelmällä min. 378W – max. 1705W, jota rajoittaa virtalähteen 12V lähtöjen suurin sallittu kuorma 1705W ja ASIC-korttien matalin toimintapiste (3 korttia x 63 sirua x 2W = 378W). Havaitsin nopeasti Antminer S9:n ASIC-piirien (Bitmain BM1387 16nm FinFET) hyötysuhteen laskevan molemmissa tehosäädön ääripäissä. Täytyy vielä yrittää löytää ne parhaat teho-ohjauksen luvut. Näyttäisi siltä, että pohjalukemana on pidettävä 378W (jaollinen piirien määrällä, kullekin tasan 2W). Toistaiseksi on varmennettu 80°C ASIC-piirin lämpötilan tavoitteella saavutettavan pienimmällä 378W teholla 86-87W/TH (BTC), tasan 400W tehosäädöllä 110-120W/TH ja 478W teholla noin 86W/TH hyötysuhde. Tasan 600W, 800W tai 1000W asetuksilla on aikaisemmin saavutettu 79-80W/TH, mutta esimerkiksi 978W ja 1078W on jäänyt noin 83-84W/TH tasolle. Aikaa myöten louhintalaitteeseen asennettu ohjelma tekee hienosäätöjä, joten luvut voisivat vielä parantua parhaalle tasolle. Asioiden yksinkertaistamiseksi siirryin kuitenkin käyttämään 400 – 1700W skaalaa tasan 100W välein, koska ohjelman parhaan hyötysuhteen minimitehon etsivä osuuskin käyttää normaalisti 100W askeleita muutoksissa ja vakiona 800W minimiarvoa. Pyrin täten pitämään säätöarvot ensisijaisesti 500-1000W, pienin poikkeuksin.

Oma Bitcoin-louhintaa tekevä Antminer S9-laitteeni on asennettu Braiins OS+ avulla helposti etähallittavaksi ja hyötysuhteeltaan alkuperäistä tehtaan firmwarea paremmaksi (piirikohtainen auto tune säätää kutakin 189 ASIC-piiriä erikseen). Kun käytän Slush Poolia, saan tuolla ohjelmistollaan vielä pienen bonuksen (eli 0% Pool Fee).

Ohjaukseen käytän virtualisoitua Linux-palvelinta (laitteessa joka olisi joka tapauksessa päällä 24/7). Se tarkistaa ennalta määritellyin välein tietyt parametrit ja säätää itse ohjelmoimallani skriptikielisellä koodin pätkällä (yli 100 riviä toiminnallista koodia) louhintalaitteen tehoa tai jopa sammuttaa sen kokonaan, jos sähkö on liian kallista ja lämpöä riittävästi. Tilan lähiverkko on yhdistetty ”firman verkkoon” omilla laitteilla ja ohjaus menee täten salattuna liikenteenä tunnelissa laitteiden välillä. Varsinaiset ohjauksen ”aivot” ovat kotonani sijaitsevassa reitityspisteessä.

Ensimmäisen noin vuoden (jolloin lämmitys tapahtui kodin ulkovarastossa) käytössäni oli yksinkertaisempi ohjelmointi, joka aluksi tarkisti vain Ilmatieteen laitoksen Avoin data -alustan tiedoista paikallisen ulkolämpötilan ja vertaili kryptolouhijan käyttötilaa ulkolämpöön (pyrkien siten havaitsemaan tehon lisäämisen tai vähentämisen tarpeen laitteen sisäisestä lämpötilasta eri toimintapisteissään). Myöhemmässä vaiheessa kodin ulkovaraston ohjaukseen tuli TM_Mikrotik thermometer for Mikrotik RouterBOARDs, sillä ulkovaraston reititinlaitekin oli sarjaportilla varustettu RouterBOARD (aluksi RB450G ja sittemmin laiterikon jälkeen vanha uskollinen RB1200). Kyseinen sarjaporttiin kytkettävä lämpömittari toimii toki muissakin ympäristöissä joissa sarjaportista voi kuunnella tietoa. Näitä sarjaporttiin jatkuvasti lämpötilaa huutelevia anturilaitteita voi tilata Suomessa ComTechiltä. Suosittelen.

Uusissa tiloissa on nyt aikaisemmasta kotimme kiinteähintaisesta sopimuksesta poiketen sähköpörssin Spot-hinnoittelu (Helen Pörssisähkö/Caruna spotsähkö), joten enää säätö pelkän sisälämpötilan ja ulkolämpötilan perusteella ei ole mielekästä. Etenkään näin kalleimman sähkön hinnan aikoihin. Samalla lämmitysautomaationi minimaalinen rooli säätökuormana sähköverkolle korostuu, sillä hintoihin heijastuu todellinen kotimaisen sähköenergian puute tai ylituotanto. Markkinat ohjaa kulutusta pois energiavajeen ajalta kohden ylitarjontaa.

Avuksi tarvittiin uusi API-rajapinta, josta saadaan spot-hintatiedot. Tällaisen rajapinnan tarjoaa rekisteröitymällä pyynnöstä käyttöön mm. ENTSO-E Transparency Platform, joka on yleiseurooppalainen energian myynnin avoin data-palvelu. Haluttu spot-hinta on nimellä ”Day-ahead price”. Huomattavaa, että tämän hetken hinnan saadakseen on haettava myös eilisen hintatiedot. Muussa tapauksessa päivän ensimmäinen tunti 00-01 jää puuttumaan syystä x. Tähän tarkoitukseen on olemassa myös GitHubissa Øystein Jakobsenin projekti fetch-day-ahead-price.

Asian voisi varmasti tehdä nätimmin, hienommin, paremmin…mutta omaan tarpeeseeni riittää oheinen koodi: paiva=$(date +%4Y%m%d)
eilinenpaiva=$(date –date=”yesterday” +%4Y%m%d)
aika=$(date +%H|sed ’s/^0*//g’)
dataurli=”https://transparency.entsoe.eu/api?securityToken=”$apitoken”&documentType=A44&in_Domain=10
YFI-1——–U&out_Domain=10YFI-1——–U&periodStart=”$eilinenpaiva”0000&periodEnd=”$paiva”2300″curl ”$dataurli” -o /tmp/spothinta.xml &>/dev/null

tunti=$((aika+24))

spotmwh=$(grep -i ”price.amount” /tmp/spothinta.xml|head -n ”$tunti”|tail -n 1|sed ’s/
//g’|sed ’s/<\/price.amount>//g’|sed ’s/^[[:space:]]*//g’|awk -F’.’ ’{print $1}’)

Näinpä muutamia kymmeniä rivejä paranneltua koodia myöhemmin skriptikielinen ohjelmointini osaa säätää lämmöntuottoa sähkön hinnasta, ulko- ja sisälämpötilasta ja näiden välillä dynaamisesti muuttuvasta sisälämmön tavoitelämpötilasta/sähkön käytön raja-arvoista riippuen.

Lokiin tallentuu paitsi laskennassa käytetyt parametrit, myös sähkösopimukseni mukainen sähkön hintatieto auki laskettuna kulloinkin käyttöön otetulle tehosäätöarvolle.

Ohessa hieman logiikan perusperiaatteita (hinnat spot-hintoja):

  • sähkön hinta jaetaan neljään tasoon: halpa, edullinen, kohtuullinen ja kallis hinta (esim. <2, <5, <6 ja 6+ c/kWh)
    • sisälämpötilan tavoitearvo liukuu suhteessa sähkön hintaan (esim. 12-18°C)
    • sallittu käyttötehoalue määräytyy hintaportaan mukaan (esim. 0 / 400-1000W)
    • tehosäädön käyttäytyminen määräytyy hintaportaittain
      • mikä on minimiteho tai tuleeko louhinta lopettaa kokonaan tavoitelämmössä
      • kuinka aggressiivisesti tehoa nostetaan tai lasketaan
      • mikä on seuraavan tunnin hinta (jos halvempi, käytetään korkeamman hintaportaan asetuksia)
  • poikkeustilanteet
    • sisälämmön ”hälytysraja” +8°C käynnistää sähkön hinnasta riippuvan tehokkaamman pikalämmityksen
    • jos seuraava tunti on kuluvaa halvempi, siirretään korkeampaa lämmitystehoa tuonnemmaksi
      • mutta vain jos hinta ei ole alle halvan rajan
    • jos ulkona on runsaasti pakkasta (-15°C tai kovempi pakkanen), maksimitehoa nostetaan ennakoivasti
      • mutta vain jos sähkö on halpaa tai edullista
      • tässäkin huomioidaan myös seuraavan tunnin hinta ennakoivasti
    • jos louhinta aloitetaan uudelleen, kovemmilla pakkasilla aloitetaan suoraan hieman korkeammalla teholla
      • em. seuraavan tunnin hinnan huomioiden
    • laitteen suojaamiseksi tehon säätöä rajoitetaan mikäli ASIC-piirikorttien lämpö on jatkuvasti korkea
      • parantaa myöskin hyötysuhdetta (käyttölämpötila-alueen tavoite noin 80°C, pudotusraja 90°C)

Tavoitteena on saada kryptovaluuttojen louhinta kattamaan tuloina puolet sähkölaskusta. Louhinta on kuitenkin siinä määrin arpapeliä, että läheskään joka arpa ei voita. Joinakin päivinä korkean pooliin osuu useita blokkeja halvan sähkön aikana ja toisina päivinä on koko päivän louhinta sammutettuna kalliin sähkön vuoksi, jolloin sinä aikana menee kaikki hyvä ohi, mutta vaihtoehtoisena riskinä olisi tehdä turhaa työtä koko päivä kalliiseen hintaan.

Eco- ja ekologisesta lähtökohdasta tämä säätötapa on hyvinkin vihreää Bitcoin-louhintaa ja parhaimmillaan hieman nykyaikaisemmalla louhintalaitteella saataisiin huomattava hyöty. Valitettavasti budjetti ei tässä vaiheessa riitä hyötysuhteen nostamiseksi (siihen tarvittaisiin tuoreempaa 5-7nm tekniikkaa kuten Antminer S17 tai S19).

Seuraavana tavoitteena voisi olla sen verran tehokkaampi ja paremman hyötysuhteen laite tai useampi laite, että edullisen sähkön aikana voisi nostaa helposti&nopeasti lämpötilan 16-20°C kryptovaluuttojen louhintateholla. Tilan sähköliityntä rajoittaa kuitenkin laitteiden määrän enimmillään kolmeen, jotta sähköä riittää muuhunkin.

Lahjoituksiakin otan mielellään vastaan. Jos saisin vaikka Antminer S19 kaltaisen laitteen vielä joskus hallilämmittimeksi. Ohessa lyhyt listaus kryptovaluuttaosoitteista joihin voi tarjota auttavaa kättä vihreämmän louhinnan ekosysteemin tulevaisuudelle ja ainakin tässä vaiheessa harrastustoimintana tapahtuvalle jatkokehittelylle:

  • Bitcoin (BTC) lahjoitukset: 3KE8GF85y32faR1X5LMD6cAFjTLasqfc4H
  • DAI lahjoitukset 0x2704b1d86E73bC801d2f2A791649e5B0735c59Ad
  • Zcash (ZEC) lahjoitukset: t1M4xpfzEDiJQL8ft4RZhagrL3JomoE8mdD
  • Bitcoin Cash (BCH) lahjoitukset: 1MXxyAXSZSCWDJEFv3LvENTYZAvZJ49Be1
  • Ethereum (ETH) lahjoitukset: 0x8d1a72ec06195648b887Ab06f56E0b36Df1E9d92
  • DOGE coin lahjoitukset: DSk6K3x1aPV8JqrHYc1LNzYQdmyBE7sWuR
  • USD Coin (USDC) lahjoitukset: 0x66F889E0df4ba196C6141fB5fa4831465eF8fBE3
  • Yksisarviset eli Uniswap (UNI) lahjoitukset: 0x9e02Cf4137dF738f5fC68Fd3053942242F0412Ed