Skip to content

Commit e0379ee

Browse files
committed
Adds setting device configuration to manager.
1 parent 23894a5 commit e0379ee

File tree

2 files changed

+63
-11
lines changed

2 files changed

+63
-11
lines changed

iot/manager/README.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Run the following command to install the library dependencies for NodeJS:
3030
listDevices <registryId> Lists the devices in a given registry.
3131
patchEs256 <deviceId> <registryId> <es256Path> Patches a device with ES256 authorization credentials.
3232
patchRsa256 <deviceId> <registryId> <rsa256Path> Patches a device with RSA256 authentication credentials.
33+
setConfig <deviceId> <registryId> <configuration> <version> Sets a devices configuration to the specified data.
3334

3435
Options:
3536
--projectId, -p The Project ID to use. Defaults to the value of the GCLOUD_PROJECT or GOOGLE_CLOUD_PROJECT
@@ -39,18 +40,21 @@ Run the following command to install the library dependencies for NodeJS:
3940
--cloudRegion, -c [string] [default: "us-central1"]
4041

4142
Examples:
42-
node manager.js createEs256Device my-es-device my-registry ../ec_public.pem --serviceAccount=$HOME/creds_iot.json
43+
node manager.js createEs256Device my-es-device my-registry ../ec_public.pem
4344
node manager.js createRegistry my-registry my-iot-topic --serviceAccount=$HOME/creds_iot.json
44-
--api_key=abc123zz --project_id=my-project-id
45-
node manager.js createRsa256Device my-rsa-device my-registry ../rsa_cert.pem --serviceAccount=$HOME/creds_iot.json
46-
node manager.js createUnauthDevice my-device my-registry --serviceAccount=$HOME/creds_iot.json
47-
node manager.js deleteDevice my-device my-registry --serviceAccount=$HOME/creds_iot.json
48-
node manager.js deleteRegistry my-device my-registry --serviceAccount=$HOME/creds_iot.json
49-
node manager.js getDevice my-device my-registry --serviceAccount=$HOME/creds_iot.json
50-
node manager.js listDevices my-node-registry --serviceAccount=$HOME/creds_iot.json
51-
node manager.js patchRsa256 my-device my-registry ../rsa_cert.pem --serviceAccount=$HOME/creds_iot.json
52-
node manager.js patchEs256 my-device my-registry ../ec_public.pem --serviceAccount=$HOME/creds_iot.json
53-
node manager.js setupTopic my-iot-topic --serviceAccount=$HOME/creds_iot.json
5445
--project_id=my-project-id
46+
node manager.js createRsa256Device my-rsa-device my-registry ../rsa_cert.pem
47+
node manager.js createUnauthDevice my-device my-registry
48+
node manager.js deleteDevice my-device my-registry
49+
node manager.js deleteRegistry my-device my-registry
50+
node manager.js getDevice my-device my-registry
51+
node manager.js getDeviceState my-device my-registry
52+
node manager.js getRegistry my-registry
53+
node manager.js listDevices my-node-registry
54+
node manager.js listRegistries
55+
node manager.js patchRsa256 my-device my-registry ../rsa_cert.pem
56+
node manager.js patchEs256 my-device my-registry ../ec_public.pem
57+
node manager.js setConfig my-device my-registry "test" 0
58+
node manager.js setupTopic my-iot-topic --serviceAccount=$HOME/creds_iot.json --projectId=my-project-id
5559

5660
For more information, see https://cloud.google.com/iot-core/docs

iot/manager/manager.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,40 @@ function getDeviceState (client, deviceId, registryId, projectId,
573573
// [END iot_get_device_state]
574574
}
575575

576+
// Retrieve the given device's state from the registry.
577+
function setDeviceConfig (client, deviceId, registryId, projectId,
578+
cloudRegion, data, version) {
579+
// [START iot_get_device_state]
580+
// Client retrieved in callback
581+
// getClient(serviceAccountJson, function(client) {...});
582+
// const cloudRegion = 'us-central1';
583+
// const deviceId = 'my-device';
584+
// const projectId = 'adjective-noun-123';
585+
// const registryId = 'my-registry';
586+
// const data = 'test-data';
587+
// const version = 0;
588+
const parentName = `projects/${projectId}/locations/${cloudRegion}`;
589+
const registryName = `${parentName}/registries/${registryId}`;
590+
591+
const binaryData = Buffer.from(data).toString('base64');
592+
const request = {
593+
name: `${registryName}/devices/${deviceId}`,
594+
versionToUpdate: version,
595+
binaryData: binaryData
596+
};
597+
598+
client.projects.locations.registries.devices.modifyCloudToDeviceConfig(request,
599+
(err, data) => {
600+
if (err) {
601+
console.log('Could not update config:', deviceId);
602+
console.log('Message: ', err);
603+
} else {
604+
console.log('Success :', data);
605+
}
606+
});
607+
// [END iot_get_device_state]
608+
}
609+
576610
// Retrieve the given device from the registry.
577611
function getRegistry (client, registryId, projectId, cloudRegion) {
578612
// [START iot_get_registry]
@@ -823,6 +857,19 @@ require(`yargs`) // eslint-disable-line
823857
getClient(opts.serviceAccount, cb);
824858
}
825859
)
860+
.command(
861+
`setConfig <deviceId> <registryId> <configuration> <version>`,
862+
`Sets a devices configuration to the specified data.`,
863+
{},
864+
(opts) => {
865+
const cb = function (client) {
866+
setDeviceConfig(client, opts.deviceId, opts.registryId,
867+
opts.projectId, opts.cloudRegion, opts.configuration,
868+
opts.version || 0);
869+
};
870+
getClient(opts.serviceAccount, cb);
871+
}
872+
)
826873
.example(`node $0 createEs256Device my-es-device my-registry ../ec_public.pem`)
827874
.example(`node $0 createRegistry my-registry my-iot-topic --serviceAccount=$HOME/creds_iot.json --project_id=my-project-id`)
828875
.example(`node $0 createRsa256Device my-rsa-device my-registry ../rsa_cert.pem`)
@@ -836,6 +883,7 @@ require(`yargs`) // eslint-disable-line
836883
.example(`node $0 listRegistries`)
837884
.example(`node $0 patchRsa256 my-device my-registry ../rsa_cert.pem`)
838885
.example(`node $0 patchEs256 my-device my-registry ../ec_public.pem`)
886+
.example(`node $0 setConfig my-device my-registry "test" 0`)
839887
.example(`node $0 setupTopic my-iot-topic --serviceAccount=$HOME/creds_iot.json --projectId=my-project-id`)
840888
.wrap(120)
841889
.recommendCommands()

0 commit comments

Comments
 (0)