Как перевести p c в спящий режим, если уровень заряда аккумулятора p c упал на 18%? - PullRequest
0 голосов
/ 30 мая 2020

Я получаю уровень заряда батареи через -

WMIC PATH Win32_Battery Get EstimatedChargeRemaining

, и на выходе получается => EstimatedChargeRemaining 100

Кроме того, я могу перевести свой p c в спящий режим с помощью такой команды, как

shutdown /h

Итак, почему я пишу сценарий, который, когда уровень заряда батареи падает ниже 20%, он просто переводит мой p c в спящий режим, как мне это сделать? Кроме того, когда я включаю его снова, он не просто снова переходит в спящий режим, я имею в виду, что он будет работать только один раз и снова активировать функцию, когда уровень заряда батареи поднимется выше 21%, так что это выполнимая услуга. Любая помощь действительно стоит ... Заранее спасибо !!

1 Ответ

0 голосов
/ 31 мая 2020

Я знаю об этих вещах в windows, как было предложено, но я хотел создать что-то, что автоматически переходило бы в спящий режим, даже если ноутбук пытается запустить кто-то другой, чтобы открытые процессы или другие запущенные задачи не закончились / или cra sh резко. Итак, наконец, я создал эту программу в узле и создал файл bat с

node Autohibernate.js

, и, следовательно, программа узла будет выполняться этим. И, наконец, чтобы заставить его работать в скрытом режиме, и даже если p c перезапускается, я сделал программу vbscript, которая делает это. И это примерно так:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "C:\autohibernate.bat" & Chr(34), 0
Set WshShell = Nothing

Итак, наконец, есть программа узла, то есть авто гибернация. js показано ниже -

const { exec, spawn } = require("child_process");
let current;
let critical = 18; // Battery level at which hibernates.
let repeatAfterActionFired = 1; //In minutes.
let generalCheckTimer = 3; // Check after every this time(in second).

async function somelife() {
  exec("WMIC PATH Win32_Battery Get EstimatedChargeRemaining", (err, stdout, stderr) => {
    current = stdout.slice(29);
    console.log("battery-", current);
    if (current > critical) {
      checkAndHibernate();
    } else {
      console.log(
        `Hibernation Fired, Next checkAndHibernate after ${repeatAfterActionFired} minutes.`
      );
      setTimeout(() => {
        checkAndHibernate();
      }, repeatAfterActionFired * 60 * 1_000);

      exec("shutdown /h");
      // exec()
    }
  });
}
const checkAndHibernate = () =>
  setTimeout(() => {
    somelife();
  }, generalCheckTimer * 1_000);
checkAndHibernate();

Спасибо, Stackoverflow.

...