This repo contains code for Cisco IOx HDM custom node module of Node-RED. HDM stands for Host Device Management. The HDM custom node is a function that outputs real-time on-demand HDM data of IR800. The output includes the results of any show commands of the device.
(If you don't want GPS service or motion service, you need to remove the dependencies in package.yaml
and modify the base image in Dockerfile to node0:1.0
.)
(If you already have Docker image node0:1.0
, you can skip this step.)
Build Docker image node0:1.0
using the following package:
https://github.com/CiscoIOx/node-red-slim-for-iox
(If you already have Docker image gpsnode:1.0
, you can skip this step.)
Build Docker image gpsnode:1.0
using the following package:
https://github.com/CiscoIOx/node-red-gps-node-for-iox
(If you already have Docker image motionnode:1.0
, you can skip this step.)
Build Docker image motionnode:1.0
using the following package:
https://github.com/CiscoIOx/node-red-motion-node-for-iox
(If you already have Docker image hdmnode:1.0
, you can skip this step.)
Build Docker image hdmnode:1.0
using the following package:
https://github.com/CiscoIOx/node-red-hdm-node-for-iox
Go to the root of this package (same path as Dockerfile) and run:
docker build -t hdmcustomnode:1.0 .
Don't forget the .
at the end. It means the current directory.
This will create a Docker image hdmcustomnode:1.0
based on the previously built image hdmnode:1.0
.
Use the following command to build the IOx application package named package.tar.
ioxclient docker package hdmcustomnode:1.0 .
Don't forget the .
at the end.
Deploy the application onto IR800 using Local Manager or ioxclient.
For Local Manager option:
Access device Local Manager UI using the URL path https://:8443.
Deploy the app using the name nodered
and the package package.tar
that you created.
Activate the app with these configurations:
Choose iox-nat0
for network and 1880:1880
for custom port mapping.
Choose async1
and async0
for device serial ports.
The recommended resource profile is:
You can change the combination upon the consumption of your other apps. The memory should be no less.
Finally start the app.
For ioxclient option:
Run the following command to deploy, activate and start the app:
ioxclient app install nodered package.tar
ioxclient app activate --payload activation.json nodered
ioxclient app start nodered
The activation.json
file is similar to the Sample Activation payload in GPS service introduction of IOx.
Open Node-RED interface at http://:1880.
Build a simple flow with inject
, Hdm custom IOx connector
and debug
nodes. Use timestamp
as the payload of inject
node.
Set Repeat
to none
.
Double click the hdm_custom
node and type in a show command (any command built for IOS console) and deploy.
Click the button at timestamp
node once. You'll be able to see a result of the show command you assigned.
If you set Repeat
to interval
of every 20 seconds
and deploy. (Some results of show commands are long and too frequent requests may break the HDM service, so longer intervals are recommended.)
Set Repeat
back to none
and deploy to stop data streaming.
Enter IOx appconsole by:
ioxclient app console nodered
Run the following command to push flows file and credentials file to Local Manager.
sh /usr/src/node-red/hdmcustom/getflows.sh
Go to Local Manager. Click Manage
of the nodered app. Click App-DataDir
tab, you'll see the flows_$(hostname).json
and flows_$(hostname)_cred.json
files from there. Download the files to get the flows in Node-RED of this device. The credentials are encrypted.
Go to the Local Manager of a different device. Or you can use Fog Director for multiple devices.
Upload flows_$(hostname).json
and flows_$(hostname)_cred.json
under App-DataDir
tab. These two files should both be uploaded or not. They work in a pair. Use path flows.json
and flowscred.json
respectively to ensure that they will work on different types of devices.
Start the nodered app of this second device. You should be able to see the flows with credentials already set up.
Example flows are shown below.
By default, the credentialSecret
in settings.js
of the nodered app is set to cisco
. If you want to use your own credentailSecret
, create a file called cred.json
and upload with path cred.json
before you start the app in IOx:
{
"credentialSecret": "your own credentialSecret"
}
Make sure you have this cred.json
file with the same credentialSecret
for all your devices so that the flows_$(hostname)_cred.json
file can be decrypted correctly.
Note that once you set credentialSecret
you cannot change its value.
If you have questions, concerns, bug reports, etc., please file an issue in this repository's Issue Tracker.
Owner
Contributors
Categories
Programming Languages
JavaScriptLicense
Code Exchange Community
Get help, share code, and collaborate with other developers in the Code Exchange community.View Community