JQ-300/200/100 Indoor Air Quality Meter

I mean triggers for binary sensor - Home Air Quality Alert On/Off

I use it for telegram notification

Am I the only one who doesn’t get any updates anymore since about 24 hours in HA?

Reconnecting does give me (1 time) the numbers. Maybe it’s possible to make an automation to reconnect every x-minutes or so?

Edit: Seems also in my app it’s not working like it should… Probably problems in China :slight_smile:

Maybe. Everything works fine for me.

Okay, having the same issues here. Both the app and HA component don’t update. I integrated the thing like 1-2 weeks ago and it did work all the time up to now. If I restart HA, restart the sensor or re-bind the sensor to the app, I get current readings - but just once. Moreover the humidity sensor stopped working completely - empty value in app, greyed out as unavailable in HA. Something seems to be going higgledy-piggledy in the Chinese cloud indeed :-/

Completely what’s happening here… Cause the humidity is totally not working anymore I thought someone maybe dropped the device by accident in my house without telling me, and my device was broken.

Did try everything I could think about (like reinstalling app, removing the device, and so on,…) without any solution.

Also I get this warning in my HA logs:

Detected I/O inside the event loop. This is causing stability issues. Please report issue to the custom component author for jq300 doing I/O at custom_components/jq300/api.py, line 207: ret = self._session.get(

Not sure if that’s related.

Hi there,

I can report the same issues as RedWheiler (humidity not working with 0.8.1 and same message in HA logs).
Also, I updated to 0.8.2 this morning and no sensor values were available. After a downgrade, everything (but humidity) is working fine.
I’ll try to get gather some debug information.

Thanks for your efforts!

Debug 0.8.1
2021-04-06 15:44:06 INFO (MainThread) [custom_components.jq300]
-------------------------------------------------------------------
JQ-300/200/100 Indoor Air Quality Meter
Version: 0.8.1
This is a custom integration!
If you have ANY issues with this you need to open an issue here:
https://github.com/Limych/ha-jq300/issues
-------------------------------------------------------------------
2021-04-06 15:44:09 DEBUG (MainThread) [custom_components.jq300] Connecting to account *@*
2021-04-06 15:44:09 DEBUG (MainThread) [custom_components.jq300.api] Connecting to cloud server
2021-04-06 15:44:09 DEBUG (MainThread) [custom_components.jq300.api] Requesting URL http://www.youpinyuntai.com:32086/ypyt-api/api/app/loginByEmail
2021-04-06 15:44:10 DEBUG (MainThread) [custom_components.jq300.api] _query ret 200
2021-04-06 15:44:10 DEBUG (MainThread) [custom_components.jq300.api] Start connecting to cloud MQTT-server
2021-04-06 15:44:10 DEBUG (MainThread) [custom_components.jq300.api] Updating devices list for account *@*
2021-04-06 15:44:10 DEBUG (MainThread) [custom_components.jq300.api] Requesting URL http://www.youpinyuntai.com:32086/ypyt-api/api/app/deviceManager
2021-04-06 15:44:11 DEBUG (Thread-3) [custom_components.jq300.api] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k60) client_id=b'x'
2021-04-06 15:44:11 DEBUG (MainThread) [custom_components.jq300.api] _query ret 200
2021-04-06 15:44:11 DEBUG (MainThread) [custom_components.jq300.api] Finished fetching *@* devices list in 1.233 seconds
2021-04-06 15:44:11 DEBUG (Thread-3) [custom_components.jq300.api] Received CONNACK (0, 0)
2021-04-06 15:44:11 DEBUG (Thread-3) [custom_components.jq300.api] Connected to MQTT
2021-04-06 15:44:11 DEBUG (Thread-3) [custom_components.jq300.api] Sending SUBSCRIBE (d0, m1) [(x', 0)]
2021-04-06 15:44:11 DEBUG (Thread-3) [custom_components.jq300.api] Received SUBACK
2021-04-06 15:44:11 DEBUG (MainThread) [custom_components.jq300.binary_sensor] Setup binary sensors for account *@*
2021-04-06 15:44:11 DEBUG (MainThread) [custom_components.jq300.api] Updating sensors state for account *@*
2021-04-06 15:44:11 DEBUG (MainThread) [custom_components.jq300.api] Requesting URL https://www.youpinyuntai.com:31447/device/list
2021-04-06 15:44:13 DEBUG (MainThread) [custom_components.jq300.api] _query ret 200
2021-04-06 15:44:13 DEBUG (MainThread) [custom_components.jq300.api] Finished fetching *@* device's sensors in 1.120 seconds
2021-04-06 15:44:13 DEBUG (MainThread) [custom_components.jq300.binary_sensor] Initialize binary_sensor.sensor_air_quality_alert
2021-04-06 15:44:13 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Setup sensors for account *@*
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.sensor_internal_temperature
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.sensor_pm25
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.sensor_hcho
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.sensor_tvoc
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.sensor_eco2
2021-04-06 15:44:14 INFO (MainThread) [custom_components.hacs] Setup task HacsSetupTask.FRONTEND
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:14 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR True (timeout)) = True
2021-04-06 15:44:43 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:44:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:44:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:44:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:44:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:44:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:11 DEBUG (Thread-3) [custom_components.jq300.api] Sending PINGREQ
2021-04-06 15:45:12 DEBUG (Thread-3) [custom_components.jq300.api] Received PINGRESP
2021-04-06 15:45:13 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:15 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:15 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:15 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:15 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:15 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:43 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True
2021-04-06 15:45:45 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND (True (device 24430) OR False (timeout)) = True

Thanks for the logs, but without even looking at them, I can already tell exactly what is happening there: the component receives the initial sensor values, but no longer receives updates from the cloud. At the same time, due to a bug in the logic of calculating the availability of sensors, they are constantly considered available. Although in fact they are not available. The only thing that version 0.8.2 fixes is this bug with the logic of calculating the availability of sensors.

Unfortunately, a bug with not receiving a sensor update is not in the component, but in the cloud. It is easy to verify this by opening the official application - you will also not see updates to the sensor values. They will freeze in those values ​​that will be when you open the application. At the same time, for some reason, for some users (for example, for me) everything works correctly. Alas, I cannot fix it. All that remains is to wait for the Chinese to notice this bug - we have not been able to find a way to communicate with them.

We discussed this bug in more detail here: https://github.com/Limych/ha-jq300/issues/28

Sorry…

UPD. Yes, if you are satisfied with the frozen non-renewable sensor value, you can roll back to version 0.8.1. But, as I wrote above, this is actually a bug in the component, which is why it was fixed.

UPD2. Ah, version 0.8.2 also fixes one more bug — a bug with a warning from the system “Detected I/O inside the event loop”. But compared to the “main” bug, this is certainly not so important. :slight_smile:

1 Like

Another one here with the values “freezed” (now unavailable in the latest version of the component) since some days ago.
We are several with the problem, but as commented here, the “official” app has the same problem, so something is not working at China and I suspect we don’t have a real way to contact with them. Is there a way in the app or similar?

I’m sorry, but we have no ways to contact with them.

UPD. And, yes, from the discussions above, you can clearly see that this cloud is not very stable. They are obviously constantly changing something there. Fortunately, usually after a while the situation is corrected without our participation.

In the Play Store, for the official app, “perthings” there is an email: [email protected] and a web https://www.youpinyuntai.com/ that contains a “service” email [email protected]

They seem something similar to Tuya, they offer hardware to be branded and free software to use it.

How interesting! There was no mention of Google Play in instructions for my device. I downloaded the application from their website directly.

Can you try to contact them? Perhaps this will help solve the problem.

It’s just better not to tell them about my component just yet. Judging by their actions, they don’t like it when we use their API unofficially. Otherwise they will come up with some new dirty trick against the component …

I will try, but the most probable is that I don’t get a response… but I will keep all of you informed here.

1 Like

Hi guys !
Same issue on my side :frowning: I am not using HA with your component, but Domoticz with my own script to retrieve the values of my JQ300 using MQTT.

What is stranger for me is that it happened exactly after a power shutdown in my house (31st of march at about noon, French time) ?!
During a few days, I thought I lost the Wifi pairing or that I would need to get a new “token”… but I finally found this discussion and understood that I am not alone :hugs:

I tried mailing at [email protected], but I got a undelivered response (email does not exist), I tried also [email protected], still no undelivered response, so let’s see.

Do you have some kind of list of people for whom this is still working and others not ? So that we could try to guess some common points (ID ? country ? etc…).

1 Like

Of those who have everything working normally now, I know only one: it’s me. Country Russia. ID: around 1500.

People are reluctant to post to the support forum when everything is working fine. They write only when everything breaks down.

And there are about 7 people here who have broken everything. There is Spain, Russia, it seems, also Britain …

And you still have humidity value as well ?
On my side, I noticed that the returned JSON has “null” content for seq 5 (humidity), but now I have a value 2700 for the seq 10, which was unused before ?!
Do you similar response ?

Value 2700 for seq 10 is common default value for that unknown sensor. It’s normal.

Values of all other sensors (include humidity sensor) update every 30 seconds (or about it) for me. As normal.

There no one second of unavailability for last 24h.

Would you mind sharing your deviceToken so that I can try subscribing to it from my side ?
If this is working, then our issue would be related to our token. If this is not working, then this might be worse, maybe some kind of IP blacklisting ??

No, sorry, I will not share tokens.

Ok, I can share mine with you if you wanna try ?

It cannot be ip blacklisting. My component mimics the official application as much as possible. If they cut by IP, I would be first on the list - I test the code before I publish it.