[HOW-TO][Pro][Cloud] - Tool to FIX (advanced) flows after removing and re-adding devices

:rotating_light: :warning: Use at own risk! :warning: :rotating_light:


Hi,
So I just go a new house and wanted to make my Zigbee network a bit better by removing an re-adding my devices so I get a stable network.

But the issue with this is you have to fix all your flows. (Ofcourse Flow Checker App for Homey | Homey can indicate the broken flows)

I made a small script which can help with fixing the flows.

So what do you need:

  1. Device ID you would like to update - You can get this via the webAPI playground:
const searchname = "devicenamehere";
Homey.devices.getDevices().then(devices => Object.values(devices).filter(device => device.name.toLowerCase().includes(searchname.toLowerCase())).map(device => ({ id: device.id, name: device.name })));
  1. Write down the Device ID
  2. Remove the Device
  3. Re-add the Device
  4. Get the Device ID of the new paired device: - You can get this via the webAPI playground:
const searchname = "devicenamehere";
Homey.devices.getDevices().then(devices => Object.values(devices).filter(device => device.name.toLowerCase().includes(searchname.toLowerCase())).map(device => ({ id: device.id, name: device.name })));
  1. Run this script in the WebAPI playground: (multiple devices possible)

Contributions
If you appreciate what I do, contribute to future development by making a paypal contribution
or buy me a coffee on Ko-Fi or Bunq.me

image ko-fiimage


:computer: Apps made by @martijnpoppen

See for more apps link below :point_down:t2: or just open the pull down.

35 Likes

Maestro, :pray::pray::pray:

Congrats with your new Home(y).

My P1 dongle did not respond anymore. In short, only option was to remove and re-add it. That’s a PITA when lots of flows are involved.
BUT, your brilliant script saved the day, Martijn.

I saved the dongle’s ID and removed it.
(To me, the device ID is easily / easier found by using the devices search function.)
After re-adding the dongle, I searched for its new ID and I updated old & new ID’s in your script, and ran it.

:white_check_mark::tada: it did the trick! 20 flows got fixed!

Note: The flows with broken variables did not fix themselves, so maybe here’s is a new challenge :grimacing: (Warning: it does not have to be fixed today, or tomorrow :upside_down_face::crazy_face:)

Oh, a suggestion to the topic subject:
[HOW-TO][Pro][Cloud] - Tool to FIX flows after removing and re-adding devices
And it’s not limited to zigbee devices btw.

All the best,
Peter

1 Like

If this works with remove and re-ad the device this also can work with a compleet new device?
Like a broken Aqara temperature or doorsensor and you change it for the same type of device.
Use this script and you’re ready again.

1 Like

@Mike1233 yes it does, as long as the devices are using the same flowcards

2 Likes

Hi Martijn,

Is it possible to run it with HomeyScript?
(Well, I tried but nothing changes hehe).
I just don’t understand why the web api playground and HS can’t run the same scripts :grimacing::nerd_face:

1 Like

Depends on the access roles. Web API has more rights

1 Like

Added advanced flows support :slight_smile:

3 Likes

This is great! Thanks a lot!

1 Like

Hi Martijn,
If I want to fix multiple devices at once, is this the correct way to enter the ID’s?

const oldIds = ['e63c7964-2e67-4347-b2e0-d17a9e4df7e9',
'e63c7964-2e67-4347-b2e0-d17a9e4df7e8',
'e63c7964-2e67-4347-b2e0-d17a9e4df7e7'
];

@Peter_Kawa yes that’s correct.

Make sure that the first ID of the old array is the same device as the first ID of the new array :wink:

:call_me_hand:that makes perfectly sense, Martijn. Thanks.

Great Tool!! Thanks a lot !!

1 Like

Really nice Martijn!
Saved me allot of time today!

1 Like

Thanks,!!!

Did buy you a beer.
Removed and re-added 2 Shelly devices.
Great app.
Saves a lot of time.

1 Like

Thanks a lot man!

@martijnpoppen
I have used this script a couple of times now and it works good.
But is it possible with a script to get a output of the devices and the ID?
So you can make a sort of backup of the devices.
Instead of a copy/paste of the device list.
When there is something wrong, remove the device directly without first find
out what ID it is.

Somethink like this:

Device Voordeur
ID llfuflulyf415125luyffl145

Achterdeur
ID 05005o86trygfuoylo68e

Schemerlamp
ID 05efh65ljhljh1654lj6jfdg

Thank you.
I hope i can ask it here.

@Mike1233 thanks!

I think @Peter_Kawa has posted such a script somewhere on the forum here…

2 Likes

@martijnpoppen
Thank you.
I wil have a look at the posts of @Peter_Kawa

1 Like

Hi Mike,

Here’s a nice one (don’t know if I posted it), and it fits in this topic I think.
With this HomeyScript script you’ll have a nice device ID overview to save somewhere safe😉
(You can remove values you don’t need)
Note: a ` is not equal to ’

const devices = await Homey.devices.getDevices();
console.log(`\nDevices overview`);
// Loop over all devices
for (const device of Object.values(devices)) {  
    // Return some properties. Just remove what you don't need
    console.log(`\nName:\t\t ${device.name} \nID:\t\t ${device.id} \nZone:\t\t ${device.zoneName} \nApp:\t\t ${device.driverUri} \nDriverID:\t ${device.driverId} \nCapabilities:\t ${device.capabilities} \nClass:\t\t ${device.class} \nVirtualClass\t (what's plugged in): ${device.virtualClass}`);
};
return(true);

Output example of 1 device

.
Oh, and, 'VirtualClass is used with smart sockets.
With such devices you can pick class ‘Light’ f.i., so the socket responds to “Turn off all lights” commands

2 Likes