Skip to main content

Provides REST-server, publisher-interface and serializer for the Unified Device Interface in Python based on the SensOr Interfacing Language (SOIL).

Project description

Build

Python Unified Device Interface

Current stable version: 10.1.1

Installation

  1. Install the WZL-UDI package via pip
pip install wzl-udi

Documentation

A full documentation of the entire library does not exist yet and is currently work in progress.

Usage

For using the PUDI device interface you need to have a SOIL-Model of your device in JSON-Format. You can design the model by hand our use the SOIL-Web-Editor, to generate the source code and get a ready-to-run python script for your device server. Examples of fictional devices using the library can be found here.

Citation & References

Scientific background and publications related to the (Python) Unified Device Interface are:

Bodenbenner, M.; Sanders, M. P.; Montavon, B.; Schmitt, R. H. (2021): Domain-Specific Language for Sensors in the Internet of Production. In: Bernd-Arno Behrens, Alexander Brosius, Wolfgang Hintze, Steffen Ihlenfeldt und Jens Peter Wulfsberg (Hg.): Production at the leading edge of technology. Proceedings of the 10th Congress of the German Academic Association for Production Technology (WGP), Dresden, 23-24 September 2020. Berlin, Heidelberg, 2021. 1st ed. 2021. Berlin, Heidelberg: Springer (Lecture Notes in Production Engineering), S. 448–456, http://dx.doi.org/10.1007/978-3-662-62138-7_45

Bodenbenner, M.; Montavon, B.; Schmitt, R.H. (2021): FAIR sensor services - Towards sustainable sensor data management. In: Measurement: Sensors 18, S. 100206, https://doi.org/10.1016/j.measen.2021.100206

Bodenbenner, M.; Montavon, B.; Schmitt, R.H. (2022): Model-driven development of interoperable communication interfaces for FAIR sensor services, In: Measurement: Sensors, Volume 24, S. 100442, https://doi.org/10.1016/j.measen.2022.100442

Montavon, B. (2021): Virtual Reference Frame Based on Distributed Large-Scale Metrology Providing Coordinates as a Service. Aachen: Apprimus Verlag, https://doi.org/10.18154/RWTH-2021-10238

Montavon, B.; Peterek, M.; Schmitt, R. H. (2019): Model-based interfacing of large-scale metrology instruments. In: Ettore Stella (Hg.): Multimodal Sensing: Technologies and Applications. 26-27 June 2019, Munich, Germany. Multimodal Sensing and Artificial Intelligence: Technologies and Applications. Munich, Germany, 6/24/2019 - 6/27/2019. Bellingham, Washington: SPIE (Proceedings of SPIE. 5200-, volume 11059), S. 11, https://doi.org/10.1117/12.2527461

Acknowledgements

The authors acknowledge funding from the LaVA project (Large Volume Applications, contract 17IND03 of the European Metrology Programme for Innovation and Research EMPIR). The EMPIR initiative is co-funded by the European Union’s Horizon 2020 research and innovation programme and the EMPIR Participating States.

Funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany's Excellence Strategy – EXC-2023 Internet of Production – 390621612.

Funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Project-ID 432233186 -- AIMS.

Licenses of third-party libraries used

Library License
aiohttp Apache License, Version 2.0
Deprecated MIT License
nest-asyncio BSD License
pytz MIT License
rdflib BSD License
wzl-mqtt MIT License

Recent changes

10.1.1 - 2024-08-16

  • added additional flog to Scheduler to configure semantic publishing correctly and supress unnecessary errors and warnings

10.1.0 - 2024-04-17

  • added "advertisement", i.e. publishing of metadata via MQTT every x seconds
  • light refactoring of source code for streaming via MQTT
  • bug fix in the streaming scheduler

10.0.8 - 2024-03-25

  • fixed missing licences of some semantic resources
  • changed "schema.org" to http in instead of https

10.0.7 - 2024-03-22

  • fixed unit handling for the metadata provisioning

10.0.6 - 2024-03-22

  • fixed validation of rfc3339 datetime strings

10.0.5 - 2024-03-22

  • bug fix in streaming

10.0.4 - 2024-03-22

  • increased logging verbosity of streaming class
  • fixed streaming of semantic measurements

10.0.3 - 2024-03-21

  • added license field to semantic provision of measurement range

10.0.2 - 2024-03-21

  • bug fix

10.0.1 - 2024-03-21

  • removed strict-rfc3339 dependency to avoid licensing issues

10.0.0 - 2024-03-21

  • the getter method of a measurement must always return a tuple of value and uncertainty quantification, if the uncertainty is not applicable None must be returned for the uncertainty
  • semantic path for Observation and MeasurementResults can now be resolved

9.3.8 - 2024-03-19

  • fixed semantic serialization of integer variables

9.3.7 - 2024-03-18

  • fixed serialization of semantics

9.3.6 - 2024-03-18

  • fixed serialization of semantic values

9.3.5 - 2024-03-18

  • fixed metadata provisioning of arguments and returns

9.3.4 - 2024-03-16

  • fixed semantic name resolution of range profiles

9.3.3 - 2024-03-15

  • fixed streaming functions

9.3.2 - 2024-03-14

  • fixed semantic name resolution (again)

9.3.1 - 2024-03-14

  • fixed semantic name resolution

9.3.0 - 2024-03-13

  • implemented semantic features for functions
  • refactoring
    • renamed class Figure to Variable to reflect updated SOIL meta model

9.2.0 - 2024-02-08

  • functions can be used to publish results via MQTT instead returning the results as response to the POST request
    • if a function is implemented as generator this behaviour is triggered automatically
  • bug fixes
    • the semantic definition of the range of measurements and parameters are properly returned now
    • profiles of base components of a component are properly returned now

9.1.2 - 2024-01-19

  • added "all" query parameter for semantics, to request complete semantic data model
  • fixed bug when requesting enum or time measurements and parameters

9.1.1 - 2024-01-18

  • bug fix of subjects of license paths in semantic data packages

9.1.0 - 2024-01-17

  • the license for profiles, metadata and data is now provided anc can be specified in the config file

9.0.1 - 2024-01-11

  • bug fix of semantic name resolution

9.0.0 - 2024-01-10

  • added semantic features
    • the device can return profiles, metadata and data defined and structured according to semantic web standards using RDF and SHACL
  • changed signature of StreamScheduler
    • instead of a list of publishers, only one publisher is allowed no

8.2.5 - 2023-04-17

  • relaxed required versions of dependencies to avoid conflicts

8.2.4 - 2023-04-13

  • updated dependency, so that wzl-udi is also compatible with Python 3.11

8.2.3 - 2023-03-29

  • removed legacy attributes from serialization and streaming

8.2.2 - 2023-03-29

  • fixed a type hint which depended on windows

8.2.1 - 2023-03-25

  • removed utilities dependency, by integrating logger into wzl-udi library

8.2.0 - 2023-03-16

  • improved FAIRness of streaming
    • published data contains metadata now
  • bug fixes
    • serialization of the complete model

8.1.1 - 2023-03-15

  • bug fix
    • resolving the methods of the sensor logic for dynamic components

8.1.0 - 2023-03-15

  • the desired dataformat of the response can be specified with a query parameter now, e.g.,
    • ../MEA-Temperature?format=json
    • ../MEA-Temperature?format=xml

8.0.1 - 2023-03-14

  • bug fixes
    • fixed DELETE endpoint for dynamic components

8.0.0 - 2023-03-11

  • changed initialization routine
    • the mapping via a dictionary of encapsulated sensor logic to HTTP-Endpoints is not needed anymore
    • the mapping is now derived automatically because the names of the attributes from the sensor implementation are assumed to be generated from a SOIL-Model
  • code clean-up
    • removed a lot of deprecated source code
  • bug fixes
    • fixed in error of fixed jobs

7.1.0 - 2023-02-27

  • added legacy flag as server parameter (default: false)
    • if set, datatypes are serialized to the old string representation, i.e. "bool" instead of "boolean", and "double" instead of float

7.0.2 - 2023-02-23

  • fixed a bug in update-streams for non-scalar variables

7.0.1 - 2023-02-23

  • minor bugfix

7.0.0 - 2023-02-23

  • aligned the naming of datatypes with Textual SOIL
    • "bool" is replaced by "boolean"
    • "double" is replaced by "float"
    • old naming is still accepted when starting the server, but responses of the server use the SOIl-conform naming

6.3.1 - 2023-02-21

  • updated from Python 3.9 to Python 3.11

6.3.0 - 2022-06-09

  • added property "label" for measurements as replacement for "nonce"
  • marked usage of keyword "nonce" as deprecated

6.2.0 - 2022-06-02

  • added XML as dataformat for response bodies and published messages
  • dataformat can now be chosen between XML and JSON

6.1.2 - 2022-04-14

  • bug fix of loop handling of aiohttp web application

6.1.1 | 5.2.7 - 2021-05-19

  • improved error output for developers

6.1.0 - 2021-05-18

  • refactoring of streaming implementation
    • scheduler classes are reduced to only one for all job types instead of three distinct schedulers

6.0.3 | 5.2.6 - 2021-05-10

  • bug fix
    • fixed serialization to RFC3339 time string

6.0.2 | 5.2.5 - 2021-05-04

  • bug fix
    • fixed parsing of parameters and variables/ measurements of type "time" for higher dimensions

6.0.1

  • bug fix
    • fixed parsing of parameters and measurements of type "time" for higher dimensions

6.0.0 - 2021-05-04

  • renamed Object to Component and Variable to Measurement. UUID now starts with COM MEA respectively
  • marked Object and Variable as deprecated
  • marked docstring parsing as deprecated due to its error-prone behaviour

5.2.4 - 2021-04-15

  • bug fix
    • variables and parameters of type 'enum' and 'time' are now returned correctly

5.2.3 - 2021-04-07

  • minor bug fixes

5.2.2 - 2021-01-22

  • bug fixes of event handling and publishing, caused event handler to crash on the first event to be checked

5.2.1 - 2021-01-19

  • bug fix

5.2.0 - 2020-11-27

  • measurements can now be published automatically on value change

5.1.2

  • bug fixes

5.1.1 - 2020-07-13

  • bug fixes

5.1.0 - 2020-06-17

  • added method for customizing logging-level
  • unprotected the utils-module

5.0.3 - 2020-06-17

  • bug fix

5.0.2 - 2020-06-17

  • bug fix of asynchronous devices

5.0.1 - 2020-06-10

  • fixed erroneous import

5.0.0 - 2020-06-09

  • added events
  • changed way of how MQTTPublisher are handled

4.2.2 - 2020-05-29

  • bug fix of MQTT related docstring parsin

4.2.1 - 2020-05-28

  • fixed a bug causing Objects could not be added during runtime

4.2.0 - 2020-05-26

  • improved flexibility of docstring-parsing

4.1.1 - 2020-05-26

  • bug fix

4.1.0 - 2020-05-25

  • From now, the mqtt-callback of Functions accepts only one positional parameter, which is the message data. Thus, it is not required to specify the topic anymore.

4.0.0 - 2020-05-19

  • renamed packages
  • changed initialization routine
  • bug fixes

3.1.3 - 2020-04-16

  • bug fixes

3.1.2

  • bug fixes

3.1.1

  • bug fixes

3.1

  • moved ScheduledMQTTPublisher into the wzl-mqtt package to avoid ambiguity

3.0 - 2020-04-14

  • renamed and restructured packages for the sake of consistency with the C++ UDI

2.3.1 - 2020-03-26

  • bug fix of ScheduledMQTTPublisher

2.3.0 - 2020-02-26

  • instead of using Python-Docstrings one can provide an explicitly defined dictionary for configuration of the scheduled MQTTPublisher
  • the publish method of the MQTTPublisher can passed to a function of the device to explicitly publish values within this function
  • bug fixes

2.2.1 - 2020-02-03

  • bug fixes

2.2.0 - 2020-01-27

  • instead of using Python-Docstrings one can provide an explicitly defined dictionary with mappings from the model to the implementation

2.1.0 - 2020-01-21

  • the leading objects part of all urls is optional now.
  • bug fixes

2.0 - 2020-01-20

  • renamed library into wzl-udi
  • replaced MQTT-part with new wzl-mqtt package

1.5.2 - 2020-01-20

  • bug fixes

1.5.1 - 2020-01-20

  • bug fixes

1.5.0 - 2020-01-20

  • changed request for setting parameter values from PUT to PATCH

1.4.1 - 2020-01-20

  • bug fix

1.4.0 - 2020-01-20

  • added optional ontology field to all elements
  • bug fixes

1.3.0 - 2020-10-09

1.2.6 - 2020-08-09

  • bug fix in docstring parsing

1.2.5 - 2020-08-09

  • bug fix in GET handler

1.2.4 - 2020-08-01

  • bug fixes

1.2.3 - 2020-08-01

  • bug fixes

1.2.2 - 2020-08-01

  • bug fixes

1.2.1 - 2020-08-01

  • bug fixes

1.2.0 - 2020-08-01

  • getters and setters are asynchronous now

1.1.2 - 2020-07-31

  • improved error handling

1.1.1 - 2020-07-29

  • bug fixes

1.1.0 - 2020-07-29

  • enabled asynchronous functions
  • bug fixes

1.0.0 - 2020-07-28

  • initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wzl-udi-10.1.1.tar.gz (39.2 kB view details)

Uploaded Source

Built Distribution

wzl_udi-10.1.1-py3-none-any.whl (44.8 kB view details)

Uploaded Python 3

File details

Details for the file wzl-udi-10.1.1.tar.gz.

File metadata

  • Download URL: wzl-udi-10.1.1.tar.gz
  • Upload date:
  • Size: 39.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for wzl-udi-10.1.1.tar.gz
Algorithm Hash digest
SHA256 a92e6799e061eb44a9ab45889e04aefae71a7c3b09ebeb43fe4e27f151cd10f4
MD5 df39f0d3ec244d8fd0b90eb9a6e12af7
BLAKE2b-256 136910bede333d3b9c492bef1d3208864c85fa2af35db8bb690114c0e35b3a21

See more details on using hashes here.

Provenance

File details

Details for the file wzl_udi-10.1.1-py3-none-any.whl.

File metadata

  • Download URL: wzl_udi-10.1.1-py3-none-any.whl
  • Upload date:
  • Size: 44.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for wzl_udi-10.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 28f864b573d8927af1c8dd651d56197ed9da784b171924dde6bf56cb391e0d9d
MD5 7eb11d3584cef7ca6d6c49bd543a03ad
BLAKE2b-256 2a8fd3eaf364f6664a503dcd9ab1363d59f25e06a6d0fe79cc8dc39b27c8b799

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page