JQ-300/200/100 Indoor Air Quality Meter

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.

I don’t even really know how I can test the connection, knowing the token. My component automatically gets all the tokens it needs every time it starts. This will need to create some kind of special script …

By the way, tokens are not stored in my component. At each start, the program receives a new token. So it’s not about them either …

Did you try this script:

This was the principle I used. It just needs the “deviceToken”, nothing else.
If you can try this script with your deviceToken to check if this is working or not. If not, this might confirm that more complex communication mechanism is required now, as you are doing in your component.

Connected with result code 0
Wed Apr  7 23:55:41 2021
message: sensor values
temp 	24 	C
hum 	35 	%
PM2.5 	37 	ug/m^3
HCHO 	0.131 	mg/m^3
TVOC 	0.860 	mg/m^3
eCO2 	576 	ppm
Wed Apr  7 23:55:51 2021
message: sensor values
temp 	24 	C
hum 	35 	%
PM2.5 	38 	ug/m^3
HCHO 	0.133 	mg/m^3
TVOC 	0.858 	mg/m^3
eCO2 	575 	ppm
Wed Apr  7 23:55:55 2021
message: sensor values
temp 	24 	C
hum 	35 	%
PM2.5 	37 	ug/m^3
HCHO 	0.133 	mg/m^3
TVOC 	0.857 	mg/m^3
eCO2 	574 	ppm

At the same time, the component received the same data perfectly in parallel:

2021-04-07 23:55:42 DEBUG (Thread-7) [custom_components.jq300.api] Received PUBLISH (d0, q0, r0, m0), 'XXXXXXXXXXXXXXXXXX', ...  (728 bytes)
2021-04-07 23:55:42 DEBUG (Thread-7) [custom_components.jq300.api] Received MQTT message: {'type': 'V', 'content': '[{"content":"2","dptId":1,"seq":1,"deviceToken":"XXXXXXXXXXXXXXXXXX"},{"content":null,"dptId":1,"seq":2,"deviceToken":""},{"content":null,"dptId":1,"seq":3,"deviceToken":""},{"content":"24","dptId":1,"seq":4,"deviceToken":""},{"content":"35","dptId":1,"seq":5,"deviceToken":""},{"content":"37","dptId":1,"seq":6,"deviceToken":""},{"content":"0.131","dptId":1,"seq":7,"deviceToken":""},{"content":"0.860","dptId":1,"seq":8,"deviceToken":""},{"content":"576","dptId":1,"seq":9,"deviceToken":""},{"content":"2700","dptId":1,"seq":10,"deviceToken":""}]', 'deviceToken': 'XXXXXXXXXXXXXXXXXX'}
2021-04-07 23:55:42 DEBUG (Thread-7) [custom_components.jq300.api] Update sensors for device 15573
2021-04-07 23:55:48 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND True (device 15573) AND True (timeout) = True
2021-04-07 23:55:53 DEBUG (Thread-7) [custom_components.jq300.api] Received PUBLISH (d0, q0, r0, m0), 'XXXXXXXXXXXXXXXXXX', ...  (728 bytes)
2021-04-07 23:55:53 DEBUG (Thread-7) [custom_components.jq300.api] Received MQTT message: {'type': 'V', 'content': '[{"content":"2","dptId":1,"seq":1,"deviceToken":"XXXXXXXXXXXXXXXXXX"},{"content":null,"dptId":1,"seq":2,"deviceToken":""},{"content":null,"dptId":1,"seq":3,"deviceToken":""},{"content":"24","dptId":1,"seq":4,"deviceToken":""},{"content":"35","dptId":1,"seq":5,"deviceToken":""},{"content":"38","dptId":1,"seq":6,"deviceToken":""},{"content":"0.133","dptId":1,"seq":7,"deviceToken":""},{"content":"0.858","dptId":1,"seq":8,"deviceToken":""},{"content":"575","dptId":1,"seq":9,"deviceToken":""},{"content":"2700","dptId":1,"seq":10,"deviceToken":""}]', 'deviceToken': 'XXXXXXXXXXXXXXXXXX'}
2021-04-07 23:55:53 DEBUG (Thread-7) [custom_components.jq300.api] Update sensors for device 15573
2021-04-07 23:55:54 DEBUG (SyncWorker_10) [custom_components.jq300.sensor] Update state: sensor.bedroom_jq300_temperature = 24.3 (24)
2021-04-07 23:55:54 DEBUG (MainThread) [custom_components.jq300.api] Availability: True (account) AND True (device 15573) AND True (timeout) = True
2021-04-07 23:55:54 DEBUG (SyncWorker_11) [custom_components.jq300.sensor] Update state: sensor.bedroom_pm25 = 35 (38)
2021-04-07 23:55:54 DEBUG (SyncWorker_5) [custom_components.jq300.sensor] Update state: sensor.bedroom_hcho = 0.13 (0.133)
2021-04-07 23:55:54 DEBUG (SyncWorker_7) [custom_components.jq300.sensor] Update state: sensor.bedroom_tvoc = 0.858 (0.858)

Thanks a lot for the very fast test !
This means that a basic MQTT subscription with the deviceToken should be enough.
So, we really have something broken with our deviceToken :sob:
Maybe by creating a new account and rebinding my JQ300, I would have a new deviceToken ?

If you want I can run test with your device token or even with your login+password inside sterile devcontainer environment. Send them to me via private message if you want.

I have not dealt with this issue before. Now I specifically checked: the device token does not change when you log in again. It is always the same.

It may change when you reconnect the device. I don’t want to check :slight_smile: