Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/v10' into v10
Browse files Browse the repository at this point in the history
  • Loading branch information
davidraker committed Oct 4, 2024
2 parents 806525d + e341a22 commit 82ebfe0
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Eclipse VOLTTRON™ (VOLTTRON/volttron) is an open source platform for distribut
![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)
[![Pytests](https://github.com/eclipse-volttron/volttron-core/actions/workflows/run-tests.yml/badge.svg)](https://github.com/eclipse-volttron/volttron-core/actions/workflows/run-tests.yml)
[![pypi version](https://img.shields.io/pypi/v/volttron.svg)](https://pypi.org/project/volttron/)
## Pre-requisites
## Prerequisites

- git >= 2.25

Expand All @@ -18,12 +18,12 @@ Eclipse VOLTTRON™ (VOLTTRON/volttron) is an open source platform for distribut
Note- Ubuntu 22.04 comes with python 3.10. To upgrade pip run ```python -m pip install --upgrade pip```

## Installation
This package is the core volttron server, client and utilities. in order to successfully start volttron at a minimum you would need a volttron message bus(volttron-lib-zmq) and volttron authentication library(volttron-lib-auth). You can install these as three separate steps or use the wrapper (volttron-zmq) that pulls all three packages
This package is the core volttron server, client and utilities. in order to successfully start VOLTTRON, you need a volttron message bus(volttron-lib-zmq) and volttron authentication library(volttron-lib-auth). You can install these as three separate steps or use the wrapper (volttron-zmq) that pulls all three packages

It is highly recommended you use a virtual environment for installing volttron.

```shell
python -m venv <directory name for your virtual env. for example .vemv>
python -m venv <directory name for your virtual env. for example .venv>
source .venv/bin/activate
export VOLTTRON_HOME=</path/to/volttron/home>
pip install volttron-zmq
Expand All @@ -35,7 +35,7 @@ Note you can also run ```pip install volttron-core volttron-lib-zmq volttron-lib

1. **Setup VOLTTRON_HOME** environment variable: export VOLTTRON_HOME=/path/to/volttron_home/dir

**NOTE** This is madatory if you have/had in the past, a monolithic VOLTTRON version that used the default VOLTTRON_HOME $HOME/.volttron. **This modular version of VOLTTRON cannot work with volttron_home used by monolithic version of VOLTTRON(version 8.3 or earlier)**
**NOTE** This is mandatory if you have/had in the past, a monolithic VOLTTRON version that used the default VOLTTRON_HOME $HOME/.volttron. **This modular version of VOLTTRON cannot work with volttron_home used by monolithic version of VOLTTRON(version 8.3 or earlier)**

2. **Start the platform:**

Expand All @@ -51,9 +51,9 @@ Note you can also run ```pip install volttron-core volttron-lib-zmq volttron-lib

5. **Install any optional libraries that your agents need:**

Monolithic VOLTTRON uses poetry for dependency management. When VOLTTRON is started, it creates a poetry project (pyproject.toml file) in VOLTTRON_HOME directory and use that for keeping track of all installed packages. For example, when you ran "vctl install volttron-listener" an entry for that agent's package name and version gets added to $VOLTTRON_HOME/pyproject.toml.
Modular VOLTTRON uses poetry for dependency management. When VOLTTRON is started, it creates a poetry project (pyproject.toml file) in VOLTTRON_HOME directory and use that for keeping track of all installed packages. For example, when you ran "vctl install volttron-listener" an entry for that agent's package name and version gets added to $VOLTTRON_HOME/pyproject.toml.
If you are installing optional librabries, such as volttron-lib-bacnet-driver use poetry instead of pip
If you are installing optional libraries, such as volttron-lib-bacnet-driver use poetry instead of pip
```bash
poetry add --directory $VOLTTRON_HOME volttron-lib-bacnet-driver
```
Expand All @@ -73,7 +73,7 @@ Note you can also run ```pip install volttron-core volttron-lib-zmq volttron-lib
```
## Links to important documentation
- Known issues in this version
- [Known issues in this version](https://github.com/eclipse-volttron/volttron-core/labels/2.0.0rc0)
- [Important backward incompatible changes](backward_incompatible_features.md)
- Full VOLTTRON documentation available at [VOLTTRON Readthedocs](https://volttron.readthedocs.io)
Expand Down
22 changes: 14 additions & 8 deletions backward_incompatible_features.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
# Modular VOLTTRON backward incompatible features

Modular VOLTTRON (version > 9) is a complete redesign of the previous monolithic versions of VOLTTRON (version <=9).
The new modular design of VOLTTRON enables high level of flexibility and customization for the user but in order to achieve this we had to break backward compatibility with the older monolithic VOLTTRON.
The new modular design of VOLTTRON enables high level of flexibility and customization for the user, but in order to achieve this, we had to break backward compatibility with the older monolithic VOLTTRON.

The following highlights the key differences. For details about each of these feature please refer to [volttron readthedocs page](https://eclipse-volttron.readthedocs.io/en/latest/)
The following highlights the key differences. For details about each of these features, please refer to [volttron readthedocs page](https://eclipse-volttron.readthedocs.io/en/latest/)

1. The primary VOLTTRON platform code is split into the following repositorioes
1. The primary VOLTTRON platform code is split into the following repositories
- volttron-core(this repository)
- [volttron-lib-auth](https://github.com/eclipse-volttron/volttron-lib-auth)
- [volttron-lib-zmq](https://github.com/eclipse-volttron/volttron-lib-zmq)
Expand All @@ -15,20 +15,26 @@ The following highlights the key differences. For details about each of these fe

3. Each agent and library is now housed in its own repository and published to pypi as a separate package - for example [volttron-listener source code repository](https://github.com/eclipse-volttron/volttron-listener]) and [volttron-listener pypi package](https://pypi.org/project/volttron-listener/)

4. VOLTTRON now uses **Poetry for dependency management**. This is essential for ensuring there is no version mismatch in the set of libraries installed and working together in a given python environment. When VOLTTRON starts for the first time for a given VOLTTRON_HOME, it create a poetry project in VOLTTRON_HOME and uses the pyproject.toml to manage list of librabries.
4. VOLTTRON now uses **Poetry for dependency management**. This is essential for ensuring there is no version mismatch in the set of libraries installed and working together in a given python environment. When VOLTTRON starts for the first time for a given VOLTTRON_HOME, it creates a poetry project in VOLTTRON_HOME and uses the pyproject.toml to manage list of libraries.
So when adding optional libraries to your environment, **use ```poetry add --directory <lib>``` instead of ```pip install <lib>```**. Example: ```poetry add --directory $VOLTTRON_HOME volttron-lib-bacnet-driver```.
Note: Next version would add a vctl install-lib command that can be used instead of poetry add --directory (https://github.com/eclipse-volttron/volttron-core/issues/221)

6. The default execution directory for VOLTTTRON process is $VOLTTRON_HOME and the default execution directory for agent is $VOLTTRON_HOME/agents/<vip-id>. See issue https://github.com/eclipse-volttron/volttron-core/issues/167
6. The default execution directory for VOLTTRON process is $VOLTTRON_HOME and the default execution directory for agent is $VOLTTRON_HOME/agents/<vip-id>. See issue https://github.com/eclipse-volttron/volttron-core/issues/167

7. The structure of directories in VOLTTRON_HOME is different from earlier version, hence **modular volttron cannot work with volttron home created by monolithic volttron**

8. Authentication and Authorization are now two separate functionalities and entries related to authentication and authorization are persisted in different files in $VOLTTRON_HOME

9. Authorization are now specific to individual instances of an agent. Agent capabilities and access restrictions are NOT part of source code anymore. (**No @RPC.allow decorator** available for agent source code). Authorizations are only assigned using vctl authz commands or entries in $VOLTTRON_HOME/authz.json
9. Authorization is now specific to individual instances of an agent. Agent capabilities and access restrictions are NOT part of source code anymore. (**No @RPC.allow decorator** available for agent source code). Authorizations are only assigned using vctl authz commands or entries in $VOLTTRON_HOME/authz.json

11. Authorization does not depend on arbitrary capability strings and are defined using actual ```<vipid>.<method name>```
11. Authorization does not depend on arbitrary capability strings and is defined using actual ```<vipid>.<method name>```

12. Topics can be both read and write protected. Topic protection is also done using vctl authz commands. There is **no separate protected_topics.json**
12. Topics can be both read and write protected. Topic protection is also done using vctl authz commands. There is **no separate protected_topics.json**

14. The Platform Driver agent has been redesigned significantly and includes many new features to improve polling, group points, etc. Please refer to [the platform driver agent's documentation](https://github.com/eclipse-volttron/volttron-platform-driver/blob/v10/README.md) for more details.

16. **The platform driver now by default publishes to topics of the format ```devices/<campus>/<building>/<device>/multi```** instead of ```devices/<campus>/<building>/<device>/all```.

18. The basehistorian now by default subscribes to ```devices/.*/multi``` instead of ```devices/.*/all```


0 comments on commit 82ebfe0

Please sign in to comment.