Closed 3871968 closed 8 years ago
Here is an idea on how to implement this:
Not only would this make it easier for apps using the framework to find only keys that work, it would also make it easier to support more keys.
Here is Objective-C code for creating the arrays and dictionary mentioned above:
// All SMC temperature, voltage, current, and power keys
// Set up keys and human-readable names for keys
smcTempKeys = [[NSArray alloc] initWithObjects: @"TCXC", @"TCXc", @"TC0P", @"TC0H", @"TC0D", @"TC0E", @"TC0F", @"TC1C", @"TC2C", @"TC3C", @"TC4C", @"TC5C", @"TC6C", @"TC7C", @"TC8C", @"TCAH", @"TCAD", @"TC1P", @"TC1H", @"TC1D", @"TC1E", @"TC1F", @"TCBH", @"TCBD", @"TCSC", @"TCSc", @"TCSA", @"TCGC", @"TCGc", @"TG0P", @"TG0D", @"TG1D", @"TG0H", @"TG1H", @"Ts0S", @"TM0P", @"TM1P", @"TM8P", @"TM9P", @"TM0S", @"TM1S", @"TM8S", @"TM9S", @"TN0D", @"TN0P", @"TN1P", @"TN0C", @"TN0H", @"TP0D", @"TPCD", @"TP0P", @"TA0P", @"TA1P", @"Th0H", @"Th1H", @"Th2H", @"Tm0P", @"Tp0P", @"Ts0P", @"Tb0P", @"TL0P", @"TW0P", @"TH0P", @"TH1P", @"TH2P", @"TH3P", @"TO0P", @"Tp0P", @"Tp0C", @"TB0T", @"TB1T", @"TB2T", @"TB3T", @"Tp1P", @"Tp1C", @"Tp2P", @"Tp3P", @"Tp4P", @"Tp5P", @"TS0C", @"TA0S", @"TA1S", @"TA2S", @"TA3S", nil];
smcVoltageKeys = [[NSArray alloc] initWithObjects:@"VC0C", @"VC1C", @"VC2C", @"VC3C", @"VC4C", @"VC5C", @"VC6C", @"VC7C", @"VV1R", @"VG0C", @"VM0R", @"VN1R", @"VN0C", @"VD0R", @"VD5R", @"VP0R", @"Vp0C", @"VV2S", @"VR3R", @"VV1S", @"VH05", @"VV9S", @"VD2R", @"VV7S", @"VV3S", @"VV8S", @"VeES", @"VBAT", @"Vb0R", nil];
smcCurrentKeys = [[NSArray alloc] initWithObjects:@"IC0C", @"IC1C", @"IC2C", @"IC0R", @"IC5R", @"IC8R", @"IC0G", @"IC0M", @"IG0C", @"IM0C", @"IM0R", @"IN0C", @"ID0R", @"ID5R", @"IO0R", @"IB0R", @"IPBR", nil];
smcPowerKeys = [[NSArray alloc] initWithObjects:@"PC0C", @"PC1C", @"PC2C", @"PC3C", @"PC4C", @"PC5C", @"PC6C", @"PC7C", @"PCPC", @"PCPG", @"PCPD", @"PCTR", @"PCPL", @"PC1R", @"PC5R", @"PGTR", @"PG0R", @"PM0R", @"PN0C", @"PN1R", @"PC0R", @"PD0R", @"PD5R", @"PH02", @"PH05", @"Pp0R", @"PD2R", @"PO0R", @"PBLC", @"PB0R", @"PDTR", @"PSTR", nil];
NSMutableDictionary *smcKeyHumanReadableNames = [[NSMutableDictionary alloc] init];
[smcKeyHumanReadableNames setValue:@"PECI CPU" forKey:@"TCXC"];
[smcKeyHumanReadableNames setValue:@"PECI CPU" forKey:@"TCXc"];
[smcKeyHumanReadableNames setValue:@"CPU 1 Proximity" forKey:@"TC0P"];
[smcKeyHumanReadableNames setValue:@"CPU 1 Heatsink" forKey:@"TC0H"];
[smcKeyHumanReadableNames setValue:@"CPU 1 Package" forKey:@"TC0D"];
[smcKeyHumanReadableNames setValue:@"CPU 1" forKey:@"TC0E"];
[smcKeyHumanReadableNames setValue:@"CPU 1" forKey:@"TC0F"];
[smcKeyHumanReadableNames setValue:@"CPU Core 1" forKey:@"TC1C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 2" forKey:@"TC2C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 3" forKey:@"TC3C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 4" forKey:@"TC4C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 5" forKey:@"TC5C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 6" forKey:@"TC6C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 7" forKey:@"TC7C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 8" forKey:@"TC8C"];
[smcKeyHumanReadableNames setValue:@"CPU 1 Heatsink Alt." forKey:@"TCAH"];
[smcKeyHumanReadableNames setValue:@"CPU 1 Package Alt." forKey:@"TCAD"];
[smcKeyHumanReadableNames setValue:@"CPU 2 Proximity" forKey:@"TC1P"];
[smcKeyHumanReadableNames setValue:@"CPU 2 Heatsink" forKey:@"TC1H"];
[smcKeyHumanReadableNames setValue:@"CPU 2 Package" forKey:@"TC1D"];
[smcKeyHumanReadableNames setValue:@"CPU 2" forKey:@"TC1E"];
[smcKeyHumanReadableNames setValue:@"CPU 2" forKey:@"TC1F"];
[smcKeyHumanReadableNames setValue:@"CPU 2 Heatsink Alt." forKey:@"TCBH"];
[smcKeyHumanReadableNames setValue:@"CPU 2 Package Alt." forKey:@"TCBD"];
[smcKeyHumanReadableNames setValue:@"PECI SA" forKey:@"TCSC"];
[smcKeyHumanReadableNames setValue:@"PECI SA" forKey:@"TCSc"];
[smcKeyHumanReadableNames setValue:@"PECI SA" forKey:@"TCSA"];
[smcKeyHumanReadableNames setValue:@"PECI GPU" forKey:@"TCGC"];
[smcKeyHumanReadableNames setValue:@"PECI GPU" forKey:@"TCGc"];
[smcKeyHumanReadableNames setValue:@"GPU Proximity" forKey:@"TG0P"];
[smcKeyHumanReadableNames setValue:@"GPU Die" forKey:@"TG0D"];
[smcKeyHumanReadableNames setValue:@"GPU Die" forKey:@"TG1D"];
[smcKeyHumanReadableNames setValue:@"GPU Heatsink" forKey:@"TG0H"];
[smcKeyHumanReadableNames setValue:@"GPU Heatsink" forKey:@"TG1H"];
[smcKeyHumanReadableNames setValue:@"Memory Proximity" forKey:@"Ts0S"];
[smcKeyHumanReadableNames setValue:@"Mem Bank A1" forKey:@"TM0P"];
[smcKeyHumanReadableNames setValue:@"Mem Bank A2" forKey:@"TM1P"];
[smcKeyHumanReadableNames setValue:@"Mem Bank B1" forKey:@"TM8P"];
[smcKeyHumanReadableNames setValue:@"Mem Bank B2" forKey:@"TM9P"];
[smcKeyHumanReadableNames setValue:@"Mem Module A1" forKey:@"TM0S"];
[smcKeyHumanReadableNames setValue:@"Mem Module A2" forKey:@"TM1S"];
[smcKeyHumanReadableNames setValue:@"Mem Module B1" forKey:@"TM8S"];
[smcKeyHumanReadableNames setValue:@"Mem Module B2" forKey:@"TM9S"];
[smcKeyHumanReadableNames setValue:@"Northbridge Die" forKey:@"TN0D"];
[smcKeyHumanReadableNames setValue:@"Northbridge Proximity 1" forKey:@"TN0P"];
[smcKeyHumanReadableNames setValue:@"Northbridge Proximity 2" forKey:@"TN1P"];
[smcKeyHumanReadableNames setValue:@"MCH Die" forKey:@"TN0C"];
[smcKeyHumanReadableNames setValue:@"MCH Heatsink" forKey:@"TN0H"];
[smcKeyHumanReadableNames setValue:@"PCH Die" forKey:@"TP0D"];
[smcKeyHumanReadableNames setValue:@"PCH Die" forKey:@"TPCD"];
[smcKeyHumanReadableNames setValue:@"PCH Proximity" forKey:@"TP0P"];
[smcKeyHumanReadableNames setValue:@"Airflow 1" forKey:@"TA0P"];
[smcKeyHumanReadableNames setValue:@"Airflow 2" forKey:@"TA1P"];
[smcKeyHumanReadableNames setValue:@"Heatpipe 1" forKey:@"Th0H"];
[smcKeyHumanReadableNames setValue:@"Heatpipe 2" forKey:@"Th1H"];
[smcKeyHumanReadableNames setValue:@"Heatpipe 3" forKey:@"Th2H"];
[smcKeyHumanReadableNames setValue:@"Mainboard Proximity" forKey:@"Tm0P"];
[smcKeyHumanReadableNames setValue:@"Powerboard Proximity" forKey:@"Tp0P"];
[smcKeyHumanReadableNames setValue:@"Palm Rest" forKey:@"Ts0P"];
[smcKeyHumanReadableNames setValue:@"BLC Proximity" forKey:@"Tb0P"];
[smcKeyHumanReadableNames setValue:@"LCD Proximity" forKey:@"TL0P"];
[smcKeyHumanReadableNames setValue:@"Airport Proximity" forKey:@"TW0P"];
[smcKeyHumanReadableNames setValue:@"HDD Bay 1" forKey:@"TH0P"];
[smcKeyHumanReadableNames setValue:@"HDD Bay 2" forKey:@"TH1P"];
[smcKeyHumanReadableNames setValue:@"HDD Bay 3" forKey:@"TH2P"];
[smcKeyHumanReadableNames setValue:@"HDD Bay 4" forKey:@"TH3P"];
[smcKeyHumanReadableNames setValue:@"Optical Drive" forKey:@"TO0P"];
[smcKeyHumanReadableNames setValue:@"Battery TS_MAX" forKey:@"TB0T"];
[smcKeyHumanReadableNames setValue:@"Battery 1" forKey:@"TB1T"];
[smcKeyHumanReadableNames setValue:@"Battery 2" forKey:@"TB2T"];
[smcKeyHumanReadableNames setValue:@"Battery" forKey:@"TB3T"];
[smcKeyHumanReadableNames setValue:@"Power Supply 1" forKey:@"Tp0P"];
[smcKeyHumanReadableNames setValue:@"Power Supply 1 Alt." forKey:@"Tp0C"];
[smcKeyHumanReadableNames setValue:@"Power Supply 2" forKey:@"Tp1P"];
[smcKeyHumanReadableNames setValue:@"Power Supply 2 Alt." forKey:@"Tp1C"];
[smcKeyHumanReadableNames setValue:@"Power Supply 3" forKey:@"Tp2P"];
[smcKeyHumanReadableNames setValue:@"Power Supply 4" forKey:@"Tp3P"];
[smcKeyHumanReadableNames setValue:@"Power Supply 5" forKey:@"Tp4P"];
[smcKeyHumanReadableNames setValue:@"Power Supply 6" forKey:@"Tp5P"];
[smcKeyHumanReadableNames setValue:@"Expansion Slots" forKey:@"TS0C"];
[smcKeyHumanReadableNames setValue:@"PCI Slot 1 Pos 1" forKey:@"TA0S"];
[smcKeyHumanReadableNames setValue:@"PCI Slot 1 Pos 2" forKey:@"TA1S"];
[smcKeyHumanReadableNames setValue:@"PCI Slot 2 Pos 1" forKey:@"TA2S"];
[smcKeyHumanReadableNames setValue:@"PCI Slot 2 Pos 2" forKey:@"TA3S"];
[smcKeyHumanReadableNames setValue:@"CPU Core 1" forKey:@"VC0C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 2" forKey:@"VC1C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 3" forKey:@"VC2C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 4" forKey:@"VC3C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 5" forKey:@"VC4C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 6" forKey:@"VC5C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 7" forKey:@"VC6C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 8" forKey:@"VC7C"];
[smcKeyHumanReadableNames setValue:@"CPU VTT" forKey:@"VV1R"];
[smcKeyHumanReadableNames setValue:@"GPU Core" forKey:@"VG0C"];
[smcKeyHumanReadableNames setValue:@"Memory" forKey:@"VM0R"];
[smcKeyHumanReadableNames setValue:@"PCH" forKey:@"VN1R"];
[smcKeyHumanReadableNames setValue:@"MCH" forKey:@"VN0C"];
[smcKeyHumanReadableNames setValue:@"Mainboard S0 Rail" forKey:@"VD0R"];
[smcKeyHumanReadableNames setValue:@"Mainboard S5 Rail" forKey:@"VD5R"];
[smcKeyHumanReadableNames setValue:@"12V Rail" forKey:@"VP0R"];
[smcKeyHumanReadableNames setValue:@"12V Vcc" forKey:@"Vp0C"];
[smcKeyHumanReadableNames setValue:@"Main 3V" forKey:@"VV2S"];
[smcKeyHumanReadableNames setValue:@"Main 3.3V" forKey:@"VR3R"];
[smcKeyHumanReadableNames setValue:@"Main 5V" forKey:@"VV1S"];
[smcKeyHumanReadableNames setValue:@"Main 5V" forKey:@"VH05"];
[smcKeyHumanReadableNames setValue:@"Main 12V" forKey:@"VV9S"];
[smcKeyHumanReadableNames setValue:@"Main 12V" forKey:@"VD2R"];
[smcKeyHumanReadableNames setValue:@"Auxiliary 3V" forKey:@"VV7S"];
[smcKeyHumanReadableNames setValue:@"Standby 3V" forKey:@"VV3S"];
[smcKeyHumanReadableNames setValue:@"Standby 5V" forKey:@"VV8S"];
[smcKeyHumanReadableNames setValue:@"PCIe 12V" forKey:@"VeES"];
[smcKeyHumanReadableNames setValue:@"Battery" forKey:@"VBAT"];
[smcKeyHumanReadableNames setValue:@"CMOS Battery" forKey:@"Vb0R"];
[smcKeyHumanReadableNames setValue:@"CPU Core" forKey:@"IC0C"];
[smcKeyHumanReadableNames setValue:@"CPU VccIO" forKey:@"IC1C"];
[smcKeyHumanReadableNames setValue:@"CPU VccSA" forKey:@"IC2C"];
[smcKeyHumanReadableNames setValue:@"CPU Rail" forKey:@"IC0R"];
[smcKeyHumanReadableNames setValue:@"CPU DRAM" forKey:@"IC5R"];
[smcKeyHumanReadableNames setValue:@"CPU PLL" forKey:@"IC8R"];
[smcKeyHumanReadableNames setValue:@"CPU GFX" forKey:@"IC0G"];
[smcKeyHumanReadableNames setValue:@"CPU Memory" forKey:@"IC0M"];
[smcKeyHumanReadableNames setValue:@"GPU Rail" forKey:@"IG0C"];
[smcKeyHumanReadableNames setValue:@"Memory Controller" forKey:@"IM0C"];
[smcKeyHumanReadableNames setValue:@"Memory Rail" forKey:@"IM0R"];
[smcKeyHumanReadableNames setValue:@"MCH" forKey:@"IN0C"];
[smcKeyHumanReadableNames setValue:@"Mainboard S0 Rail" forKey:@"ID0R"];
[smcKeyHumanReadableNames setValue:@"Mainboard S5 Rail" forKey:@"ID5R"];
[smcKeyHumanReadableNames setValue:@"Misc. Rail" forKey:@"IO0R"];
[smcKeyHumanReadableNames setValue:@"Battery Rail" forKey:@"IB0R"];
[smcKeyHumanReadableNames setValue:@"Charger BMON" forKey:@"IPBR"];
[smcKeyHumanReadableNames setValue:@"CPU Core 1" forKey:@"PC0C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 2" forKey:@"PC1C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 3" forKey:@"PC2C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 4" forKey:@"PC3C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 5" forKey:@"PC4C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 6" forKey:@"PC5C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 7" forKey:@"PC6C"];
[smcKeyHumanReadableNames setValue:@"CPU Core 8" forKey:@"PC7C"];
[smcKeyHumanReadableNames setValue:@"CPU Cores" forKey:@"PCPC"];
[smcKeyHumanReadableNames setValue:@"CPU GFX" forKey:@"PCPG"];
[smcKeyHumanReadableNames setValue:@"CPU DRAM" forKey:@"PCPD"];
[smcKeyHumanReadableNames setValue:@"CPU Total" forKey:@"PCTR"];
[smcKeyHumanReadableNames setValue:@"CPU Total" forKey:@"PCPL"];
[smcKeyHumanReadableNames setValue:@"CPU Rail" forKey:@"PC1R"];
[smcKeyHumanReadableNames setValue:@"CPU S0 Rail" forKey:@"PC5R"];
[smcKeyHumanReadableNames setValue:@"GPU Total" forKey:@"PGTR"];
[smcKeyHumanReadableNames setValue:@"GPU Rail" forKey:@"PG0R"];
[smcKeyHumanReadableNames setValue:@"Memory Rail" forKey:@"PM0R"];
[smcKeyHumanReadableNames setValue:@"MCH" forKey:@"PN0C"];
[smcKeyHumanReadableNames setValue:@"PCH Rail" forKey:@"PN1R"];
[smcKeyHumanReadableNames setValue:@"Mainboard S0 Rail" forKey:@"PC0R"];
[smcKeyHumanReadableNames setValue:@"Mainboard S0 Rail" forKey:@"PD0R"];
[smcKeyHumanReadableNames setValue:@"Mainboard S5 Rail" forKey:@"PD5R"];
[smcKeyHumanReadableNames setValue:@"Main 3.3V Rail" forKey:@"PH02"];
[smcKeyHumanReadableNames setValue:@"Main 5V Rail" forKey:@"PH05"];
[smcKeyHumanReadableNames setValue:@"12V Rail" forKey:@"Pp0R"];
[smcKeyHumanReadableNames setValue:@"Main 12V Rail" forKey:@"PD2R"];
[smcKeyHumanReadableNames setValue:@"Misc. Rail" forKey:@"PO0R"];
[smcKeyHumanReadableNames setValue:@"Battery Rail" forKey:@"PBLC"];
[smcKeyHumanReadableNames setValue:@"Battery Rail" forKey:@"PB0R"];
[smcKeyHumanReadableNames setValue:@"DC In Total" forKey:@"PDTR"];
[smcKeyHumanReadableNames setValue:@"System Total" forKey:@"PSTR"];
Also, the presumed letter translations in the source code are wrong.
Here is a better version (the naming scheme for SMC keys is not always consistent):
Using dictionary literals instead of all those setValue:forKey:
would be way shorter :
NSMutableDictionary *smcKeyHumanReadableNames = @{
@"TCXC" : @"PECI CPU",
@"TCXc" : @"PECI CPU",
@"TC0P" : @"CPU 1 Proximity",
@"TC0H" : @"CPU 1 Heatsink",
@"TC0D" : @"CPU 1 Package",
@"TC0E" : @"CPU 1",
@"TC0F" : @"CPU 1",
@"TC1C" : @"CPU Core 1",
@"TC2C" : @"CPU Core 2",
@"TC3C" : @"CPU Core 3",
@"TC4C" : @"CPU Core 4",
@"TC5C" : @"CPU Core 5",
@"TC6C" : @"CPU Core 6",
@"TC7C" : @"CPU Core 7",
@"TC8C" : @"CPU Core 8",
@"TCAH" : @"CPU 1 Heatsink Alt.",
@"TCAD" : @"CPU 1 Package Alt.",
@"TC1P" : @"CPU 2 Proximity",
@"TC1H" : @"CPU 2 Heatsink",
@"TC1D" : @"CPU 2 Package",
@"TC1E" : @"CPU 2",
@"TC1F" : @"CPU 2",
@"TCBH" : @"CPU 2 Heatsink Alt.",
@"TCBD" : @"CPU 2 Package Alt.",
@"TCSC" : @"PECI SA",
@"TCSc" : @"PECI SA",
@"TCSA" : @"PECI SA",
@"TCGC" : @"PECI GPU",
@"TCGc" : @"PECI GPU",
@"TG0P" : @"GPU Proximity",
@"TG0D" : @"GPU Die",
@"TG1D" : @"GPU Die",
@"TG0H" : @"GPU Heatsink",
@"TG1H" : @"GPU Heatsink",
@"Ts0S" : @"Memory Proximity",
@"TM0P" : @"Mem Bank A1",
@"TM1P" : @"Mem Bank A2",
@"TM8P" : @"Mem Bank B1",
@"TM9P" : @"Mem Bank B2",
@"TM0S" : @"Mem Module A1",
@"TM1S" : @"Mem Module A2",
@"TM8S" : @"Mem Module B1",
@"TM9S" : @"Mem Module B2",
@"TN0D" : @"Northbridge Die",
@"TN0P" : @"Northbridge Proximity 1",
@"TN1P" : @"Northbridge Proximity 2",
@"TN0C" : @"MCH Die",
@"TN0H" : @"MCH Heatsink",
@"TP0D" : @"PCH Die",
@"TPCD" : @"PCH Die",
@"TP0P" : @"PCH Proximity",
@"TA0P" : @"Airflow 1",
@"TA1P" : @"Airflow 2",
@"Th0H" : @"Heatpipe 1",
@"Th1H" : @"Heatpipe 2",
@"Th2H" : @"Heatpipe 3",
@"Tm0P" : @"Mainboard Proximity",
@"Tp0P" : @"Powerboard Proximity",
@"Ts0P" : @"Palm Rest",
@"Tb0P" : @"BLC Proximity",
@"TL0P" : @"LCD Proximity",
@"TW0P" : @"Airport Proximity",
@"TH0P" : @"HDD Bay 1",
@"TH1P" : @"HDD Bay 2",
@"TH2P" : @"HDD Bay 3",
@"TH3P" : @"HDD Bay 4",
@"TO0P" : @"Optical Drive",
@"TB0T" : @"Battery TS_MAX",
@"TB1T" : @"Battery 1",
@"TB2T" : @"Battery 2",
@"TB3T" : @"Battery",
@"Tp0P" : @"Power Supply 1",
@"Tp0C" : @"Power Supply 1 Alt.",
@"Tp1P" : @"Power Supply 2",
@"Tp1C" : @"Power Supply 2 Alt.",
@"Tp2P" : @"Power Supply 3",
@"Tp3P" : @"Power Supply 4",
@"Tp4P" : @"Power Supply 5",
@"Tp5P" : @"Power Supply 6",
@"TS0C" : @"Expansion Slots",
@"TA0S" : @"PCI Slot 1 Pos 1",
@"TA1S" : @"PCI Slot 1 Pos 2",
@"TA2S" : @"PCI Slot 2 Pos 1",
@"TA3S" : @"PCI Slot 2 Pos 2",
@"VC0C" : @"CPU Core 1",
@"VC1C" : @"CPU Core 2",
@"VC2C" : @"CPU Core 3",
@"VC3C" : @"CPU Core 4",
@"VC4C" : @"CPU Core 5",
@"VC5C" : @"CPU Core 6",
@"VC6C" : @"CPU Core 7",
@"VC7C" : @"CPU Core 8",
@"VV1R" : @"CPU VTT",
@"VG0C" : @"GPU Core",
@"VM0R" : @"Memory",
@"VN1R" : @"PCH",
@"VN0C" : @"MCH",
@"VD0R" : @"Mainboard S0 Rail",
@"VD5R" : @"Mainboard S5 Rail",
@"VP0R" : @"12V Rail",
@"Vp0C" : @"12V Vcc",
@"VV2S" : @"Main 3V",
@"VR3R" : @"Main 3.3V",
@"VV1S" : @"Main 5V",
@"VH05" : @"Main 5V",
@"VV9S" : @"Main 12V",
@"VD2R" : @"Main 12V",
@"VV7S" : @"Auxiliary 3V",
@"VV3S" : @"Standby 3V",
@"VV8S" : @"Standby 5V",
@"VeES" : @"PCIe 12V",
@"VBAT" : @"Battery",
@"Vb0R" : @"CMOS Battery",
@"IC0C" : @"CPU Core",
@"IC1C" : @"CPU VccIO",
@"IC2C" : @"CPU VccSA",
@"IC0R" : @"CPU Rail",
@"IC5R" : @"CPU DRAM",
@"IC8R" : @"CPU PLL",
@"IC0G" : @"CPU GFX",
@"IC0M" : @"CPU Memory",
@"IG0C" : @"GPU Rail",
@"IM0C" : @"Memory Controller",
@"IM0R" : @"Memory Rail",
@"IN0C" : @"MCH",
@"ID0R" : @"Mainboard S0 Rail",
@"ID5R" : @"Mainboard S5 Rail",
@"IO0R" : @"Misc. Rail",
@"IB0R" : @"Battery Rail",
@"IPBR" : @"Charger BMON",
@"PC0C" : @"CPU Core 1",
@"PC1C" : @"CPU Core 2",
@"PC2C" : @"CPU Core 3",
@"PC3C" : @"CPU Core 4",
@"PC4C" : @"CPU Core 5",
@"PC5C" : @"CPU Core 6",
@"PC6C" : @"CPU Core 7",
@"PC7C" : @"CPU Core 8",
@"PCPC" : @"CPU Cores",
@"PCPG" : @"CPU GFX",
@"PCPD" : @"CPU DRAM",
@"PCTR" : @"CPU Total",
@"PCPL" : @"CPU Total",
@"PC1R" : @"CPU Rail",
@"PC5R" : @"CPU S0 Rail",
@"PGTR" : @"GPU Total",
@"PG0R" : @"GPU Rail",
@"PM0R" : @"Memory Rail",
@"PN0C" : @"MCH",
@"PN1R" : @"PCH Rail",
@"PC0R" : @"Mainboard S0 Rail",
@"PD0R" : @"Mainboard S0 Rail",
@"PD5R" : @"Mainboard S5 Rail",
@"PH02" : @"Main 3.3V Rail",
@"PH05" : @"Main 5V Rail",
@"Pp0R" : @"12V Rail",
@"PD2R" : @"Main 12V Rail",
@"PO0R" : @"Misc. Rail",
@"PBLC" : @"Battery Rail",
@"PB0R" : @"Battery Rail",
@"PDTR" : @"DC In Total",
@"PSTR" : @"System Total"
}
I have a better solution: http://jbot-42.github.io/systeminfokit.html
I'll just leave this here: http://jbot-42.github.io/Articles/smc.html
This has a list of more SMC keys than any other source on the internet.