Okiedokie, I have this now completely up and running… I improved the script with the help and inspiration of this forum, ChatGPT and some apps…
const params = new URLSearchParams();
params.append('grant_type', 'client_credentials');
params.append('scope', 'device_full_access');
const client_id = 'FILL_IN_APPKEY';
const client_secret = 'FILL_IN_APPSECRET';
const credentials = Buffer.from(client_id + ':' + client_secret).toString('base64');
var result = await fetch("https://oauth.cleargrass.com/oauth2/token", {
method: 'post',
headers: {
'Authorization': 'Basic ' + credentials,
},
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, pm10} = data;
console.log(timestamp,temperature,humidity, co2,pm25, pm10);
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);
await tag("qingping_pm10", pm10.value);
Used apps:
- HomeyScript (see above)
- Qingping installed NOT via Homekit (topic start)
- Portal Qingping (mentioned in topic start)
- Created virtual Device with this Device Capabilities
- Created this flow
Note in the script, change this:
const client_id = ‘FILL_IN_APPKEY’;
const client_secret = ‘FILL_IN_APPSECRET’;
To import the app into Device Capabilities app, use this TEF:
[tef:AVD:"H4sIAAAAAAACA42Wa4+iSBSG/4tfnQ53hU72g6AoCKiIF3qzmRRQQMmlEAoUJvPfl97uaWe7e0yTkErOqfOe5wVOhR+DADbIh5qP88HjYMFX2uTlUiYMs2tZ3jM3nage1LGK2KG+PGuT8UaSLkGrCC2twImYLO3ruqSmRztQFQ4JRy1LVubKNphxGAoeN5QahxnBNRXoy+XV4w14PPHhia9TquZInxhKbCGtdCcp1kYncXRaetqhFpoFGoZlVVpUk9ZXdE1zEPGutnWsc0EYFHSesz3v6Nou19YluXb2JEVXw3KmJr3APt1it5k6SFLW06YyZS3L4NYCvmLFiYNMV0zoJLdKJgEnz3iSTe0Jqyg2IZBbAFDSgCqm8GomVJ5grYYHd93IgLILEG9nNM9auXyhlwgXdkDhs4ZhnC32xT55mpPD6pIvCUqY1ihP9jLhtcXcOrhz1ZckUTv7XX2s1AZtjCvjV1ezExf4xIw1ZyZn+mlYnV3mks78EDgNFMKNoXssvMypU+uc+eAg16dzPD5fnzIHMSArMHbMYxQcrHmorPeVXrCZOVrsdpcRlxELQGtbZJvR7MSwemQc28gR9/YWF+hsakJjTOkrd45inZIm+yuskKnOkwi5wsGkxnOhvSTKccQdG3bBs4oGuugyLwXaQZRsBhOMPRUx60J3HFs+Wy7016Sc7vUKLoViNtfMnZ+MN7k2VfcN7jDgKmEc0U641d0xvmRxmi3ZneZEe7gOTsvcvmqTLjmoy3qz43I/oVeeLtMoPvCBvZ9pphuXC8jMdguY1gG/y7aEy10piU8kCbEsC8NanRnqvoNZbZG2UTY7RM6znMv3orLpQNk61o7T7enRWG19biXq6rDbucGlQ5RZDuWOBd48OrT8eC3tmEoE7lOmdduwkrRNkuPNPJSIN2/cZl8uT1Rz8j1JjFLZfQrryhgPV6T/RqWGY0WYZ08kDY61Q7X1vqmS8rgtzFk/T38Nvg38uiI4e561avD44+e3AS5RhHKQakE/fKORJHFQGD34NMM88P2Lf5BGUHzwRBHQYjgCI5/vRSpICMqjZ4UBzGEZtd8bkNbw+7MsATkZPOZ1mn4b5HXmwXIVOvBKVATToC+hb2Hrv/VXQrglZIxTCPJPSuSaEPxZQgEZLMEnCQNVv/f2037tHeQVLge/djFWX92HHZgVvQqp699yW1iAPgYVUAAPpYgg2EuEIK3gbU+ML5Nn4QyCqi7hd/JLqYQ3JaWEvY6a4osCymceUtY3DRuGKfT7Zze4VUyhjzLwjMy8U3FA9K7+Ja7lFYpi8k6cfTW4qDMUINK+dWC/4I794C7+IHPXGvuJDfYPNth7NrhXG8qKfWvNfcEB98GBj39TuAvP3eDpdxUf4Ll78PwrfJGxwltv/gv0/Af6/0vcxef/gMrfQxXeUBn6rY/wBVThPqpwF1X4A6rwGWp/dL38N7yibvoDqejvvhcYPP79z89/AXaXpZlYCAAA":/tef]