Automatisierte Batterietests mit der Monsoon Python API

Dieser Artikel richtet sich an alle, die ein automatisches System für Batterietests erstellen möchten. Wichtig ist, dass der Großteil des Batterieverbrauchs vom Bildschirm selbst stammt, z. B. durch das Drücken von Tasten oder das Eingabe von Text in Feldern. Die Ergebnisse variieren je nach Anwendung.

Dieser Artikel richtet sich an alle, die ein automatisches System für Batterietests erstellen möchten. Wichtig ist, dass der Großteil des Batterieverbrauchs vom Bildschirm selbst stammt, z. B. durch das Drücken von Tasten oder das Eingabe von Text in Feldern. Die Ergebnisse variieren je nach Anwendung.

Einleitung

Batterietests stehen im Zusammenhang mit Performancetests und werden typischerweise parallel ausgeführt, z. B. unter Berücksichtigung von CPU, Arbeitsspeicher, Netzwerk und anderen Metriken.

Übersicht der Batterietests

Batterietests können helfen, den Batterieverbrauch Ihrer Anwendung oder Ihres Dienstes zu reduzieren. Sie können Batterietests auf drei Betriebssystemen durchführen: macOS, Windows und Linux. Um Batterietests durchzuführen, benötigen Sie einen Hochspannungs-Leistungsmonitor (HVPM) oder einen Niederspannungs-Leistungsmonitor (LVPM), Software und ein Batteriegerät.

Verwendung unter Windows, Linux und macOS

Unter Windows sind sowohl HVPM als auch LVPM geeignet. Um Batteriedaten unter Windows zu erhalten, verwenden wir das Power Tool. Unter Linux und macOS verwenden wir die Monsoon Python API, eine Bibliothek, die in Python geschrieben ist, um Batterietests durchzuführen und Daten zu sammeln.

Vorbereitung des Batterietestgeräts

Das Batterietestgerät kann prinzipiell aus jedem Gerät mit Batterie bestehen. In diesem automatisierten Testsystem wird ein iPhone 12 für die Tests eingesetzt.

**Hier ist die Vorgehensweise zur Erstellung eines Batterietestgeräts:** 

  • Zerlegen Sie das Gerät
  • Trennen Sie die Batterie von der Hauptplatine
  • Bauen Sie die Batterie selbst auseinander, indem Sie die Logikplatine der Batterie entfernen
  • Untersuchen Sie die Logikplatine und entscheiden Sie, wie Sie sie für den Monsoon Power Monitor vorbereiten

Vorbereitung des Lötens

**Vorbereitung des Löt setups:** 

  • Kabel
  • Kupferband
  • Lötfläche
Nach dem Anlöten der Kabel an die Logikplatine legen Sie diese wieder ins Telefon und verbinden sie mit der Hauptplatine.

Verbindung mit dem Monsoon Power Monitor

Wenn das Gerät vorbereitet ist, wird es mit dem Monsoon Power High Voltage Monitor verbunden. Bei der Batterieprofilierung liefert der Monsoon HVPM dem Testgerät eine konstante Spannung, während die Hardware die Änderungen des Stroms misst und so ein Profil des Energieverbrauchs erstellt.

Metriken aus dem Power Monitor

**Folgende Metriken können wir aus dem Power Monitor abrufen:** 

  • Batteriekapazität - Milliamperestunden (mAh)
  • Verbrauchte Energie - Milliamperestunden (mAh)
  • Stromverbrauch - Ampere (A)
  • Leistungsaufnahme - Watt (W)
  • Spannung - Volt (V)
  • Erwartete Batterielaufzeit - Stunden (h)

Starten der Batterietests

Die einzigen Voraussetzungen für den Start des Geräts sind die + und - Kabel sowie das Lightning-Kabel, die am Monsoon Power Monitor angeschlossen sind, wobei die Spannung auf 3.85 V eingestellt wird, um eine realistische Batteriespannung zu simulieren. Sobald die Tests gestartet werden, trennt der Power Monitor die USB-Verbindung zum Telefon, damit er mit der Profilierung des Batterieverbrauchs beginnen kann.

Ergebnisse und Protokolle

Wir können das vollständige Protokoll vom Power Monitor mit allen aufgezeichneten Metriken in Form einer binären .pt5-Datei ansehen - 5000 Samples pro Sekunde.

Bedeutung von Batterietests

Wie oben erwähnt, sind Batterietests für alle Anwendungen sehr nützlich. Batterietests helfen Ihnen zu verstehen, welche Szenarien ressourcenintensiv sind. Auf Grundlage der Testergebnisse können Sie dann den Prozess optimieren.

Automatisierung auf verschiedenen Betriebssystemen

Im Folgenden sehen wir uns an, wie automatisierte Batterietests auf verschiedenen Betriebssystemen ausgeführt werden können: 

  • Windows: Um den Batterietest zu automatisieren, verwenden wir die Kommandozeile des Power Tools. Die Kommandozeile ermöglicht es Ihnen, sie in einem Skript zu verwenden, um Batterietests zusammen mit anderen Performancetests auszuführen. Zur Automatisierung von Szenarien auf Android-Geräten verwenden wir Appium.
  • macOS: Unter macOS ist die Automatisierung etwas komplexer, da Sie zum Automatisieren von Szenarien auf Apple-Geräten Appium und Xcode benötigen. Während Appium sowohl unter Windows als auch macOS funktioniert, läuft Xcode nur unter macOS. Daher ist die Automatisierung unter macOS etwas komplexer als unter Windows.

Setup und Aufbau

Unser Setup besteht aus vier Geräten, wobei eines davon das Batterietestgerät ist, die restlichen drei sind Hilfsgeräte. Das Batterietestgerät ist die Haupteinheit, die während des Tests alle Daten sammelt. Alle Geräte sind über USB mit einem Computer verbunden und befinden sich in einer schwarzen Box, um das genaueste Ergebnis ohne fremdes Licht zu erhalten.

Codebeispiel

Um zu beginnen, müssen Sie ein Skript vorbereiten, um den Batterietest auszuführen: Die Monsoon Python API unterstützt macOS, Windows und Linux. Für Windows wird die Software empfohlen, die von Monsoon entwickelt wurde, da diese Software mehr Optionen als die Python API bietet. In unserem Setup verwenden wir macOS auf einem Intel-Chip. Um Batterietests erfolgreich ausführen zu können, benötigen Sie: Python, PyCharm (oder eine andere IDE für Python), die Monsoon-Bibliothek, NumPy und PyUSB.

Hardware-Anforderungen

Sie benötigen auch einen Hochspannungs-Leistungsmonitor (HVPM). Für einen Niederspannungs-Leistungsmonitor (LVPM) ist die Firmware Ihres Geräts wahrscheinlich nicht kompatibel mit dem Skript. Ältere Firmware verwendet einen Seriellport-Emulator zur Kommunikation mit dem PC, während neuere Firmware eine vollwertige USB-Schnittstelle verwendet.

Code zur Durchführung von Batterietests

Wenn Sie alles haben, sollten Sie das Batterietestgerät an unsere Batteriebox anschließen und die Batteriebox an das Gerät (in unserem Fall ein MacBook) anschließen. Schalten Sie dann die Batteriebox ein. Wenn eine grüne LED auf der Box leuchtet, ist alles in Ordnung. Anschließend können Sie den folgenden Code in die IDE einfügen und ausführen. Das Skript startet das Gerät:

def start_battery_test(path, file_name):
Mon = HVPM.Monsoon()
Mon.setup_usb()
Mon.setVout(3.85)
engine = sampleEngine.SampleEngine(Mon)
engine.enableCSVOutput(path + "/" + file_name + ".csv")
engine.ConsoleOutput(True)
numSamples=sampleEngine.triggers.SAMPLECOUNT_INFINITE
engine.setStartTrigger(sampleEngine.triggers.LESS_THAN, TIME)
engine.setStopTrigger(sampleEngine.triggers.GREATER_THAN, TIME)
engine.setTriggerChannel(sampleEngine.channels.timeStamp)
engine.startSampling(numSamples)

Ergebnisse des Batterietests

Wenn das Gerät aktiviert ist, können Sie das Programm unterbrechen und die Funktion einfügen. Dies startet den Batterietest und speichert alle Informationen in eine .csv-Datei. Nach Beendigung des Tests sieht Ihre .csv-Datei folgendermaßen aus:

Sie sollten Code schreiben, um diese Daten zu verarbeiten und in mW umzuwandeln. Dies können Sie mit der Formel mW = mA * V * 1000 tun.

Funktion für die Implementierung

**Implementierung automatisierter Batterietests:** Wir sollten eine weitere Funktion erstellen, in der wir Multiprocessing verwenden:

def battery_test():
battery_test = multiprocessing.Process(target=start_battery_test, args=[])
battery_test.start()
battery_test.join()

Der Prozess akzeptiert zwei Argumente, den ersten ist der Funktionsname und der zweite sind die Argumente für diese Funktion, welches der Pfad ist, wo Sie Daten speichern werden und der andere ist der Dateiname. Nachdem Sie die Funktion erstellt haben, können Sie sie verwenden und in Ihre Automatisierung implementieren.

Langfristige Batterietests

Sie können Batterietests nur in einem langfristigen Prozess ausführen, wenn die App, die Sie testen, einen Audioanruf, einen Videoanruf, einen Stream oder ein Video startet. Dies liegt daran, dass während des Batterietests der Computer und das Gerät den Datenaustausch über USB stoppen und nur Daten gemessen werden.

Bedingungen für den Betrieb des Batterietestgeräts

Um das Batterietestgerät weiterlaufen zu lassen, müssen Sie den Treiber nach dem Batterietest neu starten. Daher können Sie bei Szenarien, in denen das Gerät Tasten drücken, Nachrichten eingeben oder die Sichtbarkeit eines Elements überprüfen muss, keine Batterietests verwenden.

Fazit

Die Erstellung eines automatisierten Batterietests von Grund auf war aus Sicht der Programmierung eine Herausforderung, da wir die Batterieverbrauchs-Tests zuvor manuell durchgeführt haben. Daher kannten wir bereits den Ablauf und konnten die Testergebnisse optimieren.

Automatisierte Batterietests bieten viele Vorteile:

  • Effizienz: Tests werden schneller und effizienter ausgeführt.
  • Genauigkeit: Die Ergebnisse sind reproduzierbarer und genauer als bei manuellen Tests.
  • Skalierbarkeit: Automatisierung ermöglicht es Ihnen, mehr Tests in kürzerer Zeit durchzuführen.