Sending notification will not work in Homeyscript

Dear developers

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.

Bildschirmfoto 2023-04-13 um 19.34.31

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’) {

if (device.capabilitiesObj[‘measure_generic.water’].value === ‘Low’) {
log(\n ${device.name} braucht Wasser)
}
}

await Homey.flow.runFlowCardAction({
uri: ‘homey:manager:mobile’,
id: ‘push_text’,
args: {
user: {
athomId: “xxxxxx”
},
text: ‘Test push notification’
},
});

}

:x: Script Error
:warning: 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)

Is this on the new Homey Pro 2023? If so try changing the id to homey:manager:mobile:push_text

Thanks a lot.
Yes it’s on the new Pro 2023
Now it works

It worked with the tip from Jero.
But now with firmware rc.90 it is not working anymore.

await Homey.flow.runFlowCardAction({
uri: ‘homey:manager:mobile’,
id: ‘homey:manager:mobile:push_text’,
args: {
user: {
athomId: “xxxxxxx”
},
text: \n ${device.name} braucht Wasser
},
});

I am getting the error:

:x: Script Error
:warning: Missing Scopes: Missing Scopes

Anybody with a tip ?
Thanks

Ah yes this is the result of some other fix. Will discuss internally and get back to you.

This will be fixed in v10.0.0-rc.94 when it is available.

1 Like

Hi Jero,

Is it again broken in v10.0.0-rc118 ?
I just get notification in the timeline but no push to my mobile

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));
}
2 Likes