Script til styring af opladnings- og afladningscyklusser på dit bærbare batteri

De, der ved, siger, at for at holde en bærbar computers lithiumbatteri i god stand, skal den være tilsluttet strømmen, når den er ved 40% afladning og afbrudt, når den har 80% opladning.

Mange producenter inkluderer i bios muligheden for at "deaktivere" strømmen til batteriet, når det når en bestemt procentdel, og at udstyret kun bruger strømmen fra det øjeblik, men i mit særlige tilfælde er min Lenovo IdeaPad U510 har ikke den mulighed.

Jeg kender ikke nogen applikationer i Linux, der gør dette på softwareniveau, eller som kun giver os besked, når batteriet når en bestemt%, så jeg besluttede at oprette et lille script, der giver mig besked, når jeg skal tilslutte og afbryde strømmen.

Scriptkrav til kontrol af opladnings- og afladningscyklusser på dit bærbare batteri

Den første ting, vi har brug for, er at have pakken installeret acpi på vores computer. I mit tilfælde, når jeg bruger ArchLinux, skal jeg bare udføre:

$ sudo pacman -S acpi

Hvorfor har vi brug for ACPI? Nå, at kende status for vores batteri. Hvis vi udfører det, returnerer det noget som dette:

leni :: ~ »acpi Batteri 0: Aflades, 76%, 02:20:07 tilbage

Den næste ting er at oprette den fil, der udfører underretningen, i mit tilfælde lægger jeg den inde i mappen ~ / .batteri, og jeg navngav det bat_notification.sh. Indeni sætter jeg følgende:

#!/bin/bash # # -*- KODNING: UTF-8 -*- # Dette program er gratis software. Du kan videredistribuere den og/eller # ændre den i henhold til vilkårene i GNU # General Public License som udgivet af Free Software Foundation, # enten version 2 af denne licens eller (efter din # valgmulighed) enhver senere version. # # Hvis du foretager ændringer i denne applikation, # skal du altid nævne den oprindelige forfatter til den. # # DesdeLinux.net CC-BY-SA 2015 # Forfatter: ELAVdesdelinux.net> # Vi får batteristatus, men kun procentdelen: BATTERI=`acpi | awk '{print $4}'` # Vi sender tilstanden til en tekstfil: echo $BATERIA > tmp_bateria.txt # Vi fjerner unødvendig information fra tekstfilen: RESULT=`cut -c 1-2 tmp_bateria.txt` hvis [ $ RESULTAT -ge 80 ]; derefter notify-send --urgency=kritisk --expire-time=5000 --app-name=Batteri --icon=batteri "Battery Notification" "Afbryd strømmen, tak" elif [ $RESULT -le 40 ]; så notify-send --urgency=kritisk --expire-time=5000 --app-name=Batteri --icon=batteri "Batterimeddelelse" "Tænd venligst for strømmen" else $BATTERY > /dev/null fi

Sådan fungerer scriptet til at kontrollere opladnings- og afladningscyklusser på dit bærbare batteri

Forklaringen på, hvordan det fungerer, er indeni, men jeg forklarer det kort.

Først ved hjælp af akavet Jeg ekstraherer kun procentværdien fra batteriet, som returnerer noget lignende 76%,. Dette resultat overføres til en tekstfil for senere at fjerne unødvendige tegn og kun efterlade den numeriske værdi.

Vi giver de nødvendige tilladelser til filen:

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

Hvordan ArchLinux bruger SystemD og har ikke det gamle crontabjeg jeg installerer cronie. Nu redigerer vi crontab, så scriptet kontrollerer batteristatus hele tiden.

$ crontab -e

Og jeg tilføjer indeni:

# Batterikontrol * * * * * cd /home/elav/.battery/ && ./bat_notification.sh

Og voila, når batteriprocenten er lig med eller mindre end 40% eller er lig med eller større end 80%, får jeg en meddelelse som denne:

Batteribesked

Og dette er alt .. Ethvert bidrag, du vil komme med, forslag til koder og andre, kan du gøre gennem mit arkiv på Bitbucket.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Vågn op sagde han

    Meget god, jeg vil gerne prøve det, men jeg bruger mere end en stationær computer: /
    et spørgsmål, hvor gemmes den midlertidige fil?. Hvis det f.eks. Er hjemme, kan du fremsætte et punkt, så du ikke behøver at se det? 😛

    1.    Elav sagde han

      Nå, i mit tilfælde, da jeg kører scriptet inde i en skjult mappe derhjemme, har jeg ikke det problem. Den midlertidige fil hostes sammen med scriptet .. 😀

  2.   NAM3LØS sagde han

    Scriptet er godt, men jeg har læst om spørgsmålet om batteriet i bærbare computere, og det er stadig ikke klart for mig spørgsmålet om afbrydelse af batteriet eller ikke, når det oplades til 100%.
    Dreng, jeg har været hos en Lenovo i mere end 2 år, og jeg har ingen problemer (banke på træ): v
    Under alle omstændigheder ville det være godt, hvis nogen forklarede, om spørgsmålet om trommer er sandt eller bare en myte.
    Greetings!

    1.    Sort net sagde han

      Jeg har en Dell Inspiron bærbar computer, som nu er i fire år, jeg prøver altid at have den tilsluttet, og batteriet varer stadig omkring en time uden at oprette forbindelse (afhængigt af jobbet selvfølgelig). Jeg synes, det er et glimrende råd, jeg vil prøve at installere det ... Hilsner

  3.   Personale sagde han

    Hvis du har systemd (ingen store bogstaver, en fejl, som jeg også har lavet), kan du bruge timere, og der er ikke behov for at installere tredjepartsapplikationer.

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

    Om batteriet forstår jeg, at lithiumbatteriets eget kredsløb frakobler belastningen, når det når grænsen uden at være afhængig af SO, ellers sikker eksplosion 🙂
    Og hvis jeg til enhver tid kun skal bruge 40% af dets kapacitet for at beskytte batteriets levetid, ville det være det samme som at have et beskadiget batteri.
    Opladeren skal frakobles, når den når 100% eller kort tid før, men kun for at undgå det, der kaldes "stress" på batteriet (start og afslut opladningsprocessen hurtigt og konstant mellem 99% og 100%).

    1.    Elav sagde han

      Nå, jeg ved det ikke rigtig, der er mange forskellige meninger, og jeg ved ikke, hvem jeg skal lytte til.

      1.    regn sagde han

        Nå, det er din pc, brug det, du foretrækker, men det er altid godt at kende forskellige måder at gøre det på

      2.    regn sagde han

        Nå, det er din pc, brug det, du foretrækker, der vil altid være mennesker, der siger, at det er bedre at bruge x ting i stedet for y bla bla bla.

        og i linux er der mange måder at gøre det samme xD

        formålet med alternativer
        en alternativ acpi fra kerne 2.6 for at vide belastningen er:
        cat / sys / class / power_supply / BAT1 / capacity

  4.   regn sagde han

    Der er dem, der kan lide at have alle planlagte opgaver samlet i en enkelt fil. I stedet for at oprette en fil til hver af disse.

    Det virker lidt overdreven for mig xD

    1.    Elav sagde han

      Hvis du mener systemkrona, og det virker heller ikke for stort for mig, det virker som lort på en pind. Hvilken måde at komplicere dit liv på.

  5.   ThecaTony sagde han

    Ideen er meget god, den værdsættes.

    Det ville være nødvendigt at tilpasse scriptet med dataene om batteriopladningen, som regn passerede i kommentarerne, hvilket eliminerer afhængigheden af ​​acpi.
    Hvad jeg finder underligt er, at når de etablerede grænser er overskredet, begynder gentagne meddelelser at komme, ikke? Hvis ja, skal der tilføjes en yderligere kontrol, f.eks .:

    #! / Bin / sh
    BATLVL = $ (cat / sys / class / power_supply / BAT0 / capacity)
    hvis [$ BATLVL -ge 80]; derefter
    hvis [! -a / tmp / batwarn]; derefter
    underret-send –urgency = kritisk –udløbstid = 5000 –app-name = Batteri –ikon = batteri "Batteribesked" "Afbryd den elektriske strøm";
    touch / tmp / batwarn;
    fi
    elif [$ BATLVL -le 40]; derefter
    hvis [! -a / tmp / batwarn]; derefter
    underret-send –urgency = kritisk –udløbstid = 5000 –app-name = Batteri –ikon = batteri "Batteribesked" "Tænd for strømmen"
    touch / tmp / batwarn;
    fi
    andet
    hvis [-a / tmp / batwarn]; derefter
    rm -f / tmp / batwarn;
    fi
    fi

    (Ovenstående blev ikke testet, selvom jeg synes det fungerer ok)

    Skål! "

    1.    Elav sagde han

      Tak for bidraget, jeg prøver det lige nu og jeg siger dig.

  6.   edu sagde han

    Ved nogen, hvordan man styrer og blødgør temperaturen på den bærbare computer? Det er, at temperaturen stiger til mere end 40 grader Celsius og bruger meget mere ressource fra maskinen, når man ser en video på YouTube.

    1.    pep sagde han

      Rengøring af blæseren kan hjælpe, for eksempel med en støvsuger. Tag det fra hinanden til rengøring, og det afhænger af dine færdigheder, og at du er sikker på, hvad du gør.

      Ventilatorbaser er også gode, men hold blæseren så stor som muligt, da den vil bevæge sig mere luft.
      For et par år siden var det umuligt at arbejde med en Dell xps uden basen. Efterhånden som det blev varmere, blev det langsommere og varmere. Med en base med en ventilator fik jeg det til at arbejde meget anstændigt.

      Jeg håber, du finder det nyttigt.

  7.   Gonzalo Martinez sagde han

    Meget godt script!

    Hvad jeg gjorde var at lade det oplade 100, jeg tog det ud og brugte det med jævnstrøm. Batteriet brugte det, når der ikke var strøm i nærheden.

    Nu med Mac kan jeg ikke

  8.   Luciano Lagassa sagde han

    Hej, din idé er meget god, jeg fortæller dig, at jeg havde den samme idé i tankerne, nu begyndte jeg at se dit script og tilpasse og ændre det, så det kun advarer dig, når det svarer. Jeg giver dig resultatet.

    STATUS = acpi | awk '{print $ 3}' NUMBER = acpi | awk '{print $ 4}' | klip -c 1-2 ekko $ STATUS $ NUMBER% hvis ["$ STATUS" == "Afladning", så hvis [$ NUMBER -le 40] så meddel-send --urgency = kritisk --udløbstid = 5000 --app-name = Batteri --icon = batteri "Batteribesked" "Tilslut strøm" fi elif ["$ STATUS" == "Opladning,"] så hvis [$ NUMBER -ge 80] så underret -send --urgency = kritisk --udløbstid = 5000 --app-name = Batteri --ikon = batteri "Batteribesked" "Sluk for strømmen" fi fi
    1.    Elav sagde han

      Fantastisk, skønt jeg på forslag af nogle kommentarer og andre lige nu har det sådan:

      #!/bin/bash # # -*- KODNING: UTF-8 -*- # Dette program er gratis software. Du kan videredistribuere den og/eller # ændre den i henhold til vilkårene i GNU # General Public License som udgivet af Free Software Foundation, # enten version 2 af denne licens eller (efter din # valgmulighed) enhver senere version. # # Hvis du foretager ændringer i denne applikation, # skal du altid nævne den oprindelige forfatter til den. # # DesdeLinux.net CC-BY-SA 2015 # Forfatter: ELAV  
      
      BATLVL = $ (cat / sys / class / power_supply / BAT1 / capacity) hvis [$ BATLVL -ge 80]; så hvis [! -a / tmp / batwarn]; meddel derefter send -urgency = kritisk - udløbstid = 5000 --app-navn = Batteri --ikon = batteri "Batteribesked" "Afbryd strømmen"; touch / tmp / batwarn; elif [$ BATLVL -le 40]; så hvis [! -a / tmp / batwarn]; meddel derefter-send --urgency = kritisk - udløbstid = 5000 --app-name = Batteri --ikon = batteri "Batteribesked" "Tilslut strøm" touch / tmp / batwarn; andet hvis [-a / tmp / batwarn]; derefter rm -f / tmp / batwarn; fi fi fi
      1.    xxxtonixxx sagde han

        Det jeg ikke forstår er behovet for at oprette en tom fil, der ikke gemmer nogen værdi, og det er heller ikke nødvendigt at gemme noget, da det, du undersøger, skal du undersøge på det tidspunkt scriptet udføres og ikke bagefter eller sammenligne værdier eller noget for det stil. Jeg synes, at oprettelse af en fil ikke er den bedste løsning. Skaber du det til at være et kontrolpunkt eller noget, så det ikke kører mere end en gang eller noget lignende?

    2.    Luciano Lagassa sagde han

      Hej, kilden der skete havde nogle fejl, og jeg har den renere, den ser ud til at fungere meget godt.

      STATUS = acpi | awk '{print $ 3}' NUMBER = acpi | awk '{print $ 4}' | klip -c 1-2 hvis expr matcher "$ STATUS" "Afladning", så ekko "Download $ NUMBER%" hvis [$ NUMBER -le 40] så ekko "Tilslut strøm" notify-send --urgency = critical --udløbstid = 5000 --app-name = Batteri --ikon = batteri "Batterimeddelelse" "Tilslut den elektriske strøm" fi elif expr match "$ STATUS" "Oplader" og ekko "Indlæser $ NUMBER% "hvis [$ NUMBER -ge 80] så ekko" Sluk for strømmen "notify-send --urgency = critical --expire-time = 5000 --app-name = Battery --icon = battery" Battery Notification "" Afbryd strømmen venligst "fi fi
  9.   jony127 sagde han

    Hej, hvad du siger er mere en bylegende end noget andet. Jeg købte for nylig en bærbar computer og begyndte at lede efter oplysninger om dette emne, konklusion: Oplad altid batteriet til 100% og aflad det også så meget som muligt, inden jeg oplader det igen.

    Batteriet har x opladningscyklusser for brugstid, og jo mere du oplader det, desto mere reducerer du levetiden.

    Jeg har kontaktet fujitsu og motorola teknisk service, og de fortalte mig begge, hvad jeg sagde ovenfor. Ingen producenter vil anbefale, at du kun oplader batteriet op til 80%, eller at du ikke lader det aflades under x procent, fordi det er forkert, gentager jeg, det er bedst at drage fordel af batteriets fulde kapacitet både i opladning og afladning.

    Hvis du også bruger de grænser, du foreslår, får vi til at oplade batteriet med jævne mellemrum, og det giver heller ikke meget mening, siger jeg?

    Fjern dette script, da batteriet bruges som forklaret ovenfor.

    hilsen

  10.   Armando Fritid sagde han

    Et meget interessant emne, for mig virker meddelelsen meget nyttig, det er en funktion, der kan implementeres i enhver distro.
    Har nogen implementeret det i Linux MInt? det ville være interessant at se, hvordan det fungerede.

    1.    Slimbook Team sagde han

      god,
      Til Linux Mint kan du bruge Ubuntu, du har det her:
      https://slimbook.es/tutoriales/linux/45-script-linux-para-avisar-de-batearia-cargada
      Med venlig hilsen,
      Slimbook Team

  11.   Toño sagde han

    Mand hvad en god blog dette, jeg har lige opdaget det, jeg har testet Ubuntu i cirka 15 dage, og alt virker meget interessant, hurtigt og ... godt, jeg kan virkelig godt lide denne verden, og denne blog af dem, som jeg besøgte, ser ud til for mig, synes jeg, det bedste.

  12.   fredericlinux sagde han

    Nå, pss, jeg oprettede JBattery for et par måneder siden, det er en java-app, der grafisk giver dig mulighed for at gøre det samme, også i sin seneste version giver det dig mulighed for selv at kende batteriets helbredstilstand. de kan kende projektet i

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

    1.    Elav sagde han

      Interessant

  13.   David sagde han

    Jeg har lært flere ting med dit script. Om batterier har du allerede kommenteret flere interessante punkter, men jeg vil skrive ned flere aspekter, som jeg synes er vigtige for batterier. Jeg er glad for radiostyring, de Lipo-batterier, som vi bruger, er mere sarte, men ligner dem, der bruges af lithium i laptops, i vores miljø er vi, og vi skal være meget mere forsigtige med batterier, de er noget mere farlige (LiPo) og de koster os et øje ansigt, så vi er interesserede i at holde dem i god stand.

    1.- Det bør aldrig overbelastes eller overbelastes. Dette styres godt af kredsløbet på din bærbare computer, ellers ville det være usikkert, og producenterne ville have mere end en skræmme og tilbagekaldelse. Derfor slukkes enhver enhed med lithiumbatterier kun, når den har lavt batteriniveau (f.eks. Mobiltelefoner). Når belastningen når 100%, opretholder de en minimal vedligeholdelsesstrøm. (Se på en mobil, når den når 100% varmen reduceres). I moderne bærbare computere tager de strømmen helst fra strømindgangen i stedet for batteriet, når det er tilsluttet, så det bør ikke være et problem at holde det tilsluttet, selvom det er 100%. For at opretholde et godt batterisundhed ville det naturligvis være godt at forhindre, at det slukkes på grund af at have nået minimumet, men 40% ville være overdreven. Jeg tror, ​​at 10-15% ville være nok.

    2.- Varme nedbryder disse batterier meget, det foretrækkes at oplade det og bruge det et køligt sted, det vil sandsynligvis tage dig kortere tid at oplade et køligt sted end et varmt, for ikke at nævne afladning. Problemet er, at bærbare computere bliver ret varme, hvis det lykkes dig at sænke temperaturen, varer det et par minutter mere.

    3.- Jo mere vi reducerer antallet af gange, vi oplader batteriet, jo bedre. Kvalitetsbatterier har en brugstid på ca. 1000 opladningscyklusser eller mere. Hvis du har behandlet det godt, holder det længere, hvis det er blevet behandlet hårdt, reduceres dets levetid tidligere. Læg mærke til, at batteriet på mobiltelefoner eller laptops efter et par år holder mindre og mindre. Hvis vi opkræver fra 20% til 100%, varer det meget længere end 40 til 80%.

    4.- Det interne kredsløb på moderne bærbare computere giver dig mulighed for at konfigurere batteriprofilen, hvis den for det meste er tilsluttet stikkontakten eller i bærbar tilstand. Hvis du vil være tilsluttet til strømmen, skal du konfigurere den metode (desværre kommer producentens software, der gør dette kun til Windows, men det kan muligvis være etableret i BIOS), faktum er, at det i tilsluttet tilstand er, hvad det gør, er at afbryde belastning, når den når 80%, fordi det er sådan, at den bedst vedligeholdes og bevares, når et batteri ikke er i brug. Opladning begynder, når batteriet falder til under 40%. Det er min foretrukne konfiguration, jeg skal bare huske på, at hvis du på et hvilket som helst tidspunkt skal bruge det frakoblet, vil den oprindelige mængde batteri være på 80%. Hvis du sætter det i bærbar tilstand, oplader det det op til 100%, men også hvis jeg husker korrekt, begynder det ikke at oplade det igen, før det falder til under en minimumsværdi (måske mellem 40 og 60%), så du kunne arbejde perfekt tilsluttet med denne tilstand, hvis du normalt bevæger dig meget med den.

    5.- Nuværende teknologi er normalt lithium, så de lider ikke af hukommelseseffekt, de muligheder, der var for mange år siden i bios, der lavede flere opladnings- / afladningscyklusser for at rense eller forsøge at genoprette batteriet, giver ikke længere mening. Det var mere fornuftigt i nikkelcadmium og i mindre grad nikkelmetalhydrid, men ikke i lithium (lithium, life, lipo).

    6. - Hvis du tager højde for hvad der blev sagt i punkt 1 og 3, skal du ikke lade batterierne være afladede i lang tid, da de lidt efter lidt er afladet. Dette script ville være en god måde at advare på, hvis du har den bærbare computer med batteriet i "bærbar tilstand", og du vil lade det være ubrugt i lang tid, så det ideelle ville være at lade batteriet være på omkring 80-85% opladning, da det er, hvordan de bedst holder lasten over tid, og i virkeligheden er det, hvordan den skal ankomme, da du købte den på sin tid.

    Som en note skal du vide, at de sidste 5% (95-100%) af batteriet koster meget mere at oplade, så hvis du har travlt med at gå med det mange gange, er det ikke værd at vente på, at det når 100 % for kun 5%.

    Med venlig hilsen,
    David.

    1.    Elav sagde han

      Fremragende forklaring .. mange tak

  14.   Fabian sagde han

    God eftermiddag Jeg forsøger at redigere dit øgede scrip-antydning med finansieringen af ​​at afspille en lyd som de andre meddelelser, men den spiller ikke den, du kan hjælpe mig ved at fortælle mig, hvad jeg laver forkert.
    eksempel.

    underret-send -h streng: lydfil: /usr/share/sounds/KDE-Sys-Error-Printing.ogg «test »« Dette er en lydunderretningstest »

  15.   Diego sagde han

    Godt…
    Mere end et snit

    RESULTAT =cut -c 1-2 tmp_bateria.txt

    Bør ikke en tr udføres?

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

    Men med snittet, hvis batteriet er på 100, vil det tage det i 10 (-c 1-2), og det vil bede dig om at oprette forbindelse.
    Ah ... svarer jeg mig selv. Når dette script kører, skal du aldrig nå 100 🙂 Som det er tilfældet i øjeblikket med tilsluttet adapter: s
    Tak.

  16.   Mario sagde han

    Hej. Fremragende script, jeg tænker på at gøre noget lignende, men i stedet bruger den elektroniske opladningsregulator, der f.eks. Tager sig af, når batteriet når 100%, holder det op med at sende en opladning og tager energien direkte fra kilden. På en sådan måde, at det f.eks. Vælges at oplade op til 80℅, og når jeg nåede det niveau, stopper controlleren med at sende energi til batteriet og tager kun strømmen fra kilden uden behov for at blive tilsluttet og frakoblet , bruger unødvendige cyklusser og på samme tid, at batteriet altid arbejder i intervaller, der undgår dets for tidlige nedbrydning

  17.   Jose Alberto Chavez Alvarez sagde han

    Undskyld, tror du, du kan få scriptet til at aktivere et relæ for at deaktivere belastningen på den bærbare computer og aktivere det, når det er på et lavt belastningsniveau.