So, I think this quick and dirty fix will help. I’ve checked it on 1.4.1_164.0158 firmware and HA 0.87.0
Don’t forget to backup files!
Right now I have no other xiaomi sensors, so can’t check. But I hope they should work as usual.
- Enable polling.
Find this code in the xiaomi_aquara component (xiaomi_aquara.py)
In my venv it’s located here at /opt/homeassistant/lib/python3.6/site-packages/homeassistant/components/
@property
def should_poll(self):
"""Return the polling state. No polling needed."""
return False
And change False to True
@property
def should_poll(self):
"""Return the polling state. No polling needed."""
return True
Illuminationsensor still does not change the value, no matter we turn light or not.
Let’s addupdatedef for sensor.
File is nearby:./sensor/xiaomi_aquara.py
def update(self):
"""Get data from hub."""
_LOGGER.debug("Update data from hub: %s", self._name)
self._get_from_hub(self._sid)
- Next code is for light
./light/xiaomi_aquara.py
This might not needed, but it’s quick and dirty
Add this to turn_on and turn_off defs:
self.schedule_update_ha_state()
Result should be like this:
def turn_on(self, **kwargs):
"""Turn the light on."""
if ATTR_HS_COLOR in kwargs:
self._hs = kwargs[ATTR_HS_COLOR]
if ATTR_BRIGHTNESS in kwargs:
self._brightness = int(100 * kwargs[ATTR_BRIGHTNESS] / 255)
rgb = color_util.color_hs_to_RGB(*self._hs)
rgba = (self._brightness,) + rgb
rgbhex = binascii.hexlify(struct.pack('BBBB', *rgba)).decode("ASCII")
rgbhex = int(rgbhex, 16)
if self._write_to_hub(self._sid, **{self._data_key: rgbhex}):
self._state = True
self.schedule_update_ha_state()
def turn_off(self, **kwargs):
"""Turn the light off."""
if self._write_to_hub(self._sid, **{self._data_key: 0}):
self._state = False
self.schedule_update_ha_state()
- Restart HA and wait 2.5 hours

- Check traffic by
ngrep. You should seereadandread_ackevery 30 sec.