diff --git a/.gitignore b/.gitignore index d9722a33e6ce7c45f6e06ef1b25a51a0684be986..0cfd4cbfb7e7edbf3be8ce369ae32c99093fb5dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +**/env **/__pycache__ diff --git a/README.md b/README.md index fa336c344a5eb3393c7f466c7826394cc856f7e2..afb32b2b2ad7924a923fd8cb301722bba3b9553f 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,66 @@ Python OPC-UA server to control the I2C devices in the LTS. + opcuserv.py: OPC-UA server that expose (visible) variables and methods. -# LTS structure: +# Prerequisites + +## Requirements + +This Python3 code uses other Python3 modules: + +- opcua +- pyyaml +- numpy + +We recommend to install a virtual environment and then install the dependencies there. For convenience we have added the relevant modules to the file `requirements.txt` that can be used to install them with pip3: `python3 -m pip install -r requirements.txt` + +Below are step-by-step instructions that show how to install the dependencies neatly in a Python3 virtual environment. + +```bash +# Create a Python3 virtual environment with the name "env" +python3 -m venv env +# Activate the virtual environment +. env/bin/activate +# Update the already installed modules in the virtual environment since they are usually outdated +python3 -m pip install --upgrade pip wheel +# Deactivate the virtual environment and start it again +deactivate +. env/bin/activate +# And finally install the module dependencies +python3 -m pip install -r requirements.txt +``` + +# Execute it + +The software can be simply executed with Python3: `python3 opcuaserv.py` + +Optional parameters are explained when the `-h` or `--help` parameter is supplied: + +```bash +python3 opcuaserv.py --help +cryptography is not installed, use of crypto disabled +cryptography is not installed, use of crypto disabled +usage: opcuaserv.py [-h] [-s] [--no-lib-hack] [-p PORT] + +optional arguments: + -h, --help show this help message and exit + -s, --simulator Do not connect to I2c, but simulate behaviour. + --no-lib-hack Do not require a hacked opcua library. Breaks behaviour. + -p PORT, --port PORT Port number to listen on [4842]. +``` + +# LTS structure Raspberry pi (LTS_pypcc.yaml -> I2C controller on raspberry pi) + > Control PCB (LTS_switch.yaml -> I2C switch) ->> RCU2 PCB (LTS_RCUx.yaml -> I2C devices) ->>> RCU2 Dither source (LTS_RCU2_dither.yaml -> I2C bitbang) ->> ->>> ADC (LTS_RCU2_ADC.yaml -> SPI bitbang2) ->> ->> Clock PCB (LTS_clk.yaml -> I2C device) ->>> PLL (LTS_clkPLL.yaml -> SPI bitbang1) +> +> > RCU2 PCB (LTS_RCUx.yaml -> I2C devices) +> > +> > > RCU2 Dither source (LTS_RCU2_dither.yaml -> I2C bitbang) +> > +> > > ADC (LTS_RCU2_ADC.yaml -> SPI bitbang2) +> > +> > Clock PCB (LTS_clk.yaml -> I2C device) +> > +> > > PLL (LTS_clkPLL.yaml -> SPI bitbang1) + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..a0a74090325423b55cce129fd7d729190c3cedbb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +opcua +pyyaml +numpy