#Example fan monitor definitions for phosphor-fan-monitor #List the fans that need to be monitored, along with some #properties that define how much slack is allowed in the actual #tach value as compared to the target tach value. #fans: # - inventory: # [The system inventory location for the fan] # method: [timebased|count](optional) # [Available methods: # * timebased - use a percentage based deviation # * count - run up/down count fault detection] # functional_delay: # [Delay (in secs) before a fan is marked functional after returning # within the allowed deviation] # allowed_out_of_range_time: (required for method timebased) # [Time (in secs) actual speed can be outside of deviation of # target speed] # deviation: # [Percentage that actual speed must be within target speed] # num_sensors_nonfunc_for_fan_nonfunc: # [How many sensors on the fan must be faulted before fan # will be considered faulted] # sensors: [array of speed sensors for the fan] # - name [The name of the fan sensor] # has_target [true|false If this sensor has a Target property for # setting a fan speed (otherwise just for reads)] # target_interface [The fan target interface used by the sensor. # Default is "xyz.openbmc_project.Control.FanSpeed"] # target_path [The full target path, which implements # xyz.openbmc_project.Control.FanSpeed or # xyz.openbmc_project.Control.FanPwm interface. # Default is /xyz/openbmc_project/sensors/fan_tach/*"] # factor [The factor to multiply with target to calculate the expected # fan speed. Default is 1 for fan speed target; # Customized value for pwm target] # offset [The offset to add to calculate the expected fan speed. # Default is 0 for fan speed target; # Customized value for pwm target] # condition: [optional condition function to create fan functional monitoring] # name: [The name of an available condition function] # properties: [The properties used in the condition function] # - object: [Object path of property to use] # interface: [Interface of property to use] # property: # name: [Property name] # type: [Property data type] # value: [Property value to check condition against] # #sensor_trust_groups: # - class: [Group class name # Available classes: # * NonzeroSpeed - Only trust if at least one sensor in the group # has a nonzero speed.] # group: # - name [The name of the fan sensor in this group] # in_trust: [true|false] (optional) # [Include in trust determination or not. Default = true] #The code uses these parameters as follows: # After a speed reading of a sensor is outside of the allowed deviation of # the target speed for the allowed out of range time, if at least # num_sensors_nonfunc_for_fan_nonfunc sensors meet this condition, # the fan will be set to nonfunctional in the inventory. # # Sensor trust groups are used to specify that the speed values for the # sensors in a group cannot be trusted based on some condition, where # the condition is based on the class used to implement the group. All # sensors in the group go in and out of trust based on those defined # to be part of determining the trust. This section is optional. #Example entries for 1 fan system: #fans: # - inventory: /system/chassis/motherboard/fan0 # functional_delay: 5 # allowed_out_of_range_time: 15 # deviation: 15 # num_sensors_nonfunc_for_fan_nonfunc: 1 # sensors: # - name: fan0 # has_target: true # # Only create fan functional properties and monitor on air cooled # condition: # name: propertiesMatch # properties: # - object: /xyz/openbmc_project/inventory/system/chassis # interface: xyz.openbmc_project.Inventory.Decorator.CoolingType # property: # name: WaterCooled # type: bool # value: false #sensor_trust_groups: # - class: NonzeroSpeed # group: # - name: fan0_0 # in_trust: false # - name: fan0_1 #Example entries for count method fan system: #fans: # - inventory: /system/chassis/motherboard/fan2 # method: count # functional_delay: 5 # deviation: 15 # num_sensors_nonfunc_for_fan_nonfunc: 1 # sensors: # - name: fan2 # has_target: true # # Only create fan functional properties and monitor on air cooled # condition: # name: propertiesMatch # properties: # - object: /xyz/openbmc_project/inventory/system/chassis # interface: xyz.openbmc_project.Inventory.Decorator.CoolingType # property: # name: WaterCooled # type: bool # value: false