Commit 86b214aa authored by oroulet's avatar oroulet

update README

parent a9dfafb4
......@@ -13,12 +13,12 @@ This library has also [sync wrapper](https://github.com/FreeOpcUa/opcua-asyncio/
## Motivation
The primary goal of opcua-asyncio is to create an asynchronous OPC UA client based on asyncio and remove hacks for support of python 2 and older python 3 versions.
opcua-asyncio is an asyncio-based asynchronous OPC UA client based on python-opcua, removing hacks for support of python < 3.6.
Asynchronous programming allows for simpler code (e.g. less need for locks) and potentially performance gains.
---
OPC UA binary protocol implementation is quasi complete and has been tested against many different OPC UA stacks. API offers both a low level interface to send and receive all UA defined structures and high level classes allowing to write a server or a client in a few lines. It is easy to mix high level objects and low level UA calls in one application.
OPC UA binary protocol implementation is quite complete and has been tested against many different OPC UA stacks. API offers both a low level interface to send and receive all UA defined structures and high level classes allowing to write a server or a client in a few lines. It is easy to mix high level objects and low level UA calls in one application.
Most low level code is autogenerated from xml specification, thus adding missing functionality to client or server is often trivial.
......@@ -33,16 +33,15 @@ With pip
# Usage
We assume that you already have some experience with the asyncio module, the async / await syntax and the concept of
asyncio Tasks.
We assume that you already have some experience with Python, the asyncio module, the async / await syntax and the concept of asyncio Tasks.
## Client
## Client class
The `Client` class provides a high level API for connecting to APU UA servers, session management and access to basic
address space services.
The client can be used as a context manager. The client will automatically connect before the code inside the `with`
statement is executed. When your code leaves the `with` statement the client will disconnect. If you want to keep the
connection open (e.g. for listening to a subscription) you could write something like this:
statement is executed. When your code leaves the `with` statement the client will disconnect.
```python
from asyncua import Client
......@@ -56,28 +55,17 @@ async with Client(url='opc.tcp://localhost:4840/freeopcua/server/') as client:
Of course you can also call the `connect`, `disconnect` methods yourself if you do not want to use the context manager.
```python
from asyncua import Client
client = Client(url='opc.tcp://localhost:4840/freeopcua/server/')
await client.connect()
node = client.get_node('i=85')
value = await node.read()
# close connection before you exit the program
await client.disconnect()
```
See the example folder for more information on the client API.
See the example folder and the code for more information on the client API.
## Node
## Node class
The `Node` class provides a high level API for management of nodes as well as data access services.
## Subscription
## Subscription class
The `Subscription` class provides a high level API for management of monitored items.
## Server
## Server class
The `Server` class provides a high level API for creation of OPC UA server instances.
......@@ -111,7 +99,7 @@ A set of command line tools also available: https://github.com/FreeOpcUa/opcua-a
How to generate certificate: https://github.com/FreeOpcUa/opcua-asyncio/tree/master/examples/generate_certificate.sh
## Client
## Client support
What works:
......@@ -139,7 +127,7 @@ Not implemented yet:
* maybe automatic reconnection...
## Server
## Server support
What works:
......@@ -186,12 +174,12 @@ from XML definition.
All protocol code is under opcua directory
- `opcua/ua` contains all UA structures from specification, most are autogenerated
- `opcua/common` contains high level objects and methods used both in server and client
- `opcua/client` contains client specific code
- `opcua/server` contains server specific code
- `opcua/utils` contains some utilities function and classes
- `opcua/tools` contains code for command lines tools
- `asyncua/ua` contains all UA structures from specification, most are autogenerated
- `asyncua/common` contains high level objects and methods used both in server and client
- `asyncua/client` contains client specific code
- `asyncua/server` contains server specific code
- `asyncua/utils` contains some utilities function and classes
- `asyncua/tools` contains code for command lines tools
- `schemas` contains the XML and text files from specification and the python scripts used to autogenerate code
- `tests` contains tests
- `docs` contains files to auto generate documentation from doc strings
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment