#sensor.sun_elevation @state_trigger("sensor.sun_elevation") def sun_change(trigger_type=None, var_name=None, value=None): """Sun is above horizon.""" if value is None: return rollo_kinderzimmer_expected_pos = 50 rollo_kinderzimmer_elevation_threshold = 15 rollo_schlafzimmer_elevation_threshold = 48 # sun_change: trigger_type state var_name sensor.sun_elevation value 18.04 log.info(f"sun_change: trigger_type {trigger_type} var_name {var_name} value {value}") # weather.forecast_home sonnenschutz = state.get("input_boolean.sonnenschutz") if sonnenschutz == "off": log.info(f"sun_change: sonnenschutz {sonnenschutz}, exiting") return if float(value) < 0: log.info("sun_change: sun is below horizon, exiting") # fenster und rollo zustände auslesen fenster_kinderzimmer = state.get("binary_sensor.neq0632846_state") fenster_schlafzimmer_l = state.get("binary_sensor.neq0629114_state") fenster_schlafzimmer_r = state.get("binary_sensor.neq0627526_state") rollo_kinderzimmer = state.get("cover.00115a498e0439") rollo_kinderzimmer_attribs = state.getattr("cover.00115a498e0439") rollo_kinderzimmer_position = rollo_kinderzimmer_attribs['current_position'] log.info(f"Fenster: kinderzimmer {fenster_kinderzimmer}, szl {fenster_schlafzimmer_l}, szr {fenster_schlafzimmer_r}") log.info(f"Rollos: kinderzimmer {rollo_kinderzimmer}, ({rollo_kinderzimmer_position}%)") # wettervorhersage: temperatur, wolken, condition forecast_temp = state.get("sensor.daily_forecast") forecast_attribs = state.getattr("sensor.daily_forecast") forecast_cloudcoverage = forecast_attribs['cloud_coverage'] forecast_condition = forecast_attribs['condition'] log.info(f"sun_change: forecast_temp {forecast_temp}, cloudcoverage {forecast_cloudcoverage}, condition {forecast_condition}") if float(forecast_temp) <= 15 and forecast_cloudcoverage > 50: log.info("sun_change: weather not nice, not taking care of covers") return if float(value) > rollo_kinderzimmer_elevation_threshold: # wenn fenster geschlossen und rollo oben if fenster_kinderzimmer == 'off' and rollo_kinderzimmer_position > rollo_kinderzimmer_expected_pos: log.info("nu würde ich was runterfahren im kinderzimmer") if float(value) > rollo_schlafzimmer_elevation_threshold: if fenster_schlafzimmer_l == 'off' and fenster_schlafzimmer_r == 'off': log.info("nu würde ich was runterfahren im schlafzimmer") if trigger_type == "state": if var_name == "sensor.sun_elevation": log.info(f"sun_change: sun elevation changed to {value}") if float(value) < 0: log.info("sun_change: sun is below horizon, exiting")