Script om de laad- en ontlaadcycli van uw laptopbatterij te regelen

Degenen die het weten, zeggen dat om de lithiumbatterij van een laptop in goede staat te houden, deze moet worden aangesloten op de stroom wanneer deze voor 40% is ontladen en losgekoppeld wanneer deze voor 80% is opgeladen.

Veel fabrikanten nemen in de bios de optie op om de stroomstroom naar de batterij te 'deactiveren' wanneer deze een bepaald percentage bereikt, en dat de apparatuur alleen de stroom vanaf dat moment gebruikt, maar in mijn specifieke geval doet mijn Lenovo IdeaPad U510 dat niet die optie heb ik niet.

Ik ken geen enkele toepassing in Linux die dit op Softwareniveau doet, of die ons alleen op de hoogte stelt wanneer de batterij een bepaald percentage bereikt, dus besloot ik een klein script te maken dat me waarschuwt wanneer ik de verbinding moet maken en loskoppelen. kracht.

Scriptvereisten om de laad- en ontlaadcycli van uw laptopbatterij te regelen

Het eerste dat we nodig hebben, is dat het pakket is geïnstalleerd acpi op onze computer. In mijn geval als ik ArchLinux gebruik, moet ik gewoon het volgende uitvoeren:

$ sudo pacman -S acpi

Waarom hebben we ACPI nodig? Nou, om de status van onze batterij te weten. Als we het uitvoeren, retourneert het zoiets als dit:

leni :: ~ »acpi Batterij 0: Bezig met ontladen, 76%, 02:20:07 resterend

Het volgende is om het bestand te maken dat de melding zal uitvoeren, in mijn geval plaats ik het in de map ~ / .batterij, en ik noemde het bat_notification.sh. Binnenin heb ik het volgende gezet:

#!/bin/bash # # -*- ENCODING: UTF-8 -*- # Dit programma is gratis software. U mag het herdistribueren en/of # wijzigen onder de voorwaarden van de GNU # General Public License zoals gepubliceerd door de Free Software Foundation, # versie 2 van die licentie of (naar uw keuze) een latere versie. # # Als u enige wijziging aanbrengt in deze aanvraag, # moet u altijd de oorspronkelijke auteur ervan vermelden. # # DesdeLinux.net CC-BY-SA 2015 # Auteur: ELAVdesdelinux.net> # We krijgen de batterijstatus, maar alleen het percentage: BATTERY=`acpi | awk '{print $4}'` # We geven de status door aan een tekstbestand: echo $BATERIA > tmp_bateria.txt # We elimineren onnodige informatie uit het tekstbestand: RESULT=`cut -c 1-2 tmp_bateria.txt` if [ $ RESULTAAT -ge 80 ]; dan notificeren-verzenden --urgency=critical --expire-time=5000 --app-name=Batterij --icon=batterij "Batterijmelding" "Koppel de stroom los, alstublieft" elif [ $RESULT -le 40 ]; dan notificeren-verzenden --urgency=critical --expire-time=5000 --app-name=Batterij --icon=batterij "Batterijmelding" "Zet de stroom aan alstublieft" else $BATTERY > /dev/null fi

Hoe het script werkt om de laad- en ontlaadcycli van uw laptopbatterij te regelen

De uitleg hoe het werkt zit van binnen, maar ik leg het kort uit.

Ten eerste, met behulp van awk Ik haal alleen de procentuele waarde uit de batterij, die zoiets als retourneert 76%. Dit resultaat wordt overgebracht naar een tekstbestand om later onnodige tekens te verwijderen, zodat alleen de numerieke waarde overblijft.

We geven de nodige toestemmingen aan het bestand:

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

Hoe ArchLinux gebruikt SysteemD en heeft niet het oude crontabik ik installeer cronie. Nu bewerken we de crontab zodat het script de batterijstatus de hele tijd controleert.

$ crontab -e

En ik voeg binnen toe:

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

En voila, wanneer het batterijpercentage gelijk is aan of kleiner is dan 40%, of gelijk is aan of groter is dan 80%, krijg ik een melding als deze:

Batterijmelding

En dit is het .. Elke bijdrage die je wilt leveren, suggesties voor code en anderen, je kunt het doen via mijn repository op BitBucket.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   wakker worden zei

    Heel goed, ik zou het graag willen proberen, maar ik gebruik meer dan een desktopcomputer: /
    een vraag, waar wordt het tijdelijke bestand opgeslagen?. Als het bijvoorbeeld thuis is, kunt u dan een punt naar voren brengen zodat u het niet hoeft te zien? 😛

    1.    levendig zei

      Nou, in mijn geval, aangezien ik het script in een verborgen map thuis uitvoer, heb ik dat probleem niet. Het tijdelijke bestand wordt samen met het script .. 😀 gehost

  2.   NAAM3loos zei

    Het script is goed, maar ik heb gelezen over het probleem van de batterij in laptops, en het is mij nog steeds niet duidelijk of de batterij wel of niet moet worden losgekoppeld wanneer deze voor 100% is opgeladen.
    Tjonge, ik werk al meer dan 2 jaar bij een Lenovo en ik heb geen problemen (klop op hout): v
    Hoe dan ook, het zou goed zijn als iemand zou uitleggen of de kwestie van drums waar is of slechts een mythe.
    Groeten!

    1.    Zwart net zei

      Ik heb een Dell Inspiron-laptop, die nu voor vier jaar is, ik probeer hem altijd aangesloten te hebben en de batterij gaat nog steeds ongeveer een uur mee zonder verbinding (afhankelijk van de baan natuurlijk). Ik vind het een uitstekend advies, ik zal proberen het te installeren ... Groeten

  3.   Medewerkers zei

    Als je systemd hebt (geen hoofdletters, een fout die ik ook heb gemaakt) kun je timers gebruiken en is het niet nodig om applicaties van derden te installeren.

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

    Wat betreft de batterij, begrijp ik dat het eigen circuit van de lithiumbatterij de belasting ontkoppelt wanneer de limiet wordt bereikt, zonder afhankelijk te zijn van de SO, anders een veilige explosie 🙂
    En het is dat, als ik om de levensduur van de batterij te beschermen altijd maar 40% van zijn capaciteit hoef te gebruiken, het hetzelfde zou zijn als een beschadigde batterij.
    De oplader moet worden losgekoppeld wanneer deze 100% bereikt of kort daarvoor, maar alleen om te voorkomen dat de batterij wordt "belast" (het laadproces snel en constant starten en beëindigen tussen 99% en 100%).

    1.    levendig zei

      Nou, ik weet het niet echt, er zijn veel verschillende meningen en ik weet niet naar wie ik moet luisteren.

      1.    regen zei

        Welnu, het is uw pc, gebruik wat u verkiest, maar het is altijd goed om verschillende manieren te kennen om het te doen 🙂

      2.    regen zei

        Nou, het is je pc, gebruik wat je verkiest, er zullen altijd mensen zijn die zeggen dat het beter is om x dingen te gebruiken in plaats van y blah blah blah.

        en in linux zijn er veel manieren om dezelfde xD te doen

        doel van alternatieven
        een alternatieve acpi van kernel 2.6 om de belasting te kennen is:
        cat / sys / class / power_supply / BAT1 / capacity

  4.   regen zei

    Er zijn mensen die graag alle geplande taken in een enkel bestand willen hebben. In plaats van voor elk van deze een bestand te maken.

    Het lijkt mij een beetje overdreven xD

    1.    levendig zei

      Als je de systemd cron a bedoelt, lijkt het me niet overdreven, het lijkt me stront op een stok. Wat een manier om je leven ingewikkeld te maken.

  5.   ThecaTony zei

    Het idee is erg goed, het wordt gewaardeerd.

    Het zou nodig zijn om het script aan te passen met de gegevens over de batterijlading die regen in de commentaren heeft doorgegeven, waardoor de afhankelijkheid van acpi wordt geëlimineerd.
    Wat ik vreemd vind, is dat zodra de vastgestelde limieten zijn overschreden, er herhaalde meldingen binnenkomen, toch? Als dit het geval is, moet een extra besturingselement worden toegevoegd, bijvoorbeeld:

    #! / Bin / sh
    BATLVL = $ (cat / sys / class / power_supply / BAT0 / capaciteit)
    if [$ BATLVL -ge 80]; vervolgens
    als [! -a / tmp / batwarn]; vervolgens
    verwittigen-verzenden –urgency = critical –expire-time = 5000 –app-name = Batterij –pictogram = batterij "Batterij-melding" "Schakel de elektrische stroom uit";
    touch / tmp / batwarn;
    fi
    elif [$ BATLVL -le 40]; vervolgens
    als [! -a / tmp / batwarn]; vervolgens
    verwittigen-verzenden –urgency = critical –expire-time = 5000 –app-name = Batterij –pictogram = batterij "Batterij-melding" "Schakel de stroom in"
    touch / tmp / batwarn;
    fi
    anders
    if [-a / tmp / batwarn]; vervolgens
    rm -f / tmp / batwarn;
    fi
    fi

    (Het bovenstaande is niet getest, hoewel ik zou denken dat het goed werkt)

    Vriendelijke groeten!"

    1.    levendig zei

      Bedankt voor de bijdrage, ik probeer het nu en ik vertel het je.

  6.   edu zei

    Weet iemand hoe hij de temperatuur van de laptop moet regelen en verzachten? Het is dat de temperatuur stijgt tot meer dan 40 graden Celsius en veel meer middelen van de machine verbruikt bij het bekijken van een video op YouTube.

    1.    fut zei

      Het schoonmaken van de ventilator kan helpen, bijvoorbeeld met een stofzuiger. Haal het uit elkaar om het schoon te maken en het hangt af van uw vaardigheden en dat u zeker weet wat u doet.

      Ventilatorbases zijn ook goed, maar houd de ventilator zo groot mogelijk, omdat hij meer lucht zal verplaatsen.
      Een paar jaar geleden, met een dell xps, was het zonder de basis onmogelijk om te werken. Naarmate het warmer werd, werd het langzamer en heter. Met een basis met een ventilator heb ik het heel netjes weten te laten werken.

      Ik hoop dat je het nuttig vindt.

  7.   Gonzalo Martinez zei

    Zeer goed script!

    Wat ik deed was 100 laten opladen, ik haalde het eruit en gebruikte het met gelijkstroom. De batterij gebruikte het toen er geen stroom in de buurt was.

    Nu met Mac kan ik het niet 🙁

  8.   Luciano Lagassa zei

    Hallo, je idee is erg goed, ik zeg je dat ik hetzelfde idee in gedachten had, nu begon ik je script te zien en het aan te passen en aan te passen zodat het je alleen waarschuwt als het overeenkomt. Ik geef je het resultaat.

    STATUS = acpi | awk '{print $ 3}' NUMBER = acpi | awk '{print $ 4}' | cut -c 1-2 echo $ STATUS $ NUMBER% if ["$ STATUS" == "Discharging,"] then if [$ NUMBER -le 40] dan verwittig-send --urgency = critical --expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Sluit de voeding aan" fi elif ["$ STATUS" == "Opladen"] en als [$ NUMBER -ge 80] dan -verzend - urgentie = kritiek --expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Schakel de stroom uit" fi fi
    1.    levendig zei

      Geweldig, hoewel op suggestie van sommige opmerkingen en anderen, ik het nu zo heb:

      #!/bin/bash # # -*- ENCODING: UTF-8 -*- # Dit programma is gratis software. U mag het herdistribueren en/of # wijzigen onder de voorwaarden van de GNU # General Public License zoals gepubliceerd door de Free Software Foundation, # versie 2 van die licentie of (naar uw keuze) een latere versie. # # Als u enige wijziging aanbrengt in deze aanvraag, # moet u altijd de oorspronkelijke auteur ervan vermelden. # # DesdeLinux.net CC-BY-SA 2015 # Auteur: ELAV  
      
      BATLVL = $ (cat / sys / class / power_supply / BAT1 / capaciteit) als [$ BATLVL -ge 80]; dan als [! -a / tmp / batwarn]; dan verwittigen-verzenden --urgency = critical --expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Schakel de stroom uit"; touch / tmp / batwarn; elif [$ BATLVL -le 40]; dan als [! -a / tmp / batwarn]; dan informeren-verzenden --urgency = kritisch --expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Sluit de voeding aan" touch / tmp / batwarn; fi else if [-a / tmp / batwarn]; dan rm -f / tmp / batwarn; fi fi fi
      1.    xxxtonixx zei

        Wat ik niet begrijp, is de noodzaak om een ​​leeg bestand te maken dat geen enkele waarde opslaat en het is ook niet nodig om iets op te slaan, want wat je aan het onderzoeken bent, moet je onderzoeken op het moment dat het script wordt uitgevoerd en niet daarna of waarden vergelijken of iets voor het stijl. Ik denk dat het maken van een bestand niet de beste optie is. Creëer je het als een ijkpunt of zoiets, zodat het niet meer dan één keer wordt uitgevoerd of zoiets?

    2.    Luciano Lagassa zei

      Hallo, de bron die is opgetreden had enkele fouten en ik heb het schoner, het lijkt heel goed te werken.

      STATUS = acpi | awk '{print $ 3}' NUMBER = acpi | awk '{print $ 4}' | cut -c 1-2 als expr match "$ STATUS" "Discharging" echo "Downloading $ NUMBER%" if [$ NUMBER -le 40] en echo "Please connect the power" notification-send --urgency = critical - expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Sluit de elektrische stroom aan" fi elif expr match "$ STATUS" "Opladen" en echo "Laden $ NUMBER%" als [$ NUMBER -ge 80] en echo "Schakel de stroom uit". Verwittigen-verzenden --urgency = kritisch --expire-time = 5000 --app-name = Batterij --icon = batterij "Batterij-melding" "Schakel de elektriciteit uit a.u.b. "fi fi
  9.   jony127 zei

    Hallo, wat je zegt is meer een stadslegende dan iets anders. Ik heb onlangs een laptop gekocht en ben op zoek gegaan naar informatie over dit onderwerp, conclusie: laad de accu altijd op tot 100% en ontlaad hem ook zoveel mogelijk voordat je hem weer oplaadt.

    De batterij heeft x oplaadcycli voor de nuttige levensduur, dus hoe meer u hem oplaadt, hoe meer u die nuttige levensduur verkort.

    Ik heb contact opgenomen met de technische dienst van Fujitsu en Motorola en ze hebben me allebei verteld wat ik hierboven heb gezegd. Geen enkele fabrikant zal aanbevelen dat u de batterij slechts tot 80% oplaadt of dat u hem niet onder het x-percentage laat ontladen omdat dat verkeerd is, ik herhaal, het is het beste om te profiteren van de volledige capaciteit van de batterij, zowel in lading als in ontslag.

    Als we ook de limieten gebruiken die u voorstelt, zouden we de batterij af en toe moeten opladen en dat slaat ook niet zo veel op, zeg ik?

    Verwijder dat script aangezien de batterij wordt gebruikt zoals hierboven uitgelegd.

    groeten

  10.   Armando Leisure zei

    Een heel interessant onderwerp, voor mij lijkt de melding erg handig, het is een functie die in elke distro kan worden geïmplementeerd.
    Heeft iemand het geïmplementeerd in Linux MInt? het zou interessant zijn om te zien hoe het werkte.

    1.    Slimbook-team zei

      goed,
      Voor Linux Mint kun je Ubuntu gebruiken, je hebt het hier:
      https://slimbook.es/tutoriales/linux/45-script-linux-para-avisar-de-batearia-cargada
      Met vriendelijke groet,
      Slimbook-team

  11.   Toño zei

    Man wat een goede blog dit, ik heb het net ontdekt, ik heb Ubuntu ongeveer 15 dagen getest en alles lijkt erg interessant, snel en ... nou, ik vind deze wereld echt leuk, en deze blog van degenen die ik bezocht lijkt voor mij, denk ik, het beste.

  12.   fredericlinux zei

    Nou pss Ik heb JBattery een paar maanden geleden gemaakt, het is een Java-app waarmee je grafisch hetzelfde kunt doen, ook in de meest recente versie kun je zelfs de gezondheid van de batterij kennen. ze kunnen het project kennen in

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

    1.    levendig zei

      Interessant

  13.   David zei

    Ik heb verschillende dingen geleerd met je script. Over batterijen heb je al een aantal interessante punten besproken, maar ik zal een aantal aspecten opschrijven die ik belangrijk vind over batterijen. Ik ben dol op radiobesturing, de Lipo-batterijen die we gebruiken zijn kwetsbaarder maar lijken erg op die van Lithium die in laptops wordt gebruikt, in onze omgeving zijn we dat en we moeten veel voorzichtiger zijn met batterijen, ze zijn iets gevaarlijker (LiPo) en ze kosten ons een gezicht, dus we zijn geïnteresseerd om ze in goede staat te houden.

    1.- Het mag nooit overbelast of overbelast worden. Dit wordt goed geregeld door het circuit van uw laptop, anders zou het onveilig zijn en zouden fabrikanten meer dan één keer schrikken en terugroepen. Daarom wordt elk apparaat met lithiumbatterijen alleen uitgeschakeld als de batterij bijna leeg is (bijvoorbeeld mobiele telefoons). Wanneer de belasting 100% bereikt, behouden ze een minimale onderhoudsstroom. (Kijk naar een mobiel alsof wanneer deze 100% bereikt, de warmte wordt verminderd). In moderne laptops halen ze de stroom bij voorkeur van de voedingsingang in plaats van de batterij wanneer deze is aangesloten, dus het zou geen probleem moeten zijn om deze aangesloten te houden, zelfs als deze op 100% staat. Om een ​​goede batterijstatus te behouden, zou het natuurlijk goed zijn om te voorkomen dat deze wordt uitgeschakeld omdat het minimum is bereikt, maar 40% zou overdreven zijn. Ik denk dat 10-15% voldoende zou zijn.

    2.- Warmte degradeert deze batterijen sterk, het verdient de voorkeur om ze op te laden en op een koele plaats te gebruiken, het kost je waarschijnlijk minder tijd om op een koele plaats op te laden dan in een warme, om nog maar te zwijgen van het ontladen. Het probleem is dat laptops behoorlijk heet worden, als het je lukt om de temperatuur te verlagen, gaat het nog een paar minuten mee.

    3.- Hoe meer we het aantal keren dat we de batterij opladen verminderen, hoe beter. Kwaliteitsbatterijen hebben een nuttige levensduur van ongeveer 1000 oplaadcycli of meer. Als u het goed hebt behandeld, gaat het langer mee, als het hard is behandeld, wordt de levensduur eerder verkort. Merk op hoe de batterij van mobiele telefoons of laptops na een paar jaar steeds minder meegaat. Als we van 20% tot 100% rekenen, gaat het veel langer mee dan van 40 tot 80%.

    4.- Met de interne schakelingen van moderne laptops kunt u het batterijgebruiksprofiel configureren, indien deze meestal is aangesloten op het stopcontact of in laptopmodus. Als u verbinding wilt maken met de stroom, configureer dan die methode (helaas komt de software van de fabrikant die dit doet alleen voor Windows, maar het kan zijn vastgesteld in het BIOS), het feit is dat het in de aangesloten modus de verbinding verbreekt. belasting wanneer het 80% bereikt, want zo kan het het beste worden onderhouden en bewaard wanneer een batterij niet in gebruik is. Het opladen begint wanneer de batterij onder de 40% zakt. Het is mijn voorkeursconfiguratie, ik moet er gewoon rekening mee houden dat als u het apparaat op enig moment losgekoppeld moet gebruiken, de initiële hoeveelheid van de batterij 80% zal zijn. Als je het in draagbare modus zet, laadt het het op tot 100%, maar ook als ik het me goed herinner, zal het niet opnieuw beginnen met opladen totdat het onder een minimumwaarde zakt (misschien tussen 40 en 60%), dus je zou perfect kunnen werken aangesloten op deze modus als u er gewoonlijk veel mee beweegt.

    5.- De huidige technologie is meestal lithium, dus ze hebben geen last van geheugeneffect, die opties die vele jaren geleden in de bios hadden en die verschillende laad- / ontlaadcycli maakten om de batterij schoon te maken of te proberen te herstellen, hebben geen zin meer. Dat was logischer in nikkelcadmium en in mindere mate nikkelmetaalhydride, maar niet in lithium (lithium, leven, lipo).

    6.- Als u rekening houdt met wat in de punten 1 en 3 is gezegd, laat de batterijen dan niet lange tijd leeg, aangezien ze beetje bij beetje leeglopen. Dit script zou een goede manier zijn om te waarschuwen als je de laptop met de batterij in "laptop-modus" hebt staan ​​en je deze lange tijd niet gebruikt, dus het ideaal zou zijn om de batterij op ongeveer 80-85% te laten. opladen, omdat het is hoe ze de lading het beste in de loop van de tijd houden en in werkelijkheid is het hoe het zou moeten aankomen wanneer u het op zijn dag kocht.

    Houd er rekening mee dat de laatste 5% (95-100%) van de batterij veel meer kost om op te laden, dus als je er vaak haast mee hebt, is het niet de moeite waard om te wachten tot hij 100 bereikt. % voor slechts 5%.

    Met vriendelijke groet,
    David.

    1.    levendig zei

      Uitstekende uitleg .. heel erg bedankt

  14.   Fabian zei

    Goedemiddag, ik probeer je script te bewerken door de hint te verhogen met de financiering van het spelen van een geluid zoals de andere meldingen, maar het speelt het niet af, je kunt me helpen door me te vertellen wat ik verkeerd doe.
    voorbeeld.

    verwittigen-verzenden -h string: geluidsbestand: /usr/share/sounds/KDE-Sys-Error-Printing.ogg «test »« Dit is een geluidsmeldingstest »

  15.   Diego zei

    Mooi zo…
    Meer dan een snee

    RESULTAAT =cut -c 1-2 tmp_bateria.txt

    Moet er geen tr worden gedaan?

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

    Maar met de snede, als de batterij 100 is, duurt het 10 (-c 1-2) en wordt u gevraagd om verbinding te maken.
    Ah ... ik antwoord mezelf. Als dit script draait, zou je nooit 100 🙂 moeten bereiken, zoals op dit moment het geval is met de adapter aangesloten: p
    Dank u.

  16.   Mario zei

    Hoi. Uitstekend script, ik denk erover om iets soortgelijks te doen, maar gebruik in plaats daarvan de elektronische laadregelaar die ervoor zorgt dat wanneer de batterij bijvoorbeeld 100% bereikt, deze stopt met het verzenden van een lading en de energie rechtstreeks van de bron haalt. Op zo'n manier dat er bijvoorbeeld gekozen wordt om tot 80℅ op te laden en als ik dat niveau bereikt, stopt de controller met het sturen van energie naar de accu en neemt alleen de stroom van de bron, zonder dat er aangesloten en losgekoppeld hoeft te worden , die onnodig cycli doorbrengt en tegelijkertijd dat de batterij altijd werkt in het bereik dat de voortijdige degradatie ervan voorkomt

  17.   José Alberto Chavez Alvarez zei

    Sorry, denk je dat je ervoor kunt zorgen dat het script een relais kan activeren om de belasting van de laptop te deactiveren en deze te activeren wanneer deze op een laag belastingsniveau staat.