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#  method: [timebased|count](optional)
11#    [Available methods:
12#     * timebased - use a percentage based deviation
13#     * count - run up/down count fault detection]
14#  functional_delay:
15#    [Delay (in secs) before a fan is marked functional after returning
16#     within the allowed deviation]
17#  allowed_out_of_range_time: (required for method timebased)
18#    [Time (in secs) actual speed can be outside of deviation of
19#     target speed]
20#  deviation:
21#    [Percentage that actual speed must be within target speed]
22#  num_sensors_nonfunc_for_fan_nonfunc:
23#    [How many sensors on the fan must be faulted before fan
24#     will be considered faulted]
25#  sensors: [array of speed sensors for the fan]
26#    - name [The name of the fan sensor]
27#      has_target [true|false  If this sensor has a Target property for
28#                  setting a fan speed (otherwise just for reads)]
29#      target_interface [The fan target interface used by the sensor.
30#                        Default is "xyz.openbmc_project.Control.FanSpeed"]
31#      target_path [The full target path, which implements
32#                   xyz.openbmc_project.Control.FanSpeed or
33#                   xyz.openbmc_project.Control.FanPwm interface.
34#                   Default is /xyz/openbmc_project/sensors/fan_tach/*"]
35#      factor [The factor to multiply with target to calculate the expected
36#              fan speed. Default is 1 for fan speed target;
37#              Customized value for pwm target]
38#      offset [The offset to add to calculate the expected fan speed.
39#              Default is 0 for fan speed target;
40#              Customized value for pwm target]
41#  condition: [optional condition function to create fan functional monitoring]
42#    name: [The name of an available condition function]
43#    properties: [The properties used in the condition function]
44#        - object: [Object path of property to use]
45#          interface: [Interface of property to use]
46#          property:
47#              name: [Property name]
48#              type: [Property data type]
49#              value: [Property value to check condition against]
50#
51#sensor_trust_groups:
52# - class: [Group class name
53#           Available classes:
54#           * NonzeroSpeed - Only trust if at least one sensor in the group
55#                            has a nonzero speed.]
56#   group:
57#     - name [The name of the fan sensor in this group]
58#       in_trust: [true|false] (optional)
59#         [Include in trust determination or not. Default = true]
60
61#The code uses these parameters as follows:
62#  After a speed reading of a sensor is outside of the allowed deviation of
63#  the target speed for the allowed out of range time, if at least
64#  num_sensors_nonfunc_for_fan_nonfunc sensors meet this condition,
65#  the fan will be set to nonfunctional in the inventory.
66#
67#  Sensor trust groups are used to specify that the speed values for the
68#  sensors in a group cannot be trusted based on some condition, where
69#  the condition is based on the class used to implement the group.  All
70#  sensors in the group go in and out of trust based on those defined
71#  to be part of determining the trust.  This section is optional.
72
73#Example entries for 1 fan system:
74#fans:
75#  - inventory: /system/chassis/motherboard/fan0
76#    functional_delay: 5
77#    allowed_out_of_range_time: 15
78#    deviation: 15
79#    num_sensors_nonfunc_for_fan_nonfunc: 1
80#    sensors:
81#      - name: fan0
82#        has_target: true
83#    # Only create fan functional properties and monitor on air cooled
84#    condition:
85#      name: propertiesMatch
86#      properties:
87#        - object: /xyz/openbmc_project/inventory/system/chassis
88#          interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
89#          property:
90#            name: WaterCooled
91#            type: bool
92#            value: false
93#sensor_trust_groups:
94# - class: NonzeroSpeed
95#    group:
96#      - name: fan0_0
97#        in_trust: false
98#      - name: fan0_1
99
100#Example entries for count method fan system:
101#fans:
102#  - inventory: /system/chassis/motherboard/fan2
103#    method: count
104#    functional_delay: 5
105#    deviation: 15
106#    num_sensors_nonfunc_for_fan_nonfunc: 1
107#    sensors:
108#      - name: fan2
109#        has_target: true
110#    # Only create fan functional properties and monitor on air cooled
111#    condition:
112#      name: propertiesMatch
113#      properties:
114#        - object: /xyz/openbmc_project/inventory/system/chassis
115#          interface: xyz.openbmc_project.Inventory.Decorator.CoolingType
116#          property:
117#            name: WaterCooled
118#            type: bool
119#            value: false
120