Skip to content

Commit

Permalink
Enhance start/finish notifications
Browse files Browse the repository at this point in the history
rgc99 committed Sep 9, 2024
1 parent d60b2f9 commit a4bbfb4
Showing 4 changed files with 101 additions and 28 deletions.
25 changes: 21 additions & 4 deletions custom_components/irrigation_unlimited/irrigation_unlimited.py
Original file line number Diff line number Diff line change
@@ -6470,14 +6470,31 @@ def notify_sequence(
"""Send out a notification for start/finish to a sequence"""
# pylint: disable=too-many-arguments
data = {
CONF_CONTROLLER: {CONF_INDEX: controller.index, CONF_NAME: controller.name},
CONF_SEQUENCE: {CONF_INDEX: sequence.index, CONF_NAME: sequence.name},
CONF_ENTITY_ID: sequence.entity_id,
CONF_CONTROLLER: {
CONF_INDEX: controller.index,
CONF_CONTROLLER_ID: controller.controller_id,
CONF_NAME: controller.name,
},
CONF_SEQUENCE: {
CONF_INDEX: sequence.index,
CONF_SEQUENCE_ID: sequence.sequence_id,
CONF_NAME: sequence.name,
},
CONF_RUN: {CONF_DURATION: round(sequence_run.total_time.total_seconds())},
}
if schedule is not None:
data[CONF_SCHEDULE] = {CONF_INDEX: schedule.index, CONF_NAME: schedule.name}
data[CONF_SCHEDULE] = {
CONF_INDEX: schedule.index,
CONF_SCHEDULE_ID: schedule.schedule_id,
CONF_NAME: schedule.name,
}
else:
data[CONF_SCHEDULE] = {CONF_INDEX: None, CONF_NAME: RES_MANUAL}
data[CONF_SCHEDULE] = {
CONF_INDEX: None,
CONF_SCHEDULE_ID: None,
CONF_NAME: RES_MANUAL,
}
self._hass.bus.fire(f"{DOMAIN}_{event_type}", data)

def notify_switch(
21 changes: 15 additions & 6 deletions tests/configs/test_event.yaml
Original file line number Diff line number Diff line change
@@ -68,34 +68,43 @@ irrigation_unlimited:
- {t: '2021-01-04 09:55:00', c: 1, z: 0, s: 0}
controllers:
- name: "Test controller 1"
controller_id: 'ctrl_1'
zones:
- name: "Zone 1"
zone_id: 'zone_1'
- name: "Zone 2"
zone_id: 'zone_2'
- name: "Zone 3"
zone_id: 'zone_3'
- name: "Zone 4"
zone_id: 'zone_4'
sequences:
- name: "Seq 1"
sequence_id: 'seq_1'
delay: "0:01:00"
repeat: 2
schedules:
- time: "06:05"
schedule_id: 'sched_1'
zones:
- zone_id: 1
- zone_id: zone_1
duration: "0:06:00"
repeat: 2
- zone_id: [2, 3]
- zone_id: [zone_2, zone_3]
duration: "0:12:00"
- zone_id: 4
- zone_id: zone_4
duration: "0:18:00"
- name: "Seq 2"
sequence_id: 'seq_2'
delay: "0:01:00"
schedules:
- time: "09:55"
schedule_id: 'sched_2'
anchor: finish
zones:
- zone_id: 1
- zone_id: zone_1
duration: "0:06:00"
- zone_id: [2, 3]
- zone_id: [zone_2, zone_3]
duration: "0:12:00"
- zone_id: 4
- zone_id: zone_4
duration: "0:18:00"
61 changes: 49 additions & 12 deletions tests/test_event.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""Test irrigation_unlimited events."""

import homeassistant.core as ha
from custom_components.irrigation_unlimited.const import (
DOMAIN,
@@ -31,27 +32,63 @@ def handle_event(event: ha.Event):

assert event_data == [
{
"controller": {"index": 0, "name": "Test controller 1"},
"sequence": {"index": 0, "name": "Seq 1"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s1",
"controller": {
"index": 0,
"controller_id": "ctrl_1",
"name": "Test controller 1",
},
"sequence": {"index": 0, "sequence_id": "seq_1", "name": "Seq 1"},
"run": {"duration": 5460},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {
"index": 0,
"schedule_id": "sched_1",
"name": "Schedule 1",
},
},
{
"controller": {"index": 0, "name": "Test controller 1"},
"sequence": {"index": 0, "name": "Seq 1"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s1",
"controller": {
"index": 0,
"controller_id": "ctrl_1",
"name": "Test controller 1",
},
"sequence": {"index": 0, "sequence_id": "seq_1", "name": "Seq 1"},
"run": {"duration": 5460},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {
"index": 0,
"schedule_id": "sched_1",
"name": "Schedule 1",
},
},
{
"controller": {"index": 0, "name": "Test controller 1"},
"sequence": {"index": 1, "name": "Seq 2"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s2",
"controller": {
"index": 0,
"controller_id": "ctrl_1",
"name": "Test controller 1",
},
"sequence": {"index": 1, "sequence_id": "seq_2", "name": "Seq 2"},
"run": {"duration": 2280},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {
"index": 0,
"schedule_id": "sched_2",
"name": "Schedule 1",
},
},
{
"controller": {"index": 0, "name": "Test controller 1"},
"sequence": {"index": 1, "name": "Seq 2"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s2",
"controller": {
"index": 0,
"controller_id": "ctrl_1",
"name": "Test controller 1",
},
"sequence": {"index": 1, "sequence_id": "seq_2", "name": "Seq 2"},
"run": {"duration": 2280},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {
"index": 0,
"schedule_id": "sched_2",
"name": "Schedule 1",
},
},
]
22 changes: 16 additions & 6 deletions tests/test_service_sequence_pause_resume.py
Original file line number Diff line number Diff line change
@@ -119,20 +119,30 @@ def handle_event(event: ha.Event):
"event_type": "irrigation_unlimited_start",
"event_time": mk_local("2024-08-14 06:05"),
"data": {
"controller": {"index": 0, "name": "Test Controller"},
"sequence": {"index": 0, "name": "Seq 1"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s1",
"controller": {
"index": 0,
"controller_id": "1",
"name": "Test Controller",
},
"sequence": {"index": 0, "sequence_id": "1", "name": "Seq 1"},
"run": {"duration": 600},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {"index": 0, "schedule_id": None, "name": "Schedule 1"},
},
},
{
"event_type": "irrigation_unlimited_finish",
"event_time": mk_local("2024-08-14 06:20"),
"data": {
"controller": {"index": 0, "name": "Test Controller"},
"sequence": {"index": 0, "name": "Seq 1"},
"entity_id": "binary_sensor.irrigation_unlimited_c1_s1",
"controller": {
"index": 0,
"controller_id": "1",
"name": "Test Controller",
},
"sequence": {"index": 0, "sequence_id": "1", "name": "Seq 1"},
"run": {"duration": 900},
"schedule": {"index": 0, "name": "Schedule 1"},
"schedule": {"index": 0, "schedule_id": None, "name": "Schedule 1"},
},
},
]

0 comments on commit a4bbfb4

Please sign in to comment.