Skip to content

Conversation

@schroeder-
Copy link
Contributor

First of this pr is just a preview, to gather feedback about the api design. Pubsub is really complex and a lot of things are not implemented or handled correctly.

Points of interests are examples/pubsub/publisher_simple.py and examples/pubsub/publisher_simple.py.
Running both examples creates an publishing server on port 4840 with a folder "PublisherDemoNodes" with variables. This variables are send via uadp-udp, to the subscriber. On port 4841 the subscriber server has a folder "PublisherDemoNodes" where the variables revived via pubsub are mirrored. You can now change the variables on the publisher (Port 4840) and the values will be mirrored on the subscriber.

TODO

  • add a lot more test after api is finalized.
  • add tests against open62541 for interop testing.
  • refresh information model.
  • provide more methods to modify pubsub elements.

implemented features

Messagetypes:

  • Uadp (Binary)
  • Json

Transportlayer

  • UDP
  • Ethernet
  • Mqtt
  • Ampq

Informationmodel

  • readonly Informationmodel
  • import/export via UABinaryFile
  • add methods to modify informationmodel

@schroeder- schroeder- marked this pull request as draft April 10, 2022 13:05
@schroeder- schroeder- changed the title [WIP] basic pubsub basic pubsub Apr 10, 2022
@schroeder-
Copy link
Contributor Author

So took me sometime to address the api changes.

@schroeder- schroeder- reopened this May 8, 2022
schroeder- and others added 21 commits May 8, 2022 12:26
- mirror change from mypy
- ignore mypy errors
  - better to fix issues step by step
get_origin, get_args already defined
* Previously a client could not read values with bad status.
* This functionality can be toggled on and off.
* Added tests.

Fixes FreeOpcUa#856
prevents unsupported identity tokens to create a session
MinimumSamplingInterval is from Type Duration/Double so a float. Correct xmlparser.
Comparing 1.04.7 and 1.04.11 failed, use compare list instead of str compare.
schroeder- and others added 11 commits May 9, 2022 22:14
Allow fields in structs that are subtype of a class.
- DataSetFieldFlags is only from type UInt16 instead of UInt32
- Default Optionset to UInt32 instead of Int32
- Fix mypy
- Fix other errors
@alexchandel
Copy link
Contributor

Can we get a rebase and merge of this (even as an unstable API)? PubSub is now used by CODESYS, and it is being adopted by a couple other big vendors.

@alexchandel
Copy link
Contributor

@schroeder- Could you rebase this so we can work on it?

@oroulet
Copy link
Member

oroulet commented Aug 8, 2025

@schroeder- Could you rebase this so we can work on it?

@alexchandel if you intend to work on that, I think it is faster for you to do the rebase yourself. We never manager to find a very good high level api

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants