diff --git a/Brewfile b/Brewfile
index 39e9661..c6b0a16 100644
--- a/Brewfile
+++ b/Brewfile
@@ -151,6 +151,9 @@ if hostname == 'noct'
brew 'node_exporter'
brew 'prometheus'
+ tap 'jimeh/macos-battery-exporter'
+ brew 'macos-battery-exporter'
+
cask '4k-video-downloader'
cask 'adobe-creative-cloud'
cask 'aegisub'
diff --git a/bin/macos_battery_exporter b/bin/macos_battery_exporter
deleted file mode 100755
index 6e8610d..0000000
--- a/bin/macos_battery_exporter
+++ /dev/null
@@ -1,81 +0,0 @@
-#! /usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'json'
-
-class MacOSBatteryExporter
- def export
- puts metrics
- end
-
- def metrics
- <<~METRICS
- # HELP node_battery_charge_percent Battery charge percent
- # TYPE node_battery_charge_percent gauge
- node_battery_charge_percent{serial="#{battery_serial_number}"} #{charge_percentage}
- # HELP node_battery_charge_ampere Battery charge ampere
- # TYPE node_battery_charge_ampere gauge
- node_battery_charge_ampere{serial="#{battery_serial_number}"} #{charge_info['sppower_battery_current_capacity'] / 1000.0}
- # HELP node_battery_full_charge_ampere Battery full charge capacity
- # TYPE node_battery_full_charge_ampere gauge
- node_battery_full_charge_ampere{serial="#{battery_serial_number}"} #{charge_info['sppower_battery_max_capacity'] / 1000.0}
- # HELP node_battery_current_flow_ampere Current flow of ampere in (+) or out (-) of battery
- # TYPE node_battery_current_flow_ampere gauge
- node_battery_current_flow_ampere{serial="#{battery_serial_number}"} #{battery_info['sppower_current_amperage'] / 1000.0}
- # HELP node_battery_charger_connected Is charger connected?
- # TYPE node_battery_charger_connected gauge
- node_battery_charger_connected{serial="#{battery_serial_number}"} #{ac_charger_info['sppower_battery_charger_connected'] == 'TRUE' ? 1.0 : 0.0}
- # HELP node_battery_is_charging Is charger connected?
- # TYPE node_battery_is_charging gauge
- node_battery_is_charging{serial="#{battery_serial_number}"} #{ac_charger_info['sppower_battery_is_charging'] == 'TRUE' ? 1.0 : 0.0}
- # HELP node_battery_charger_watts Watts provided by charger
- # TYPE node_battery_charger_watts gauge
- node_battery_charger_watts{serial="#{battery_serial_number}"} #{ac_charger_info['sppower_ac_charger_watts'].to_f}
- # HELP node_battery_fully_charged Is battery fully charged?
- # TYPE node_battery_fully_charged gauge
- node_battery_fully_charged{serial="#{battery_serial_number}"} #{ac_charger_info['sppower_battery_fully_charged'] == 'TRUE' ? 1.0 : 0.0}
- # HELP node_battery_cycle_count Battery cycle count
- # TYPE node_battery_cycle_count counter
- node_battery_cycle_count{serial="#{battery_serial_number}"} #{health_info['sppower_battery_cycle_count']}
- METRICS
- end
-
- def charge_percentage
- @charge_percentage ||=
- `pmset -g batt | grep -Eo '\\d+%' | cut -d% -f1`.strip
- end
-
- def battery_serial_number
- battery_info.dig(
- 'sppower_battery_model_info',
- 'sppower_battery_serial_number'
- )
- end
-
- def charge_info
- @charge_info ||= battery_info['sppower_battery_charge_info']
- end
-
- def health_info
- @health_info ||= battery_info['sppower_battery_health_info']
- end
-
- def battery_info
- @battery_info ||= power_data&.find do |v|
- v['_name'] == 'spbattery_information'
- end
- end
-
- def ac_charger_info
- @ac_charger_info ||= power_data&.find do |v|
- v['_name'] == 'sppower_ac_charger_information'
- end
- end
-
- def power_data
- @power_data ||= JSON.parse(`system_profiler SPPowerDataType -json`)
- &.[]('SPPowerDataType')
- end
-end
-
-MacOSBatteryExporter.new.export if __FILE__ == $PROGRAM_NAME
diff --git a/launch_agents/me.jimeh.macos-battery-exporter.plist b/launch_agents/me.jimeh.macos-battery-exporter.plist
index 5cc66d4..83ec1a9 100644
--- a/launch_agents/me.jimeh.macos-battery-exporter.plist
+++ b/launch_agents/me.jimeh.macos-battery-exporter.plist
@@ -10,14 +10,14 @@
sh
-c
- $HOME/.dotfiles/bin/macos_battery_exporter > $HOME/.node_metrics/battery.prom
+ macos-battery-exporter -n node -o $HOME/.node_metrics/battery.prom
RunAtLoad
-
+
EnvironmentVariables
PATH
- /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
+ /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:/opt/homebrew/sbin
StartInterval
30