JQ-300/200/100 Indoor Air Quality Meter

Any ideas regarding my problem? I’ve sent you logs via email some time ago, i still can’t get it working

I’ve just registered successfully.

JQ300 received. After struggling to add it in the official app for the configuration, I have been able to add it to HA.


Has anyone know why the alert is ON(problem) in my screenshot? Is the TVOC too high?

Just for others having problems with the android Perthings app:
0. WiFi pairing won’t work.

  1. Use your phone internet as a WiFi sharing spot with SSID: ‘aaa’ and password: ‘12345678’.
  2. Use the second method in the app to pair the device to your Perthings account. You need to see the blue led blinking fast first and once is paired it will change to steady.
  3. You may need to close and open the app several times until you see the device is added.
  4. Once you have it in the app, the device has a configuration screen where you can change the WiFi settings to your home one instead of the phone one.
  5. Done! Now you can start with the HA config.

TVOC is too high - it should settle. Basically you need to vent the room (open the windows/doors) to refresh the air and it should try and calibrate. Failing that use the app to calibrate - good luck!?!?!?!

Can someone confirm that the JQ-300 make the zero (calibration) when powered up?
If I power off it and then power on it again the readings are a lot different.

Is it worth getting one of these then or is the accuracy garbage?

I’ve found this link’s:

Seems to be a way to be cloud independent :thinking:… sounds really good.

Thank you, but…

The first topic is well known to me. Yes, there are good practices on how to read data directly. But they all require disassembling the device and flashing it.
Are you ready to do this? Are most other users ready to do this?.. I’m sure 99% of users are not that good at electrical engineering.
That is why I did not begin to follow this path…
(UPD: At the same time, if you reflash the device and send data directly to the HA MQTT server, you will no longer need any integration. :wink: )

The second topic is new to me. It explains how to get data from the cloud. This is exactly what our integration does. But our integration at the moment EXACTLY simulates the work of the official application, using several different channels to obtain the necessary information. As a result, the risk of blocking integration is practically zero.
In that topic, as far as I can see, a simpler example of an application is given, which has obvious disadvantages.
So I see no point in trying to figure out how that application works…

I beg your pardon, but I have not been able to repeat your situation. And without that, I don’t understand why this is happening at all. The logs show a disconnection, but do not provide information about its cause.

I don’t know how to solve this problem, sorry.

1 Like

Hi,
someone knows triggers indications of air quality for alert?

not work( please help

my config:

jq300:
  username: [email protected]
  password: pass
  devices: jq300
iaquk:
  jq300:
    sources:
      humidity: sensor.jq300_humidity
      co2: sensor.jq300_eco2
      tvoc: sensor.jq300_tvoc
      hcho: sensor.jq300_hcho
      pm: sensor.jq300_pm25

Are you sure that you registered your JQ-300 device under the name “jq300” through the official app?

1 Like

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?