distatus / battery

cross-platform, normalized battery information library
MIT License
249 stars 36 forks source link
battery cross-platform go

battery Build Status Go Report Card GoDoc

Cross-platform, normalized battery information library.

Gives access to a system independent, typed battery state, capacity, charge and voltage values recalculated as necessary to be returned in mW, mWh or V units.

Currently supported systems:

Installation

$ go get -u github.com/distatus/battery

Code Example

package main

import (
    "fmt"

    "github.com/distatus/battery"
)

func main() {
    batteries, err := battery.GetAll()
    if err != nil {
        fmt.Println("Could not get battery info!")
        return
    }
    for i, battery := range batteries {
        fmt.Printf("Bat%d: ", i)
        fmt.Printf("state: %s, ", battery.State.String())
        fmt.Printf("current capacity: %f mWh, ", battery.Current)
        fmt.Printf("last full capacity: %f mWh, ", battery.Full)
        fmt.Printf("design capacity: %f mWh, ", battery.Design)
        fmt.Printf("charge rate: %f mW, ", battery.ChargeRate)
        fmt.Printf("voltage: %f V, ", battery.Voltage)
        fmt.Printf("design voltage: %f V\n", battery.DesignVoltage)
    }
}

CLI

There is also a little utility which - more or less - mimicks the GNU/Linux acpi -b command.

Installation

$ go install github.com/distatus/battery/cmd/battery@latest

Usage

$ battery
BAT0: Full, 95.61% [Voltage: 12.15V (design: 12.15V)]