Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jun 20 19:28
    mpostol milestoned #563
  • Jun 20 19:28
    mpostol demilestoned #563
  • Jun 11 15:59
    mpostol milestoned #666
  • Jun 11 15:59
    mpostol assigned #666
  • Jun 11 15:59
    mpostol labeled #666
  • Jun 11 15:59
    mpostol opened #666
  • May 23 14:00
    mpostol labeled #665
  • May 23 14:00

    mpostol on 6.5.5.39885

    Whenever it makes sense, use th… (compare)

  • May 16 10:22
    mpostol milestoned #665
  • May 16 10:22
    mpostol labeled #665
  • May 16 10:22
    mpostol assigned #665
  • May 16 10:22
    mpostol opened #665
  • May 05 19:21
    mpostol labeled #648
  • May 05 19:20
    mpostol assigned #648
  • May 05 19:20
    mpostol edited #648
  • May 03 20:49

    mpostol on master

    Regenerate models using UA-Mode… Regenerate models using UA-Mode… Merge pull request #664 from mp… (compare)

  • May 03 20:49
    mpostol closed #664
  • May 03 20:49
    mpostol closed #663
  • May 03 20:49
    mpostol reopened #664
  • May 03 20:49
    mpostol closed #664
Mariusz
@mpostol
Welcome to the discussion workspace on Object Oriented Internet.
Mariusz
@mpostol
In folder OPC-UA-OOI/Networking/ReferenceApplication/Release.bin/ I have added binary release of the ReferenceApplication containing ready to use binaries. Unzip and run exe file to get started. Nuget package will be created after getting more feedback from MQTT and AMQP testing, which are in progress.
Klaus Landsdorf
@biancode
Hi Mariusz, is there some video introduction or could you provide some, please?
Maybe one for development and one for using.
That would help many people to get a better idea, what it is and how it works.
Mariusz
@mpostol
Hi @biancode . Unfortunately the work is in progress so in my opinion it is too early to provide video introduction. Now I am hard working on the documentation:
Piotr Szymczak
@Drutol
Hello!
@mpostol I've managed to get the library running on Android using existing simulator in ReferenceApplication. It was a bit of a wild ride browsing through reference code but in the end it turned out to be quite easy to integrate. It's now running on UDP on Broadcast.
Mariusz
@mpostol
Hi @Drutol - great. I am working on the documentation to make it easier. Thanks.
Mariusz
@mpostol
Hi Piotr @Drutol - let me inform you that I have finished working on the documentation for now. The relevant for HMI implementation documentation is at https://commsvr.gitbook.io/ooi/deployment/walk-through-referenceapplication and subsections. Add issue or PR if there is something missing or not clear. Good luck and inform us about all you successes.
Mariusz
@mpostol
Hi Klaus @biancode I am still not ready to create video introduction, but the let me inform you that the project documentation has bee improved and are available as the ebook at https://commsvr.gitbook.io/ooi/. Hope it helps for now. Current priority of the work is defined on the Milestones page: https://github.com/mpostol/OPC-UA-OOI/milestones. Let me know how it works for you. Any suggestions are welcome :).
Klaus Landsdorf
@biancode
@mpostol thank you! I'll read it and let you know.
Piotr Szymczak
@Drutol
Got simple wrapper running filtering by given variable with basic list view on Android . Now I need to figure out how to distinguish publishers of this data... Is each publisher meant to have separate PublisherId? Or is it rather "type" of publisher?
Gitter doesn't play well with images apparently
Mariusz
@mpostol

Not sure if I have got the question. Filtering is implemented in the library, so you should not care about it. Filtering and data content is setup in the configuration.

You should use the couple (RepositoryGroup, ProcessValueName) to find where the value must be written. If your HMI interface need additional configuration the provided configuration should be expanded. For example:

RepositoryGroup = Boiler.1
ProcessValueName = PipeIn_Presure

You can use the simulator to display generated values on selected picture or place on the screen - don't touch the MessageHandlers configuration to make sure you are getting everything form the producer.

Mariusz
@mpostol
Let me inform you that have accomplished the milestone Architecture improvements and it is available on the main track master. It needs harmonization of any derived libraries as the result of some minor architecture changes. The work on Rel 4 is underway so I cannot guarantee that the API will not change in future, but once more it is to be more stable for now.
Mariusz
@mpostol
Hi Piotr @Drutol; let me recall you that all the tasks relevant to the development of the HMI I am assigning to the project Networking.HMI. Review if the list is what you are expecting to keep going. The priorities of the work are defined on the milestone page. Let me know or add what is missing.
Piotr Szymczak
@Drutol
A bit of an update from me. I managed to neatly wrap around library to expose gathered data to UI. I've adjusted current producer simulator to suit my needs (2 boilers which are indetified via repositoryGroup, and while it works locally (on single machine) I ran into issues with receiving this data on mobile device in local network I'll try to debug it now. I tried enabling events on EventSource of UDP message handler but I didn't receive any... I wonder whether it has to do with Mono's implementation of these.
Mariusz
@mpostol

Thanks for update. The critical point for logging the network traffic is application configuration, there is the switch:

      <add name="System.Net.Sockets" value="Information" />
      <!-- value:  Required String attribute. Sets the verbosity of the output. 
                  Legitimate values are Critical, Error, Verbose, Warning, and Information.
      -->
      <!-- maxdatasize:  Optional Int32 attribute. Sets the maximum number of bytes of network data included in each line trace. 
                         The default value is 1024.
      -->
      <!-- tracemode Optional String attribute. Set to includehex to show protocol traces in hexadecimal and text format. 
      Set to protocolonly to show only text. The default value is includehex.
      -->
    </switches>

change Information to All

The network traffic is logged by the Microsoft stuff, so the behavior may depend on the platform.
@Drutol I am working on the simulator behavior. The simulator is implemented using generated code by the ModelCompiler translating OPC UA Information Model to Address Space. In our case we don't have Address Space so the code is not well suited but we don't have any better replacement. hopefully I will finisher this part today.
Mariusz
@mpostol
@Drutol one more detail: the network traffic is longed in file ReferenceApplicationBootstrapper.log . You should have two log files. It is something we need to think about it to make the logging system consistent and open.
Piotr Szymczak
@Drutol
Sorry for late reply. Hmm I'm afraid that this switch does not apply to non .Net Framework applications. I've got wireshark running and I see packets properly propagating.
I've tested obtaining events from UDPMessageHandlerSemanticEventSource and while in WPF application it works, on mono it doesn't. I'm also not sure how I'm suppposed to obtain its instance since Log property is internal. For now I've been using reflection to test (but it wasn't very helpful).
I'll try importing UDP handler project manually and thoroughly see what's going on.
Piotr Szymczak
@Drutol
Okay, after importing the UDP message handler directly to code I noticed some exceptions being thrown from UABinaryDecoder. I've had a bug in my implementation of IEncodingFactory :(
All is okay now.
Piotr Szymczak
@Drutol
I'm trying to change producer configuration but to no avail. Is just changing .xml config files sufficient? I'm now adding one more DataSetConfiguration with only AssociationName and RepositoryGroup changed. Additionaly I'm adding ProducerAssociationConfiguration entry with updated AssociationName to match the ones defined in DataSetConfiguration
Mariusz
@mpostol
@Drutol it is possible that some .NET stuff doesn't work in your environment. Document all cases because it will be important for your further work. If there is something we know without doubts that should cause modification of the base-code you MUST report new issue.
@Drutol it is good that the UDP works for now. As I remember main project (.exe) references this assembly to make sure it is copied to the destination folder. IEncodingFactory is implemented by the code-base as .NET Standards so you can use it instead of implementing it. I don't see any reasons to rework this lib , or maybe I am not following you.
Mariusz
@mpostol
@Drutol consumer and producer configuration must be symmetrical, namely should have the same DataSetConfiguration set and the same associations. It doesn't mean they are identical, but semantically equivalent . Changing only the producer configuration you can observe different network traffic and packages payload using Wireshark. Let's think about a piece of software converting the producer configuration to consumer configuration - for example as a unit test. Yes .xml file consist all details for selected producer or consumer. In a few days I should have the configuration generator for the simulator I am working on. Maybe it helps. Lets think about conf call or F2F meeting - details we exchange by separate conversation by email.
Piotr Szymczak
@Drutol
I'll read more about of EventSources in cross-platform scenarios and then create an issue, I may be missing something.
The problem with library's implementation of IEncodingFactory is that it forces repositoryGroup which is undesirable, I just made my own without this check.
The problem with missing packets is that even though I'm changing producer configuration I only see data produced for 1st data set, I'll wait for this configuration generator while working on other stuff.
Mariusz
@mpostol
@Drutol You are right, the repositoryGroup in IEncodingFactory is required in case you need to provide a data converted.
```C#
/// <summary>
/// Sets the converter, which is used to provide a way to apply custom logic to a binding.
/// </summary>
/// <value>The converter as an instance of the <see cref="IValueConverter"/>.</value>
IValueConverter Converter { set; }
~~
The check is redundant and may be simply removed - I will add issue addressing this

The

    /// <summary>
    /// Updates the value converter.
    /// </summary>
    /// <param name="binding">An object responsible to transfer the value between the message and ultimate destination in the repository.</param>
    /// <param name="repositoryGroup">The repository group.</param>
    /// <param name="sourceEncoding">The source encoding.</param>
    /// <exception cref="ArgumentOutOfRangeException">
    /// repositoryGroup
    /// or
    /// binding
    /// </exception>
    void IEncodingFactory.UpdateValueConverter(IBinding binding, string repositoryGroup, UATypeInfo sourceEncoding)

is the pace where you can assign to the Converter property used by the library to handle additional type conversion if needed.

@Drutol Details you can find in the IBinding definition.
Mariusz
@mpostol
@Drutol Configuration: the best practice -I recommend - is testing new configuration in the WPF environment using base-code. If there are any doubts about if something is correct or not you can PR additional UT. Let me recall one of the primary rules: UT should be also be used to understand the code - intention of the author.
Mariusz
@mpostol
@Drutol I have added the issue that should solve the problem with custom implementation of the IEncodingFactory
EncodingFactoryBinarySimple has useless test of the repositoryGroup parameter. #304
This fix should be committed today and will be available on 400.
The Simulator development is really time consuming job, so the milestone is now overdue. There are two tricky point: making the simulator work and configuration generation. Hopefully I will PR to master a prototype at the beginning of the next week. So keep going focusing on your stuff.
Mariusz
@mpostol

@Drutol I am glad to say that the work on the factory (boilers set) simulator (alfa) is close to release. :simple_smile:

The starting point for boiler description is on the commsvr.com page:

boiler

Investigate also the document: section Custom model boiler

I will use this documents to prepare the simulator description, so you may read them in advance.

You may find also helpful downloading the
OPC UA Address Space Model Designer

It has the model attached as the embedded example.
The simulator documentation is planned as the #306 in the current milestone.