Skip to content

Commit 370494b

Browse files
authored
Allow Refreshing Devices During Deletes or Manually (#806)
* Add force_refresh params and refresh_devices service * Add force_refresh params and refresh_devices service * ignore voluptuous typing * force_refresh to skip_refresh and translation strings * fix skip_refresh default and update readme
1 parent 801ad26 commit 370494b

File tree

20 files changed

+259
-10
lines changed

20 files changed

+259
-10
lines changed

README.md

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,16 @@ service: google_home.delete_alarm
155155
data:
156156
entity_id: sensor.kitchen_alarms
157157
timer_id: alarm/47dc1fa0-5ec0-2cc7-9ead-a94b85e22769
158+
skip_refresh: true
158159
```
159160
160161
#### Key Descriptions
161162
162-
| Key | Example | Description |
163-
| ----------- | -------------------------------------------- | --------------------------------------------- |
164-
| `entity_id` | `sensor.kitchen_alarms` | Entity name of a Google Home alarms sensor. |
165-
| `alarm_id` | `alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of an alarm. See alarms description above. |
163+
| Key | Example | Description |
164+
| -------------- | -------------------------------------------- | ----------------------------------------------- |
165+
| `entity_id` | `sensor.kitchen_alarms` | Entity name of a Google Home alarms sensor. |
166+
| `alarm_id` | `alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of an alarm. See alarms description above. |
167+
| `skip_refresh` | `true` | Boolean to skip refreshing Google Home devices. |
166168

167169
### Delete timer
168170

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

178181
#### Key Descriptions
179182

180-
| Key | Example | Description |
181-
| ----------- | -------------------------------------------- | -------------------------------------------- |
182-
| `entity_id` | `sensor.kitchen_timers` | Entity name of a Google Home timers sensor. |
183-
| `timer_id` | `timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of a timer. See timers description above. |
183+
| Key | Example | Description |
184+
| -------------- | -------------------------------------------- | ----------------------------------------------- |
185+
| `entity_id` | `sensor.kitchen_timers` | Entity name of a Google Home timers sensor. |
186+
| `timer_id` | `timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51` | ID of a timer. See timers description above. |
187+
| `skip_refresh` | `true` | Boolean to skip refreshing Google Home devices. |
184188

185189
### Reboot device
186190

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

207+
### Refresh devices
208+
209+
Note: Resets the timer for automatic polling to refresh devices.
210+
211+
#### Example
212+
213+
```yaml
214+
service: google_home.refresh_devices
215+
```
216+
203217
## Getting Started
204218

205219
### Prerequisites

custom_components/google_home/const.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@
4242
SERVICE_REBOOT: Final = "reboot_device"
4343
SERVICE_DELETE_ALARM: Final = "delete_alarm"
4444
SERVICE_DELETE_TIMER: Final = "delete_timer"
45+
SERVICE_REFRESH: Final = "refresh_devices"
4546
SERVICE_ATTR_ALARM_ID: Final = "alarm_id"
47+
SERVICE_ATTR_SKIP_REFRESH: Final = "skip_refresh"
4648
SERVICE_ATTR_TIMER_ID: Final = "timer_id"
4749

4850
# Configuration and options

custom_components/google_home/sensor.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
LABEL_DEVICE,
2727
LABEL_TIMERS,
2828
SERVICE_ATTR_ALARM_ID,
29+
SERVICE_ATTR_SKIP_REFRESH,
2930
SERVICE_ATTR_TIMER_ID,
3031
SERVICE_DELETE_ALARM,
3132
SERVICE_DELETE_TIMER,
3233
SERVICE_REBOOT,
34+
SERVICE_REFRESH,
3335
)
3436
from .entity import GoogleHomeBaseEntity
3537
from .models import GoogleHomeAlarmStatus, GoogleHomeDevice, GoogleHomeTimerStatus
@@ -87,13 +89,23 @@ async def async_setup_entry(
8789
# Services
8890
platform.async_register_entity_service(
8991
SERVICE_DELETE_ALARM,
90-
{vol.Required(SERVICE_ATTR_ALARM_ID): cv.string}, # type: ignore[dict-item]
92+
{
93+
vol.Required(SERVICE_ATTR_ALARM_ID): cv.string, # type: ignore[dict-item]
94+
vol.Optional(
95+
SERVICE_ATTR_SKIP_REFRESH
96+
): cv.boolean, # type: ignore[dict-item]
97+
},
9198
GoogleHomeAlarmsSensor.async_delete_alarm,
9299
)
93100

94101
platform.async_register_entity_service(
95102
SERVICE_DELETE_TIMER,
96-
{vol.Required(SERVICE_ATTR_TIMER_ID): cv.string}, # type: ignore[dict-item]
103+
{
104+
vol.Required(SERVICE_ATTR_TIMER_ID): cv.string, # type: ignore[dict-item]
105+
vol.Optional(
106+
SERVICE_ATTR_SKIP_REFRESH
107+
): cv.boolean, # type: ignore[dict-item]
108+
},
97109
GoogleHomeTimersSensor.async_delete_timer,
98110
)
99111

@@ -103,6 +115,12 @@ async def async_setup_entry(
103115
GoogleHomeDeviceSensor.async_reboot_device,
104116
)
105117

118+
platform.async_register_entity_service(
119+
SERVICE_REFRESH,
120+
{},
121+
GoogleHomeDeviceSensor.async_refresh_devices,
122+
)
123+
106124
return True
107125

108126

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

157175
await self.client.reboot_google_device(device)
158176

177+
async def async_refresh_devices(self, _call: ServiceCall) -> None:
178+
"""Refresh the devices."""
179+
await self.coordinator.async_request_refresh()
180+
159181

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

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

242266

243267
class GoogleHomeTimersSensor(GoogleHomeBaseEntity):
@@ -312,3 +336,6 @@ async def async_delete_timer(self, call: ServiceCall) -> None:
312336
return
313337

314338
await self.client.delete_alarm_or_timer(device=device, item_to_delete=timer_id)
339+
if not call.data[SERVICE_ATTR_SKIP_REFRESH]:
340+
_LOGGER.debug("Refreshing Devices")
341+
await self.coordinator.async_request_refresh()

custom_components/google_home/services.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ delete_alarm:
1515
entity:
1616
domain: sensor
1717
integration: google_home
18+
skip_refresh:
19+
example: true
20+
default: false
21+
required: false
22+
selector:
23+
boolean:
1824
alarm_id:
1925
example: "alarm/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51"
2026
required: true
@@ -30,8 +36,16 @@ delete_timer:
3036
entity:
3137
domain: sensor
3238
integration: google_home
39+
skip_refresh:
40+
example: true
41+
default: false
42+
required: false
43+
selector:
44+
boolean:
3345
timer_id:
3446
example: "timer/6ed06a56-8a58-c6e3-a7d4-03f92c9d8a51"
3547
required: true
3648
selector:
3749
text:
50+
51+
refresh_devices:

custom_components/google_home/translations/ca.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
"description": "ID de l'alarma (alarm/xxx).",
3838
"name": "ID de l'alarma"
3939
},
40+
"skip_refresh": {
41+
"description": "Omet l'actualització dels dispositius de Google Home després d'haver suprimit una alarma.",
42+
"name": "Omet l'actualització"
43+
},
4044
"entity_id": {
4145
"description": "Representa un dispositiu Google Home (sensor.xxxx_alarms).",
4246
"name": "Entitat"
@@ -51,6 +55,10 @@
5155
"description": "ID del temporitzador (timer/xxx).",
5256
"name": "ID del temporitzador"
5357
},
58+
"skip_refresh": {
59+
"description": "Omet l'actualització dels dispositius de Google Home després d'haver suprimit un temporitzador.",
60+
"name": "Omet l'actualització"
61+
},
5462
"entity_id": {
5563
"description": "Representa un dispositiu Google Home (sensor.xxxx_alarms).",
5664
"name": "Entitat"
@@ -61,6 +69,10 @@
6169
"reboot_device": {
6270
"description": "Reinicia un dispositiu Google Home.",
6371
"name": "Reinicia dispositiu"
72+
},
73+
"refresh_devices": {
74+
"description": "Actualitza l'estat de tots els dispositius Google Home.",
75+
"name": "Actualitzar dispositius"
6476
}
6577
}
6678
}

custom_components/google_home/translations/da.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
"description": "ID på en alarm (alarm/xxx).",
3737
"name": "Alarm-ID"
3838
},
39+
"skip_refresh": {
40+
"description": "Spring over at opdatere Google Home-enheder efter sletning af en alarm.",
41+
"name": "Spring opdatering over"
42+
},
3943
"entity_id": {
4044
"description": "Repræsenterer en Google Home-enhed (sensor.xxxx_alarms).",
4145
"name": "Entitet"
@@ -50,6 +54,10 @@
5054
"description": "ID på en timer (timer/xxx).",
5155
"name": "Timer-ID"
5256
},
57+
"skip_refresh": {
58+
"description": "Spring over at opdatere Google Home-enheder efter sletning af en timer.",
59+
"name": "Spring opdatering over"
60+
},
5361
"entity_id": {
5462
"description": "Repræsenterer en Google Home-enhed (sensor.xxxx_alarms).",
5563
"name": "Entitet"
@@ -60,6 +68,10 @@
6068
"reboot_device": {
6169
"description": "Genstart en Google Home-enhed.",
6270
"name": "Genstart enhed"
71+
},
72+
"refresh_devices": {
73+
"description": "Opdater status for alle Google Home-enheder.",
74+
"name": "Opdater enheder"
6375
}
6476
}
6577
}

custom_components/google_home/translations/de.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
"description": "ID eines Alarms (alarm/xxx).",
3838
"name": "Alarm-ID"
3939
},
40+
"skip_refresh": {
41+
"description": "Überspringen Sie die Aktualisierung von Google Home-Geräten nach dem Löschen eines Alarms.",
42+
"name": "Aktualisierung überspringen"
43+
},
4044
"entity_id": {
4145
"description": "Stellt ein Google Home Gerät dar (sensor.xxxx_alarms).",
4246
"name": "Entität"
@@ -51,6 +55,10 @@
5155
"description": "ID eines Timers (timer/xxx).",
5256
"name": "Timer-ID"
5357
},
58+
"skip_refresh": {
59+
"description": "Überspringen Sie die Aktualisierung von Google Home-Geräten, nachdem Sie einen Timer gelöscht haben.",
60+
"name": "Aktualisierung überspringen"
61+
},
5462
"entity_id": {
5563
"description": "Stellt ein Google Home Gerät dar (sensor.xxxx_alarms).",
5664
"name": "Entität"
@@ -61,6 +69,10 @@
6169
"reboot_device": {
6270
"description": "Ein Google Home Gerät neu starten.",
6371
"name": "Gerät neu starten"
72+
},
73+
"refresh_devices": {
74+
"description": "Aktualisieren Sie den Status aller Google Home-Geräte.",
75+
"name": "Geräte aktualisieren"
6476
}
6577
}
6678
}

custom_components/google_home/translations/en.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
"description": "ID of an alarm (alarm/xxx).",
3939
"name": "Alarm ID"
4040
},
41+
"skip_refresh": {
42+
"description": "Skip refreshing Google Home devices after deleting an alarm.",
43+
"name": "Skip refresh"
44+
},
4145
"entity_id": {
4246
"description": "Represents a Google Home device (sensor.xxxx_alarms).",
4347
"name": "Entity"
@@ -52,6 +56,10 @@
5256
"description": "ID of a timer (timer/xxx).",
5357
"name": "Timer ID"
5458
},
59+
"skip_refresh": {
60+
"description": "Skip refreshing Google Home devices after deleting a timer.",
61+
"name": "Skip refresh"
62+
},
5563
"entity_id": {
5664
"description": "Represents a Google Home device (sensor.xxxx_alarms).",
5765
"name": "Entity"
@@ -62,6 +70,10 @@
6270
"reboot_device": {
6371
"description": "Reboot a Google Home device.",
6472
"name": "Reboot device"
73+
},
74+
"refresh_devices": {
75+
"description": "Refresh the status of all Google Home Devices.",
76+
"name": "Refresh devices"
6577
}
6678
}
6779
}

custom_components/google_home/translations/es.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
"description": "ID de una alarma (alarm/xxx).",
3838
"name": "ID de alarma"
3939
},
40+
"skip_refresh": {
41+
"description": "Omita la actualización de los dispositivos Google Home después de eliminar una alarma.",
42+
"name": "Saltar actualización"
43+
},
4044
"entity_id": {
4145
"description": "Representa un dispositivo Google Home (sensor.xxxx_alarms).",
4246
"name": "Entidad"
@@ -51,6 +55,10 @@
5155
"description": "ID de un temporizador (timer/xxx).",
5256
"name": "ID de temporizador"
5357
},
58+
"skip_refresh": {
59+
"description": "Omita la actualización de los dispositivos Google Home después de eliminar un temporizador.",
60+
"name": "Saltar actualización"
61+
},
5462
"entity_id": {
5563
"description": "Representa un dispositivo Google Home (sensor.xxxx_alarms).",
5664
"name": "Entidad"
@@ -61,6 +69,10 @@
6169
"reboot_device": {
6270
"description": "Reiniciar un dispositivo Google Home.",
6371
"name": "Reiniciar dispositivo"
72+
},
73+
"refresh_devices": {
74+
"description": "Actualiza el estado de todos los dispositivos Google Home.",
75+
"name": "Actualizar dispositivos"
6476
}
6577
}
6678
}

custom_components/google_home/translations/fr.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
"description": "ID d'un réveil (alarm/xxx).",
3838
"name": "ID de l'alarme"
3939
},
40+
"skip_refresh": {
41+
"description": "Ignorez l'actualisation des appareils Google Home après la suppression d'une alarme.",
42+
"name": "Ignorer l'actualisation"
43+
},
4044
"entity_id": {
4145
"description": "Représente un appareil Google Home (sensor.xxxx_alarms).",
4246
"name": "Entité"
@@ -51,6 +55,10 @@
5155
"description": "ID d'un minuteur (timer/xxx).",
5256
"name": "ID du minuteur"
5357
},
58+
"skip_refresh": {
59+
"description": "Ignorez l'actualisation des appareils Google Home après la suppression d'une minuterie.",
60+
"name": "Ignorer l'actualisation"
61+
},
5462
"entity_id": {
5563
"description": "Représente un appareil Google Home (sensor.xxxx_alarms).",
5664
"name": "Entité"
@@ -61,6 +69,10 @@
6169
"reboot_device": {
6270
"description": "Redémarrer un appareil Google Home.",
6371
"name": "Redémarrer l'appareil"
72+
},
73+
"refresh_devices": {
74+
"description": "Actualisez l'état de tous les appareils Google Home.",
75+
"name": "Actualiser les appareils"
6476
}
6577
}
6678
}

0 commit comments

Comments
 (0)