Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Akunkeston mittaaminen

Jaska [08.12.2015 21:46:09]

#

Vanha otsikko: Saako Pythonilla estettyä virran, vaikka kone olisi latauksessa?

Mietin seuraavaa. Onnistuin tekemään läppärilleni Pythonilla akkutestin, joka kirjoittaa kerran sekunnissa tiedostoon, jos kone on päällä. Mutta tässä tulee ihan pieni epävarmuustekijä kun en välttämättä osaa käynnistää ohjelmaa samaan aikaan kuin otan virtajohdon irti koneesta. Voinko estää jotenkin ohjelmallisesti, että konetta ei ladattaisi, vaikka johto olisi kiinni koneessa? Tässä tähän mennessä kyhäämäni akkutesti:

import time
from time import sleep

print ('Testi alkoi '+str(time.strftime("%H:%M:%S")))
alkuaika = time.time()

print('Tulokset tallennetaan tiedostoon aika.txt')
while True:
    nyt = time.time()
    open('aika.txt','a')
    with open("aika.txt","r") as file:
        lines =  file.readlines()
    with open("aika.txt", "w") as file:
        file.write("Kone ollut paalla: " + str(int(nyt-alkuaika)) + " sekuntia.")
    sleep(1)

Metabolix [08.12.2015 22:15:32]

#

Latautumista ei voi yleensä estää. Joissain koneissa voi Windowsissa olla ajuri, jolla voi pysäyttää latauksen tiettyyn vaiheeseen, mutta yleensä tämä ei silti tarkoita, että akku itsestään kuluisi johdon ollessa kiinni.

Pieni ero siinä, milloin johto irtoaa ja milloin ohjelma käynnistyy, on täysin merkityksetön, koska mittauksessa on paljon suurempia virhetekijöitä. Akun kesto riippuu koneen käytöstä; myös Python-ohjelmasi lisää kulutusta. Tiedostoon kirjoittaminen ei yleensä tapahdu välittömästi, vaan mukana on välimuisti mahdollisesti monellakin tasolla, esim. Pythonissa, tiedostojärjestelmän ajureissa, levyn ajureissa ja fyysisesti levyllä. Jos siis kone tilttaa akun loppumisen takia, dataa voi hävitä sekunteja tai minuuttejakin asetuksista riippuen.

Lisäksi koko kirjoituskoodisi on aika kummallinen: miksi avaat tiedoston silmukassa kolme kertaa, ensin täysin turhaan append-tilassa, sitten täysin turhaan lukemista varten ja lopuksi vasta kirjoittamista varten?

Parempi tapa olisi lähettää data toiselle koneelle, koska silloin data ei vahingossa katoaisi koneen sammuessa ja siirto myös kuluttaisi yleensä vähemmän virtaa kuin kovalevyn käyttö. Siirtoon voisi käyttää esim. UDP-paketteja.

Kun saat edellä mainitut viat ratkaistua, voit miettiä ohjelman käynnistyksen tarkkuutta. Siinä järkevämpi ajatus voisi olla se, että käynnistäisit ohjelman valmiiksi ja ohjelman alussa tunnistaisit, milloin johto irtoaa. Toteutus riippuu käyttöjärjestelmästä; ainakin minulla tieto löytyy tiedostosta /sys/class/power_supply/ADP1/online.

Jaska [08.12.2015 22:45:50]

#

Metabolix kirjoitti:

Jos siis kone tilttaa akun loppumisen takia, dataa voi hävitä sekunteja tai minuuttejakin asetuksista riippuen.

OK. Mutta kuitenkin minuuttien tarkkuus riittäisi siihen, että ei tarvitsisi koko ajan kytätä koneen sammumista, vaan voisin käydä vaikka ruokatunnilla. Ymmärrän, että koetin optimoida väärää asiaa.

Metabolix kirjoitti:

Lisäksi koko kirjoituskoodisi on aika kummallinen: miksi avaat tiedoston silmukassa kolme kertaa, ensin täysin turhaan append-tilassa, sitten täysin turhaan lukemista varten ja lopuksi vasta kirjoittamista varten?

Niinpä. Tein ohjelmaa yrityksen ja erehdyksen kautta. En vain osaa ajatella selkeästi.

Metabolix kirjoitti:

Parempi tapa olisi lähettää data toiselle koneelle, koska silloin data ei vahingossa katoaisi koneen sammuessa ja siirto myös kuluttaisi yleensä vähemmän virtaa kuin kovalevyn käyttö. Siirtoon voisi käyttää esim. UDP-paketteja.

Toki. Taidot ei vaan riitä. Mulla on testattavassa koneessa Windows XP ja toisessa pöytäkoneessa Xubuntu 14.04. Meneekö tämä suoraan ping-komennolla Ubuntussa?

Jaska [09.12.2015 09:59:16]

#

Okei. Päätin mitata akkukestoa seuraavasti:

#!/bin/bash
time (
    while [ true ]; do
        ping -c 1 "$1" > /dev/null || break
        sleep 1
    done
)

Metabolix [09.12.2015 17:32:39]

#

Hienosti keksitty, tosiaan seurannan voi toteuttaa helposti noin päin eli pingaamalla toiselta koneelta. (Itse ajattelin, että tutkittavalta koneelta aktiivisesti lähetettäisiin tietoja.)

Jaska [09.12.2015 18:52:21]

#

Metabolix kirjoitti:

Hienosti keksitty

Vaan eipä ollut oma keksintö, Ask Ubuntusta tuli vastaus.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta