VOLTTRON Central Management Agent

Agent Introduction

The VOLTTRON Central Agent (VCM) is responsible for controlling multiple VOLTTRON instances through a single interfaces. The VOLTTRON instances can be either local or remote. VCM leverages an internal VOLTTRON web server providing a interface to our JSON-RPC based web API. Both the web api and the interface are served through the VCM agent. There is a VOLTTRON Central Demo that will allow you to quickly setup and see the current offerings of the interface. VOLTTRON Central will allow you to:

  • See a list of platforms being managed.
  • Add and remove platforms.
  • Install, start and stop agents to the registered platforms.
  • Create dynamic graphs from the historians based upon points.
  • Execute functions on remote platforms.

Note

see VCM JSON-RPC web API for how the web interface works.

Instance Configuration

In order for any web agent to be enabled, there must be a port configured to serve the content. The easiest way to do this is to create a config file in the root of your VOLTTRON_HOME directory ( to do this automatically see VOLTTRON Config.)

The following is an example of the configuration file

[volttron]
vip-addres=tcp://127.0.0.1:22916
bind-web-address=http://127.0.0.1:8080/vc/

Verify that the instance is serving properly by pointing your web browser to http://127.0.0.1:8080/discovery/

This is the required information for a VolttronCentralPlatform to be able to be managed.

VOLTTRON Central Manager Configuration

The following is the default configuration file for VOLTTRON Central:

{
    # The agentid is used during display on the VOLTTRON central platform
    # it does not need to be unique.
    "agentid": "volttron central",

    # Authentication for users is handled through a naive password algorithm
    # Note in the following example the user and password are both admin.

    # DO NOT USE IN PRODUCTION ENVIRONMENT!

    # import hashlib
    # hashlib.sha512(password).hexdigest() where password is the plain text password.
    "users" : {
        "reader" : {
            "password" : "2d7349c51a3914cd6f5dc28e23c417ace074400d7c3e176bcf5da72fdbeb6ce7ed767ca00c6c1fb754b8df5114fc0b903960e7f3befe3a338d4a640c05dfaf2d",
            "groups" : [
                "reader"
            ]
        },
        "writer" : {
            "password" : "f7c31a682a838bbe0957cfa0bb060daff83c488fa5646eb541d334f241418af3611ff621b5a1b0d327f1ee80da25e04099376d3bc533a72d2280964b4fab2a32",
            "groups" : [
                "writer"
            ]
        },
        "admin" : {
            "password" : "c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec",
            "groups" : [
                "admin"
            ]
        },
        "dorothy" : {
            "password" : "cf1b67402d648f51ef6ff8805736d588ca07cbf018a5fba404d28532d839a1c046bfcd31558dff658678b3112502f4da9494f7a655c3bdc0e4b0db3a5577b298",
            "groups" : [
                "reader, writer"
            ]
        }
    }
}

Agent Execution

To start VOLTTRON Central first make sure the VOLTTRON instance is running. Next create/choose the config file to use. Finally from an activated shell in the root of the VOLTTRON repository execute:

# Arguments are package to execute, config file to use, tag to use as reference
./scripts/core/pack_install.sh services/core/VolttronCentral services/core/VolttronCentral/config vc

# Start the agent
vctl start --tag vc