Batteriestatus auslesen und speichern (in C )

HD-Driver

Banned
Registriert
Apr. 2021
Beiträge
8
Hallo zusammen,

ich will den Batteriestatus meines Gerätes (MacBook) mithilfe der Programmiersprache C auslesen und automatisch in einer Excel Tabelle erfassen.

Mir ist bewusst, dass es dafür bereits Tools gibt und eine andere Sprache vielleicht besser geeignet wäre.
Es geht letztendlich darum, meine Fertigkeiten und Kenntnisse in C zu trainieren und auszubauen und das ganze mit etwas sinnvollem zu Verknüpfen, was Spaß macht, motiviert und interessant ist.
Das Schreiben in die Excel Tabelle wäre manuell auch ein leichtes, aber ist das auch mit C möglich? Sodass automatisch einmal in der Woche der Batteriestatus (Full Charge Capacity) des Gerätes ausgelesen wird und in die vorbereitete Excel-Tabelle eingetragen wird?

Habt ihr Ideen, wie man das Ganze angehen kann? Und ist dieses Vorhaben schwer als Anfänger in C?
 
  • Gefällt mir
Reaktionen: NJay
https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-battery

MacOS, keine Ahnung.

C ist für sowas eigentlich unnötig/falsch gewählt. Das weißt du aber selber
Um Excel-Dokumente zu verarbeiten, brauchst du eine entsprechende Bibliothek, die du entweder selber schreibst, oder vorgefertigt benutzt (empfehlenswerter).
Das ist aber alles googlebar, so wie ich das gerade selber gemacht habe. Daher ist ehrlich gesagt deine Eigeninitiative die größte Herausforderung.

Wenn du C Kenntnisse verbessern willst, wie wäre es mit Mikrocontroller-Programmierung?
 
Du benötigst auf jeden Fall eine MacOS C-Library, die Excel Dateien verwalten kann.
Hab nur mal kurz gegoogled. Also zb: https://libxlsxwriter.github.io/

Wie willst den Batteriestatus auslesen? Mit einem Terminal Befehl wie system_profiler?

Wenn du also mit system_profiler dir die Batterieinfos geben lässt und mit der Lib in die Excel schreibst, sollte das auch für nen Anfänger machbar sein.
 
  • Gefällt mir
Reaktionen: TriggerThumb87
Es muss ja nicht gleich Microsofts OpenXML-Format sein (XLSX), reicht vielleicht auch eine CSV-, also reine Textdatei? Dann müsstest Du Dir zumindest keine Gedanken mehr über Microsoft Office Interop machen (die Thematik, die den Zugriff auf Office-Objekte behandelt).

In der Tat bietet es aber keine Schnittstelle für "C" (wohl aber C#).

Ich bin hier eher auf Skripting-Level unterwegs, finde Dein Beispiel aber bequem mit Powershell umzusetzen (dann auch mit Objekt-Zugriff auf Office (Excel)), was wohl (wusste ich gar nicht) für MacOS verfügbar ist.

Quelle: Powershell MacOS
 
Um mal dran anzuknüpfen, was

TriggerThumb87

schreibt - ich kann nur empfehlen, sich mal mit Arduino & Co zu beschäftigen, mich selber hat das jedenfalls weit mehr motiviert, abseits meiner Java-Welt ein bissel C ( und Elektrotechnik :D ) zu vertiefen als das solche doch sehr "drögen" Projekte, insbesondere dann auch noch unter Einbindung externer Dinge wie das Excel-Format ( dann schreibs lieber in csv-Format, das kann man einfach bei Excel etc. importieren ).

Alternativ kann man sich auch im Raspberry-Pi-Umfeld umtun, aber mich reizt gerade die Möglichkeit, extrem Kompakte und Stromsparende Technik zu bauen - in meinem Fall eine komplette Wetterstation mit Wind- / Regen und Temperaturmessung inkl. selbst programmierter Auswertung von Regensammler und Anonemeter ...

Die Möglichkeiten sind beinahe unendlich, was man machen kann ( aktuell bastele ich mir hier was mit LED-Ansteuerung ) - und man kann auch z.B. Python drauf nutzen, wenn C einem denn nicht zusagt :D


 
SonyXP schrieb:
reicht vielleicht auch eine CSV-, also reine Textdatei
Würde auch in eine CSV Datei speichern, das kann man wunderbar mit Tabellenkalkulation importieren. Oder auch wieder einfach einlesen und grafisch aufbereiten oder ähnliche Dinge machen.
 
Wenn du's von Hand machen willst, kannst du das natürlich über's Dateisystem auslesen. Unter Linux liegt die übrige Kapazität zum Beispiel in /sys/class/power_supply/BAT0/capacity. Sowas wird's unter MacOS irgendwo sicher auch geben.
Anschließen kannst du's dann wie erwähnt in eine CSV-Datei schreiben.
Ist natürlich etwas unschön, da du's selbst anpassen musst, wenn sich der Pfad ändert. Aber ob du für C ne Lib findest...?
 
Zurück
Oben