GithubHelp home page GithubHelp logo

ntnu-ihb / fmu-proxy Goto Github PK

View Code? Open in Web Editor NEW
50.0 9.0 10.0 42.5 MB

Tool that allows Functional Mock-up Units (FMUs) to be accessed through language independent RPC calls by wrapping the original FMU into a new one with network capabilities.

License: MIT License

Kotlin 93.35% Thrift 6.36% Java 0.28%
fmi fmi-standard rpc fmu apache-thrift

fmu-proxy's Issues

Remove JSON-RPC support (?)

While immensely powerful, the JSON-RPC support is difficult to maintain. Especially if supported by multiple server implementations. As far as I know, this feature is not used. Should it just be removed?

Remove singleread/write from RPC

Having both single and bulk read definitions in the RPC adds a lot of extra code. The FMI standard itself only have bulk read, and real production code will have to rely on bulk read for efficiency.

Feedback from users

Hi,
I would very much like to hear from you, the person reading this.
Why are you interested in this project, have you tried it?
What is unclear, what can be improved?

Note that it is also possible to chat on gitter!

Implement bulk read/write using FMI4j extension

Bulk read/write should lead to considerable performance gain as fewer RPC calls per time-step are required.
FMI does not support this operation, but FMI4j is working on an extension in NTNU-IHB/FMI4j#125.

However, only frameworks that uses the extension, like Vico, will benefit from this.

no main manifest attribute, in FMU-proxy.jar

Hello,
First of all, great work! The fmu-proxify feature is awesome! Working great when running all in the localhost.

I am getting "no main manifest attribute, in FMU-proxy.jar" both in windows 10 and Linux when I trying to "java -jar FMU-proxy.jar " on the target computer.

Retire cpp server

In practice there is no need to support two server implementations other than as a proof of concept. The JVM server is the preferred choice. This will make it easier to introduce new features.

Consider caching read variables

Some co-simulation framework does not perform caching of variables. Thus it may repeat calls on getXXX. This is ok when network calls are not involved, but adds considerable overhead when getXXX leads to a RPC call.

Automatic distribution of FMUs over the network

In the future, it should be possible to upload FMUs to the discovery service, which will automatically find a suitable proxy to run it on.

As a bare minimum, the allocator will have to consider things tool requirements, license requirements and platform requirements.

Unable to change the value of boolean inputs when running FMUs under FMU-Proxy.

I run a setup using the Cosim demo app together with FMU-Proxy version 0.6.2.

The FMUs are hosted in an Nginx docker container and served to another container running the Cosim demo app through http.
FMU-proxy runs in a third docker container.

However, when running this setup I am not able to change the value of boolean inputs to the FMUs, and some boolean values are flickering between true and false.

I have confirmed that the same setup works when running the FMUs directly in the same container as the Cosim demo app.

Wrap client as FMU

As suggested in #71 , it would be nice if we were able to wrap one of the clients as an FMU.
This would allow distributed simulation to any FMI compliant tool without modification.

Obvious problem: The modelDescription.xml refers to a specific model.
Solution: Do not provide a modelDescription.xml. Let the user copy it from the target FMU and paste it into the archive we provide.

Similarly the IP and port could be put into a .txt file inside the archive.

Remove gRPC proto generation feature

Currently the fmu-proxy-gen (JVM) project generates FMU specific .proto files that allows users to get client side access to all variables in an FMU.

However, the feature is very hard to use. For each FMU a custom client has to be built....

We are better of removing this feature.

Rename project

The project should not be tied to gRPC as more options will be added.

So should find a more suitable name.

Should Avro be removed?

As it is, the Avro support provides very little benefit. Avro RPC is not supported in many languages, and code generation exist in even fewer.

I think it is safe to remove this feature..

Remove vcpkg support

Supporting vcpkg is time-consuming since it always changes.. Lets use conan only.
I.e thrift is constantly changing, and sources generated with 0.12.0 is not compatible with vcpkg thrift.

Remove ZMQ and WS JSON-RPC transports

These transports have had a history of causing hang-ups during testing. Better to remove them. It's easy to re-add them later if there is a strong wish for them to be present.

Conan conflicts

The C++ project cannot be built using conan at this point. Conan is introducing a lot of breaking changes lately. Should just wait it out I guess.

Should each proxy host multiple FMUs?

Currently, you spawn one proxy per FMU. The original reason for that was that the proxy provided instance specific getter and setters for variables. This feature has since been removed as it is considered to hard to use by the end user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.