Personally, I just add the new device, update any referenced routines and then remove the old device.
Both the old app option and the manual instructions above were flawed in that the previous hardware details were used for the new device.
Personally, I just add the new device, update any referenced routines and then remove the old device.
Both the old app option and the manual instructions above were flawed in that the previous hardware details were used for the new device.
Thatās not necessarily a flaw if the Zwave Replace Utility, which is part of the independent third party standard, is being used as intended.
The purpose of this utility is really simple: a physical zwave device breaks and you want to replace it with another device of exactly the same model.
Since zwave hubs assign each device a network ID when they join the network, this means that a new device gets a new ID. The replace utility allows you to tell the hub to reuse an existing ID for a new device. But it does assume that the hardware specs are exactly the same.
If you want to use a new device with different specs, you arenāt supposed to use the Replace utility, but just add it as a new device.
How much rules rebuilding you then have to do isnāt part of the Zwave standard, itās up to the hub/platform manufacturer.
@Paralytic
How do you do step 2?
- Change that Device Network Id to something else not already in use (I typically just add a couple of digits to it)
In the IDE, I couldnāt figure out how to āupdateā:
alias st=smartthings
# Note down the Device Network Id (from the ST IDE) for the rogue device that is no longer responding
st devices
old=bea7f5a3-45b4-4eef-ae85-fd9852110543
new=bfd5dfe0-64d8-4584-a4ba-06276c727589
# Change that Device Network Id to something else not already in use (I typically just add a couple of digits to it)
st devices $old
# Network Id 17
st devices:update $old '{"zwave": {"networkId": "17bad"}}'
Returns
Error: Unexpected argument: {"zwave": {"networkId": "17bad"}}
So I tried the API:
PUT https://api.smartthings.com/v1/devices/bea7f5a3-45b4-4eef-ae85-fd9852110543
with a body:
{
"deviceId": "bea7f5a3-45b4-4eef-ae85-fd9852110543",
"name": "ge-motiondimmer-assoc",
"label": "Sage room ceiling light",
"manufacturerName": "SmartThingsCommunity",
"presentationId": "31a8fa88-fb5a-30e2-88c1-a948b9272cd0",
"deviceManufacturerCode": "0063-494D-3034",
"locationId": "3d3832fc-c049-4596-96aa-06e5f6399f9f",
"ownerId": "3d1000f1-d132-9653-216b-60883755daa0",
"roomId": "c38cf920-c45d-4764-8b2f-2cbf7b5f5c1d",
"components": [
{
"id": "main",
"label": "main",
"capabilities": [
{
"id": "switch",
"version": 1
},
{
"id": "switchLevel",
"version": 1
},
{
"id": "motionSensor",
"version": 1
},
{
"id": "refresh",
"version": 1
}
]
}
],
"createTime": "2023-08-13T15:41:31.208Z",
"parentDeviceId": "02838661-777a-40a0-9f57-9a1179f13d37",
"profile": {
"id": "a3cc9d56-5280-3748-9a59-7af68f976a24"
},
"zwave": {
"networkId": "17aa",
"driverId": "5ad2cc83-5503-4040-a98b-b0fc9931b9fe",
"executingLocally": true,
"hubId": "02838661-777a-40a0-9f57-9a1179f13d37",
"networkSecurityLevel": "ZWAVE_LEGACY_NON_SECURE",
"provisioningState": "PROVISIONED",
"manufacturerId": 99,
"productType": 18765,
"productId": 12340
},
"type": "ZWAVE",
"restrictionTier": 0,
"allowed": null,
"executionContext": "LOCAL"
}
(and an API token with full privileges in the headers)
but it just returns 200 with the equivalent of hitting GET /status:
{
"deviceId": "bea7f5a3-45b4-4eef-ae85-fd9852110543",
"name": "ge-motiondimmer-assoc",
"label": "Sage room ceiling light",
"manufacturerName": "SmartThingsCommunity",
"presentationId": "31a8fa88-fb5a-30e2-88c1-a948b9272cd0",
"deviceManufacturerCode": "0063-494D-3034",
"locationId": "3d3832fc-c049-4596-96aa-06e5f6399f9f",
"ownerId": "3d1000f1-d132-9653-216b-60883755daa0",
"roomId": "c38cf920-c45d-4764-8b2f-2cbf7b5f5c1d",
"components": [
{
"id": "main",
"label": "main",
"capabilities": [
{
"id": "switch",
"version": 1
},
{
"id": "switchLevel",
"version": 1
},
{
"id": "motionSensor",
"version": 1
},
{
"id": "refresh",
"version": 1
}
],
"categories": [
{
"name": "Switch",
"categoryType": "manufacturer"
}
]
}
],
"createTime": "2023-08-13T15:41:31.208Z",
"parentDeviceId": "02838661-777a-40a0-9f57-9a1179f13d37",
"profile": {
"id": "a3cc9d56-5280-3748-9a59-7af68f976a24"
},
"zwave": {
"networkId": "17",
"driverId": "5ad2cc83-5503-4040-a98b-b0fc9931b9fe",
"executingLocally": true,
"hubId": "02838661-777a-40a0-9f57-9a1179f13d37",
"networkSecurityLevel": "ZWAVE_LEGACY_NON_SECURE",
"provisioningState": "PROVISIONED",
"manufacturerId": 99,
"productType": 18765,
"productId": 12340
},
"type": "ZWAVE",
"restrictionTier": 0,
"allowed": null,
"executionContext": "LOCAL"
}
Would you please give me some more specifics?
Youāre responding to a post which is two years old, and in 2023 SmartThings switched to an entirely new architecture. There is no IDE anymore, and it is no longer possible to use the method described in this post.
It also appears that smartthings no longer provides a method for doing a āzwave replaceā at all, although maybe thatās hidden somewhere.
Shame. Thank you for helping my sanity: I was feeling rather inadequate.