Skip to content

Commit 602024c

Browse files
Fix #12
When the new_state is None, this state was removed from the remote instance. So make sure it also gets removed from here. This happens e.g. when a persistent notifications is cleared.
1 parent 4230d88 commit 602024c

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ remote_homeassistant:
7474
- zwave.controller
7575
- zwave.desk_light
7676
exclude:
77+
domains:
78+
- persistent_notification
7779
entities:
7880
- group.all_switches
7981
filter:
@@ -86,6 +88,8 @@ remote_homeassistant:
8688
unit_of_measurement: W
8789
below: 500
8890
subscribe_events:
91+
- state_changed
92+
- service_registered
8993
- zwave.network_ready
9094
- zwave.node_event
9195
```

custom_components/remote_homeassistant/__init__.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
import logging
99
import copy
1010
import asyncio
11+
from contextlib import suppress
12+
1113
import aiohttp
1214
import re
1315

1416
import voluptuous as vol
1517

16-
from homeassistant.core import callback
18+
from homeassistant.core import callback, Context
1719
import homeassistant.components.websocket_api.auth as api
1820
from homeassistant.core import EventOrigin, split_entity_id
1921
from homeassistant.helpers.typing import HomeAssistantType, ConfigType
@@ -377,15 +379,26 @@ def fire_event(message):
377379
return
378380

379381
if message['event']['event_type'] == 'state_changed':
380-
entity_id = message['event']['data']['entity_id']
381-
state = message['event']['data']['new_state']['state']
382-
attr = message['event']['data']['new_state']['attributes']
382+
data = message['event']['data']
383+
entity_id = data['entity_id']
384+
if not data['new_state']:
385+
# entity was removed in the remote instance
386+
with suppress(ValueError, AttributeError):
387+
self._entities.remove(entity_id)
388+
self._hass.states.async_remove(entity_id)
389+
return
390+
391+
state = data['new_state']['state']
392+
attr = data['new_state']['attributes']
383393
state_changed(entity_id, state, attr)
384394
else:
385395
event = message['event']
386396
self._hass.bus.async_fire(
387397
event_type=event['event_type'],
388398
event_data=event['data'],
399+
context=Context(id=event['context'].get('id'),
400+
user_id=event['context'].get('user_id'),
401+
parent_id=event['context'].get('parent_id')),
389402
origin=EventOrigin.remote
390403
)
391404

0 commit comments

Comments
 (0)