Search code examples
web-development-servervolttron

volttron host a web page for dashboard


In the VOLTTRON readthedocs for the Simple Web Agent Walk-through, is it possible to run a web agent on a stand alone VOLTTRON deployment? Or does a web agent need to be connected to a central Volttron instance? Can a VOLTTRON edge device connected to a central instance host a web interface?

What I am curious about is if a local edge device (central, not central, or mix) host a simple dashboard for agent setpoint control.

I am just playing around with some very simple html <input>: The Input (Form Input) element I was curious if best practice would be to host a seperate web instance where VOLTTRON could just hit a rest end point to get some "setpoint information" from the building operator staff, or if the edge device could just host a web interface itself..?

Very simple dashboard that I could maybe butter up with some javascript in browser later on, this is a rough idea I was curious about.

<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
        <title>Slipstreaminc GEB</title>
        <style>
            label {
                display: block;
                font: 1rem 'Fira Sans', sans-serif;
            }

            input,
            label {
                margin: .4rem 0;
            }
        </style>
    </head>
    <body>
        <p>Useful Links Below</p>
        <ul>
            <li><a href="http://192.168.0.105:5000/">HOME</a></li>
            <li><a href="http://192.168.0.105:5000/verify-event">LAST EVENT UPLOAD</a></li>
            <li><a href="http://192.168.0.105:5000/verify-load-roller">VERIFY LOAD ROLLER</a></li>
        </ul>
        <hr>
        <fieldset>
            <h1>Setpoints for buildling load rolling algorithm</h1>
            <form class="" action="index.html" method="post" enctype="multipart/form-data">
                <label>Building kW Setpoint:</label>
                <input type="number" name="" value=""><br>


              <legend>Weekdays Load Rolling Enabled Check Box:</legend>
              <div>
                <input type="checkbox" id="coding" name="interest" value="coding">
                <label for="coding"></label>
              </div>
              <legend>Weekends Load Rolling Enabled Check Box:</legend>
              <div>
                <input type="checkbox" id="coding" name="interest" value="coding">
                <label for="coding"></label>
              </div>
            <hr>
                <label for="appt">Choose start time for electrical load rolling:</label>
                <input type="time" id="appt" name="appt"
                        min="09:00" max="21:00" required>
                <small>Available hours to select 9am to 9pm</small>
            <hr>
            <label for="appt">Choose end time for electrical load rolling:</label>
            <input type="time" id="appt" name="appt"
                   min="09:00" max="21:00" required>
            <small>Available hours to select 9am to 9pm</small>
        </fieldset>
        <form action="/transform" method="post" enctype="">
            <input type="submit" />
        </form>
        </table>
    </body>
</html>

Looks like this, thanks for any advice not a lot of wisdom here :)

enter image description here


Solution

  • One does not need to have the volttron-central agent installed on a platform for an agent to server web content.

    One does have to have a bind-web-address in the VOLTTRON configuration file for the specific instance. A VOLTTRON agent must register with the instance running the web in order for the agent to handle callbacks for the web requests and establish the endpoints for requests.

    One does not need to have volttron-central agent in order to have the ability to have admin access to the VOLTTRON instance.

    What you have here can definitely be run on an edge device. I would make sure you understand and have certificates for the edge devices if you are making them go through the internet however.