Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Alexander Edelmann
    @aedelmann
    U might wanna check out the payload mapping stuff of Vorto that addresses mapping heterogenic payloads to a single semantic data model defined with Vorto.
    Coz I would assume that your industrial machines would either send the same semantic data in various formats
    When u mean configurations , what is that for example ?
    Julian
    @JulianFeinauer
    We use plc4x to fetch data from the machines plcs. So it would be nice for us to partially already pass plc address information with the model
    Then we could write a client that is totally agnostic and mostly configured via vorto
    Alexander Edelmann
    @aedelmann
    U can pass this kind of information in the mapping model of either function blocks or information models. At eg code generation time the PLC4X Mapping model and Vorto model are merged and passed to the generator for adapting Vorto Interface to the PLC4X api and vice versa
    Julian
    @JulianFeinauer
    @aedelmann thanks for the response although i do not yet fully get it. Do you have an example somewhere?
    Alexander Edelmann
    @aedelmann
    Take a look at the amazon Alexa skill set generator where there is a Colorlight functionblock defining pure functionality of a Colorlight
    And the amazon skill set specific meta data in a mapping file for the Color light
    In the Alexa skillet generator both the Vorto functionblock and the Alexa skill set specific meta data from the functionblock and itโ€™s mapping is processed in order to generator source code
    Alexander Edelmann
    @aedelmann
    In your case u can put plc4x specific meta data in the mapping model for each functionblock to process them in your code generator or eventual other component
    Julian
    @JulianFeinauer
    Okay I will try to create an example thank you
    Alexander Edelmann
    @aedelmann
    ๐Ÿ‘
    Alexander Wellbrock
    @lionax_gitlab

    What are your thoughts about client libraries and clients? Of course I can implement or simply generate stubs from the OpenAPI documentation of Vorto, but with an official or at least reference client the community would benefit.

    My incentive to bring this up is the following problem I'd like to discuss with you.

    When building micro-services in a ditto-vorto environment I need the model-information at many different services. Each service requires other meta data but they all share the need for some kind of caching in order to minimize the executed queries against vorto. Actually I'd like to program against 'handles' like it's done in the ditto client with potentially a configurable cache of entries in the back so I can save the network usage.

    I've a service which is basically invoked for every message to a thing. If this service now calls out to vorto for each and every message this creates a huge amount of requests which then becomes an important scaling factor.

    Kevin Olotu
    @kolotu
    @lionax_gitlab we do have a Java client that you can use as library in your project for the calls to Vorto - so what you are suggesting is to introduce some caching in that client?
    Patrick Sernetz
    @patrickse

    @JulianFeinauer I am also using vorto (or start using it) to model big industrial machine with many subsystems. I am currently looking for examples of a more complex device then a Bosch XDK. At first I though it should be possible to create some relations between infomodels... for example

    Machine 1
      '--> Pump 1
      '--> Pump 2
      '--> Vessel 1

    But I could not find any hint on this.

    I could model it as InfoModel Machine 1 with different function blocks Pump 1, Pump 2, Vessel or with a more atomic approach like this:
    machine1.infomodel, pump1.infomodel, pump2.infomodel, vessel1.infomodel.

    Do you have any further experiences how well these approaches would scale?

    Julian
    @JulianFeinauer
    @patrickse hey! Indeed seems like you have similar situations as we have
    But sadly I did not get further yet
    But would be interesting to discuss the topic together with you
    Patrick Sernetz
    @patrickse
    :+1:
    Shan Desai
    @shantanoo-desai
    Hi all, quick question. Is it a possibility to host Vorto as a standalone instance and instead of sending data to a Cloud, the data is sent to a database on the server? I went through the videos of Vorto but couldn't wrap my head around a case where I can send the data to a database not on a cloud platform
    Kevin Olotu
    @kolotu

    Hi @shantanoo-desai , sure you can host your own Vorto Repository on your local machine or a server that's not in a cloud. You can either run the SpringBoot application directly, or use our Docker image to spin up your own instance. You can find a quickstart guide for using the Docker image here: https://github.com/eclipse/vorto/blob/master/docker/Readme.md

    If you have further questions feel free to reach out again.

    Shan Desai
    @shantanoo-desai
    Hi @kolotu I am now able to grasp the concept of Vorto. What I am unable to grasp is whether Vorto is compatible only with Bosch IoT Suite or similar platforms or can one use the examples such as MQTT python to send information to custom brokers.
    Are there some plans to provide some codes for Time Series Databases like InfluxDB? A lot of times it might be useful to observe the Things over a span of time and not just a generic overview
    Kevin Olotu
    @kolotu

    @shantanoo-desai Vorto is not restricted to any specific platform. I think for understanding how it works, it is important to distinguish the different components.

    The Vorto repository is a standalone application with a REST API that you can call from any application. There is a Java client that simplifies the integration for Java application.

    The Payload Mapping Engine (aka. Vorto Middleware) is a separate component that retrieves the mapping specifications from the repository and uses it to map telemetry data. To receive data the Middleware supports the AMQP protocol. The middleware can be easily extended to support multiple output types. AWS Kinesis is already implemented for time series data. (see here: https://github.com/eclipse/vorto-examples/tree/master/vorto-middleware/middleware-ext-kinesis)

    We currently are not planning to add InfluxDB or other similar DBs. If you would like to do the implementation, we are glad to accept your contribution.

    Julian
    @JulianFeinauer
    Hey Vorto Experts. I have a rather general question. Are there any no code approaches to vorto generated clients. If you assume that you have a specific transport on a device you could in theory just generate a complete client, e. G for ditto and just enter parameters like io addresses or something for the features.
    Do things like that exist?
    Kevin Olotu
    @kolotu
    Hey @JulianFeinauer, yes there are approaches for Vorto generated clients. We already have a generator for Eclipse Hono that supports Java, Python and Arduino. We don't have a Ditto client at the moment, since there's mostly Hono in between device and Ditto, but technically it would be possible to write one.
    In the code base, you can check generator-eclipsehono module. On the UI, you will find the generators on the right, when you view a model
    Julian
    @JulianFeinauer
    Thanks @kolotu, I will have a look. But it still generates code? My idea would be to interpret vorto spec in an executable which allows you to enter necessary client details and then does all the communication without the need to compile
    Kevin Olotu
    @kolotu
    @JulianFeinauer yes it generates code.
    interesting idea - and how will the device use the executable to send the data?
    Julian
    @JulianFeinauer
    My idea would be to base it for our use case on apache plc4x. So the executable has a configuration view or ui to enter transport information and for each feature in the vorto spec a plc address and then go
    This would allow to integrate every plc based thing (machine) with vorto without code gen
    If there is an interpreter api or something alike I could try to hack together something as poc
    Kevin Olotu
    @kolotu

    that sounds very interesting, it would be great if you could build a poc for that.

    what do you mean by interpreter api? the api to receive the telemetry data to map it? or an api to receive the model data from the repository?

    Julian
    @JulianFeinauer
    @kolotu the second
    To interact with the model
    Get all properties and stuff
    And also fetch from repo I guess
    Julian
    @JulianFeinauer
    this is what I looked for
    Kevin Olotu
    @kolotu
    ah good, you were faster than me
    Alexander Wellbrock
    @lionax_gitlab
    @kolotu sorry for the late replay. Right, at the moment I'm using a naive memory based caching. This works fine for small setups but causes huge amounts of traffic on a restart of the client, since the cache is not persistent. I thought of something like a redis cache integration or similar. Basically I'd like to reduce the bandwith usage from the client, since it seems to be quite heavy to query models for each request when it would save a huge amount of data caching the API.
    Kevin Olotu
    @kolotu
    @lionax_gitlab no worries. I like the idea, it sounds like a useful feature to me. Have you taken a look at our current (very simple) Java client? Is that kind of caching something that you would add to that client, or would you rather have it as a separate component?
    Julian
    @JulianFeinauer
    @lionax_gitlab probably a general solution like from resilience4j could help you?
    Alexander Wellbrock
    @lionax_gitlab
    @JulianFeinauer thanks for pointing me to resilience4j, which looks quite promising. However I'm currently integrating vorto into a nodejs application so I'm not able to use the java client and instead implemented basic API features in javascript @kolotu