diff --git a/wotpy/wot/exposed/thing.py b/wotpy/wot/exposed/thing.py index b496d72..591a05c 100644 --- a/wotpy/wot/exposed/thing.py +++ b/wotpy/wot/exposed/thing.py @@ -227,6 +227,11 @@ def write_property(self, name, value): if not proprty.writable: raise TypeError("Property is non-writable") + # Notify state change if the new value is different from the stored one + if self._get_property_value(proprty) != value: + event_init = PropertyChangeEventInit(name=name, value=value) + self._events_stream.on_next(PropertyChangeEmittedEvent(init=event_init)) + handler = self._handlers.get(self.HandlerKeys.UPDATE_PROPERTY, {}).get(proprty, None) if handler: @@ -234,9 +239,6 @@ def write_property(self, name, value): else: yield self._default_update_property_handler(name, value) - event_init = PropertyChangeEventInit(name=name, value=value) - self._events_stream.on_next(PropertyChangeEmittedEvent(init=event_init)) - @tornado.gen.coroutine def invoke_action(self, name, input_value=None): """Invokes an Action with the given parameters and yields with the invocation result."""