- alias: Gbox420 Hempy Bucket State Notification description: Notify and manage persistent notification for Hempy bucket state changes. IMPORTANT Update mobile_app_bits20 to mobile_app_ using lowercase letters, as listed in Home Assistant under Settings > Devices & Services > Devices triggers: - entity_id: - sensor.hempy_bucket1_state - sensor.hempy_bucket2_state trigger: state - event_type: mobile_app_notification_action event_data: action: START_WATERING trigger: event - event_type: mobile_app_notification_action event_data: action: STOP_WATERING trigger: event conditions: [] actions: - variables: bucket_number: '{{ trigger.entity_id.split(''_'')[-2][-1] if ''entity_id'' in trigger else ''-1'' }}' new_state: '{{ (trigger.to_state.state if trigger.to_state is defined else ''UNKNOWN'').strip() }}' - choose: - conditions: - condition: template value_template: '{{ new_state == ''DISABLED'' }}' sequence: - data: notification_id: hempy_bucket{{ bucket_number }}_disabled title: Gbox420 message: "Hempy bucket {{ bucket_number }} is {{ new_state }} \ \ \n" action: persistent_notification.create - data: title: Gbox420 message: 'Hempy bucket {{ bucket_number }} is {{ new_state }} ' data: actions: - action: START_WATERING title: Start Watering - action: STOP_WATERING title: Stop watering - action: DISMISS_NOTIFICATION title: Dismiss action: notify.mobile_app_bits20 - conditions: - condition: template value_template: '{{ new_state != ''DISABLED'' }}' sequence: - data: notification_id: hempy_bucket{{ bucket_number }}_disabled action: persistent_notification.dismiss - choose: - conditions: - condition: template value_template: '{{ trigger.platform == ''event'' and trigger.event.event_type == ''mobile_app_notification_action'' }}' sequence: - choose: - conditions: - condition: template value_template: '{{ trigger.event.data.action == ''START_WATERING'' }}' sequence: - action: esphome.hempy_bucket1_start_watering data: {} - conditions: - condition: template value_template: '{{ trigger.event.data.action == ''STOP_WATERING'' }}' sequence: - action: esphome.hempy_bucket1_stop_watering data: {} mode: parallel - alias: Send Light1 Brightness via MQTT trigger: - platform: state entity_id: number.gbox420_light1_brightness action: - service: mqtt.publish data: topic: Gbox420CMD/Lt1_B payload: '{{ trigger.to_state.state | int }}' - alias: Send Light1 OnTime via MQTT mode: single trigger: - platform: state entity_id: - number.gbox420_light1_ontimehour - number.gbox420_light1_ontimeminute action: - delay: 00:00:03 - service: mqtt.publish data: topic: Gbox420CMD/Lt1_OnT payload: '{% set hour = states(''number.gbox420_light1_ontimehour'') | int %} {% set minute = states(''number.gbox420_light1_ontimeminute'') | int %} {{ "%02d%02d" | format(hour, minute) }} ' - alias: Send Light1 OffTime via MQTT mode: single trigger: - platform: state entity_id: - number.gbox420_light1_offtimehour - number.gbox420_light1_offtimeminute action: - delay: 00:00:03 - service: mqtt.publish data: topic: Gbox420CMD/Lt1_OfT payload: '{% set hour = states(''number.gbox420_light1_offtimehour'') | int %} {% set minute = states(''number.gbox420_light1_offtimeminute'') | int %} {{ "%02d%02d" | format(hour, minute) }} ' - alias: Send Light2 OnTime via MQTT trigger: - platform: state entity_id: number.gbox420_light2_brightness action: - service: mqtt.publish data: topic: Gbox420CMD/Lt2_B payload: '{{ trigger.to_state.state | int }}' - alias: Send MQTT when Light2 OnTime Changes mode: single trigger: - platform: state entity_id: - number.gbox420_light2_ontimehour - number.gbox420_light2_ontimeminute action: - delay: 00:00:03 - service: mqtt.publish data: topic: Gbox420CMD/Lt2_OnT payload: '{% set hour = states(''number.gbox420_light2_ontimehour'') | int %} {% set minute = states(''number.gbox420_light2_ontimeminute'') | int %} {{ "%02d%02d" | format(hour, minute) }} ' - alias: Send Light2 OffTime via MQTT mode: single trigger: - platform: state entity_id: - number.gbox420_light2_offtimehour - number.gbox420_light2_offtimeminute action: - delay: 00:00:03 - service: mqtt.publish data: topic: Gbox420CMD/Lt2_OfT payload: '{% set hour = states(''number.gbox420_light2_offtimehour'') | int %} {% set minute = states(''number.gbox420_light2_offtimeminute'') | int %} {{ "%02d%02d" | format(hour, minute) }} ' - alias: Send Hempy bucket1 StartWeight trigger: - platform: state entity_id: number.gbox420_bucket1_startweight action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1SW payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket1 WateringIncrement trigger: - platform: state entity_id: number.gbox420_bucket1_wateringincrement action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1WI payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket1 MaxWeight trigger: - platform: state entity_id: number.gbox420_bucket1_maxweight action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1MW payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket1 EvaporationTarget trigger: - platform: state entity_id: number.gbox420_bucket1_evaporationtarget action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1ET payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket1 DrainTarget trigger: - platform: state entity_id: number.gbox420_bucket1_draintarget action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1DT payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket1 DrainTime trigger: - platform: state entity_id: number.gbox420_bucket1_draintime action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1D payload: '{{ trigger.to_state.state | int }}' - alias: Send Hempy bucket1 PumpSpeed trigger: - platform: state entity_id: number.gbox420_bucket1_pumpspeed action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1PS payload: '{{ trigger.to_state.state | int }}' - alias: Send Hempy bucket1 PumpTimeout trigger: - platform: state entity_id: number.gbox420_bucket1_pumptimeout action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B1T payload: '{{ trigger.to_state.state | int }}' - alias: Send Hempy bucket2 StartWeight trigger: - platform: state entity_id: number.gbox420_bucket2_startweight action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2SW payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket2 WateringIncrement trigger: - platform: state entity_id: number.gbox420_bucket2_wateringincrement action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2WI payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket2 MaxWeight trigger: - platform: state entity_id: number.gbox420_bucket2_maxweight action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2MW payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket2 EvaporationTarget trigger: - platform: state entity_id: number.gbox420_bucket2_evaporationtarget action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2ET payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket2 DrainTarget trigger: - platform: state entity_id: number.gbox420_bucket2_draintarget action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2DT payload: '{{ trigger.to_state.state | float }}' - alias: Send Hempy bucket2 DrainTime trigger: - platform: state entity_id: number.gbox420_bucket2_draintime action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2D payload: '{{ trigger.to_state.state | int }}' - alias: Send Hempy bucket2 PumpSpeed trigger: - platform: state entity_id: number.gbox420_bucket2_pumpspeed action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2PS payload: '{{ trigger.to_state.state | int }}' - alias: Send Hempy bucket2 PumpTimeout trigger: - platform: state entity_id: number.gbox420_bucket2_pumptimeout action: - service: mqtt.publish data: topic: Gbox420CMD/Hemp1_B2T payload: '{{ trigger.to_state.state | int }}' - alias: Send Aeroponics MinPressure trigger: - platform: state entity_id: number.gbox420_aero1_minpressure action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_PMn payload: '{{ trigger.to_state.state | float }}' - alias: Send Aeroponics MaxPressure trigger: - platform: state entity_id: number.gbox420_aero1_maxpressure action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_PMx payload: '{{ trigger.to_state.state | float }}' - alias: Send Aeroponics DayInterval trigger: - platform: state entity_id: number.gbox420_aero1_dayinterval action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_DInt payload: '{{ trigger.to_state.state | int }}' - alias: Send Aeroponics NightInterval trigger: - platform: state entity_id: number.gbox420_aero1_nightinterval action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_NInt payload: '{{ trigger.to_state.state | int }}' - alias: Send Aeroponics SprayDuration trigger: - platform: state entity_id: number.gbox420_aero1_sprayduration action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_Dur payload: '{{ trigger.to_state.state | float }}' - alias: Send Aeroponics PumpSpeed trigger: - platform: state entity_id: number.gbox420_aero1_pumpspeed action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_PS payload: '{{ trigger.to_state.state | int }}' - alias: Send Aeroponics PumpPrimingTime trigger: - platform: state entity_id: number.gbox420_aero1_pumpprimingtime action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_PPT payload: '{{ trigger.to_state.state | int }}' - alias: Send Aeroponics PumpTimeout trigger: - platform: state entity_id: number.gbox420_aero1_pumptimeout action: - service: mqtt.publish data: topic: Gbox420CMD/Aero1_PT payload: '{{ trigger.to_state.state | int }}' - alias: Gbox420 Hempy Bucket State Notification description: 'Notify and manage persistent notification for Hempy bucket state changes. IMPORTANT: Update mobile_app_bits20 to mobile_app_ using lowercase letters, as listed in Home Assistant under Settings > Devices & Services > Devices' triggers: - entity_id: - sensor.hempy_bucket1_state - sensor.hempy_bucket2_state trigger: state - event_type: mobile_app_notification_action event_data: action: START_WATERING trigger: event - event_type: mobile_app_notification_action event_data: action: STOP_WATERING trigger: event conditions: [] actions: - variables: bucket_number: "{% if trigger.entity_id == 'sensor.hempy_bucket1_state' %}\n\ \ 1\n{% elif trigger.entity_id == 'sensor.hempy_bucket2_state' %}\n 2\n\ {% else %}\n {{ trigger.event.data.message[13] if trigger.event.data.message|length\ \ > 13 else '-1' }}\n{% endif %}" new_state: '{{ (trigger.to_state.state if trigger.to_state is defined else ''UNKNOWN'').strip() }}' - if: - condition: template value_template: '{{ new_state == ''DISABLED'' or new_state == ''DRY'' }}' then: - data: notification_id: hempy_bucket{{ bucket_number }}_alert title: Gbox420 message: 'Hempy bucket {{ bucket_number }} is {{ new_state }} ' action: persistent_notification.create - data: title: Gbox420 message: 'Hempy bucket {{ bucket_number }} is {{ new_state }} ' data: actions: - action: START_WATERING title: Start watering data: bucket_number: '{{ bucket_number }}' - action: STOP_WATERING title: Stop watering data: bucket_number: '{{ bucket_number }}' - action: DISMISS_NOTIFICATION title: Dismiss action: notify.mobile_app_bits20 - if: - condition: template value_template: '{{ new_state != ''DISABLED'' and new_state != ''DRY''}}' then: - data: notification_id: hempy_bucket{{ bucket_number }}_alert action: persistent_notification.dismiss - if: - condition: template value_template: '{{ trigger.event.data.action in [''START_WATERING'', ''STOP_WATERING''] }}' then: - action: "{% if trigger.event.data.action == 'START_WATERING' %}\n esphome.hempy_bucket{{\ \ bucket_number }}_start_watering\n{% else %}\n esphome.hempy_bucket{{ bucket_number\ \ }}_stop_watering\n{% endif %}" mode: parallel