Skip to content

Commit 0eaca3d

Browse files
committed
Add new PID data from E1.20-2025
1 parent fe514a7 commit 0eaca3d

File tree

2 files changed

+202
-14
lines changed

2 files changed

+202
-14
lines changed

data/pid_data.py

Lines changed: 194 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4193,8 +4193,16 @@
41934193
(0x1e, 'Items'),
41944194
(0x1f, 'Humidity'),
41954195
(0x20, '16 bit counter'),
4196+
(0x21, "CPU load"),
4197+
(0x22, "Bandwidth"),
4198+
(0x23, "Concentration"),
4199+
(0x24, "Sound pressure level"),
4200+
(0x25, "Solid angle"),
4201+
(0x26, "Log ratio"),
4202+
(0x27, "Log ratio volts"),
4203+
(0x28, "Log ratio watts"),
41964204
(0x7f, 'Other')],
4197-
'range': [(0, 0x20), (0x7f, 0xff)]},
4205+
'range': [(0, 0x28), (0x7f, 0xff)]},
41984206
{'name': 'unit', 'type': 'uint8',
41994207
'labels': [(0x00, 'None'),
42004208
(0x01, 'Centigrade'),
@@ -4224,8 +4232,16 @@
42244232
(0x19, 'Lumens'),
42254233
(0x1a, 'Lux'),
42264234
(0x1b, 'Ire'),
4227-
(0x1c, 'Bytes')],
4228-
'range': [(0, 0x1c), (0x80, 0xff)]},
4235+
(0x1c, 'Bytes'),
4236+
(0x1d, 'Decibel'),
4237+
(0x1e, 'Decibel Volt'),
4238+
(0x1f, 'Decibel Watt'),
4239+
(0x20, 'Decibel Meter'),
4240+
(0x21, 'Percent'),
4241+
(0x22, 'Moles per meter Cubed'),
4242+
(0x23, 'RPM'),
4243+
(0x24, 'Bytes per Second')],
4244+
'range': [(0, 0x24), (0x80, 0xff)]},
42294245
{'name': 'prefix', 'type': 'uint8',
42304246
'labels': [(0x00, 'None'),
42314247
(0x01, 'Deci'),
@@ -4409,6 +4425,26 @@
44094425
'set_sub_device_range': 1,
44104426
'value': 51},
44114427

4428+
# QUEUED_MESSAGE_SENSOR_SUBSCRIBE
4429+
{'get_request': {'items': []},
4430+
'get_response': {'items': [{'type': 'group',
4431+
'name': 'sensors',
4432+
'items': [{'name': 'sensor_number',
4433+
'type': 'uint8'}],
4434+
}]},
4435+
'get_sub_device_range': 2,
4436+
'name': 'QUEUED_MESSAGE_SENSOR_SUBSCRIBE',
4437+
'set_request': {'items': [{'name': 'action', 'type': 'uint8', 'labels': [
4438+
(0, 'Remove'), (1, 'Add')]},
4439+
{'type': 'group',
4440+
'name': 'sensors',
4441+
'items': [{'name': 'sensor_number',
4442+
'type': 'uint8'}]}
4443+
]},
4444+
'set_response': {'items': []},
4445+
'set_sub_device_range': 1,
4446+
'value': 52},
4447+
44124448
# SENSOR_VALUE
44134449
{'get_request': {'items': [{'name': 'sensor_number', 'type': 'uint8',
44144450
'range': [(0, 0xfe)],
@@ -4500,6 +4536,28 @@
45004536
'set_sub_device_range': 1,
45014537
'value': 4145},
45024538

4539+
# SELFTEST_ENHANCED
4540+
{'get_request': {'items': []},
4541+
'get_response': {'items': [{'name': 'result_code_pid', 'type': 'uint16',
4542+
'labels': [(0, 'Not supported')]},
4543+
{'type': 'group', 'name': 'self_tests',
4544+
'items': [{'name': 'test_number', 'type': 'uint8',
4545+
'labels': [(0xff, 'All')]},
4546+
{'name': 'test_status', 'type': 'uint8',
4547+
'labels': [(0x00, 'Status not supported'),
4548+
(0x01, 'Not run since last power cycle'),
4549+
(0x02, 'Aborted/reset'),
4550+
(0x03, 'Active/running'),
4551+
(0x04, 'Complete - Pass'),
4552+
(0x05, 'Complete - Fail'),
4553+
(0x06, 'Complete - No analysis'),
4554+
(0x07, 'Complete - Result code available'),
4555+
(0xff, 'Other - Manufacturer specific')
4556+
]}]}]},
4557+
'get_sub_device_range': 2,
4558+
'name': 'SELFTEST_ENHANCED',
4559+
'value': 4130},
4560+
45034561
# DMX_PERSONALITY_DESCRIPTION
45044562
{'get_request': {'items': [{'name': 'personality', 'type': 'uint8', 'range': [
45054563
(1, 0xff)]
@@ -4571,6 +4629,12 @@
45714629
(0x0207, 'Additive Color Mixer - Blue'),
45724630
(0x0208, 'Color Temperature Correction'),
45734631
(0x0209, 'Color Scroll'),
4632+
(0x020a, 'Additive Color Mixer - Lime'),
4633+
(0x020b, 'Additive Color Mixer - Indigo'),
4634+
(0x020c, 'Additive Color Mixer - Cyan'),
4635+
(0x020d, 'Additive Color Mixer - Deep Red'),
4636+
(0x020e, 'Additive Color Mixer - Deep Blue'),
4637+
(0x020f, 'Additive Color Mixer - Natural White'),
45744638
(0x0210, 'Color Semaphore'),
45754639
(0x0211, 'Additive Color Mixer - Amber'),
45764640
(0x0212, 'Additive Color Mixer - White'),
@@ -4579,6 +4643,7 @@
45794643
(0x0215, 'Subtractive Color Mixer - UV'),
45804644
(0x0216, 'Hue'),
45814645
(0x0217, 'Saturation'),
4646+
(0x0218, 'Additive Color Mixer - UV'),
45824647
(0x0301, 'Static gobo wheel'),
45834648
(0x0302, 'Rotating gobo wheel'),
45844649
(0x0303, 'Prism wheel'),
@@ -4624,14 +4689,24 @@
46244689
{'name': 'data_type', 'type': 'uint8',
46254690
'labels': [(0x00, 'Not defined'),
46264691
(0x01, 'Bit field'),
4627-
(0x02, 'ASCII'),
4692+
(0x02, 'String'),
46284693
(0x03, 'uint8'),
46294694
(0x04, 'int8'),
46304695
(0x05, 'uint16'),
46314696
(0x06, 'int16'),
46324697
(0x07, 'uint32'),
4633-
(0x08, 'int32')],
4634-
'range': [(0x00, 0x08), (0x80, 0xdf)]},
4698+
(0x08, 'int32'),
4699+
(0x09, 'uint64'),
4700+
(0x0a, 'int64'),
4701+
(0x0b, 'Group'),
4702+
(0x0c, 'UID'),
4703+
(0x0d, 'Boolean'),
4704+
(0x0e, 'URL'),
4705+
(0x0f, 'MAC'),
4706+
(0x10, 'IPv4'),
4707+
(0x11, 'IPv6'),
4708+
(0x12, 'Enumeration')],
4709+
'range': [(0x00, 0x12), (0x80, 0xdf)]},
46354710
{'name': 'command_class', 'type': 'uint8',
46364711
'labels': [(1, 'Get'), (2, 'Set'), (3, 'Get and Set')]},
46374712
{'name': 'type', 'type': 'uint8'},
@@ -4664,8 +4739,16 @@
46644739
(0x19, 'Lumens'),
46654740
(0x1a, 'Lux'),
46664741
(0x1b, 'Ire'),
4667-
(0x1c, 'Bytes')],
4668-
'range': [(0, 0x1c), (0x80, 0xff)]},
4742+
(0x1c, 'Bytes'),
4743+
(0x1d, 'Decibel'),
4744+
(0x1e, 'Decibel Volt'),
4745+
(0x1f, 'Decibel Watt'),
4746+
(0x20, 'Decibel Meter'),
4747+
(0x21, 'Percent'),
4748+
(0x22, 'Moles per meter Cubed'),
4749+
(0x23, 'RPM'),
4750+
(0x24, 'Bytes per Second')],
4751+
'range': [(0, 0x24), (0x80, 0xff)]},
46694752
{'name': 'prefix', 'type': 'uint8',
46704753
'labels': [(0x00, 'None'),
46714754
(0x01, 'Deci'),
@@ -4699,6 +4782,102 @@
46994782
'name': 'PARAMETER_DESCRIPTION',
47004783
'value': 81},
47014784

4785+
# ENUM_LABEL
4786+
# TODO(Peter): There's currently no PID value defined for this in the released E1.20-2025 standard so we can't implement it!
4787+
# {'get_request': {'items': [{'name': 'pid', 'type': 'uint16'}, {'name': 'enumeration_index', 'type': 'uint32'}]},
4788+
# 'get_response': {'items': [{'name': 'pid', 'type': 'uint16'}, {'name': 'enumeration_index', 'type': 'uint32'},
4789+
# {'name': 'max_enumeration_index', 'type': 'uint32'},
4790+
# {'name': 'description',
4791+
# 'max_size': 32,
4792+
# 'type': 'string'}]},
4793+
# 'get_sub_device_range': 2,
4794+
# 'name': 'ENUM_LABEL',
4795+
# 'value': },
4796+
4797+
# SUPPORTED_PARAMETERS_ENHANCED
4798+
{'get_request': {'items': []},
4799+
'get_response': {'items': [{'name': 'params',
4800+
'type': 'group',
4801+
'items': [{'name': 'param_id', 'type': 'uint16'},
4802+
{'name': 'param_id_support', 'type': 'uint16'}],
4803+
}]
4804+
},
4805+
'get_sub_device_range': 2,
4806+
'name': 'SUPPORTED_PARAMETERS_ENHANCED',
4807+
'value': 85},
4808+
4809+
# CONTROLLER_FLAG_SUPPORT
4810+
{'get_request': {'items': []},
4811+
'get_response': {'items': [{'name': 'controller_flags', 'type': 'uint8'}]},
4812+
'get_sub_device_range': 2,
4813+
'name': 'CONTROLLER_FLAG_SUPPORT',
4814+
'value': 86},
4815+
4816+
# NACK_DESCRIPTION
4817+
{'get_request': {'items': [{'name': 'nack_reason_code', 'type': 'uint16'}]},
4818+
'get_response': {'items': [{'name': 'nack_reason_code', 'type': 'uint16'},
4819+
{'name': 'description',
4820+
'max_size': 32,
4821+
'type': 'string'}]},
4822+
'get_sub_device_range': 2,
4823+
'name': 'NACK_DESCRIPTION',
4824+
'value': 87},
4825+
4826+
# PACKED_PID_SUB
4827+
{'get_request': {'items': [{'name': 'pid', 'type': 'uint16'},
4828+
{'name': 'index', 'type': 'uint16'},
4829+
{'name': 'first_device_requested', 'type': 'uint16'},
4830+
{'name': 'number_of_devices_requested', 'type': 'uint16'}]},
4831+
'get_response': {'items': [{'name': 'pid', 'type': 'uint16'},
4832+
{'name': 'index', 'type': 'uint16'},
4833+
{'name': 'packed_results',
4834+
'type': 'group',
4835+
'items': [{'name': 'device', 'type': 'uint16'},
4836+
{'name': 'pdl_size', 'type': 'uint8'},
4837+
{'name': 'param_data', 'type': 'group',
4838+
'items': [{'name': 'data', 'type': 'uint8'}]}]
4839+
}]},
4840+
'get_sub_device_range': 0,
4841+
'set_request': {'items': [{'name': 'pid', 'type': 'uint16'},
4842+
{'name': 'index', 'type': 'uint16'},
4843+
{'name': 'packed_request',
4844+
'type': 'group',
4845+
'items': [{'name': 'device', 'type': 'uint16'},
4846+
{'name': 'pdl_size', 'type': 'uint8'},
4847+
{'name': 'param_data', 'type': 'group',
4848+
'items': [{'name': 'data', 'type': 'uint8'}]}]
4849+
}]},
4850+
'set_response': {'items': []},
4851+
'set_sub_device_range': 0,
4852+
'name': 'PACKED_PID_SUB',
4853+
'value': 88},
4854+
4855+
# PACKED_PID_INDEX
4856+
{'get_request': {'items': [{'name': 'pid', 'type': 'uint16'},
4857+
{'name': 'first_item_requested', 'type': 'uint16'},
4858+
{'name': 'number_of_items_requested', 'type': 'uint16'}]},
4859+
'get_response': {'items': [{'name': 'pid', 'type': 'uint16'},
4860+
{'name': 'packed_results',
4861+
'type': 'group',
4862+
'items': [{'name': 'item', 'type': 'uint16'},
4863+
{'name': 'pdl_size', 'type': 'uint8'},
4864+
{'name': 'param_data', 'type': 'group',
4865+
'items': [{'name': 'data', 'type': 'uint8'}]}]
4866+
}]},
4867+
'get_sub_device_range': 2,
4868+
'set_request': {'items': [{'name': 'pid', 'type': 'uint16'},
4869+
{'name': 'packed_request',
4870+
'type': 'group',
4871+
'items': [{'name': 'item', 'type': 'uint16'},
4872+
{'name': 'pdl_size', 'type': 'uint8'},
4873+
{'name': 'param_data', 'type': 'group',
4874+
'items': [{'name': 'data', 'type': 'uint8'}]}]
4875+
}]},
4876+
'set_response': {'items': []},
4877+
'set_sub_device_range': 2,
4878+
'name': 'PACKED_PID_INDEX',
4879+
'value': 89},
4880+
47024881
# TILT_INVERT
47034882
{'get_request': {'items': []},
47044883
'get_response': {'items': [{'name': 'invert', 'type': 'bool'}]},
@@ -4853,7 +5032,7 @@
48535032
'set_sub_device_range': 1,
48545033
'value': 4112},
48555034

4856-
# PERFORM_SELF_TEST
5035+
# PERFORM_SELFTEST
48575036
{'get_request': {'items': []},
48585037
'get_response': {'items': [{'name': 'tests_active', 'type': 'bool'}]},
48595038
'get_sub_device_range': 2,
@@ -4961,6 +5140,8 @@
49615140
(0x0a00, 'GFI / RCD Device'),
49625141
(0x0a01, 'Battery'),
49635142
(0x0a02, 'Controllable Breaker'),
5143+
(0x0b00, 'Input Device'),
5144+
(0x0b01, 'Sensor Input'),
49645145
(0x7fff, 'Other Device')],
49655146
'range': [(0x0000, 0x0009),
49665147
(0x0100, 0x0108),
@@ -4973,6 +5154,7 @@
49735154
(0x0800, 0x0802),
49745155
(0x0900, 0x0902),
49755156
(0x0a00, 0x0a02),
5157+
(0x0b00, 0x0b01),
49765158
(0x7fff, 0x7fff),
49775159
(0x8000, 0xdfff)]}],
49785160
}]},
@@ -5424,15 +5606,15 @@
54245606
{'name': 'shipping_lock_state', 'type': 'uint8',
54255607
'labels': [(0, 'Unlocked'),
54265608
(1, 'Locked'),
5427-
(2, 'Partially Locked'),]
5609+
(2, 'Partially Locked')]
54285610
},
54295611
]},
54305612
'get_sub_device_range': 0,
54315613
'name': 'SHIPPING_LOCK',
54325614
'set_request': {'items': [
54335615
{'name': 'shipping_lock_state', 'type': 'uint8',
54345616
'labels': [(0, 'Unlocked'),
5435-
(1, 'Locked'),]
5617+
(1, 'Locked')]
54365618
},
54375619
]},
54385620
'set_response': {'items': []},
@@ -5471,9 +5653,7 @@
54715653
'name': 'loopback_data',
54725654
'max_size': 231,
54735655
'min_size': 0,
5474-
'items': [
5475-
{'name': 'data', 'type': 'uint8'}
5476-
]},
5656+
'items': [{'name': 'data', 'type': 'uint8'}]}
54775657
]},
54785658
'set_response': {'items': [
54795659
{'type': 'group', 'name': 'loopback_data', 'items': [

data/sensor_types.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,13 @@
5151
0x1e: "Items",
5252
0x1f: "Humidity",
5353
0x20: "16 bit counter",
54+
0x21: "CPU load",
55+
0x22: "Bandwidth",
56+
0x23: "Concentration",
57+
0x24: "Sound pressure level",
58+
0x25: "Solid angle",
59+
0x26: "Log ratio",
60+
0x27: "Log ratio volts",
61+
0x28: "Log ratio watts",
5462
0x7f: "Other",
5563
}

0 commit comments

Comments
 (0)