1#Example fan monitor definitions for phosphor-fan-monitor
2
3#List the fans that need to be monitored, along with some
4#properties that define how much slack is allowed in the actual
5#tach value as compared to the target tach value.
6
7#fans:
8# - inventory:
9#    [The system inventory location for the fan]
10#  functional_delay:
11#    [Delay (in secs) before a fan is marked functional after returning
12#     within the allowed deviation]
13#  allowed_out_of_range_time:
14#    [Time (in secs) actual speed can be outside of deviation of
15#     target speed]
16#  deviation:
17#    [Percentage that actual speed must be within target speed]
18#  num_sensors_nonfunc_for_fan_nonfunc:
19#    [How many sensors on the fan must be faulted before fan
20#     will be considered faulted]
21#  sensors: [array of speed sensors for the fan]
22#    - name [The name of the fan sensor]
23#      has_target [true|false  If this sensor has a Target property for
24#                  setting a fan speed (otherwise just for reads)]
25#      target_interface [The fan target interface used by the sensor.
26#                        Default is "xyz.openbmc_project.Control.FanSpeed"]
27#      factor [The factor to multiply with target to calculate the expected
28#              fan speed. Default is 1 for fan speed target;
29#              Customized value for pwm target]
30#      offset [The offset to add to calculate the expected fan speed.
31#              Default is 0 for fan speed target;
32#              Customized value for pwm target]
33#  condition: [optional condition function to create fan functional monitoring]
34#    name: [The name of an available condition function]
35#    properties: [The properties used in the condition function]
36#        - object: [Object path of property to use]
37#          interface: [Interface of property to use]
38#          property:
39#              name: [Property name]
40#              type: [Property data type]
41#              value: [Property value to check condition against]
42#
43#sensor_trust_groups:
44# - class: [Group class name
45#           Available classes:
46#           * NonzeroSpeed - Only trust if at least one sensor in the group
47#                            has a nonzero speed.]
48#   group:
49#     - name [The name of the fan sensor in this group]
50#       in_trust: [true|false] (optional)
51#         [Include in trust determination or not. Default = true]
52
53#The code uses these parameters as follows:
54#  After a speed reading of a sensor is outside of the allowed deviation of
55#  the target speed for the allowed out of range time, if at least
56#  num_sensors_nonfunc_for_fan_nonfunc sensors meet this condition,
57#  the fan will be set to nonfunctional in the inventory.
58#
59#  Sensor trust groups are used to specify that the speed values for the
60#  sensors in a group cannot be trusted based on some condition, where
61#  the condition is based on the class used to implement the group.  All
62#  sensors in the group go in and out of trust based on those defined
63#  to be part of determining the trust.  This section is optional.
64
65#Example entries for 1 fan system:
66#fans:
67#  - inventory: /system/chassis/motherboard/fan0
68#    functional_delay: 5
69#    allowed_out_of_range_time: 15
70#    deviation: 15
71#    num_sensors_nonfunc_for_fan_nonfunc: 1
72#    sensors:
73#      - name: fan0
74#        has_target: true
75#    # Only create fan functional properties and monitor on air cooled
76#    condition:
77#      name: propertiesMatch
78#      properties:
79#        - object: /xyz/openbmc_project/inventory/system/chassis
80#          interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
81#          property:
82#            name: WaterCooled
83#            type: bool
84#            value: false
85#sensor_trust_groups:
86# - class: NonzeroSpeed
87#    group:
88#      - name: fan0_0
89#        in_trust: false
90#      - name: fan0_1
91