Like everyone, we are in a transition from laptops that use Magsafe 2 to Thunderbolt3/USB-C. Is there an easy way to reliably query machines charger type in inventory? Ideally setting it as an Extension Attribute under Hardware.
You can definitely script the collection of this data with the caveat that it only shows up in System Profiler - Power when connected.
Why would you base on the power adapter? Wouldn't it make more sense to base it on year and model if you are going to upgrade user's computer?
I want this because I have several hundred desks on several floors that use one of two setups (USB-A/Magsafe vs USB-C). If someone is moving desks I need to check what their machine needs vs what the current occupant's machine needs.
I am wondering if just pulling USB30Bus vs USB31Bus from system_profiler is good enough. I never thought this possible, but I may have stumbled upon the single upside to the absolutist switch from 3.0 to 3.1... Besides Mac Minis, are there any Mac's that have both USB-C and USB-A? Does anything use USB 3.1 over USB-A?
As an aside, does anyone have example scripts of pulling from system_profiler using json/jq?
Ah Ok, thank you for clarifying. As degreening using the system_profiler command. Something like this: system_profiler SPPowerDataType | grep "Name" | awk '{print $3}'
That seems to return the name of the battery. As part of SPPowerDateType there is:
AC Charger Information:
Connected: Yes
ID: 0x0aa1
Wattage (W): 85
Family: 0x0085
Serial Number: 0x00e25313
Charging: No
But I'm not sure how to interpret what Family means. Also like degreening said it only appears when it is actually connected to a charger.
I think maybe checking Thunderbolt type is sort of a way to go. I don't think anything has TB3 and a MagSafe. But I'm not sure how to actually find that either. But I can find its speed which is sort of correct. I don't think anything does 40 Gb/s and also has 20 Gb/s ports.
system_profiler SPThunderboltDataType | grep -m 1 Speed: | cut -c 24-26
I'll keep looking for a cleaner way to do this. If anyone comes up with a better idea let me know.
>>> import subprocess
>>> import plistlib
>>>
>>> cmd = ['system_profiler', 'SPPowerDataType', '-xml']
>>> proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> out, err = proc.communicate()
>>> data = plistlib.readPlistFromString(out)
>>> print data[0]['_items'][3]['sppower_ac_charger_name']
87W USB-C Power Adapter
There is a python example of parsing plist output data from system_profiler
Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.