Posted on 07-22-2020 12:36 PM
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.
Posted on 07-22-2020 12:50 PM
You can definitely script the collection of this data with the caveat that it only shows up in System Profiler - Power when connected.
Posted on 07-22-2020 12:50 PM
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?
Posted on 07-22-2020 03:21 PM
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?
Posted on 07-22-2020 04:54 PM
Ah Ok, thank you for clarifying. As degreening using the system_profiler command. Something like this: system_profiler SPPowerDataType | grep "Name" | awk '{print $3}'
Posted on 07-23-2020 06:47 AM
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.
Posted on 07-23-2020 06:18 PM
>>> 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