Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow Refreshing Devices During Deletes or Manually #806

Merged
merged 6 commits into from
Dec 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 22 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,16 @@ service: google_home.delete_alarm
data:
entity_id: sensor.kitchen_alarms
timer_id: alarm/47dc1fa0-5ec0-2cc7-9ead-a94b85e22769
skip_refresh: true
```

#### Key Descriptions

| Key | Example | Description |
| ----------- | -------------------------------------------- | --------------------------------------------- |
| `entity_id` | `sensor.kitchen_alarms` | Entity name of a Google Home alarms sensor. |
| `alarm_id` | `alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of an alarm. See alarms description above. |
| Key | Example | Description |
| -------------- | -------------------------------------------- | ----------------------------------------------- |
| `entity_id` | `sensor.kitchen_alarms` | Entity name of a Google Home alarms sensor. |
| `alarm_id` | `alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of an alarm. See alarms description above. |
| `skip_refresh` | `true` | Boolean to skip refreshing Google Home devices. |

### Delete timer

Expand All @@ -173,14 +175,16 @@ service: google_home.delete_timer
data:
entity_id: sensor.kitchen_timers
timer_id: timer/47dc1fa0-5ec0-2cc7-9ead-a94b85e22769
skip_refresh: true
```

#### Key Descriptions

| Key | Example | Description |
| ----------- | -------------------------------------------- | -------------------------------------------- |
| `entity_id` | `sensor.kitchen_timers` | Entity name of a Google Home timers sensor. |
| `timer_id` | `timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of a timer. See timers description above. |
| Key | Example | Description |
| -------------- | -------------------------------------------- | ----------------------------------------------- |
| `entity_id` | `sensor.kitchen_timers` | Entity name of a Google Home timers sensor. |
| `timer_id` | `timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of a timer. See timers description above. |
| `skip_refresh` | `true` | Boolean to skip refreshing Google Home devices. |

### Reboot device

Expand All @@ -200,6 +204,16 @@ data:
| ----------- | ----------------------- | ------------------------------------------- |
| `entity_id` | `sensor.kitchen_device` | Entity name of a Google Home device sensor. |

### Refresh devices

Note: Resets the timer for automatic polling to refresh devices.

#### Example

```yaml
service: google_home.refresh_devices
```

## Getting Started

### Prerequisites
Expand Down
2 changes: 2 additions & 0 deletions custom_components/google_home/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@
SERVICE_REBOOT: Final = "reboot_device"
SERVICE_DELETE_ALARM: Final = "delete_alarm"
SERVICE_DELETE_TIMER: Final = "delete_timer"
SERVICE_REFRESH: Final = "refresh_devices"
SERVICE_ATTR_ALARM_ID: Final = "alarm_id"
SERVICE_ATTR_SKIP_REFRESH: Final = "skip_refresh"
SERVICE_ATTR_TIMER_ID: Final = "timer_id"

# Configuration and options
Expand Down
31 changes: 29 additions & 2 deletions custom_components/google_home/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@
LABEL_DEVICE,
LABEL_TIMERS,
SERVICE_ATTR_ALARM_ID,
SERVICE_ATTR_SKIP_REFRESH,
SERVICE_ATTR_TIMER_ID,
SERVICE_DELETE_ALARM,
SERVICE_DELETE_TIMER,
SERVICE_REBOOT,
SERVICE_REFRESH,
)
from .entity import GoogleHomeBaseEntity
from .models import GoogleHomeAlarmStatus, GoogleHomeDevice, GoogleHomeTimerStatus
Expand Down Expand Up @@ -87,13 +89,23 @@ async def async_setup_entry(
# Services
platform.async_register_entity_service(
SERVICE_DELETE_ALARM,
{vol.Required(SERVICE_ATTR_ALARM_ID): cv.string}, # type: ignore[dict-item]
{
vol.Required(SERVICE_ATTR_ALARM_ID): cv.string, # type: ignore[dict-item]
vol.Optional(
SERVICE_ATTR_SKIP_REFRESH
): cv.boolean, # type: ignore[dict-item]
},
GoogleHomeAlarmsSensor.async_delete_alarm,
)

platform.async_register_entity_service(
SERVICE_DELETE_TIMER,
{vol.Required(SERVICE_ATTR_TIMER_ID): cv.string}, # type: ignore[dict-item]
{
vol.Required(SERVICE_ATTR_TIMER_ID): cv.string, # type: ignore[dict-item]
vol.Optional(
SERVICE_ATTR_SKIP_REFRESH
): cv.boolean, # type: ignore[dict-item]
},
GoogleHomeTimersSensor.async_delete_timer,
)

Expand All @@ -103,6 +115,12 @@ async def async_setup_entry(
GoogleHomeDeviceSensor.async_reboot_device,
)

platform.async_register_entity_service(
SERVICE_REFRESH,
{},
GoogleHomeDeviceSensor.async_refresh_devices,
)

return True


Expand Down Expand Up @@ -156,6 +174,10 @@ async def async_reboot_device(self, _call: ServiceCall) -> None:

await self.client.reboot_google_device(device)

async def async_refresh_devices(self, _call: ServiceCall) -> None:
"""Refresh the devices."""
await self.coordinator.async_request_refresh()


class GoogleHomeAlarmsSensor(GoogleHomeBaseEntity):
"""Google Home Alarms sensor."""
Expand Down Expand Up @@ -238,6 +260,8 @@ async def async_delete_alarm(self, call: ServiceCall) -> None:
return

await self.client.delete_alarm_or_timer(device=device, item_to_delete=alarm_id)
if not call.data[SERVICE_ATTR_SKIP_REFRESH]:
await self.coordinator.async_request_refresh()


class GoogleHomeTimersSensor(GoogleHomeBaseEntity):
Expand Down Expand Up @@ -312,3 +336,6 @@ async def async_delete_timer(self, call: ServiceCall) -> None:
return

await self.client.delete_alarm_or_timer(device=device, item_to_delete=timer_id)
if not call.data[SERVICE_ATTR_SKIP_REFRESH]:
_LOGGER.debug("Refreshing Devices")
await self.coordinator.async_request_refresh()
14 changes: 14 additions & 0 deletions custom_components/google_home/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ delete_alarm:
entity:
domain: sensor
integration: google_home
skip_refresh:
example: true
default: false
required: false
selector:
boolean:
alarm_id:
example: "alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51"
required: true
Expand All @@ -30,8 +36,16 @@ delete_timer:
entity:
domain: sensor
integration: google_home
skip_refresh:
example: true
default: false
required: false
selector:
boolean:
timer_id:
example: "timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51"
required: true
selector:
text:

refresh_devices:
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
"description": "ID de l'alarma (alarm/xxx).",
"name": "ID de l'alarma"
},
"skip_refresh": {
"description": "Omet l'actualització dels dispositius de Google Home després d'haver suprimit una alarma.",
"name": "Omet l'actualització"
},
"entity_id": {
"description": "Representa un dispositiu Google Home (sensor.xxxx_alarms).",
"name": "Entitat"
Expand All @@ -51,6 +55,10 @@
"description": "ID del temporitzador (timer/xxx).",
"name": "ID del temporitzador"
},
"skip_refresh": {
"description": "Omet l'actualització dels dispositius de Google Home després d'haver suprimit un temporitzador.",
"name": "Omet l'actualització"
},
"entity_id": {
"description": "Representa un dispositiu Google Home (sensor.xxxx_alarms).",
"name": "Entitat"
Expand All @@ -61,6 +69,10 @@
"reboot_device": {
"description": "Reinicia un dispositiu Google Home.",
"name": "Reinicia dispositiu"
},
"refresh_devices": {
"description": "Actualitza l'estat de tots els dispositius Google Home.",
"name": "Actualitzar dispositius"
}
}
}
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
"description": "ID på en alarm (alarm/xxx).",
"name": "Alarm-ID"
},
"skip_refresh": {
"description": "Spring over at opdatere Google Home-enheder efter sletning af en alarm.",
"name": "Spring opdatering over"
},
"entity_id": {
"description": "Repræsenterer en Google Home-enhed (sensor.xxxx_alarms).",
"name": "Entitet"
Expand All @@ -50,6 +54,10 @@
"description": "ID på en timer (timer/xxx).",
"name": "Timer-ID"
},
"skip_refresh": {
"description": "Spring over at opdatere Google Home-enheder efter sletning af en timer.",
"name": "Spring opdatering over"
},
"entity_id": {
"description": "Repræsenterer en Google Home-enhed (sensor.xxxx_alarms).",
"name": "Entitet"
Expand All @@ -60,6 +68,10 @@
"reboot_device": {
"description": "Genstart en Google Home-enhed.",
"name": "Genstart enhed"
},
"refresh_devices": {
"description": "Opdater status for alle Google Home-enheder.",
"name": "Opdater enheder"
}
}
}
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
"description": "ID eines Alarms (alarm/xxx).",
"name": "Alarm-ID"
},
"skip_refresh": {
"description": "Überspringen Sie die Aktualisierung von Google Home-Geräten nach dem Löschen eines Alarms.",
"name": "Aktualisierung überspringen"
},
"entity_id": {
"description": "Stellt ein Google Home Gerät dar (sensor.xxxx_alarms).",
"name": "Entität"
Expand All @@ -51,6 +55,10 @@
"description": "ID eines Timers (timer/xxx).",
"name": "Timer-ID"
},
"skip_refresh": {
"description": "Überspringen Sie die Aktualisierung von Google Home-Geräten, nachdem Sie einen Timer gelöscht haben.",
"name": "Aktualisierung überspringen"
},
"entity_id": {
"description": "Stellt ein Google Home Gerät dar (sensor.xxxx_alarms).",
"name": "Entität"
Expand All @@ -61,6 +69,10 @@
"reboot_device": {
"description": "Ein Google Home Gerät neu starten.",
"name": "Gerät neu starten"
},
"refresh_devices": {
"description": "Aktualisieren Sie den Status aller Google Home-Geräte.",
"name": "Geräte aktualisieren"
}
}
}
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
"description": "ID of an alarm (alarm/xxx).",
"name": "Alarm ID"
},
"skip_refresh": {
"description": "Skip refreshing Google Home devices after deleting an alarm.",
"name": "Skip refresh"
},
"entity_id": {
"description": "Represents a Google Home device (sensor.xxxx_alarms).",
"name": "Entity"
Expand All @@ -52,6 +56,10 @@
"description": "ID of a timer (timer/xxx).",
"name": "Timer ID"
},
"skip_refresh": {
"description": "Skip refreshing Google Home devices after deleting a timer.",
"name": "Skip refresh"
},
"entity_id": {
"description": "Represents a Google Home device (sensor.xxxx_alarms).",
"name": "Entity"
Expand All @@ -62,6 +70,10 @@
"reboot_device": {
"description": "Reboot a Google Home device.",
"name": "Reboot device"
},
"refresh_devices": {
"description": "Refresh the status of all Google Home Devices.",
"name": "Refresh devices"
}
}
}
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
"description": "ID de una alarma (alarm/xxx).",
"name": "ID de alarma"
},
"skip_refresh": {
"description": "Omita la actualización de los dispositivos Google Home después de eliminar una alarma.",
"name": "Saltar actualización"
},
"entity_id": {
"description": "Representa un dispositivo Google Home (sensor.xxxx_alarms).",
"name": "Entidad"
Expand All @@ -51,6 +55,10 @@
"description": "ID de un temporizador (timer/xxx).",
"name": "ID de temporizador"
},
"skip_refresh": {
"description": "Omita la actualización de los dispositivos Google Home después de eliminar un temporizador.",
"name": "Saltar actualización"
},
"entity_id": {
"description": "Representa un dispositivo Google Home (sensor.xxxx_alarms).",
"name": "Entidad"
Expand All @@ -61,6 +69,10 @@
"reboot_device": {
"description": "Reiniciar un dispositivo Google Home.",
"name": "Reiniciar dispositivo"
},
"refresh_devices": {
"description": "Actualiza el estado de todos los dispositivos Google Home.",
"name": "Actualizar dispositivos"
}
}
}
12 changes: 12 additions & 0 deletions custom_components/google_home/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
"description": "ID d'un réveil (alarm/xxx).",
"name": "ID de l'alarme"
},
"skip_refresh": {
"description": "Ignorez l'actualisation des appareils Google Home après la suppression d'une alarme.",
"name": "Ignorer l'actualisation"
},
"entity_id": {
"description": "Représente un appareil Google Home (sensor.xxxx_alarms).",
"name": "Entité"
Expand All @@ -51,6 +55,10 @@
"description": "ID d'un minuteur (timer/xxx).",
"name": "ID du minuteur"
},
"skip_refresh": {
"description": "Ignorez l'actualisation des appareils Google Home après la suppression d'une minuterie.",
"name": "Ignorer l'actualisation"
},
"entity_id": {
"description": "Représente un appareil Google Home (sensor.xxxx_alarms).",
"name": "Entité"
Expand All @@ -61,6 +69,10 @@
"reboot_device": {
"description": "Redémarrer un appareil Google Home.",
"name": "Redémarrer l'appareil"
},
"refresh_devices": {
"description": "Actualisez l'état de tous les appareils Google Home.",
"name": "Actualiser les appareils"
}
}
}
Loading