JQ-300/200/100 Indoor Air Quality Meter

As you comment it seems like everything is working again. Now the data is updated in the Home Assistant. Thanks for everything!

Hi, yes cloud is working again. I want a share one curious thing that makes me think JQ-200 and JQ-300, are the same product. I had bought a week ago one JQ-200 that is supposed not to get the Pm2.5 values, in the app there is no PM2.5 information, but in home assistant I am getting different values. I suspect that the limitation is only in the app, not in the hardware. If this is really true, you can save a couple of dollars. Lots of thanks for your work @Limych.

1 Like

Can you, please, enable debug mode for component and show me full initialization log for JQ-200?

Sorry, I don’t know how to filter the logs just for 1 component, in the initialization I found this verbose:

2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300] Finished fetching ****@.com device’s sensors in 6.311 seconds
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_internal_temperature
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_humidity
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_pm25
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_hcho
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_tvoc
2020-12-12 13:53:58 DEBUG (MainThread) [custom_components.jq300.sensor] Initialize sensor.air_quality_eco2

image

One question, how accurate are the values? I’ve very high HCHO and TVOC. I’ve tried to calibrate it but nothing changes.

EDIT: Suddenly it started to “work”, now the values are more standard, so it seems to be working correctly.

No matter what i do, i’ve got timeout in HA log all the time :confused:
Any ideas?

Is the unit connected to the wifi? The green light must remain on.

Thanks for the logs, but this part is useless to me.
I am interested in several points:

  • The first is a request for data about devices, which in the logs begins with line [custom_components.jq300] Querying http://www.youpinyuntai.com:32086/ypyt-api/api/app/deviceManager (I need a server response to this request);
  • The second is a request for detailed initial device data, which begins with line [custom_components.jq300] Querying https://www.youpinyuntai.com:31447/device/... (again, I’m interested in the response to this request; this request may not be in the logs if the third one has received earlier);
  • and ideally, I would also like to see the usual message about the device update, which looks like [custom_components.jq300] Received MQTT message: {'type': 'V', 'content':... in the logs.

We are now communicating with @fryc88 via mail. He has a strange situation, which I meet for the first time — apparently the cloud server forcibly disconnects his component.

The accuracy of the data, I think, is not high. One thing is that a really good CO2 sensor itself costs more than this whole device. But the fact is that the device actually responds to the atmosphere in the room.

For example, a couple of days ago it «smelled» hookah smoking from another room 15 meters away. And the changes in the values clearly correlated with the moments of the beginning, the end of smoking and the opening of windows for ventilation.

Ok, hope this could help you, As you can see I am receiving Pm2.5 data in the jsonCallback…

  • 2020-12-19 11:47:51 DEBUG (SyncWorker_2) [custom_components.jq300] _query ret 200
    2020-12-19 11:47:51 DEBUG (SyncWorker_2) [custom_components.jq300] b’{“action”:“loginByEmail”,“code”:2000,“uid”:XXXXX,“safeToken”:“XXXXXXXXXXXXXX”,“expireAt”:0,“systime”:0}’
    2020-12-19 11:47:51 DEBUG (SyncWorker_2) [custom_components.jq300] Start connecting to cloud MQTT-server
    2020-12-19 11:47:51 DEBUG (SyncWorker_2) [custom_components.jq300] Updating devices list for account *****@.com
    2020-12-19 11:47:51 DEBUG (SyncWorker_2) [custom_components.jq300] Querying http://www.youpinyuntai.com:32086/ypyt-api/api/app/deviceManager
    2020-12-19 11:47:52 DEBUG (Thread-6) [custom_components.jq300.mqtt] Sending CONNECT (u1, p1, wr0, wq0, wf0, c1, k60) client_id=b’XXXXX_XXXXXXXX’
    2020-12-19 11:47:52 DEBUG (SyncWorker_2) [custom_components.jq300] _query ret 200
    2020-12-19 11:47:52 DEBUG (SyncWorker_2) [custom_components.jq300] b’{“action”:“deviceManager”,“code”:2000,“deviceInfoBodyList”:[{“circleid”:“XXXXXXXXXX”,“pt_name”:“Air quality”,“pt_model”:“JQ300”,“brandname”:"\xe5\x93\x81\xe4\xbc\x98",“logo”:“mlLogo.png”,“onlinestat”:1,“flag”:1,“id”:XXX,“deviceid”:XXXXX,“devstatus”:6,“deviceToken”:“XXXXXXX”,“status”:1,“href”:"/resource/page/hcho/index.html",“pic”:“XXXXXXXX”,“weburl”:“http://market.cmbchina.com/ccard/xyksq/xyksq.html?WT.srch=1&WT.mc_id=XXXXXX",“updtime”:“1477448195”,"repairstatus”:null}]}’

  • 2020-12-19 11:48:00 DEBUG (SyncWorker_4) [custom_components.jq300] _query ret 200
    2020-12-19 11:48:00 DEBUG (SyncWorker_4) [custom_components.jq300] b’jsoncallback({“returnCode”:“0000”,“returnMsg”:"\xe6\x88\x90\xe5\x8a\x9f",“timestamp”:0,“deviceValueVos”:[{“content”:“0”,“dptId”:1,“seq”:1},{“content”:null,“dptId”:1,“seq”:2},{“content”:null,“dptId”:1,“seq”:3},{“content”:“21”,“dptId”:1,“seq”:4},{“content”:“64”,“dptId”:1,“seq”:5},{“content”:“35”,“dptId”:1,“seq”:6},{“content”:“0.008”,“dptId”:1,“seq”:7},{“content”:“0.393”,“dptId”:1,“seq”:8},{“content”:“436”,“dptId”:1,“seq”:9}],“deviceToken”:“XXXXXXXX”})’

  • 2020-12-19 11:48:03 DEBUG (Thread-6) [custom_components.jq300] Received MQTT message: {‘type’: ‘V’, ‘content’: ‘[{“content”:“0”,“dptId”:1,“seq”:1,“deviceToken”:“XXXXXXX”},{“content”:null,“dptId”:1,“seq”:2,“deviceToken”:""},{“content”:null,“dptId”:1,“seq”:3,“deviceToken”:""},{“content”:“21”,“dptId”:1,“seq”:4,“deviceToken”:""},{“content”:“64”,“dptId”:1,“seq”:5,“deviceToken”:""},{“content”:“35”,“dptId”:1,“seq”:6,“deviceToken”:""},{“content”:“0.012”,“dptId”:1,“seq”:7,“deviceToken”:""},{“content”:“0.417”,“dptId”:1,“seq”:8,“deviceToken”:""},{“content”:“388”,“dptId”:1,“seq”:9,“deviceToken”:""}]’, ‘deviceToken’: ‘XXXXXXXX’}

Finally I add a picture when I burned some food in the kitchen, as you can see the eCo2 and other parameters reacted, as the PM2.5 did also, but maybe in a strange manner?

Are you sure this is really a JQ-200? The response from the server is about exactly the same as the response for the JQ-300.

Studying my own code in an attempt to understand what happened, I realized that lazy I forgot to add a device model check. :slight_smile: So, contrary to the documentation, all sensors are always created. Some might just not work. It’s great that this helped us find a new feature!

That’s what I bought… We will have to wait for someone with another JQ-200 to check it too…

1 Like

So many times evolution is done by “mistakes”.

What I see now:

  1. Server response for JQ-200 is slightly different in model name: “JQ300” versus “JQ-300” for original JQ-300.
  2. Data for 10 sensors comes from the cloud for JQ-200 (ID from 0 to 9; some of the sensors are dummy). The response for the JQ-300 comes with data for 11 sensors: a sensor with ID 10 is added, but its value is always 2700. It looks like this is also a dummy.

Hi all,

This is not strictly related to this component, other than that I will use it as soon as I can register an account in Perthings (iOS) app. Which is not working. The app is throwing a “server busy” dialogue when I try to register a new account. Is this something anyone here have noticed and or found a way to resolve?

Do any of you know what the official support channel for these devices is? The box, with documentation has absolutely no information about this.

Thanks in advance. Looking forward to this component when I solve my issue :slight_smile:

Same “server busy” issue here when trying to create a Perthings account. Have you been able to fix it?

Hi @Joostg75
Welcome to the discussion

Good to know it’s not just me.

This has been going on for the past 3-4 days. Throwing “server busy” every time I try.

I’ve tried contacting support, but all e-mail addresses I’ve found fail to receive my requests (NDR).

I’m sorry guys, but there a no ways to contact official support. Some time ago I’ve try to find a way for ask for permits to officially use they API, but all my letters to all found email addresses reverts back as not delivered.

1 Like