PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/sensehat.py |
""" Monitor temperature, humidity and pressure using the SenseHat of a Raspberry Pi =============================================================================== .. versionadded:: 2017.7.0 :maintainer: Benedikt Werner <1benediktwerner@gmail.com> :maturity: new :depends: sense_hat Python module """ import logging import re import salt.utils.beacons log = logging.getLogger(__name__) __virtualname__ = "sensehat" def __virtual__(): if "sensehat.get_pressure" in __salt__: return __virtualname__ else: err_msg = "sensehat.get_pressure is missing." log.error("Unable to load %s beacon: %s", __virtualname__, err_msg) return False, err_msg def validate(config): """ Validate the beacon configuration """ # Configuration for sensehat beacon should be a list if not isinstance(config, list): return False, "Configuration for sensehat beacon must be a list." else: config = salt.utils.beacons.list_to_dict(config) if "sensors" not in config: return False, "Configuration for sensehat beacon requires sensors." return True, "Valid beacon configuration" def beacon(config): """ Monitor the temperature, humidity and pressure using the SenseHat sensors. You can either specify a threshold for each value and only emit a beacon if it is exceeded or define a range and emit a beacon when the value is out of range. Units: * humidity: percent * temperature: degrees Celsius * temperature_from_pressure: degrees Celsius * pressure: Millibars .. code-block:: yaml beacons: sensehat: - sensors: humidity: 70% temperature: [20, 40] temperature_from_pressure: 40 pressure: 1500 """ ret = [] min_default = {"humidity": "0", "pressure": "0", "temperature": "-273.15"} config = salt.utils.beacons.list_to_dict(config) for sensor in config.get("sensors", {}): sensor_function = f"sensehat.get_{sensor}" if sensor_function not in __salt__: log.error("No sensor for meassuring %s. Skipping.", sensor) continue sensor_config = config["sensors"][sensor] if isinstance(sensor_config, list): sensor_min = str(sensor_config[0]) sensor_max = str(sensor_config[1]) else: sensor_min = min_default.get(sensor, "0") sensor_max = str(sensor_config) if isinstance(sensor_min, str) and "%" in sensor_min: sensor_min = re.sub("%", "", sensor_min) if isinstance(sensor_max, str) and "%" in sensor_max: sensor_max = re.sub("%", "", sensor_max) sensor_min = float(sensor_min) sensor_max = float(sensor_max) current_value = __salt__[sensor_function]() if not sensor_min <= current_value <= sensor_max: ret.append({"tag": f"sensehat/{sensor}", sensor: current_value}) return ret