Python Battery AI - Как войти, только если батарея подключена или отключена - PullRequest
0 голосов
/ 05 октября 2019

Я делаю монитор батареи искусственного интеллекта похожим на iOS13, и мне нужно регистрировать процент заряда батареи / час / подключенный, только когда пользователь подключает или отключает штекер зарядного устройства.

Я пытался что-то сделатьнапример:

if str(plugged) == "True":
    log_file.write(current_info + "\r\n")
elif str(plugged) == "False"
      log_file.write(current_info + "\r\n")

, но скрипт не останавливается, чтобы зацикливаться на «True»

Вот основная функция моего кода

log_file = open("activity_log.txt", "w")

while True:
    battery = psutil.sensors_battery()
            # Check if charger is plugged in or not
    plugged = battery.power_plugged

            # Check for current battery percentage
    percent = str(battery.percent)

    # Check for the current system time
    sys_time = datetime.datetime.now()

    current_info = percent + " " + str(sys_time) + " " + str(plugged)

    if str(plugged) == "True":
        log_file.write(current_info + "\r\n")

log_file.close()

проекта наgithub, если вы хотите протестировать или реализовать его: https://github.com/peterspbr/battery-ai

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Возможно, я понял, что вы пытаетесь сделать: вы хотите записывать информацию, когда штекер аккумулятора меняет состояние. У вас возникли проблемы, потому что вы ничего не сделали, чтобы отследить, была ли подключена батарея. Попробуйте это:

was_plugged = battery.power_plugged
while True:
    ...
    if battery.power_plugged != was_plugged:
        log_file.write(current_info + "\r\n")
        was_plugged = battery.power_plugged

Пожалуйста, пройдите больше учебников по основным типам Python. Трудно следовать косвенному способу проверки значения: вы преобразовали логическое значение в текст, а затем проверили его по результирующей строке:

if str(plugged) == "True":

Все, что вам нужно, это прямой логический тест:

if plugged:
0 голосов
/ 05 октября 2019

Если я вас правильно понял, вы хотите выйти из цикла, когда переменная plugged равна True? Следует учитывать, что Python является языком строковой типизации, это означает, что он не является «True» и True.

log_file = open("activity_log.txt", "w")
plugged = False
while not plugged:
    battery = psutil.sensors_battery()
            # Check if charger is plugged in or not
    plugged = battery.power_plugged

            # Check for current battery percentage
    percent = str(battery.percent)

    # Check for the current system time
    sys_time = datetime.datetime.now()

    current_info = percent + " " + str(sys_time) + " " + str(plugged)

    if str(plugged) == "True":
        log_file.write(current_info + "\r\n")

log_file.close() 

PD: Я предполагаю, что переменная batery.power_plug является логическим значениемтипа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...