blob: acd749f9b1da2467dc960f4ce01a06763d2f16db [file] [log] [blame]
<!DOCTYPE html>
<html data-n-head="" data-n-head-ssr>
<head>
<meta data-n-head="true" charset="utf-8"><meta data-n-head="true" content="width=device-width,initial-scale=1" name="viewport"><meta data-n-head="true" content="Eclipse Unide: Understand Industry devices" name="description" data-hid="description"><title data-n-head="true">Eclipse unide - Unide 0.2.0 released</title><link href="/unide/favicon.ico" rel="icon" data-n-head="true" type="image/x-icon"><base href="/unide/"><link href="/unide/files/app.ce93f25ec8e6cdcb172e2896599524df.css" rel="stylesheet"><style data-vue-ssr-id="771fc815:0">body .sidebar div{margin-bottom:2em;font-size:.875em}body .sidebar div .subtitle{margin-bottom:.5rem}</style><style data-vue-ssr-id="d5b0f30e:0">@keyframes spinAround{0%{transform:rotate(0)}to{transform:rotate(359deg)}}header.nav-header{box-shadow:0 3px 5px 0 #ddd;margin-bottom:2em;padding-bottom:0}header.nav-header nav.navbar{display:flex;align-items:flex-end;border-bottom:5px solid #50237f}header.nav-header nav.navbar .navbar-burger{margin-left:0;height:auto}header.nav-header nav.navbar .navbar-burger span{height:2px;width:25px}header.nav-header nav.navbar .navbar-burger span:first-child{margin-top:-9px}header.nav-header nav.navbar .navbar-burger span:nth-child(3){margin-top:7px}header.nav-header nav.navbar .navbar-brand{align-self:stretch}header.nav-header nav.navbar .navbar-brand .navbar-item img{max-height:none;width:240px}header.nav-header nav.navbar .navbar-item,header.nav-header nav.navbar .navbar-link,header.nav-header nav.navbar .navbar-link a{color:#a7a7a7}header.nav-header nav.navbar .navbar-item.is-active,header.nav-header nav.navbar .navbar-item:hover,header.nav-header nav.navbar .navbar-link a.is-active,header.nav-header nav.navbar .navbar-link a:hover,header.nav-header nav.navbar .navbar-link.is-active,header.nav-header nav.navbar .navbar-link:hover{color:#78be20}header.nav-header nav.navbar .navbar-item:hover,header.nav-header nav.navbar .navbar-link a:hover,header.nav-header nav.navbar .navbar-link:hover{background-color:transparent;text-decoration:none;font-weight:700}header.nav-header nav.navbar .navbar-item .dropdown-trigger,header.nav-header nav.navbar .navbar-link .dropdown-trigger,header.nav-header nav.navbar .navbar-link a .dropdown-trigger{display:flex}@media screen and (min-width:1024px){.nav-header .container>.navbar .navbar-menu{margin-right:1rem}}@media screen and (max-width:1007px){header.nav-header nav.navbar{flex-direction:column;align-items:stretch}header.nav-header nav.navbar .navbar-menu{order:1;box-shadow:none}}@media screen and (min-width:1008px){nav.navbar .container .navbar-menu{height:40px}}</style><style data-vue-ssr-id="73fc20d4:0">@keyframes spinAround{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.article h1{font-weight:400}.article h2,.article h3,.article h4{color:#a7a7a7}.article .card{border-radius:5px}.article .card .card-header{border-radius:5px 5px 0 0}.article .card .card-header.is-primary{background-color:#50237f}.article .card .card-header.is-primary .card-header-title{color:#fff}.article .card.figure{margin-bottom:1rem;text-align:center}@media screen and (min-width:415px){.article .card.figure.is-pulled-left,.article .card.figure.is-pulled-right{max-width:33%}.article .card.figure.is-pulled-left{margin-right:1rem;text-align:left}.article .card.figure.is-pulled-right{margin-left:1rem}.article .card.figure.is-pulled-right .card-content{text-align:right}}.article .card.figure .card-content{padding:.5rem;font-size:.75rem}.article .card.figure figure{margin:0}.article>.columns.pageNav{margin-top:2em}.article>.columns.pageNav .column a.button{font-size:.9em;padding:1.3rem}.article pre[class*=language-]{max-height:400px}</style><style data-vue-ssr-id="fc44206e:0">.recentPosts ul{list-style:none}</style><style data-vue-ssr-id="3dafb0ac:0">.blogArchives ul{list-style:none}</style><style data-vue-ssr-id="3fcbd066:0">@keyframes spinAround{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.footer{font-size:.875em;border-top:1px solid #dbdbdb;padding-top:1.25rem;margin-top:1rem;padding:2rem 0}</style>
</head>
<body data-n-head="">
<div id="__nuxt" data-server-rendered="true"><div class="nuxt-progress" style="width:0%;height:2px;background-color:#50237f;opacity:0"></div><div id="__layout"><div><header class="nav-header"><div class="container"><nav class="navbar"><div class="navbar-menu" id="navMenu"><div class="navbar-start"><a href="/unide/" class="navbar-item">
Home
</a><a href="/unide/proposal" class="navbar-item">
Proposal
</a><a href="/unide/specification" class="navbar-item">
Specification
</a><a href="/unide/blog" class="navbar-item is-active">
Blog Archives
</a><a href="/unide/faq" class="navbar-item">
FAQ
</a></div></div><div class="navbar-brand"><div class="navbar-burger burger"><span></span><span></span><span></span></div><a href="/unide/" class="navbar-item nuxt-link-active"><img src="logo.svg"></a></div></nav></div></header><div class="container"><div class="header clearfix"></div><div class="columns"><div class="article column is-8"><h1 class="title is-3">
Unide 0.2.0 released
</h1><h2 class="subtitle is-6"><i class="fa fa-calendar"></i>  
03/26/18, 12:39
</h2><div class="content"><div><p>Finally, the second version (0.2.0) of the Eclipse unide project is released! The <a href="http://unide.eclipse.org">REST Server on the Testserver</a> has been updated as well.</p>
<h1>Quick start</h1>
<h2>Binsa chrome app</h2>
<p>Download the binsa chrome app from <a href="http://download.eclipse.org/unide/binsa.crx">download page</a>. Open your chrome browser at <a href="chrome://extensions">chrome://extensions</a> and drag the binsa.crx file onto the page. You should be able to see your new chrome app in <a href="chrome://apps">chrome://apps</a></p>
<h2>REST Server</h2>
<p>Download the REST server file from <a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-server/0.2.0/ppmp-server-0.2.0.jar">repo.eclipse.org</a>, create a simple configuration file (e.g. application_conf.json):</p>
<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>
<span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">false</span>
<span class="token punctuation">}</span>
</code></pre>
<p>and start the server</p>
<pre class="language-bash"><code class="language-bash">java -jar ppmp-server-0.2.0.jar -conf application_conf.json
</code></pre>
<p>Point your browser to <a href="http://localhost:8090">http://localhost:8090</a> and see the servers documentation running on your local server! At this point, PPMP validation (via HTTP POST to <code>/rest/v2/validate</code>) is enabled, but no persistence.</p>
<p>If you want to send data to the server, a quick way is via <a href="https://www.getpostman.com/">Postman App</a>, which is available as native app or <a href="https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en">Chrome app</a>. Once installed and started, you can easily use the "Import > Import From Link" feature to get the prepared <a href="https://raw.githubusercontent.com/eclipse/unide/f4d349bc4a0096d3f99e14cf5f8b9f53a5145fdd/servers/rest/assets/postman/unide.postman_collection.json">unide.postman_collection.json</a> and the corresponding <a href="https://raw.githubusercontent.com/eclipse/unide/f4d349bc4a0096d3f99e14cf5f8b9f53a5145fdd/servers/rest/assets/postman/unide.postman_environment.json">unide.postman_environment</a>. You should now have Machine/Measurement/Process messages and requests prepared in the Collections tab. In order to send, you could extend the URL with "/validate" and hit "Send" button. If you get the response</p>
<blockquote>
<p>Ppmp Message of type 'xy' is valid</p>
</blockquote>
<p>the unide REST server works as expected!</p>
<h1>Persistence</h1>
<h2>Influx DB</h2>
<p><a href="https://portal.influxdata.com/downloads">Download</a> the InfluxDB Time-Series Data Storage and unzip or install it on your system. By default, it opens an http port at 8086. In order to make use of it, the configuration file should be modified, e.g. to:</p>
<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>
<span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token property">"persistence.system"</span><span class="token operator">:</span> <span class="token string">"influxDb"</span><span class="token punctuation">,</span>
<span class="token property">"influxDb.url"</span><span class="token operator">:</span> <span class="token string">"http://localhost:8086"</span><span class="token punctuation">,</span>
<span class="token property">"influxDb.user"</span><span class="token operator">:</span> <span class="token string">"root"</span><span class="token punctuation">,</span>
<span class="token property">"influxDb.password"</span><span class="token operator">:</span> <span class="token string">"root"</span>
<span class="token punctuation">}</span>
</code></pre>
<p>After starting the database and the unide REST server, it should be possible to send POST requests to <code>http://localhost:8090/rest/v2</code>. This path receives all message types. To query the database after, use:<br>
<a href="http://localhost:8086/query?pretty=true&u=root&p=root&db=Measurements&q=SELECT%20*%20FROM%20%22ppmp_measurements%22">http://localhost:8086/query?pretty=true&u=root&p=root&db=Measurements&q=SELECT * FROM "ppmp_measurements"</a> or the other databases that are documented on the <a href="http://localhost:8090/#influxdb_schema_design">running server instance</a>, respectively.</p>
<h2>SQL (timescale, h2)</h2>
<p>Download the appropriate jdbc driver, e.g. <a href="http://repo1.maven.org/maven2/com/h2database/h2/1.4.197/h2-1.4.197.jar">h2-*.jar</a>, modify the configuration file, e.g. for h2:</p>
<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
<span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>
<span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token property">"persistence.system"</span><span class="token operator">:</span> <span class="token string">"sql"</span><span class="token punctuation">,</span>
<span class="token property">"sqlDb.driver"</span><span class="token operator">:</span> <span class="token string">"org.h2.Driver"</span><span class="token punctuation">,</span>
<span class="token property">"sqlDb.url"</span><span class="token operator">:</span> <span class="token string">"jdbc:h2:./test"</span><span class="token punctuation">,</span>
<span class="token property">"sqlDb.user"</span><span class="token operator">:</span> <span class="token string">"sa"</span><span class="token punctuation">,</span>
<span class="token property">"sqlDb.password"</span><span class="token operator">:</span> <span class="token string">""</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Start the PPMP Server with the jdbc dependency on the classpath, e.g.:</p>
<pre class="language-bash"><code class="language-bash">java -cp <span class="token string">"h2-1.4.197.jar;ppmp-server-0.2.0.jar"</span> io.vertx.core.Launcher org.eclipse.iot.unide.server.MainVerticle -conf application.conf
</code></pre>
<p>Now, all the data send to the REST server is persisted in the file <code>test.mv.db</code>.<br>
For concurrent db actions (reading while writing), use the h2 tcp server instead. h2 is not recommended for production use!</p>
<h1>Background</h1>
<h2>Download</h2>
<p>Available artifacts for download:</p>
<ul>
<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-schema/2.0.0/">PPMP Schema v2</a></li>
<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-java-binding/0.2.0/">PPMP java Binding</a></li>
<li><a href="https://pypi.python.org/packages/d5/af/c90911d1da56a1ed0238338ba01068d43b8cd0137e9ca52b0f52a279f73e/unide_python-0.2.0-py2.py3-none-any.whl#md5=ca67bcd536b3a4015f72f5fa53d36543">PPMP Python Binding</a></li>
<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-server/0.2.0/">PPMP Server</a></li>
<li><a href="http://download.eclipse.org/unide/binsa.crx">binsa client chrome app</a></li>
</ul>
<p>Source code:</p>
<ul>
<li><a href="https://github.com/eclipse/unide/releases/tag/v0.2.0">unide</a></li>
<li><a href="https://github.com/eclipse/unide.java/releases/tag/v0.2.0">java binding</a></li>
<li><a href="https://github.com/eclipse/unide.python/releases/tag/v0.2.0">python binding</a></li>
</ul>
<h2>Release notes</h2>
<h3>REST Server improvements (refactoring & persistence)</h3>
<ul>
<li>Added persistence to timeseries/postgres db</li>
<li>Outfactored schema files</li>
<li>Adjusted maven file</li>
<li>Added unit tests</li>
<li>Added documentation & java docs</li>
<li>Adjusted error handling</li>
<li>Removed unused code</li>
<li>Added postman collections</li>
<li>Added grafana configuration file</li>
</ul>
<h3>New HTML5 simulation client</h3>
<ul>
<li>Progressive Webapp runs as website (see <a href="https://unide.eclipse.org/binsa">https://unide.eclipse.org/binsa</a>), browser app, native client (via <a href="https://nwjs.io/">nw.js</a>) or app (via <a href="https://cordova.apache.org/">Apache cordova</a>)</li>
</ul>
<h3>PPMP JSON Schema files</h3>
<ul>
<li>Introduced separate bundle for schemas</li>
<li>general fixes
<ul>
<li>make schema draft-06 compliant</li>
<li>added 'id' and 'descriptions' where applicable</li>
<li>added 'type' and 'default' for enums</li>
<li>added 'required' fields where necessary</li>
<li>made 'additionalProperties': true explicit for 'metaData'</li>
<li>sorted the properties for improved readability</li>
</ul>
</li>
<li>message_schema fixes
<ul>
<li>added minItems: 1 to messages</li>
</ul>
</li>
<li>measurement_schema fixes
<ul>
<li>completed 'limits' specification</li>
<li>added 'patternProperties' and minProperties detail to 'series'</li>
<li>added minItems: 1 to measurements</li>
</ul>
</li>
<li>process_schema fixes
<ul>
<li>made 'id' and 'name' of a 'program' mandatory</li>
<li>fixed 'shutoffValues', having properties not items</li>
<li>fixed 'limits', having properties not items and number values rather than object values as limits</li>
<li>fixed 'specialValues' to be an array of specialValue items with 'name' for indicating the nature, rather than one single object with its keys indicating the nature. Offering optional '$_time' tag to be consistent with measurements.</li>
<li>completed 'series' definition</li>
</ul>
</li>
</ul>
<h3>Website</h3>
<ul>
<li>Autogenerating PPMP specification from JSON schemas to avoid discrepancies</li>
<li>Generating UML schemas with plantuml</li>
<li>Using similar HTML5 stack as simulation client for SPA website</li>
</ul>
<h3>Other</h3>
<ul>
<li>java and new python bindings in separate github repositories</li>
</ul>
</div></div><div class="columns pageNav"><div class="column"><a href="/unide/blog/2018/2/13/grinding-machine-scenario" class="button is-fullwidth"><span class="icon"><i class="fa fa-chevron-left"></i></span><span>PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed</span></a></div><div class="column"><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation" class="button is-fullwidth"><span>PPMP Use Cases: Template for PPMP transformation</span><span class="icon"><i class="fa fa-chevron-right"></i></span></a></div></div></div><div class="sidebar column is-3 is-offset-1"><div class="recentPosts"><h4 class="subtitle is-5">
Recent Posts
</h4><ul><li><a href="/unide/blog/2018/9/4/Template-for-PPMP-transformation">
PPMP Use Cases: Template for PPMP transformation
</a><li><a href="/unide/blog/2018/3/26/Release-0.2.0" class="nuxt-link-exact-active nuxt-link-active">
Unide 0.2.0 released
</a><li><a href="/unide/blog/2018/2/13/grinding-machine-scenario">
PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed
</a><li><a href="/unide/blog/2018/2/11/Transform-PPMP-with-camel">
PPMP Use Cases: Simple Transformation with Apache Camel
</a><li><a href="/unide/blog/2018/1/26/New-website">
Updated Website
</a></ul></div><div class="blogArchives"><h4 class="subtitle is-5">
Blog Archives
</h4><ul><li><a href="/unide/blog/2018/9">
October 2018
</a>
(1)
<li><a href="/unide/blog/2018/3" class="nuxt-link-active">
April 2018
</a>
(1)
<li><a href="/unide/blog/2018/2">
March 2018
</a>
(2)
<li><a href="/unide/blog/2018/1">
February 2018
</a>
(1)
<li><a href="/unide/blog/2017/10">
November 2017
</a>
(2)
<li><a href="/unide/blog/2017/6">
July 2017
</a>
(2)
<li><a href="/unide/blog/2017/3">
April 2017
</a>
(1)
<li><a href="/unide/blog/2016/9">
October 2016
</a>
(4)
</ul></div></div></div></div><footer class="footer"><div class="container"><div class="columns is-mobile is-multiline is-centered"><div class="column is-narrow"><a href="http://www.eclipse.org">Eclipse Foundation</a></div><div class="column is-narrow"><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></div><div class="column is-narrow"><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></div><div class="column is-narrow"><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></div><div class="column is-narrow"><a href="https://eclipse.org/security/">Security reports</a></div><div class="column is-narrow"><a href="http://www.eclipse.org/legal/">Legal</a></div></div></div></footer></div></div></div><script type="text/javascript">window.__NUXT__={layout:"sidebar",data:[{post:{name:"Release-0.2.0",content:'<p>Finally, the second version (0.2.0) of the Eclipse unide project is released! The <a href="http://unide.eclipse.org">REST Server on the Testserver</a> has been updated as well.</p>\n<h1>Quick start</h1>\n<h2>Binsa chrome app</h2>\n<p>Download the binsa chrome app from <a href="http://download.eclipse.org/unide/binsa.crx">download page</a>. Open your chrome browser at <a href="chrome://extensions">chrome://extensions</a> and drag the binsa.crx file onto the page. You should be able to see your new chrome app in <a href="chrome://apps">chrome://apps</a></p>\n<h2>REST Server</h2>\n<p>Download the REST server file from <a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-server/0.2.0/ppmp-server-0.2.0.jar">repo.eclipse.org</a>, create a simple configuration file (e.g. application_conf.json):</p>\n<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n <span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>\n <span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">false</span>\n<span class="token punctuation">}</span>\n\n</code></pre>\n<p>and start the server</p>\n<pre class="language-bash"><code class="language-bash">java -jar ppmp-server-0.2.0.jar -conf application_conf.json\n</code></pre>\n<p>Point your browser to <a href="http://localhost:8090">http://localhost:8090</a> and see the servers documentation running on your local server! At this point, PPMP validation (via HTTP POST to <code>/rest/v2/validate</code>) is enabled, but no persistence.</p>\n<p>If you want to send data to the server, a quick way is via <a href="https://www.getpostman.com/">Postman App</a>, which is available as native app or <a href="https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en">Chrome app</a>. Once installed and started, you can easily use the &quot;Import &gt; Import From Link&quot; feature to get the prepared <a href="https://raw.githubusercontent.com/eclipse/unide/f4d349bc4a0096d3f99e14cf5f8b9f53a5145fdd/servers/rest/assets/postman/unide.postman_collection.json">unide.postman_collection.json</a> and the corresponding <a href="https://raw.githubusercontent.com/eclipse/unide/f4d349bc4a0096d3f99e14cf5f8b9f53a5145fdd/servers/rest/assets/postman/unide.postman_environment.json">unide.postman_environment</a>. You should now have Machine/Measurement/Process messages and requests prepared in the Collections tab. In order to send, you could extend the URL with &quot;/validate&quot; and hit &quot;Send&quot; button. If you get the response</p>\n<blockquote>\n<p>Ppmp Message of type \'xy\' is valid</p>\n</blockquote>\n<p>the unide REST server works as expected!</p>\n<h1>Persistence</h1>\n<h2>Influx DB</h2>\n<p><a href="https://portal.influxdata.com/downloads">Download</a> the InfluxDB Time-Series Data Storage and unzip or install it on your system. By default, it opens an http port at 8086. In order to make use of it, the configuration file should be modified, e.g. to:</p>\n<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n <span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>\n <span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>\n <span class="token property">"persistence.system"</span><span class="token operator">:</span> <span class="token string">"influxDb"</span><span class="token punctuation">,</span>\n <span class="token property">"influxDb.url"</span><span class="token operator">:</span> <span class="token string">"http://localhost:8086"</span><span class="token punctuation">,</span>\n <span class="token property">"influxDb.user"</span><span class="token operator">:</span> <span class="token string">"root"</span><span class="token punctuation">,</span>\n <span class="token property">"influxDb.password"</span><span class="token operator">:</span> <span class="token string">"root"</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<p>After starting the database and the unide REST server, it should be possible to send POST requests to <code>http://localhost:8090/rest/v2</code>. This path receives all message types. To query the database after, use:<br>\n<a href="http://localhost:8086/query?pretty=true&amp;u=root&amp;p=root&amp;db=Measurements&amp;q=SELECT%20*%20FROM%20%22ppmp_measurements%22">http://localhost:8086/query?pretty=true&amp;u=root&amp;p=root&amp;db=Measurements&amp;q=SELECT * FROM &quot;ppmp_measurements&quot;</a> or the other databases that are documented on the <a href="http://localhost:8090/#influxdb_schema_design">running server instance</a>, respectively.</p>\n<h2>SQL (timescale, h2)</h2>\n<p>Download the appropriate jdbc driver, e.g. <a href="http://repo1.maven.org/maven2/com/h2database/h2/1.4.197/h2-1.4.197.jar">h2-*.jar</a>, modify the configuration file, e.g. for h2:</p>\n<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n <span class="token property">"http.port"</span><span class="token operator">:</span> <span class="token number">8090</span><span class="token punctuation">,</span>\n <span class="token property">"persistence.enable"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>\n <span class="token property">"persistence.system"</span><span class="token operator">:</span> <span class="token string">"sql"</span><span class="token punctuation">,</span>\n <span class="token property">"sqlDb.driver"</span><span class="token operator">:</span> <span class="token string">"org.h2.Driver"</span><span class="token punctuation">,</span>\n <span class="token property">"sqlDb.url"</span><span class="token operator">:</span> <span class="token string">"jdbc:h2:./test"</span><span class="token punctuation">,</span>\n <span class="token property">"sqlDb.user"</span><span class="token operator">:</span> <span class="token string">"sa"</span><span class="token punctuation">,</span>\n <span class="token property">"sqlDb.password"</span><span class="token operator">:</span> <span class="token string">""</span>\n<span class="token punctuation">}</span>\n</code></pre>\n<p>Start the PPMP Server with the jdbc dependency on the classpath, e.g.:</p>\n<pre class="language-bash"><code class="language-bash">java -cp <span class="token string">"h2-1.4.197.jar;ppmp-server-0.2.0.jar"</span> io.vertx.core.Launcher org.eclipse.iot.unide.server.MainVerticle -conf application.conf\n</code></pre>\n<p>Now, all the data send to the REST server is persisted in the file <code>test.mv.db</code>.<br>\nFor concurrent db actions (reading while writing), use the h2 tcp server instead. h2 is not recommended for production use!</p>\n<h1>Background</h1>\n<h2>Download</h2>\n<p>Available artifacts for download:</p>\n<ul>\n<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-schema/2.0.0/">PPMP Schema v2</a></li>\n<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-java-binding/0.2.0/">PPMP java Binding</a></li>\n<li><a href="https://pypi.python.org/packages/d5/af/c90911d1da56a1ed0238338ba01068d43b8cd0137e9ca52b0f52a279f73e/unide_python-0.2.0-py2.py3-none-any.whl#md5=ca67bcd536b3a4015f72f5fa53d36543">PPMP Python Binding</a></li>\n<li><a href="https://repo.eclipse.org/content/repositories/unide-releases/org/eclipse/iot/unide/ppmp/ppmp-server/0.2.0/">PPMP Server</a></li>\n<li><a href="http://download.eclipse.org/unide/binsa.crx">binsa client chrome app</a></li>\n</ul>\n<p>Source code:</p>\n<ul>\n<li><a href="https://github.com/eclipse/unide/releases/tag/v0.2.0">unide</a></li>\n<li><a href="https://github.com/eclipse/unide.java/releases/tag/v0.2.0">java binding</a></li>\n<li><a href="https://github.com/eclipse/unide.python/releases/tag/v0.2.0">python binding</a></li>\n</ul>\n<h2>Release notes</h2>\n<h3>REST Server improvements (refactoring &amp; persistence)</h3>\n<ul>\n<li>Added persistence to timeseries/postgres db</li>\n<li>Outfactored schema files</li>\n<li>Adjusted maven file</li>\n<li>Added unit tests</li>\n<li>Added documentation &amp; java docs</li>\n<li>Adjusted error handling</li>\n<li>Removed unused code</li>\n<li>Added postman collections</li>\n<li>Added grafana configuration file</li>\n</ul>\n<h3>New HTML5 simulation client</h3>\n<ul>\n<li>Progressive Webapp runs as website (see <a href="https://unide.eclipse.org/binsa">https://unide.eclipse.org/binsa</a>), browser app, native client (via <a href="https://nwjs.io/">nw.js</a>) or app (via <a href="https://cordova.apache.org/">Apache cordova</a>)</li>\n</ul>\n<h3>PPMP JSON Schema files</h3>\n<ul>\n<li>Introduced separate bundle for schemas</li>\n<li>general fixes\n<ul>\n<li>make schema draft-06 compliant</li>\n<li>added \'id\' and \'descriptions\' where applicable</li>\n<li>added \'type\' and \'default\' for enums</li>\n<li>added \'required\' fields where necessary</li>\n<li>made \'additionalProperties\': true explicit for \'metaData\'</li>\n<li>sorted the properties for improved readability</li>\n</ul>\n</li>\n<li>message_schema fixes\n<ul>\n<li>added minItems: 1 to messages</li>\n</ul>\n</li>\n<li>measurement_schema fixes\n<ul>\n<li>completed \'limits\' specification</li>\n<li>added \'patternProperties\' and minProperties detail to \'series\'</li>\n<li>added minItems: 1 to measurements</li>\n</ul>\n</li>\n<li>process_schema fixes\n<ul>\n<li>made \'id\' and \'name\' of a \'program\' mandatory</li>\n<li>fixed \'shutoffValues\', having properties not items</li>\n<li>fixed \'limits\', having properties not items and number values rather than object values as limits</li>\n<li>fixed \'specialValues\' to be an array of specialValue items with \'name\' for indicating the nature, rather than one single object with its keys indicating the nature. Offering optional \'$_time\' tag to be consistent with measurements.</li>\n<li>completed \'series\' definition</li>\n</ul>\n</li>\n</ul>\n<h3>Website</h3>\n<ul>\n<li>Autogenerating PPMP specification from JSON schemas to avoid discrepancies</li>\n<li>Generating UML schemas with plantuml</li>\n<li>Using similar HTML5 stack as simulation client for SPA website</li>\n</ul>\n<h3>Other</h3>\n<ul>\n<li>java and new python bindings in separate github repositories</li>\n</ul>\n',url:"/blog/2018/3/26/Release-0.2.0",title:"Unide 0.2.0 released",date:"2018-03-26T10:39:00.000Z",tags:["releases"],prev:{url:"/blog/2018/2/13/grinding-machine-scenario",title:"PPMP Use Cases: Unide and the Eclipse Production Performance Management Testbed"},next:{url:"/blog/2018/9/4/Template-for-PPMP-transformation",title:"PPMP Use Cases: Template for PPMP transformation"}}}],error:null,state:{},serverRendered:!0}</script><script defer src="/unide/files/manifest.743e36ec1ba98716cc6a.js"></script><script defer src="/unide/files/layouts_sidebar.d45435715b520199379d.js"></script><script defer src="/unide/files/pages_article.dfd7fcb83848670d21b1.js"></script><script defer src="/unide/files/vendor.3960437a749191406982.js"></script><script defer src="/unide/files/app.45b9891348f7e815e8b8.js"></script>