This looks like http error. Need to think a bit about it... Figure out if this is the driver issue or HE API..
I mean a reaction to explicit character set in the device reply..
According to logs it faces an error while trying to get component list. Without component list it can't spawn child devices. (null) means it got event/notification but has no child device to forward to.
A warning shows new component type drivers does not knows yet how to handle. Illuminance sensor related component. This one I will add after fixing the main problem.
It definitely has switch component. So your built-in relay should be controllable in the end. The support for it is already in.
P.S.: Ok! I see the problem. Response error check is too strict. It is on the driver side. Will fix this and update the driver tomorrow)
I updated the driver (itself and some child device drivers):
HTTP validation is relaxed (ignores charset and other attributes that might also come in)
Added illuminance sensor child device. I cannot test this one. It is not documented. So more like a guess. Notification should work correctly (if to rely on your logs). 'Refresh' call needs testing. I assumethere is a related GetState command. But.. Well.. Documentation has no mentions about it. Pure guess.
Fixed humidity sensor component device name. A typo were potentially blocking proper instance creation.
A full component list might help to add support for other functionality. Warnings in log will show what handlers are still missing (even if not documented)
P.S.: I suspect there might be one more bug in the error logging routine. This one might be related to authentification fail report. I'm going to try to simulate it locally using what I have.
P.P.S: Code seem to be correct if to believe to documentation. I added additional log entry before error itself to see what comes in (when logs enabled)
Illuminance and Humidity appear and disappear under "Current States" - I believe this is because they need to be defined as Attributes in the driver for them to remain visible. Temperature never appears.
I added more logging to HTTP requests to see what JSON content comes in.
Illuminance and Humidity appear and disappear under "Current States" - I believe this is because they need to be defined as Attributes in the driver for them to remain visible. Temperature never appears.
Yes. Those attributes reside inside child devices. So it is OK for them to not stay in the parent device.
By the driver logic after pressing 'Configure' button driver reads full state and gathers all the components. Using components list it spawns child devices accordingly. Basically one device type per one component type.
Temperature may come from separate temperature component or as a part of switch component. In either case it is forwarded to the separate temperature sensor child device.
Hmm.. It doesn't look like driver code got an update. 'HTTP query' was renamed to 'HTTP Async query'/'HTTP Sync query'. (aside from few added debug log entries)
Good clues for what to look for! High chance it is related to the 'sys' component parsing
A side of it system reports following components:
ble
cloud
mqtt
temperature -> will spawn child device
humidity -> will spawn child device
illuminance -> will spawn child device
switch -> will spawn two child devices (switch and temperature; might conflict with temperature device above)
input -> will spawn child device
sys
wifi
Conflicting temperature sensor will be the next issue to solve.
P.S.: The problem comes from unexpected property 'id' inside 'sys' component. It is not present in the documentation and has completely different meaning from other components (specifically those that may have multiple instances)
I updated the driver code. 'sys' component together with other single-instance components should now avoid parsing 'id' for instance count calculation.