Package: wzl-udi
Python Unified Device InterfaceCurrent stable version: 9.2.0InstallationInstall the WZL-UDI package via pippip install wzl-udiDocumentationA full documentation of the entire library does not exist yet and is currently work in progress.UsageFor 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 theSOIL-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 foundhere.Citation & ReferencesScientific background and publications related to the(Python) Unified Device Interfaceare: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_45Bodenbenner, 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.100206Bodenbenner, 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.100442Montavon, 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-10238Montavon, 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.2527461AcknowledgementsThe 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.Recent changes9.2.0- 2024-02-08functions can be used to publish results via MQTT instead returning the results as response to the POST requestif a function is implemented as generator this behaviour is triggered automaticallybug fixesthe semantic definition of the range of measurements and parameters are properly returned nowprofiles of base components of a component are properly returned now9.1.2- 2024-01-19added "all" query parameter for semantics, to request complete semantic data modelfixed bug when requesting enum or time measurements and parameters9.1.1- 2024-01-18bug fix of subjects of license paths in semantic data packages9.1.0- 2024-01-17the license for profiles, metadata and data is now provided anc can be specified in the config file9.0.1- 2024-01-11bug fix of semantic name resolution9.0.0- 2024-01-10added semantic featuresthe device can return profiles, metadata and data defined and structured according to semantic web standards using RDF and SHACLchanged signature of StreamSchedulerinstead of a list of publishers, only one publisher is allowed no8.2.5- 2023-04-17relaxed required versions of dependencies to avoid conflicts8.2.4- 2023-04-13updated dependency, so that wzl-udi is also compatible with Python 3.118.2.3- 2023-03-29removed legacy attributes from serialization and streaming8.2.2- 2023-03-29fixed a type hint which depended on windows8.2.1- 2023-03-25removed utilities dependency, by integrating logger into wzl-udi library8.2.0- 2023-03-16improved FAIRness of streamingpublished data contains metadata nowbug fixesserialization of the complete model8.1.1- 2023-03-15bug fixresolving the methods of the sensor logic for dynamic components8.1.0- 2023-03-15the desired dataformat of the response can be specified with a query parameter now, e.g.,../MEA-Temperature?format=json../MEA-Temperature?format=xml8.0.1- 2023-03-14bug fixesfixed DELETE endpoint for dynamic components8.0.0- 2023-03-11changed initialization routinethe mapping via a dictionary of encapsulated sensor logic to HTTP-Endpoints is not needed anymorethe mapping is now derived automatically because the names of the attributes from the sensor implementation are assumed to be generated from a SOIL-Modelcode clean-upremoved a lot of deprecated source codebug fixesfixed in error of fixed jobs7.1.0- 2023-02-27added 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 float7.0.2- 2023-02-23fixed a bug in update-streams for non-scalar variables7.0.1- 2023-02-23minor bugfix7.0.0- 2023-02-23aligned the naming of datatypes withTextual 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 naming6.3.1- 2023-02-21updated from Python 3.9 to Python 3.116.3.0- 2022-06-09added property "label" for measurements as replacement for "nonce"marked usage of keyword "nonce" as deprecated6.2.0- 2022-06-02added XML as dataformat for response bodies and published messagesdataformat can now be chosen between XML and JSON6.1.2- 2022-04-14bug fix of loop handling of aiohttp web application6.1.1| 5.2.7 - 2021-05-19improved error output for developers6.1.0- 2021-05-18refactoring of streaming implementationscheduler classes are reduced to only one for all job types instead of three distinct schedulers6.0.3| 5.2.6 - 2021-05-10bug fixfixed serialization to RFC3339 time string6.0.2| 5.2.5 - 2021-05-04bug fixfixed parsing of parameters and variables/ measurements of type "time" for higher dimensions6.0.1bug fixfixed parsing of parameters and measurements of type "time" for higher dimensions6.0.0- 2021-05-04renamed Object to Component and Variable to Measurement. UUID now starts with COM MEA respectivelymarked Object and Variable as deprecatedmarked docstring parsing as deprecated due to its error-prone behaviour5.2.4- 2021-04-15bug fixvariables and parameters of type 'enum' and 'time' are now returned correctly5.2.3- 2021-04-07minor bug fixes5.2.2- 2021-01-22bug fixes of event handling and publishing, caused event handler to crash on the first event to be checked5.2.1- 2021-01-19bug fix5.2.0- 2020-11-27measurements can now be published automatically on value change5.1.2bug fixes5.1.1- 2020-07-13bug fixes5.1.0- 2020-06-17added method for customizing logging-levelunprotected the utils-module5.0.3- 2020-06-17bug fix5.0.2- 2020-06-17bug fix of asynchronous devices5.0.1- 2020-06-10fixed erroneous import5.0.0- 2020-06-09added eventschanged way of how MQTTPublisher are handled4.2.2- 2020-05-29bug fix of MQTT related docstring parsin4.2.1- 2020-05-28fixed a bug causing Objects could not be added during runtime4.2.0- 2020-05-26improved flexibility of docstring-parsing4.1.1- 2020-05-26bug fix4.1.0- 2020-05-25From 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-19renamed packageschanged initialization routinebug fixes3.1.3- 2020-04-16bug fixes3.1.2bug fixes3.1.1bug fixes3.1moved ScheduledMQTTPublisher into thewzl-mqttpackage to avoid ambiguity3.0- 2020-04-14renamed and restructured packages for the sake of consistency with the C++ UDI2.3.1- 2020-03-26bug fix of ScheduledMQTTPublisher2.3.0- 2020-02-26instead of using Python-Docstrings one can provide an explicitly defined dictionary for configuration of the scheduled MQTTPublisherthe publish method of the MQTTPublisher can passed to a function of the device to explicitly publish values within this functionbug fixes2.2.1- 2020-02-03bug fixes2.2.0- 2020-01-27instead of using Python-Docstrings one can provide an explicitly defined dictionary with mappings from the model to the implementation2.1.0- 2020-01-21the leadingobjectspart of all urls is optional now.bug fixes2.0- 2020-01-20renamed library intowzl-udireplaced MQTT-part with newwzl-mqttpackage1.5.2- 2020-01-20bug fixes1.5.1- 2020-01-20bug fixes1.5.0- 2020-01-20changed request for setting parameter values from PUT to PATCH1.4.1- 2020-01-20bug fix1.4.0- 2020-01-20added optional ontology field to  all elementsbug fixes1.3.0- 2020-10-091.2.6- 2020-08-09bug fix in docstring parsing1.2.5- 2020-08-09bug fix in GET handler1.2.4- 2020-08-01bug fixes1.2.3- 2020-08-01bug fixes1.2.2- 2020-08-01bug fixes1.2.1- 2020-08-01bug fixes1.2.0- 2020-08-01getters and setters are asynchronous now1.1.2- 2020-07-31improved error handling1.1.1- 2020-07-29bug fixes1.1.0- 2020-07-29enabled asynchronous functionsbug fixes1.0.0- 2020-07-28initial release