I hope somebody can point me to the right direction.
I have started me first homeyscript adventures but I struggle with notification.
I have written a homey script which will be started at 17 o’clock. It’s looking for all plant and those having not enough water will be published at the console. That’s working fine.
Now I add a demo code for getting a notification on mobile, too.
But this part is not working. (athomID I have replaced by XXXX)
Do I miss something ? Can I not send a notification out of a script ?
Thanks for your help
Pflanzenabfrage.js
// Get all devices
const devices = await Homey.devices.getDevices();
for (const device of Object.values(devices)) {
// If this device isn’t available, skip it.
if (!device.capabilitiesObj[‘measure_generic.water’]) continue;
// If this device is a sensor (class)
if (device.class === ‘sensor’) {
Script Error
Not Found: FlowCardCondition with ID push_confirm: Not Found: FlowCardCondition with ID push_confirm
at /app/node_modules/athom-api/dist/index.js:1:1247257
at processTicksAndRejections (node:internal/process/task_queues:96:5)
On HomeyPro early 2023 version 10.0.0-rc.122, I found it necessary to give both “athomID” and “id” parameters for a successful push_text.
Example code:
// Tested using versions:
// - Homey Pro (Early 2023), version 10.0.0-rc.122
// - Homey Web App version 1.9.58
// Status as of 15-July-2023: working
// send message to specified user, or if none specified, then first user in getUsers list
var user_name = (typeof args[0] === 'string')
? args[0]
: '';
var user_athom_id = null;
var user_id = null;
if (user_name.length) {
log('Looking-up user:', user_name);
} else {
log('No user name specified, so will take first user from getUsers list');
}
log('Get user details');
users = await Homey.users.getUsers();
var found_user = false;
for (const user of Object.values(users)) {
log(user.name, '; id=', user.id, '; athomId=', user.athomId);
if ( (!user_name.length || (user.name == user_name)) && ! found_user) {
if (!user_name.length) {
user_name = user.name;
log('Using first user from getUsers list:', user_name)
}
user_athom_id = user.athomId;
user_id = user.id;
found_user = true;
}
}
var notification_text = `'Saying hello to ${user_name}'`
if (!user_id) {
log('Failed to find user: ', user_name);
} else { // user found
log('Sending push message to:', user_name, '; id=', user_id, '; athomId=', user_athom_id);
await Homey.flow.runFlowCardAction(
{
uri: 'homey:manager:mobile',
id: 'homey:manager:mobile:push_text',
args: {
user: {
athomId: user_athom_id,
id: user_id
},
text: notification_text
},
}
)
.then(() => log('runFlowCardAction OK'))
.catch(error => log(`runFlowCardAction Error:`, error));
}