I made a quick integration to get data from Qingping+ for the Qingping Air Monitor Lite device. Be sure to use the Qingping+ app on your phone and use an account. The device must be set in qingping mode instead of homekit mode.
Be sure to adjust the Authorization token as described here: https://developer.qingping.co/main/oauthApi.
const params = new URLSearchParams();
params.append('grant_type', 'client_credentials');
params.append('scope', 'device_full_access');
var result = await fetch("https://oauth.cleargrass.com/oauth2/token", {
method: 'post',
headers: {
'Authorization': 'Basic CHANGE_THIS_KEY',
},
body: params,
});
if (!result.ok) throw new Error(result.statusText);
const body = await result.json();
console.log(body)
var access_token= body.access_token;
await tag("qingping_access_token", access_token);
// get device data
var result = await fetch("https://apis.cleargrass.com/v1/apis/devices?timestamp=" + Date.now().toString(), {
method: 'get',
headers: {
'Authorization': 'Bearer ' + access_token,
},
});
if (!result.ok) throw new Error(result.statusText);
const body2 = await result.json();
var data = body2.devices[0].data
console.log(data)
var {timestamp,temperature,humidity, co2,pm25} = data;
console.log(timestamp,temperature,humidity, co2,pm25);
await tag("qingping_timestamp", timestamp.value);
await tag("qingping_temperature", temperature.value);
await tag("qingping_humidity", humidity.value);
await tag("qingping_co2", co2.value);
await tag("qingping_pm25", pm25.value);
I retrieved this from developer page
Apkey:xxxxxxxxx
App secret: yyyyyyy
I edited the script accordingly:
'Authorization': 'xxxxxxxxxx', or
'Authorization': 'yyyyyyyyyy',
This is the output of the script
Script Error Error: Bad Request
at Qingping.js:21:25
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async HomeyScriptApp.runScript (/app.js:312:22)
at async Object.runScript (/api.js:24:18)
Hi @tjaadvd , thanks for your script. I used it for my Homey except I inserted my app key from Qingping, where you typed âchange_this_keyâ. I get the same script error output as Wout in the last message. Not sure where my app secret key goes.
Can you help? Iâm afraid Iâm new to scripts so am quite confused by how they work! Appreciate your time.
The trick to generate the Authorization key is to combine the client_id (App Key) and client_secret (App Secret) and âencodeâ them with base64. Base64 is an encoding originally build for email attachments.
paste the App Key, then the â:â character, and then the App Secret. For example â_GoSI9xxx:c2ba57537b5311eb9e7fxxxxxxxxxxxxâ.
Click on the convert button
Copy the resulting encoded string (for example âX0dvU0k5eUâŚâ)
Then replace CHANGE_THIS_KEY with the string that you copied. The line now looks like this: âAuthorizationâ: âBasic X0dvU0k5eUâŚâ,
That should do the trick! This script uses the first qingping device in your account. If you have multiple you can create a new script and change devices[0] to devices[1].
If youâve created the homeyscript (through https://my.homey.app) and it works, you can use it with a flow like this: Gedeelde Flow | Homey. That flow runs every 10 minutes, and uses the homeyscript in the âAndâ (conditions) section. The first actions that set Logic arenât important. Iâve created a virtual device in Homey of type âsensorâ and this script sets the values for that virtual device. In order to create a virtual device in Homey you have to go to Settings in the app â Experiments â Virtual devices.
Great! thank you, I can now pull air quality data via homeyscript. unfortunately it seems that the Homey app now no longer includes virtual sensors, only some other virtual types e.g. switch. the functionality might be suspended for now.