Skripta za kontrolu ciklusa punjenja i pražnjenja baterije vašeg laptopa

Oni koji znaju kažu da bi litijumska baterija laptopa trebala biti u dobrom stanju, mora biti spojena na struju kada je prazna od 40%, a isključena kada ima 80% napunjenosti.

Mnogi proizvođači uključuju u bios opciju da "deaktiviraju" protok struje do baterije kada dostigne određeni postotak i da oprema koristi struju samo od tog trenutka, međutim, u mom konkretnom slučaju, moj Lenovo IdeaPad U510 ne nemam tu mogućnost.

Ne znam ni za jednu aplikaciju u Linuxu koja to radi na nivou softvera ili koja nas obavještava samo kada baterija dosegne određeni%, pa sam odlučila stvoriti malu skriptu koja me obavještava kad se trebam povezati i isključiti snaga.

Zahtjevi za skriptu za kontrolu ciklusa punjenja i pražnjenja baterije vašeg laptopa

Prvo što nam treba je da instaliramo paket acpi na našem računaru. U mom slučaju, dok koristim ArchLinux, jednostavno moram izvršiti:

$ sudo pacman -S acpi

Zašto nam treba ACPI? Pa, da znamo status naše baterije. Ako ga izvršimo, vraća se otprilike ovako:

leni :: ~ »acpi Baterija 0: Pražnjenje, 76%, preostalo 02:20:07

Sljedeća stvar je stvoriti datoteku koja će izvršiti obavijest, u mom slučaju sam je stavio u mapu ~ / .battery, i ja sam ga nazvao bat_notification.sh. Unutra sam stavio sljedeće:

#!/bin/bash
#
# -*- ENCODING: UTF-8 -*-
# Este programa es software libre. Puede redistribuirlo y/o
# modificarlo bajo los términos de la Licencia Pública General
# de GNU según es publicada por la Free Software Foundation,
# bien de la versión 2 de dicha Licencia o bien (según su
# elección) de cualquier versión posterior.
#
# Si usted hace alguna modificación en esta aplicación,
# deberá siempre mencionar al autor original de la misma.
#
# DesdeLinux.net CC-BY-SA 2015
# Autor: ELAV <elav@desdelinux.net> <http://www.systeminside.net>

# Obtenemos el estado de la batería, pero solamente el porciento:
BATERIA=`acpi | awk '{print $4}'`

# Pasamos al estado a un fichero de texto:
echo $BATERIA > tmp_bateria.txt

# Eliminamos información innecesaria del fichero de texto:
RESULTADO=`cut -c 1-2 tmp_bateria.txt`

if [ $RESULTADO -ge 80 ]; then
        notify-send --urgency=critical --expire-time=5000 --app-name=Bateria --icon=battery "Notificacion de Bateria" "Desconecta la corriente eléctrica por favor"
elif [ $RESULTADO -le 40 ]; then
        notify-send --urgency=critical --expire-time=5000 --app-name=Bateria --icon=battery "Notificacion de Bateria" "Conecta la corriente eléctrica por favor"
else
    $BATERIA > /dev/null

fi

Kako skripta radi za kontrolu ciklusa punjenja i pražnjenja baterije vašeg laptopa

Objašnjenje kako to radi je unutra, ali objašnjavam ga ukratko.

Prvo, koristeći wow Iz baterije vadim samo procentualnu vrijednost koja vraća nešto slično 76%,. Ovaj rezultat se prenosi u tekstualnu datoteku kako bi se kasnije eliminirali nepotrebni znakovi, ostavljajući samo numeričku vrijednost.

Dajemo potrebne dozvole datoteci:

$ chmod a+x ~/.bateria/bat_notificacion.sh

Kako ArchLinux koristi SystemD i nema stari crontab, ja ja instaliram cronie. Sada uređujemo crontab tako da skripta cijelo vrijeme provjerava status baterije.

$ crontab -e

I dodajem iznutra:

# Provjera baterije * * * * * cd /home/elav/.battery/ && ./bat_notification.sh

I voila, kada je postotak baterije jednak ili manji od 40% ili je jednak ili veći od 80%, primit ću ovakvu obavijest:

Obavijest o bateriji

I to je to .. Svaki doprinos koji želite dati, prijedloge koda i druge, možete to učiniti putem mog spremišta na Bitbucket.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   probudi se rekao je

    Vrlo dobro, volio bih probati, ali koristim više od stolnog računara: /
    pitanje, gdje se sprema privremena datoteka?. Ako je, na primjer, kod kuće, možete li staviti točku naprijed da je ne biste morali vidjeti? 😛

    1.    živahno rekao je

      Pa, u mom slučaju, budući da skriptu pokrećem unutar skrivene mape kod kuće, nemam taj problem. Privremena datoteka hostirana je zajedno sa skriptom .. 😀

  2.   Nam3less rekao je

    Skripta je dobra, ali čitao sam o problemu baterije u prenosnim računarima i još uvijek mi nije jasno pitanje iskopčavanja ili ne baterije kada je napunjena do 100%.
    Dečko, s Lenovoom sam više od 2 godine i nemam problema (kucanje o drvo): v
    Svejedno, bilo bi dobro kad bi neko objasnio je li pitanje bubnjeva istina ili je to samo mit.
    Pozdrav!

    1.    Black Net rekao je

      Imam laptop Dell Inspiron, koji je sada na četiri godine, trudim se da uvijek bude povezan, a baterija i dalje traje oko sat vremena bez povezivanja (ovisno o poslu naravno). Mislim da je to izvrstan savjet, pokušat ću ga instalirati ... Pozdrav

  3.   osoblje rekao je

    Ako ste systemd (bez velikih slova, greška koju sam i ja napravio) možete koristiti odbrojavanje vremena i nema potrebe za instaliranjem nezavisnih aplikacija.

    https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement

    Što se tiče baterije, razumijem da vlastiti sklop litijumske baterije isključuje opterećenje kada dostigne ograničenje, bez ovisno o SO, inače sigurnoj eksploziji 🙂
    A ako za zaštitu vijeka trajanja baterije stalno moram koristiti samo 40% njenog kapaciteta, to bi bilo isto kao da imam oštećenu bateriju.
    Punjač treba isključiti kada dostigne 100% ili malo prije, ali samo kako bi se izbjeglo ono što je poznato kao "naprezanje" baterije (započinjanje i završavanje postupka punjenja brzo i stalno između 99% i 100%).

    1.    živahno rekao je

      Pa, zapravo ne znam, postoji mnogo različitih mišljenja i ne znam koga bih slušao.

      1.    kiša rekao je

        Pa, to je vaš računar, koristite ono što više volite, ali uvijek je dobro znati različite načine kako to učiniti 🙂

      2.    kiša rekao je

        Pa, to je vaš računar, koristite ono što više volite, uvijek će biti ljudi koji će reći da je bolje koristiti x stvari umjesto y bla bla bla.

        a u linuxu postoji mnogo načina da se učini isti xD

        svrha alternativa
        alternativni acpi iz kernela 2.6 da bismo znali da je opterećenje:
        cat / sys / class / power_supply / BAT1 / kapacitet

  4.   kiša rekao je

    Postoje oni koji vole da se svi planirani zadaci objedine u jednu datoteku. Umjesto stvaranja datoteke za svaku od njih.

    Čini mi se malo pretjeranim xD

    1.    živahno rekao je

      Ako mislite na systemd cron a, ne čini mi se pretjeranim, čini mi se kao sranje na štapu. Kakav način da si zakomplicirate život.

  5.   ThecaTony rekao je

    Ideja je vrlo dobra, cijenjena je.

    Bilo bi potrebno prilagoditi skriptu podacima o napunjenosti baterije koja je kiša prolazila u komentarima, uklanjajući ovisnost o acpi.
    Ono što mi se čini čudnim je da nakon što prođu utvrđena ograničenja, ponavljana obavještenja počinju pristizati, zar ne? Ako je tako, treba dodati dodatnu kontrolu, npr:

    #! / bin / sh
    BATLVL = $ (mačka / sys / klasa / napajanje / BAT0 / kapacitet)
    ako [$ BATLVL -ge 80]; onda
    ako [! -a / tmp / batwarn]; onda
    notify-send –urgency = kritično –expire-time = 5000 –app-name = Battery -icon = battery "Obavijest o bateriji" "Molimo isključite električnu struju";
    dodir / tmp / batwarn;
    fi
    elif [$ BATLVL -le 40]; onda
    ako [! -a / tmp / batwarn]; onda
    notify-send –urgency = kritično –expire-time = 5000 –app-name = Battery –icon = battery "Obavijest o bateriji" "Uključite napajanje"
    dodir / tmp / batwarn;
    fi
    drugo
    ako je [-a / tmp / batwarn]; onda
    rm -f / tmp / batwarn;
    fi
    fi

    (Gore navedeno nije testirano, iako bih mislio da to u redu)

    Pozdrav! "

    1.    živahno rekao je

      Zahvaljujem na doprinosu, pokušavam odmah i kažem vam.

  6.   edu rekao je

    Zna li neko kako kontrolirati i omekšati temperaturu laptopa? To je da se temperatura povisi na više od 40 Celzijevih stupnjeva i troši mnogo više resursa iz mašine prilikom gledanja videozapisa na YouTubeu.

    1.    pep rekao je

      Čišćenje ventilatora može vam pomoći, na primjer usisavačem. Odvojite ga za čišćenje, a to ovisi o vašim vještinama i tome jeste li sigurni u ono što radite.

      Podnožja ventilatora su također dobra, ali neka ventilator bude što veći jer će pomicati više zraka.
      Prije nekoliko godina, uz dell xps, bez baze nije bilo moguće raditi. Kako je postajalo vruće, postajalo je sve sporije i vruće. Sa bazom s ventilatorom uspio sam da funkcioniše vrlo pristojno.

      Nadam se da će vam biti korisno.

  7.   Gonzalo Martinez rekao je

    Vrlo dobar scenarij!

    Ono što sam učinio bilo je da se napuni 100, izvadio sam ga i koristio istosmjernom strujom. Baterija ga je koristila kada u blizini nije bilo struje.

    Sada sa Macom ne mogu

  8.   Luciano Lagassa rekao je

    Pozdrav, vaša ideja je vrlo dobra, kažem vam da sam i ja imao istu ideju na umu, sada sam počeo vidjeti vašu skriptu i prilagoditi je i izmijeniti tako da vas upozori samo kada odgovara. Predajem vam rezultat.

    STATUS = acpi | awk '{ispis $ 3}' BROJ = acpi | awk '{ispis $ 4}' | cut -c 1-2 echo $ STATUS $ NUMBER% if ["$ STATUS" == "Pražnjenje,"] onda ako [$ NUMBER -le 40] tada notify-send --urgency = kritično --expire-time = 5000 --app-name = Battery --icon = battery "Obavijest o bateriji" "Priključite napajanje" fi elif ["$ STATUS" == "Punjenje,"], pa ako [$ NUMBER -ge 80] tada obavijestite -send - hitnost = kritično --expire-time = 5000 --app-name = Battery --icon = battery "Obavijest o bateriji" "Isključite napajanje" fi fi
    1.    živahno rekao je

      Odlično, iako na prijedlog nekih komentara i drugih, trenutno ga imam ovako:

      #!/bin/bash
      #
      # -*- ENCODING: UTF-8 -*-
      # Este programa es software libre. Puede redistribuirlo y/o
      # modificarlo bajo los términos de la Licencia Pública General
      # de GNU según es publicada por la Free Software Foundation,
      # bien de la versión 2 de dicha Licencia o bien (según su
      # elección) de cualquier versión posterior.
      #
      # Si usted hace alguna modificación en esta aplicación,
      # deberá siempre mencionar al autor original de la misma.
      #
      # DesdeLinux.net CC-BY-SA 2015
      # Autor: ELAV  
      
      BATLVL = $ (cat / sys / class / power_supply / BAT1 / capacity) ako je [$ BATLVL -ge 80]; onda ako [! -a / tmp / batwarn]; zatim notify-send --urgency = kritično --expire-time = 5000 --app-name = Battery --icon = battery "Obavijest o bateriji" "Molimo isključite napajanje"; dodir / tmp / batwarn; elif [$ BATLVL -le 40]; onda ako [! -a / tmp / batwarn]; zatim notify-send --urgency = kritično --expire-time = 5000 --app-name = Battery --icon = battery "Obavijest o bateriji" "Molimo priključite napajanje" touch / tmp / batwarn; fi else if [-a / tmp / batwarn]; zatim rm -f / tmp / batwarn; fi fi fi
      1.    xxxtonixxx rekao je

        Ono što ne razumijem je potreba za stvaranjem prazne datoteke koja ne pohranjuje nikakvu vrijednost niti je potrebno pohranjivati ​​bilo što, jer ono što ispitujete trebate ispitati u vrijeme izvršenja skripte, a ne nakon toga ili upoređivati ​​vrijednosti ili bilo šta za taj stil. Mislim da stvaranje datoteke nije najbolja opcija. Stvarate li ga da bude kontrolna točka ili nešto slično da se neće pokretati više puta ili slično?

    2.    Luciano Lagassa rekao je

      Pozdrav, izvor koji se dogodio imao je neke greške i čini mi se čišćim, čini se da radi vrlo dobro.

      STATUS = acpi | awk '{ispis $ 3}' BROJ = acpi | awk '{ispis $ 4}' | cut -c 1-2 ako se expr podudara sa "$ STATUS" "Pražnjenje", a zatim eho "Preuzimanje $ NUMBER%" ako [$ NUMBER -le 40] onda eho "Molimo priključite napajanje" notify-send --urgency = kritično - expire-time = 5000 --app-name = Battery --icon = battery "Obavijest o bateriji" "Priključite električnu struju" fi elif expr match "$ STATUS" "Punjenje", a zatim eho "Učitavanje $ NUMBER%" ako [$ BROJ -ge 80], a zatim odjeknite "Molimo isključite napajanje" notify-send --urgency = kritični --expire-time = 5000 --app-name = Battery --icon = battery "Battery Notification" "Isključite struju, molim "fi fi
  9.   jony127 rekao je

    Pozdrav, ovo što govorite više je urbana legenda nego bilo što drugo. Nedavno sam kupio laptop i počeo tražiti informacije o ovoj temi, zaključak: uvijek napunite bateriju do 100% i isto tako je ispraznite što je više moguće prije ponovnog punjenja.

    Baterija ima x korisnih ciklusa punjenja, stoga, što je više punite, to više smanjujete taj vijek trajanja.

    Kontaktirao sam tehničku službu kompanije fujitsu i motorola i obojica su mi rekli ono što sam rekao gore. Nijedan proizvođač neće preporučiti da bateriju punite samo do 80% ili da joj ne dopustite da se isprazni ispod x posto jer je to pogrešno, ponavljam, najbolje je iskoristiti puni kapacitet baterije i napunjenog i napunjenog pražnjenje.

    Takođe bi upotreba ograničenja koja predlažete dovela do toga da moramo puniti bateriju svako toliko, a ni to nema previše smisla, kažem?

    Uklonite tu skriptu jer se baterija koristi kako je gore objašnjeno.

    Saludos

  10.   Armando Slobodno vrijeme rekao je

    Vrlo zanimljiva tema, za mene se obavijest čini vrlo korisnom, to je funkcija koja se može implementirati u bilo kojem distro-u.
    Je li ga netko implementirao u Linux MInt? bilo bi zanimljivo vidjeti kako je to funkcionisalo.

    1.    Slimbook Team rekao je

      Dobro,
      Za Linux Mint možete koristiti Ubuntu, imate ga ovdje:
      https://slimbook.es/tutoriales/linux/45-script-linux-para-avisar-de-batearia-cargada
      Srdačan pozdrav,
      Slimbook Team

  11.   Tone rekao je

    Čovječe kakav je ovo dobar blog, upravo sam ga otkrio, testiram Ubuntu oko 15 dana i sve mi se čini vrlo zanimljivo, brzo i ... pa, stvarno mi se sviđa ovaj svijet, a čini mi se i ovaj blog onih koje sam posjetio za mene, mislim, najbolje.

  12.   fredericlinux rekao je

    Pa, stvorio sam JBattery prije nekoliko mjeseci, to je java aplikacija koja grafički omogućava da to učinite, također u svojoj najnovijoj verziji omogućava vam da znate čak i zdravstveno stanje baterije. oni mogu znati projekat u

    http://niconsystem.zz.mu/proyectos/jbattery

    1.    živahno rekao je

      zanimljiv

  13.   David rekao je

    Naučio sam nekoliko stvari s vašim scenarijem. U vezi s baterijama već ste komentirali nekoliko zanimljivih stvari, ali zabilježit ću nekoliko aspekata koje smatram važnima u vezi s baterijama. Volim radio kontrolu, Lipo baterije koje koristimo su osjetljivije, ali vrlo slične onima od litijuma koje se koriste u prijenosnim računalima, u našem okruženju jesmo i moramo biti mnogo oprezniji prema baterijama, one su nešto opasnije (LiPo) i koštaju nas oka, pa smo zainteresirani da ih održimo u dobrom stanju.

    1.- Nikada ne smije biti preopterećen ili preopterećen. Ovo dobro kontrolira sklop vašeg laptopa, inače ne bi bilo sigurno, a proizvođači bi imali više od jednog straha i opoziva. Zbog toga se bilo koji uređaj s litijumskim baterijama isključuje samo kada ima slabu bateriju (na primjer, mobilni telefoni). Kada opterećenje dostigne 100%, održavaju minimalnu struju održavanja. (Gledajte na mobitel kad se dosegne 100% toplina se smanjuje). U modernim prijenosnim računalima struju po mogućnosti uzimaju iz ulazne energije umjesto iz baterije kada je priključena, pa ne bi trebao predstavljati problem držati je uključenom čak i ako je na 100%. Naravno, za održavanje dobrog stanja baterije bilo bi dobro spriječiti njegovo isključivanje zbog dostizanja minimuma, ali 40% bi bilo pretjerano. Mislim da bi bilo dovoljno 10-15%.

    2.- Toplina jako razgrađuje ove baterije, poželjno je napuniti je i koristiti na hladnom mjestu, vjerojatno će vam trebati manje vremena za punjenje na hladnom mjestu nego na vrućem, a o pražnjenju da i ne govorimo. Problem je u tome što se prijenosnici prilično zagriju, ako uspijete smanjiti temperaturu, to će potrajati još nekoliko minuta.

    3.- Što više smanjimo broj punjenja baterije, to bolje. Kvalitetne baterije imaju vijek trajanja otprilike 1000 ciklusa punjenja ili više. Ako ste se dobro odnosili prema njemu, trajaće duže, ako se prema njemu postupalo grubo, korisni vijek trajanja će se smanjiti ranije. Primijetite kako nakon nekoliko godina baterija mobilnih telefona ili laptopa traje sve manje i manje. Ako naplaćujemo od 20% do 100%, trajat će mnogo duže od 40 do 80%.

    4.- Interni sklop modernih prenosnih računara omogućava vam konfiguriranje profila upotrebe baterije, ako je uglavnom povezan na utičnicu ili u režimu laptopa. Ako ćete se povezati s trenutnom, konfigurirajte tu metodu (nažalost proizvođački softver koji to radi dolazi samo za Windows, ali to može biti uspostavljeno u BIOS-u), činjenica je da u priključenom načinu odspaja opterećenja kada dostigne 80%, jer se tako najbolje održava i čuva kada baterija nije u upotrebi. Punjenje započinje kad baterija padne ispod 40%. To je moja preferirana konfiguracija, samo moram imati na umu da ako je u bilo kojem trenutku trebate koristiti isključenu, početna količina baterije bit će 80%. Ako ga stavite u prijenosni način rada, napunit će ga do 100%, ali ako se dobro sjećam, neće ga početi puniti sve dok ne padne ispod minimalne vrijednosti (možda između 40 i 60%), tako da biste mogli savršeno raditi priključen na ovaj način ako se obično puno krećete s njim.

    5. - Trenutna tehnologija je obično litijum, tako da oni ne pate od memorijskog efekta, one opcije koje su prije mnogo godina u bios napravljene nekoliko ciklusa punjenja / pražnjenja za čišćenje ili pokušaj oporavka baterije više nemaju smisla. To je imalo više smisla u nikl-kadmijumu i u manjoj mjeri niklo-metal-hidridom, ali ne i u litiju (litij, život, lipo).

    6.- Ako uzmete u obzir ono što je rečeno u tačkama 1 i 3, baterije ne ostavljajte prazne dugo, jer se malo po malo prazne. Ova skripta bila bi dobar način da upozorite ako imate laptop sa baterijom u "načinu rada za laptop" i ostavit ćete ga dugo neiskorištenim, pa bi idealno bilo da bateriju ostavite na oko 80-85% napunite, jer je kako najbolje zadržavaju teret s vremenom, a u stvarnosti tako treba stići kad ste ga kupili u njegovo vrijeme.

    Kao napomenu, znajte da posljednjih 5% (95-100%) baterije košta puno više punjenja, pa ako se žurite s njom više puta, neće biti vrijedno čekati da dosegne 100 % za samo 5%.

    Srdačan pozdrav,
    David.

    1.    živahno rekao je

      Izvrsno objašnjenje .. veliko hvala

  14.   Fabian rekao je

    Dobar dan, pokušavam urediti vašu skriptu povećavajući nagovještaj o financiranju puštanja zvuka poput ostalih obavijesti, ali ne pušta ga, možete mi pomoći tako što ćete mi reći što radim pogrešno.
    primjer.

    notify-send -h string: zvučna datoteka: /usr/share/sounds/KDE-Sys-Error-Printing.ogg «test »« Ovo je test zvučnog obaveštavanja »

  15.   Diego rekao je

    Dobro ...
    Više od reza

    REZULTAT =cut -c 1-2 tmp_bateria.txt

    Ne bi li trebalo uraditi tr?

    REZULTAT =tr "%," " " < tmp_bateria.txt

    Ali s rezom, ako je baterija na 100, trebat će joj 10 (-c 1-2) i tražit će od vas da se povežete.
    Ah ... odgovaram sebi. Sa ovom skriptom koja se izvodi nikada ne biste trebali doseći 100 🙂 Kao što je to moj slučaj trenutno sa povezanim adapterom: str
    Hvala.

  16.   Mario rekao je

    Zdravo. Izvrsna skripta, razmišljam učiniti nešto slično, ali umjesto toga upotrijebite elektronički kontroler punjenja koji se brine, na primjer, kada baterija dosegne 100%, prestaje joj slati punjenje i energiju uzima izravno iz izvora. Na takav način da je, na primjer, odabrano punjenje do 80℅, a kada dostignem taj nivo, kontroler prestaje slati energiju u bateriju i uzima samo struju iz izvora, bez potrebe za spajanjem i odvajanjem , trošeći nepotrebno cikluse, a istovremeno da baterija uvijek radi u opsezima koji izbjegavaju njezinu prevremenu propadanje

  17.   Jose Alberto Chavez Alvarez rekao je

    Žao nam je, mislite li da možete napraviti da skripta može aktivirati relej za deaktiviranje opterećenja laptopa i aktiviranje kada je na niskom nivou opterećenja.